From 54ca42dffb3742dc5dd61902f5dcf1beefa93fec Mon Sep 17 00:00:00 2001 From: "Abdelrahman Khattab (via MelvinBot)" Date: Tue, 12 May 2026 16:54:16 +0000 Subject: [PATCH 1/6] Show Update credentials option for Sage Intacct in accounting overflow menu For Sage Intacct connections, always show the Update credentials option alongside Sync now, since Intacct uses rotatable Web Services credentials (company ID, user ID, password) rather than OAuth tokens. For all other integrations, the existing auth-error-only behavior is preserved unchanged. Co-authored-by: Abdelrahman Khattab --- src/languages/de.ts | 1 + src/languages/en.ts | 1 + src/languages/es.ts | 1 + src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 1 + src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + .../accounting/PolicyAccountingPage.tsx | 24 +++++++++++++++---- 11 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index fdb762e2e214..112855a04fd9 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6188,6 +6188,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU connectPrompt: ({connectionName}: ConnectionNameParams) => `Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`, enterCredentials: 'Gib deine Anmeldedaten ein', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Angebot verfügbar!', xero: { diff --git a/src/languages/en.ts b/src/languages/en.ts index cac02cf645e0..529aa7a46e6b 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -6204,6 +6204,7 @@ const translations = { CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'this accounting integration' }? This will remove any existing accounting connections.`, enterCredentials: 'Enter your credentials', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Offer available!', xero: { diff --git a/src/languages/es.ts b/src/languages/es.ts index 8c7ab6cbfab2..020cdbdbb925 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5985,6 +5985,7 @@ ${amount} para ${merchant} - ${date}`, connectPrompt: ({connectionName}) => `¿Estás seguro de que quieres conectar a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'}? Esto eliminará cualquier conexión contable existente.`, enterCredentials: 'Ingresa tus credenciales', + updateCredentials: 'Actualizar credenciales', claimOffer: { badgeText: '¡Oferta disponible!', xero: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 055ebb274408..68d35ba4c753 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6209,6 +6209,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cette action supprimera toutes les connexions comptables existantes.`, enterCredentials: 'Saisissez vos identifiants', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Offre disponible !', xero: { diff --git a/src/languages/it.ts b/src/languages/it.ts index ad13a9a37379..2bee6799d69c 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6178,6 +6178,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`, enterCredentials: 'Inserisci le tue credenziali', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Offerta disponibile!', xero: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index f9e27c2a1c63..7d1faaf7d3d4 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6107,6 +6107,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO connectPrompt: ({connectionName}: ConnectionNameParams) => `${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計連携'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`, enterCredentials: '認証情報を入力してください', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'オファーをご利用いただけます!', xero: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 0945290861e6..bbefe7514f09 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6156,6 +6156,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ connectPrompt: ({connectionName}: ConnectionNameParams) => `Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkoppeling'} wilt koppelen? Hierdoor worden alle bestaande boekhoudkundige koppelingen verwijderd.`, enterCredentials: 'Voer je inloggegevens in', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Aanbieding beschikbaar!', xero: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index d8d87c255a50..bc9c344cd35b 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6150,6 +6150,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy connectPrompt: ({connectionName}: ConnectionNameParams) => `Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'ta integracja księgowa'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`, enterCredentials: 'Wprowadź swoje dane logowania', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Oferta dostępna!', xero: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 110bed9e070b..435b147ade21 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6157,6 +6157,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS connectPrompt: ({connectionName}: ConnectionNameParams) => `Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`, enterCredentials: 'Insira suas credenciais', + updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Oferta disponível!', xero: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 4edd3b28c64c..9e73f8f3e8df 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6004,6 +6004,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM connectPrompt: ({connectionName}: ConnectionNameParams) => `确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将删除所有现有的会计连接。`, enterCredentials: '请输入您的凭证', + updateCredentials: 'Update credentials', claimOffer: { badgeText: '优惠可用!', xero: { diff --git a/src/pages/workspace/accounting/PolicyAccountingPage.tsx b/src/pages/workspace/accounting/PolicyAccountingPage.tsx index d1e2a950c91b..5f19cbe855a6 100644 --- a/src/pages/workspace/accounting/PolicyAccountingPage.tsx +++ b/src/pages/workspace/accounting/PolicyAccountingPage.tsx @@ -110,7 +110,9 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { const hasAccountingConnection = hasAccountingConnections(policy); const synchronizationError = connectedIntegration && getSynchronizationErrorMessage(policy, connectedIntegration, isSyncInProgress, translate, styles); - const shouldShowEnterCredentials = connectedIntegration && !!synchronizationError && isAuthenticationError(policy, connectedIntegration); + const isSageIntacct = connectedIntegration === CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT; + const hasAuthError = !!connectedIntegration && !!synchronizationError && isAuthenticationError(policy, connectedIntegration); + const shouldShowEnterCredentials = !!connectedIntegration && (hasAuthError || isSageIntacct); // Get the last successful date of the integration. Then, if `connectionSyncProgress` is the same integration displayed and the state is 'jobDone', get the more recent update time of the two. const successfulDate = getIntegrationLastSuccessfulDate( @@ -145,21 +147,30 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { ? [ { icon: icons.Key, - text: translate('workspace.accounting.enterCredentials'), - onSelected: () => startIntegrationFlow({name: connectedIntegration}), + text: translate(isSageIntacct && !hasAuthError ? 'workspace.accounting.updateCredentials' : 'workspace.accounting.enterCredentials'), + onSelected: () => { + if (isSageIntacct) { + Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ENTER_CREDENTIALS.getRoute(policyID ?? '-1')); + return; + } + startIntegrationFlow({name: connectedIntegration}); + }, shouldCallAfterModalHide: true, disabled: isOffline, iconRight: icons.NewWindow, }, ] - : [ + : []), + ...(!hasAuthError || isSageIntacct + ? [ { icon: icons.Sync, text: translate('workspace.accounting.syncNow'), onSelected: () => syncConnection(policy, connectedIntegration), disabled: isOffline, }, - ]), + ] + : []), { icon: icons.Trashcan, text: translate('workspace.accounting.disconnect'), @@ -180,6 +191,9 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { policy, connectedIntegration, startIntegrationFlow, + isSageIntacct, + hasAuthError, + policyID, ], ); From 0eac74156af3a817521b9cc3fd48eeacd0344c04 Mon Sep 17 00:00:00 2001 From: "Abdelrahman Khattab (via MelvinBot)" Date: Tue, 12 May 2026 17:13:25 +0000 Subject: [PATCH 2/6] Fix ESLint no-default-id-values violation in PolicyAccountingPage Guard on policyID truthiness instead of defaulting to '-1' Co-authored-by: Abdelrahman Khattab --- src/pages/workspace/accounting/PolicyAccountingPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/PolicyAccountingPage.tsx b/src/pages/workspace/accounting/PolicyAccountingPage.tsx index 5f19cbe855a6..6f7669a74e69 100644 --- a/src/pages/workspace/accounting/PolicyAccountingPage.tsx +++ b/src/pages/workspace/accounting/PolicyAccountingPage.tsx @@ -149,8 +149,8 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { icon: icons.Key, text: translate(isSageIntacct && !hasAuthError ? 'workspace.accounting.updateCredentials' : 'workspace.accounting.enterCredentials'), onSelected: () => { - if (isSageIntacct) { - Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ENTER_CREDENTIALS.getRoute(policyID ?? '-1')); + if (isSageIntacct && policyID) { + Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ENTER_CREDENTIALS.getRoute(policyID)); return; } startIntegrationFlow({name: connectedIntegration}); From 306b7fd4436fa687cd6ce7820d79a1832c98dcb4 Mon Sep 17 00:00:00 2001 From: "Abdelrahman Khattab (via MelvinBot)" Date: Mon, 18 May 2026 00:54:03 +0000 Subject: [PATCH 3/6] Revert translation changes in non-English locale files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keep updateCredentials only in en.ts — other locale files will be auto-generated by script. Co-authored-by: Krishna Co-authored-by: Abdelrahman Khattab --- src/languages/de.ts | 134 ++++++++++++++++++++++++++------- src/languages/es.ts | 156 +++++++++++++++++++++++++++------------ src/languages/fr.ts | 134 ++++++++++++++++++++++++++------- src/languages/it.ts | 132 ++++++++++++++++++++++++++------- src/languages/ja.ts | 137 +++++++++++++++++++++++++++------- src/languages/nl.ts | 134 ++++++++++++++++++++++++++------- src/languages/pl.ts | 135 ++++++++++++++++++++++++++------- src/languages/pt-BR.ts | 133 ++++++++++++++++++++++++++------- src/languages/zh-hans.ts | 130 +++++++++++++++++++++++++------- 9 files changed, 969 insertions(+), 256 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 112855a04fd9..d0ec1b4109b5 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1228,9 +1228,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Beleg löschen', findExpense: 'Ausgabe finden', deletedTransaction: (amount: string, merchant: string) => `hat eine Ausgabe gelöscht (${amount} für ${merchant})`, - movedFromReport: (reportName: string) => `hat eine Ausgabe verschoben${reportName ? `von ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `hat diese Ausgabe verschoben${reportName ? `zu ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `hat diese Ausgabe verschoben${reportName ? `von ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `hat eine Ausgabe aus ${reportName} verschoben`, + movedFromReportNoName: 'hat eine Ausgabe verschoben', + movedTransactionTo: (reportUrl: string, reportName: string) => `hat diese Ausgabe nach ${reportName} verschoben`, + movedTransactionToAnotherReport: 'hat diese Ausgabe in einen anderen Bericht verschoben', + movedTransactionFrom: (reportUrl: string, reportName: string) => `hat diese Ausgabe von ${reportName} verschoben`, + movedTransactionFromAnotherReport: 'diese Ausgabe aus einem anderen Bericht verschoben', unreportedTransaction: (reportUrl: string) => `hat diese Ausgabe in deinen persönlichen Bereich verschoben`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1443,6 +1446,8 @@ const translations: TranslationDeepObject = { receiptFailureMessage: 'Beim Hochladen deiner Quittung ist ein Fehler aufgetreten. Bitte speichere die Quittung und versuche es später erneut.', receiptFailureMessageShort: 'Beim Hochladen Ihres Belegs ist ein Fehler aufgetreten.', + receiptUploadFailedMessage: 'Beleg-Upload fehlgeschlagen. Speichere den Beleg oder lösche die Ausgabe und verliere sie.', + saveReceipt: 'Beleg speichern', genericDeleteFailureMessage: 'Unerwarteter Fehler beim Löschen dieses Belegs. Bitte versuche es später erneut.', genericEditFailureMessage: 'Unerwarteter Fehler beim Bearbeiten dieser Ausgabe. Bitte versuche es später noch einmal.', genericSmartscanFailureMessage: 'Der Transaktion fehlen Felder', @@ -2473,6 +2478,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Details anzeigen', revealCvv: 'CVV anzeigen', copyCardNumber: 'Kartennummer kopieren', + copyCvv: 'CVV kopieren', updateAddress: 'Adresse aktualisieren', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Zu ${platform} Wallet hinzugefügt`, @@ -2739,6 +2745,10 @@ ${amount} für ${merchant} – ${date}`, emptyAgents: {title: 'Keine Agenten erstellt', subtitle: 'Hör auf, Dinge manuell zu erledigen. Weise stattdessen eine:n Agent:in an und spare dir eine Menge Zeit.'}, error: { genericAdd: 'Beim Hinzufügen dieses Agenten ist ein Problem aufgetreten', + genericUpdate: 'Beim Aktualisieren dieses Agenten ist ein Problem aufgetreten', + updateName: 'Beim Aktualisieren des Namens dieser Vertretung ist ein Problem aufgetreten', + updatePrompt: 'Beim Aktualisieren der Anweisungen dieses Agenten ist ein Problem aufgetreten', + updateAvatar: 'Beim Aktualisieren des Avatars dieser Vertretung ist ein Problem aufgetreten', }, }, addAgentPage: { @@ -2746,11 +2756,22 @@ ${amount} für ${merchant} – ${date}`, agentName: 'Name der Ansprechperson', instructions: 'Eigene Anweisungen schreiben', createAgent: 'Agent erstellen', - switchAvatar: 'Profilbild wechseln', + editAvatar: 'Profilbild wechseln', defaultAgentName: (displayName: string) => `Agent*in von ${displayName}`, defaultPrompt: 'Lehne Ausgaben ab, die für Glücksspiele, Kinobesuche oder andere offensichtlich nicht geschäftliche Zwecke sind.\n\nErinnere den:die Nutzer:in daran, immer ein Belegfoto beizufügen, auf dem das Trinkgeld klar erkennbar ist.\n\nGenehmige den Bericht, wenn er früheren Berichten derselben Person sehr ähnlich ist.\n\nLehne Berichte mit mehr als 500 $ an Reisekosten ab.', }, + editAgentPage: { + title: 'Agent bearbeiten', + agentName: 'Name der Agentin/des Agenten', + instructions: 'Eigene Anweisungen schreiben', + deleteAgent: 'Agent löschen', + deleteAgentTitle: 'Agent löschen?', + deleteAgentMessage: 'Sind Sie sicher, dass Sie diese Vermittlerin/diesen Vermittler löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.', + }, + editAgentAvatarPage: {title: 'Avatar bearbeiten'}, + editAgentNamePage: {title: 'Name der Agentin/des Agenten'}, + editAgentPromptPage: {title: 'Eigene Anweisungen schreiben', error: {emptyPrompt: 'Bitte geben Sie Anweisungen für Ihre:n Agent:in ein.'}}, expenseRulesPage: { title: 'Ausgabenregeln', findRule: 'Regel finden', @@ -4562,6 +4583,7 @@ ${amount} für ${merchant} – ${date}`, notConfigured: 'Nicht konfiguriert', bankAccountDescription: 'Wähle aus, von wo Schecks versendet werden sollen.', creditCardAccount: 'Kreditkartenkonto', + travelInvoicingDescription: 'Reisekosten werden als Kreditkartenbelastungen in das unten angegebene QuickBooks Online-Konto exportiert.', companyCardsLocationEnabledDescription: 'QuickBooks Online unterstützt keine Standorte beim Export von Kreditorenrechnungen. Da in deinem Workspace Standorte aktiviert sind, ist diese Exportoption nicht verfügbar.', outOfPocketTaxEnabledDescription: @@ -4753,6 +4775,7 @@ ${amount} für ${merchant} – ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Lieferantenrechnungen', }, }, + travelInvoicingDescription: 'Reisekosten werden als Kreditkartenbelastungen in das unten angegebene Sage Intacct-Konto exportiert.', creditCardAccount: 'Kreditkartenkonto', defaultVendor: 'Standardanbieter', defaultVendorDescription: (isReimbursable: boolean) => @@ -4799,8 +4822,8 @@ ${amount} für ${merchant} – ${date}`, journalPostingPreference: { label: 'Bevorzugte Verbuchung von Journalbuchungen', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Einzelner, aufgeschlüsselter Eintrag für jeden Bericht', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Einzelner Eintrag für jede Ausgabe', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Einzelner Eintrag für jede Ausgabe', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Einzelner, aufgegliederter Eintrag für jeden Bericht', }, }, invoiceItem: { @@ -5192,6 +5215,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU free: 'Kostenlos', control: 'Steuerung', collect: 'Einziehen', + submit: 'Einreichen', }, companyCards: { addCards: 'Karten hinzufügen', @@ -5314,6 +5338,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU duplicateColumns: (duplicateColumn: string) => `Ups! Du hast ein einzelnes Feld („${duplicateColumn}“) mehreren Spalten zugeordnet. Bitte überprüfe die Zuordnung und versuche es erneut.`, }, + fileImportDescription: 'Eine manuelle Option, falls Ihre Bank keinen Feed senden kann.', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Letzter Tag des Monats', @@ -5549,8 +5574,8 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU subtitle: 'Glückwunsch! Du kannst jetzt in diesem Workspace Reisen buchen und verwalten.', manageTravelLabel: 'Reisen verwalten', }, - centralInvoicingSection: { - title: 'Zentrale Rechnungsstellung', + travelInvoicingSection: { + title: 'Reiseabrechnung', subtitle: 'Zentralisiere alle Reisekosten in einer monatlichen Rechnung, statt sie direkt beim Kauf zu bezahlen.', learnHow: 'Mehr erfahren.', subsections: { @@ -5567,7 +5592,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU reduceLimitWarning: 'Wenn Sie das Limit reduzieren, können Mitglieder, die diesen Betrag bereits überschritten haben, bis zum nächsten Monat keine neuen Reisebuchungen vornehmen.', provisioningError: - 'Wir konnten einige Mitglieder Ihres Arbeitsbereichs nicht für die zentrale Rechnungsstellung einrichten. Bitte versuchen Sie es später erneut oder wenden Sie sich für Unterstützung an Concierge.', + 'Wir konnten einige Mitglieder Ihres Workspace nicht für die Reiseabrechnung einrichten. Bitte versuchen Sie es später erneut oder wenden Sie sich für Unterstützung an Concierge.', }, }, disableModal: { @@ -5588,7 +5613,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU exportToCSV: 'Als CSV exportieren', selectDateRangeError: 'Bitte wählen Sie einen Datumsbereich für den Export aus', invalidDateRangeError: 'Das Startdatum muss vor dem Enddatum liegen', - enabled: 'Zentrale Rechnungsstellung aktiviert!', + enabled: 'Rechnungsstellung für Reisen aktiviert!', enabledDescription: 'Alle Reisekosten in diesem Workspace werden nun in einer monatlichen Rechnung zentralisiert.', }, personalDetailsDescription: 'Um eine Reise zu buchen, gib bitte deinen amtlichen Namen genau so ein, wie er auf deinem amtlichen Ausweis steht.', @@ -5750,7 +5775,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU subtitle: 'Legen Sie einen abrechnungsfähigen Stundensatz für die Zeiterfassung fest.', defaultHourlyRate: 'Standardstundensatz', }, - hrWarningModal: {disconnectText: 'Um HR zu deaktivieren, trenne bitte zuerst die Verbindung von Gusto mit diesem Workspace.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Um HR zu deaktivieren, trennen Sie bitte zuerst ${integration} von diesem Workspace.`}, }, reports: { reportsCustomTitleExamples: 'Beispiele:', @@ -6188,7 +6213,6 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU connectPrompt: ({connectionName}: ConnectionNameParams) => `Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`, enterCredentials: 'Gib deine Anmeldedaten ein', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Angebot verfügbar!', xero: { @@ -7042,11 +7066,17 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Gusto-Mitarbeitende werden synchronisiert'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Daten werden von Gusto geladen'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Mitarbeiterbereitstellung in Richtlinie'; + case 'zenefitsSyncTitle': + return 'TriNet-Mitarbeitende werden synchronisiert'; + case 'zenefitsSyncLoadData': + return 'Lade Daten von TriNet'; + case 'zenefitsSyncProvisioning': + return 'Mitarbeiterbereitstellung in Richtlinie'; case 'jobDone': return 'Warten auf das Laden der importierten Daten'; default: { @@ -7077,6 +7107,41 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc syncError: 'Verbindung zu Gusto nicht möglich', disconnectTitle: 'Gusto trennen', disconnectPrompt: 'Bist du sicher, dass du Gusto trennen möchtest?', + syncResults: { + title: 'Gusto-Synchronisierungsergebnisse', + successTitle: 'Ihre Gusto-Verbindung wurde erfolgreich synchronisiert!', + added: 'Hinzugefügt', + removed: 'Entfernt', + skipped: 'Übersprungen', + employeeCount: () => ({ + one: '1 Mitarbeiter', + other: (count: number) => `${count} Mitarbeitende`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Verbinden', + syncNow: 'Jetzt synchronisieren', + disconnect: 'Verbindung trennen', + lastSync: (relativeDate: string) => `Zuletzt synchronisiert ${relativeDate}`, + syncError: 'Verbindung zu TriNet nicht möglich', + disconnectTitle: 'TriNet trennen', + disconnectPrompt: 'Sind Sie sicher, dass Sie die Verbindung zu TriNet trennen möchten?', + connectionDescription: 'Verbinden Sie TriNet, um Mitarbeitergenehmigungen mit Ihrem Workspace zu synchronisieren.', + approvalMode: 'Genehmigungsmodus', + finalApprover: 'Letzte genehmigende Person', + notSet: 'Nicht festgelegt', + approvalModeDescription: 'Mitglieder und Manager sind für die Synchronisierung mit TriNet eingerichtet.', + approvalModeWarningTitle: 'Genehmigungsmodus ändern?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Sind Sie sicher, dass Sie den Genehmigungsmodus für diesen Workspace ändern möchten? Erfahren Sie mehr über die verschiedenen TriNet-fähigen Workflow-Modi auf unserer Hilfeseite.`, + approvalModeWarningConfirm: 'Genehmigungsmodus ändern', + approvalModes: { + basic: {label: 'Einfache Genehmigung', description: 'Alle Benutzer reichen an eine einzige Person zur Bearbeitung und Genehmigung ein.'}, + manager: {label: 'Managergenehmigung', description: 'Mitarbeitende reichen Berichte bei ihrer in TriNet hinterlegten direkten Führungskraft ein.'}, + custom: {label: 'Benutzerdefinierte Genehmigung', description: 'Ich richte Genehmigungsabläufe in Expensify manuell ein.'}, + }, }, }, }, @@ -7732,11 +7797,12 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc deleteSavedSearchConfirm: 'Möchtest du diese Suche wirklich löschen?', searchName: 'Namen suchen', savedSearchesMenuItemTitle: 'Gespeichert', + urlCopied: 'URL kopiert', groupedExpenses: 'gruppierte Ausgaben', bulkActions: { editMultiple: 'Mehrere bearbeiten', editMultipleTitle: 'Mehrere Ausgaben bearbeiten', - editMultipleDescription: 'Änderungen werden für alle ausgewählten Ausgaben festgelegt und überschreiben alle zuvor festgelegten Werte.', + editMultipleDescription: 'Änderungen werden für alle ausgewählten Ausgaben übernommen und überschreiben alle zuvor festgelegten Werte.', approve: 'Genehmigen', pay: 'Bezahlen', delete: 'Löschen', @@ -7786,7 +7852,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Alle ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Alle importierten CSV-Karten${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Zentrale Rechnungsstellung', + travelInvoicing: 'Reiseabrechnung', }, reportField: (name: string, value: string) => `${name} ist ${value}`, current: 'Aktuell', @@ -7818,9 +7884,9 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, feed: 'Feed', withdrawalType: { - [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Card', + [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Karte', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Erstattung', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Zentrale Rechnungsstellung', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Reiseabrechnung', }, is: 'Ist', action: { @@ -8074,7 +8140,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} für ${dayCount} ${dayCount === 1 ? 'Tag' : 'Tage'} bis ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} von ${timePeriod} am ${date}`, startTimer: 'Timer starten', - stopTimer: 'Timer stoppen', + stopTimer: (duration: string) => `Timer stoppen (${duration})`, scheduleOOO: 'Abwesenheit planen', scheduleOOOTitle: 'Abwesenheit planen', date: 'Datum', @@ -8140,6 +8206,14 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc selectAllFeatures: 'Alle Funktionen auswählen', selectAllTransactions: 'Alle Transaktionen auswählen', selectAllItems: 'Alle Einträge auswählen', + selectAllCategories: 'Alle Kategorien auswählen', + selectAllDistanceRates: 'Alle Entfernungssätze auswählen', + selectAllTags: 'Alle Tags auswählen', + selectAllTaxes: 'Alle Steuern auswählen', + selectAllPerDiemRates: 'Alle Pauschalspesen-Sätze auswählen', + selectAllMembers: 'Alle Mitglieder auswählen', + selectAllValues: 'Alle Werte auswählen', + selectAllRules: 'Alle Regeln auswählen', }, parentReportAction: { deletedReport: 'Gelöschter Bericht', @@ -8235,7 +8309,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc personalCard: 'Private Karte', companyCard: 'Firmenkarte', expensifyCard: 'Expensify Karte', - centralInvoicing: 'Zentrale Rechnungsstellung', + travelInvoicing: 'Reiseabrechnung', + travelCard: 'Reisekarte', }, distance: { addStop: 'Stopp hinzufügen', @@ -8864,12 +8939,14 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, delegate: { switchAccount: 'Konten wechseln:', + switch: 'Wechseln', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot: Delegierter Zugriff', copilotDelegatedAccessDescription: 'Anderen Mitgliedern erlauben, auf dein Konto zuzugreifen.', learnMoreAboutDelegatedAccess: 'Mehr über delegierten Zugriff erfahren', addCopilot: 'Copilot hinzufügen', membersCanAccessYourAccount: 'Diese Mitglieder haben Zugriff auf Ihr Konto:', - youCanAccessTheseAccounts: 'Du kannst auf diese Konten über den Kontowechsel zugreifen:', + youCanAccessTheseAccounts: 'Du kannst auf diese Konten zugreifen:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9214,6 +9291,8 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`, addMember: 'Dieses Mitglied kann nicht hinzugefügt werden. Bitte versuche es erneut.', vacationDelegate: 'Dieser Benutzer kann nicht als Urlaubsvertretung festgelegt werden. Bitte versuche es erneut.', moveMember: 'Dieses Mitglied kann nicht verschoben werden. Bitte versuchen Sie es erneut.', + moveMemberNotPolicyAdmin: + 'Das Mitglied kann nicht in die Domänengruppe verschoben werden. Sie müssen Richtlinienadministrator für die bevorzugte Richtlinie sein, die für die Domänengruppe festgelegt ist, in die Sie diesen Benutzer verschieben möchten.', }, reportSuspiciousActivityPrompt: (email: string) => `Bist du sicher? Dadurch wird das Konto von ${email} gesperrt.

Unser Team wird das Konto anschließend überprüfen und unbefugten Zugriff entfernen. Um den Zugriff wiederherzustellen, muss die Person mit Concierge zusammenarbeiten.`, @@ -9243,7 +9322,13 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`, `Möchtest du ${newName} wirklich zur Standardgruppe machen? Neue Mitglieder werden zu dieser Gruppe anstelle der bisherigen Standardgruppe (${currentName}) eingeladen. `, makeDefault: 'Als Standard festlegen', neverMind: 'Vergiss es', + createGroupError: 'Diese Gruppe konnte nicht erstellt werden. Bitte versuche es erneut.', permissions: 'Gruppenberechtigungen', + createNewGroupButton: 'Neue Gruppe', + createGroupSubmitButton: 'Gruppe erstellen', + expensifyCardPreferredWorkspace: 'Bevorzugter Workspace für Expensify Card', + expensifyCardPreferredWorkspaceDescription: + 'Alle Expensify Card-Transaktionen werden im bevorzugten Expensify Card-Arbeitsbereich anstelle des bevorzugten Arbeitsbereichs erstellt. Durch Aktivieren dieser Funktion wird die Einstellung des bevorzugten Arbeitsbereichs nur für Expensify Card-Transaktionen überschrieben.', strictlyEnforceWorkspaceRules: 'Workspace-Regeln strikt durchsetzen', strictlyEnforceWorkspaceRulesDescription: 'Alle Workspace-Regeln müssen erfüllt sein, bevor ein Bericht eingereicht wird. Manuelle Ausnahmen sind nicht zulässig.', restrictExpenseWorkspaceCreation: 'Erstellen/Entfernen von Ausgaben-Workspaces einschränken', @@ -9261,11 +9346,8 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`, restrictDefaultLoginSelection: 'Standard-Login-Auswahl einschränken', restrictDefaultLoginSelectionDescription: 'Verhindert, dass Mitglieder ihre Login-E-Mail-Adresse außerhalb der Unternehmensdomäne ändern, um Richtlinienbeschränkungen zu umgehen.', - expensifyCardPreferredWorkspace: 'Bevorzugter Workspace für die Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Alle Expensify-Card-Transaktionen werden im bevorzugten Workspace für die Expensify Card statt im bevorzugten Workspace erstellt. Die Aktivierung dieser Funktion überschreibt die Einstellung des bevorzugten Workspace ausschließlich für Expensify-Card-Transaktionen.', expensifyCardPreferredWorkspaceDisabledMessage: - 'Um diese Einstellung zu verwenden, muss der bevorzugte Workspace aktiviert und für die Domain die Expensify Card eingerichtet sein.', + 'Um diese Einstellung zu aktivieren, aktiviere zuerst einen bevorzugten Workspace und richte Expensify Cards in deiner Domain ein.', findGroup: 'Gruppe suchen', }, }, diff --git a/src/languages/es.ts b/src/languages/es.ts index 020cdbdbb925..b0f575184446 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1194,9 +1194,12 @@ const translations: TranslationDeepObject = { routePending: 'Ruta pendiente...', findExpense: 'Buscar gasto', deletedTransaction: (amount, merchant) => `eliminó un gasto (${amount} para ${merchant})`, - movedFromReport: (reportName) => `movió un gasto${reportName ? ` desde ${reportName}` : ''}`, - movedTransactionTo: (reportUrl, reportName) => `movió este gasto${reportName ? ` a ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl, reportName) => `movió este gasto${reportName ? ` desde ${reportName}` : ''}`, + movedFromReport: (reportName) => `movió un gasto desde ${reportName}`, + movedFromReportNoName: 'movió un gasto', + movedTransactionTo: (reportUrl, reportName) => `movió este gasto a ${reportName}`, + movedTransactionToAnotherReport: 'movió este gasto a otro informe', + movedTransactionFrom: (reportUrl, reportName) => `movió este gasto desde ${reportName}`, + movedTransactionFromAnotherReport: 'movió este gasto desde otro informe', unreportedTransaction: (reportUrl) => `movió este gasto a tu espacio personal`, movedAction: (shouldHideMovedReportUrl, movedReportUrl, newParentReportUrl, toPolicyName) => { if (shouldHideMovedReportUrl) { @@ -1408,6 +1411,8 @@ const translations: TranslationDeepObject = { receiptDeleteFailureError: 'Error inesperado al borrar este recibo. Por favor, vuelve a intentarlo más tarde.', receiptFailureMessage: 'Hubo un error al cargar tu recibo. Por favor, guarda el recibo e inténtalo de nuevo más tarde.', receiptFailureMessageShort: 'Hubo un error al cargar tu recibo.', + receiptUploadFailedMessage: 'Error al subir el recibo. Guarda el recibo, o elimina el gasto y piérdelo.', + saveReceipt: 'Guardar recibo', genericDeleteFailureMessage: 'Error inesperado al eliminar este gasto. Por favor, inténtalo más tarde.', genericEditFailureMessage: 'Error inesperado al editar este gasto. Por favor, inténtalo más tarde.', genericSmartscanFailureMessage: 'La transacción tiene campos vacíos', @@ -1687,10 +1692,8 @@ const translations: TranslationDeepObject = { backdropLabel: 'Fondo del Modal', }, nextStep: { - /* eslint-disable @typescript-eslint/no-unused-vars */ message: { [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que añadas gastos.`; @@ -1701,7 +1704,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_SUBMIT]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que envíes los gastos.`; @@ -1713,7 +1715,6 @@ const translations: TranslationDeepObject = { }, [CONST.NEXT_STEP.MESSAGE_KEY.NO_FURTHER_ACTION]: (_actor, _actorType, _eta, _etaType) => `¡No se requiere ninguna acción adicional!`, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_SUBMITTER_ACCOUNT]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que añadas una cuenta bancaria.`; @@ -1728,7 +1729,6 @@ const translations: TranslationDeepObject = { if (eta) { formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? ` el ${eta} de cada mes` : ` ${eta}`; } - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que tus gastos se envíen automáticamente${formattedETA}.`; @@ -1739,7 +1739,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_FIX_ISSUES]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que soluciones ellos problemas.`; @@ -1750,7 +1749,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_APPROVE]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que apruebes los gastos.`; @@ -1761,7 +1759,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_EXPORT]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que exportes este informe.`; @@ -1772,7 +1769,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_PAY]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que pagues los gastos.`; @@ -1783,7 +1779,6 @@ const translations: TranslationDeepObject = { } }, [CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_POLICY_BANK_ACCOUNT]: (actor, actorType, _eta, _etaType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Esperando a que termines de configurar una cuenta bancaria de empresa.`; @@ -1803,7 +1798,6 @@ const translations: TranslationDeepObject = { [CONST.NEXT_STEP.MESSAGE_KEY.SUBMITTING_TO_SELF]: (_actor, _actorType, _eta, _etaType) => `¡Ups! Parece que estás enviando el informe a ti mismo. Aprobar tus propios informes está prohibido por tu espacio de trabajo. Por favor, envía este informe a otra persona o contacta a tu administrador para cambiar la persona a la que lo envías.`, [CONST.NEXT_STEP.MESSAGE_KEY.REJECTED_REPORT]: (actor, actorType) => { - // eslint-disable-next-line default-case switch (actorType) { case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER: return `Este informe fue rechazado. Esperando a que corrijas los problemas y lo vuelvas a enviar manualmente.`; @@ -2369,6 +2363,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Revelar detalles', revealCvv: 'Revelar CVV', copyCardNumber: 'Copiar número de la tarjeta', + copyCvv: 'Copiar CVV', updateAddress: 'Actualizar dirección', }, cardAddedToWallet: ({platform}) => `Añadida a ${platform} Wallet`, @@ -2458,7 +2453,6 @@ ${amount} para ${merchant} - ${date}`, two: 'º', few: 'º', other: 'º', - /* eslint-disable @typescript-eslint/naming-convention */ '1': 'Primero', '2': 'Segundo', '3': 'Tercero', @@ -2469,7 +2463,6 @@ ${amount} para ${merchant} - ${date}`, '8': 'Octavo', '9': 'Noveno', '10': 'Décimo', - /* eslint-enable @typescript-eslint/naming-convention */ }, }, approverInMultipleWorkflows: 'Este miembro ya pertenece a otro flujo de aprobación. Cualquier actualización aquí se reflejará allí también.', @@ -2624,6 +2617,10 @@ ${amount} para ${merchant} - ${date}`, }, error: { genericAdd: 'Hubo un problema al agregar este agente', + genericUpdate: 'Hubo un problema al actualizar este agente', + updateName: 'Hubo un problema al actualizar el nombre de este agente', + updatePrompt: 'Hubo un problema al actualizar las instrucciones de este agente', + updateAvatar: 'Hubo un problema al actualizar el avatar de este agente', }, }, addAgentPage: { @@ -2631,11 +2628,22 @@ ${amount} para ${merchant} - ${date}`, agentName: 'Nombre del agente', instructions: 'Escribe instrucciones personalizadas', createAgent: 'Crear agente', - switchAvatar: 'Cambiar avatar', + editAvatar: 'Cambiar avatar', defaultAgentName: (displayName: string) => `Agente de ${displayName}`, defaultPrompt: 'Rechazar gastos por juegos de azar, películas u otras razones claramente no comerciales.\n\nRecordar al usuario que siempre incluya una imagen del recibo que muestre claramente la propina.\n\nAprobar el informe si es muy similar a informes anteriores del mismo usuario.\n\nRechazar informes con más de $500 en gastos de viaje.', }, + editAgentPage: { + title: 'Editar agente', + agentName: 'Nombre del agente', + instructions: 'Escribir instrucciones personalizadas', + deleteAgent: 'Eliminar agente', + deleteAgentTitle: '¿Eliminar agente?', + deleteAgentMessage: '¿Seguro que quieres eliminar a este agente? Esta acción no se puede deshacer.', + }, + editAgentAvatarPage: {title: 'Editar avatar'}, + editAgentNamePage: {title: 'Nombre del agente'}, + editAgentPromptPage: {title: 'Escribir instrucciones personalizadas', error: {emptyPrompt: 'Por favor, introduce instrucciones para tu agente.'}}, expenseRulesPage: { title: 'Reglas de gastos', subtitle: 'Estas reglas se aplicarán a tus gastos.', @@ -4454,6 +4462,7 @@ ${amount} para ${merchant} - ${date}`, notConfigured: 'No configurado', bankAccountDescription: 'Elige desde dónde enviar los cheques.', creditCardAccount: 'Cuenta de la tarjeta de crédito', + travelInvoicingDescription: 'Los gastos de viaje se exportarán como cargos de tarjeta de crédito a la cuenta de QuickBooks Online especificada a continuación.', companyCardsLocationEnabledDescription: 'QuickBooks Online no permite lugares en las exportaciones de facturas de proveedores. Como tienes activadas los lugares en tu espacio de trabajo, esta opción de exportación no está disponible.', exportOutOfPocketExpensesDescription: 'Establezca cómo se exportan los gastos de bolsillo a QuickBooks Online.', @@ -4650,6 +4659,7 @@ ${amount} para ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Facturas de proveedores', }, }, + travelInvoicingDescription: 'Los gastos de viaje se exportarán como cargos de tarjeta de crédito a la cuenta de Sage Intacct especificada a continuación.', creditCardAccount: 'Cuenta de tarjeta de crédito', defaultVendor: 'Proveedor por defecto', defaultVendorDescription: (isReimbursable) => @@ -4696,8 +4706,8 @@ ${amount} para ${merchant} - ${date}`, journalPostingPreference: { label: 'Preferencia de registro de asientos contables', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Entrada única y detallada para cada informe', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Entrada única para cada gasto individual', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Entrada única para cada gasto individual', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Entrada única y detallada para cada informe', }, }, invoiceItem: { @@ -5049,6 +5059,7 @@ ${amount} para ${merchant} - ${date}`, free: 'Gratis', control: 'Controlar', collect: 'Recopilar', + submit: 'Enviar', }, companyCards: { addCards: 'Añadir tarjetas', @@ -5067,6 +5078,7 @@ ${amount} para ${merchant} - ${date}`, addNewCard: { other: 'Otros', fileImport: 'Importar transacciones desde un archivo', + fileImportDescription: 'Una opción manual si tu banco no puede enviar un feed.', createFileFeedHelpText: `Siga este guía de ayuda para importar las transacciones de su tarjeta de empresa!`, companyCardLayoutName: 'Nombre del layout de la tarjeta de empresa', cardLayoutNameRequired: 'El nombre del layout de la tarjeta de empresa es requerido', @@ -5396,8 +5408,8 @@ ${amount} para ${merchant} - ${date}`, subtitle: '¡Felicidades! Todo está listo para reservar y gestionar viajes en este espacio de trabajo.', manageTravelLabel: 'Gestionar viajes', }, - centralInvoicingSection: { - title: 'Facturación centralizada', + travelInvoicingSection: { + title: 'Facturación de viajes', subtitle: 'Centraliza todos los gastos de viaje en una factura mensual en lugar de pagar en el momento de la compra.', learnHow: 'Aprende cómo.', subsections: { @@ -5414,7 +5426,7 @@ ${amount} para ${merchant} - ${date}`, reduceLimitTitle: '¿Reducir el límite de gasto en viajes?', reduceLimitWarning: 'Si reduces el límite, los miembros que ya hayan gastado más de este importe no podrán hacer nuevas reservas de viaje hasta el próximo mes.', provisioningError: - 'No pudimos aprovisionar a algunos de los miembros de tu espacio de trabajo para la facturación centralizada. Por favor, inténtalo de nuevo más tarde o contacta con Concierge para obtener ayuda.', + 'No hemos podido aprovisionar a algunos de los miembros de tu espacio de trabajo para la facturación de viajes. Inténtalo de nuevo más tarde o ponte en contacto con Concierge para obtener ayuda.', }, }, disableModal: { @@ -5435,7 +5447,7 @@ ${amount} para ${merchant} - ${date}`, exportToCSV: 'Exportar a CSV', selectDateRangeError: 'Por favor, selecciona un rango de fechas para exportar', invalidDateRangeError: 'La fecha de inicio debe ser anterior a la fecha de fin', - enabled: '¡Facturación centralizada habilitada!', + enabled: '¡Facturación de viajes habilitada!', enabledDescription: 'Todos los gastos de viaje en este espacio de trabajo ahora se centralizarán en una factura mensual.', }, personalDetailsDescription: 'Para poder reservar el viaje, por favor ingrese su nombre legal tal como aparece en su identificación oficial emitida por el gobierno.', @@ -5583,9 +5595,7 @@ ${amount} para ${merchant} - ${date}`, description: '¿Está seguro de que desea desconectar esta integración?', confirmText: 'Entendido', }, - hrWarningModal: { - disconnectText: 'Para desactivar HR, primero desconecta Gusto de este espacio de trabajo.', - }, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Para deshabilitar RR. HH., primero desconecta ${integration} de este espacio de trabajo.`}, workflowWarningModal: { featureEnabledTitle: 'No tan rápido...', featureEnabledText: @@ -5985,7 +5995,6 @@ ${amount} para ${merchant} - ${date}`, connectPrompt: ({connectionName}) => `¿Estás seguro de que quieres conectar a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'}? Esto eliminará cualquier conexión contable existente.`, enterCredentials: 'Ingresa tus credenciales', - updateCredentials: 'Actualizar credenciales', claimOffer: { badgeText: '¡Oferta disponible!', xero: { @@ -6222,15 +6231,21 @@ ${amount} para ${merchant} - ${date}`, syncStageName: ({stage}) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Sincronizar empleados de Gusto'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Cargando datos desde Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Aprovisionar empleados en la política'; + case 'zenefitsSyncTitle': + return 'Sincronización de empleados de TriNet'; + case 'zenefitsSyncLoadData': + return 'Cargando datos desde TriNet'; + case 'zenefitsSyncProvisioning': + return 'Aprovisionar empleados en la política'; case 'jobDone': return 'Esperando a que se carguen los datos importados'; default: { - return `Translation missing for stage: ${stage}`; + return `Falta la traducción para la etapa: ${stage}`; } } }, @@ -6266,6 +6281,41 @@ ${amount} para ${merchant} - ${date}`, description: 'Configuraré manualmente los flujos de aprobación en Expensify.', }, }, + syncResults: { + title: 'Resultados de la sincronización de Gusto', + successTitle: '¡Se sincronizó correctamente tu conexión con Gusto!', + added: 'Añadido', + removed: 'Eliminado', + skipped: 'Omitido', + employeeCount: () => ({ + one: '1 empleado', + other: (count: number) => `${count} empleados`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Conectar', + syncNow: 'Sincronizar ahora', + disconnect: 'Desconectar', + lastSync: (relativeDate: string) => `Última sincronización ${relativeDate}`, + syncError: 'No se puede conectar con TriNet', + disconnectTitle: 'Desconectar TriNet', + disconnectPrompt: '¿Seguro que quieres desconectar TriNet?', + connectionDescription: 'Conecta TriNet para mantener las aprobaciones de empleados sincronizadas con tu espacio de trabajo.', + approvalMode: 'Modo de aprobación', + finalApprover: 'Aprobador final', + notSet: 'No establecido', + approvalModeDescription: 'Los miembros y gestores están configurados para sincronizarse con TriNet.', + approvalModeWarningTitle: '¿Cambiar el modo de aprobación?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `¿Seguro que quieres cambiar el modo de aprobación de este espacio de trabajo? Obtén más información sobre los distintos modos de flujo de trabajo habilitados por TriNet en nuestro sitio de ayuda.`, + approvalModeWarningConfirm: 'Cambiar el modo de aprobación', + approvalModes: { + basic: {label: 'Aprobación básica', description: 'Todos los usuarios envían a una sola persona para su procesamiento y aprobación.'}, + manager: {label: 'Aprobación del responsable', description: 'Los empleados envían informes a su responsable directo configurado en TriNet.'}, + custom: {label: 'Aprobación personalizada', description: 'Configuraré manualmente los flujos de aprobación en Expensify.'}, + }, }, }, export: { @@ -6931,7 +6981,6 @@ ${amount} para ${merchant} - ${date}`, restrictedDescription: 'Sólo las personas en tu espacio de trabajo pueden encontrar esta sala', privateDescription: 'Sólo las personas que están invitadas a esta sala pueden encontrarla', publicDescription: 'Cualquier persona puede unirse a esta sala', - // eslint-disable-next-line @typescript-eslint/naming-convention public_announceDescription: 'Cualquier persona puede unirse a esta sala', createRoom: 'Crea una sala de chat', roomAlreadyExistsError: 'Ya existe una sala con este nombre', @@ -6951,7 +7000,6 @@ ${amount} para ${merchant} - ${date}`, restricted: 'Espacio de trabajo', private: 'Privada', public: 'Público', - // eslint-disable-next-line @typescript-eslint/naming-convention public_announce: 'Anuncio Público', }, }, @@ -7266,7 +7314,6 @@ ${amount} para ${merchant} - ${date}`, updatedDefaultTitle: (newDefaultTitle, oldDefaultTitle) => `cambió la fórmula personalizada del nombre del informe a "${newDefaultTitle}" (previamente "${oldDefaultTitle}")`, updatedOwnership: (oldOwnerEmail, oldOwnerName, policyName) => `asumió la propiedad del espacio de trabajo ${policyName} de ${oldOwnerName} (${oldOwnerEmail})`, updatedAutoHarvesting: (enabled) => `${enabled ? 'habilitó' : 'deshabilitó'} el envío programado`, - // eslint-disable-next-line @typescript-eslint/max-params updatedIndividualBudgetNotification: ( budgetAmount, budgetFrequency, @@ -7574,6 +7621,7 @@ ${amount} para ${merchant} - ${date}`, view: {label: 'Ver', table: 'Tabla', bar: 'Barra', line: 'Línea', pie: 'Circular'}, saveSearch: 'Guardar búsqueda', savedSearchesMenuItemTitle: 'Guardadas', + urlCopied: 'URL copiada', spendOverTime: 'Evolución de gastos', searchName: 'Nombre de la búsqueda', deleteSavedSearch: 'Eliminar búsqueda guardada', @@ -7582,7 +7630,7 @@ ${amount} para ${merchant} - ${date}`, bulkActions: { editMultiple: 'Editar múltiples', editMultipleTitle: 'Editar múltiples gastos', - editMultipleDescription: 'Los cambios se aplicarán a todos los gastos seleccionados y anularán cualquier valor previamente establecido.', + editMultipleDescription: 'Los cambios se aplicarán a todos los gastos seleccionados y sustituirán cualquier valor establecido previamente.', approve: 'Aprobar', pay: 'Pagar', delete: 'Eliminar', @@ -7620,7 +7668,7 @@ ${amount} para ${merchant} - ${date}`, completed: 'Completadas', card: { expensify: 'Expensify', - centralInvoicing: 'Facturación centralizada', + travelInvoicing: 'Facturación de viajes', individualCards: 'Tarjetas individuales', closedCards: 'Tarjetas cerradas', cardFeeds: 'Flujos de tarjetas', @@ -7662,9 +7710,9 @@ ${amount} para ${merchant} - ${date}`, }, feed: 'Feed', withdrawalType: { - [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Card', + [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Tarjeta Expensify', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Reembolso', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Facturación centralizada', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Facturación de viajes', }, is: 'Es', action: { @@ -7885,7 +7933,7 @@ ${amount} para ${merchant} - ${date}`, oooEventSummaryFullDay: (summary, dayCount, date) => `${summary} por ${dayCount} ${dayCount === 1 ? 'día' : 'días'} hasta el ${date}`, oooEventSummaryPartialDay: (summary, timePeriod, date) => `${summary} de ${timePeriod} del ${date}`, startTimer: 'Iniciar temporizador', - stopTimer: 'Detener temporizador', + stopTimer: (duration: string) => `Detener temporizador (${duration})`, scheduleOOO: 'Programar ausencia', scheduleOOOTitle: 'Programar fuera de oficina', date: 'Fecha', @@ -8411,6 +8459,14 @@ ${amount} para ${merchant} - ${date}`, selectAllFeatures: 'Seleccionar todas las características', selectAllItems: 'Seleccionar todos los elementos', selectAllTransactions: 'Seleccionar todas las transacciones', + selectAllCategories: 'Seleccionar todas las categorías', + selectAllDistanceRates: 'Seleccionar todas las tarifas de distancia', + selectAllTags: 'Seleccionar todas las etiquetas', + selectAllTaxes: 'Seleccionar todos los impuestos', + selectAllPerDiemRates: 'Seleccionar todas las tarifas de viáticos', + selectAllMembers: 'Seleccionar todos los miembros', + selectAllValues: 'Seleccionar todos los valores', + selectAllRules: 'Seleccionar todas las reglas', }, parentReportAction: { deletedReport: 'Informe eliminado', @@ -8505,7 +8561,8 @@ ${amount} para ${merchant} - ${date}`, personalCard: 'Tarjeta personal', companyCard: 'Tarjeta corporativa', expensifyCard: 'Tarjeta Expensify', - centralInvoicing: 'Facturación centralizada', + travelInvoicing: 'Facturación de viajes', + travelCard: 'Tarjeta de viaje', }, distance: { addStop: 'Añadir parada', @@ -9050,12 +9107,14 @@ ${amount} para ${merchant} - ${date}`, }, delegate: { switchAccount: 'Cambiar de cuenta:', + switch: 'Cambiar', + copilot: 'Copiloto', copilotDelegatedAccess: 'Copilot: Acceso delegado', copilotDelegatedAccessDescription: 'Permitir que otros miembros accedan a tu cuenta.', learnMoreAboutDelegatedAccess: 'Más información sobre acceso delegado', - addCopilot: 'Agregar copiloto', + addCopilot: 'Añade un copiloto a tu cuenta', membersCanAccessYourAccount: 'Estos miembros pueden acceder a tu cuenta:', - youCanAccessTheseAccounts: 'Puedes acceder a estas cuentas a través del conmutador de cuentas:', + youCanAccessTheseAccounts: 'Puedes acceder a estas cuentas:', role: ({role} = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9407,6 +9466,8 @@ ${amount} para ${merchant} - ${date}`, addMember: 'No se pudo añadir este miembro. Por favor, inténtalo de nuevo.', vacationDelegate: 'No se pudo establecer a este usuario como delegado de vacaciones. Por favor, inténtalo de nuevo.', moveMember: 'No se pudo mover este miembro. Por favor, inténtalo de nuevo.', + moveMemberNotPolicyAdmin: + 'No se puede mover al miembro al grupo de dominio. Debes ser Administrador de Políticas para la Política Preferida establecida en el grupo de dominio al que intentas mover a este usuario.', }, cannotSetVacationDelegateForMember: (email: string) => `No puedes establecer un delegado de vacaciones para ${email} porque actualmente es el delegado de los siguientes miembros:`, @@ -9442,7 +9503,13 @@ ${amount} para ${merchant} - ${date}`, `¿Estás seguro de que quieres establecer ${newName} como el grupo predeterminado? Los nuevos miembros serán invitados a este grupo en lugar del grupo predeterminado anterior (${currentName}). `, makeDefault: 'Establecer como predeterminado', neverMind: 'No importa', + createGroupError: 'No se pudo crear este grupo. Inténtalo de nuevo.', permissions: 'Permisos de grupo', + createNewGroupButton: 'Nuevo grupo', + createGroupSubmitButton: 'Crear grupo', + expensifyCardPreferredWorkspace: 'Espacio de trabajo preferido para Expensify Card', + expensifyCardPreferredWorkspaceDescription: + 'Todas las transacciones de Expensify Card se crearán en el espacio de trabajo preferido de Expensify Card en lugar del espacio de trabajo preferido. Al habilitar esta función, la configuración de espacio de trabajo preferido se aplicará solo a las transacciones de Expensify Card.', strictlyEnforceWorkspaceRules: 'Hacer cumplir estrictamente las reglas del espacio de trabajo', strictlyEnforceWorkspaceRulesDescription: 'Todas las reglas del espacio de trabajo deben cumplirse antes de enviar un informe. No se permiten excepciones manuales.', restrictExpenseWorkspaceCreation: 'Restringir la creación/eliminación de espacios de trabajo de gastos', @@ -9460,11 +9527,8 @@ ${amount} para ${merchant} - ${date}`, noWorkspacesMessage: 'No hay espacios de trabajo en este dominio. Se requiere un espacio de trabajo para habilitar esta restricción.', restrictDefaultLoginSelection: 'Restringir el inicio de sesión predeterminado', restrictDefaultLoginSelectionDescription: 'Evita que los miembros cambien su correo de inicio de sesión fuera del dominio de la empresa para eludir restricciones de políticas.', - expensifyCardPreferredWorkspace: 'Espacio de trabajo preferido para Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Todas las transacciones de Expensify Card se crearán en el espacio de trabajo preferido de Expensify Card en lugar del espacio de trabajo preferido. Al habilitar esta función, la configuración de espacio de trabajo preferido se aplicará solo a las transacciones de Expensify Card.', expensifyCardPreferredWorkspaceDisabledMessage: - 'Para usar esta configuración, el espacio de trabajo preferido debe estar habilitado y el dominio debe tener Expensify Card configurada.', + 'Para habilitar esta configuración, primero habilita un espacio de trabajo preferido y configura las Tarjetas Expensify en tu dominio.', findGroup: 'Encontrar grupo', }, }, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 68d35ba4c753..9f9ca8872ac8 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1232,9 +1232,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Supprimer le reçu', findExpense: 'Trouver une dépense', deletedTransaction: (amount: string, merchant: string) => `a supprimé une dépense (${amount} pour ${merchant})`, - movedFromReport: (reportName: string) => `a déplacé une dépense${reportName ? `de ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `a déplacé cette dépense${reportName ? `vers ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `a déplacé cette dépense${reportName ? `depuis ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `a déplacé une dépense depuis ${reportName}`, + movedFromReportNoName: 'a déplacé une dépense', + movedTransactionTo: (reportUrl: string, reportName: string) => `a déplacé cette dépense vers ${reportName}`, + movedTransactionToAnotherReport: 'a déplacé cette dépense vers un autre rapport', + movedTransactionFrom: (reportUrl: string, reportName: string) => `a déplacé cette dépense depuis ${reportName}`, + movedTransactionFromAnotherReport: 'a déplacé cette dépense depuis un autre rapport', unreportedTransaction: (reportUrl: string) => `a déplacé cette dépense vers votre espace personnel`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1446,6 +1449,8 @@ const translations: TranslationDeepObject = { receiptFailureMessage: 'Une erreur s’est produite lors du téléchargement de votre reçu. Veuillez enregistrer le reçu et réessayer plus tard.', receiptFailureMessageShort: 'Une erreur s’est produite lors du téléchargement de votre reçu.', + receiptUploadFailedMessage: 'Échec du téléchargement du reçu. Enregistrez le reçu ou supprimez la dépense et perdez-la.', + saveReceipt: 'Enregistrer le reçu', genericDeleteFailureMessage: 'Erreur inattendue lors de la suppression de cette dépense. Veuillez réessayer plus tard.', genericEditFailureMessage: 'Erreur inattendue lors de la modification de cette dépense. Veuillez réessayer plus tard.', genericSmartscanFailureMessage: 'Des champs manquent à la transaction', @@ -2479,6 +2484,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Afficher les détails', revealCvv: 'Afficher le cryptogramme', copyCardNumber: 'Copier le numéro de carte', + copyCvv: 'Copier le CVV', updateAddress: 'Mettre à jour l’adresse', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Ajouté au portefeuille ${platform}`, @@ -2745,6 +2751,10 @@ ${amount} pour ${merchant} - ${date}`, emptyAgents: {title: 'Aucun agent créé', subtitle: 'Arrêtez de faire les choses manuellement. Donnez plutôt des instructions à un agent et gagnez beaucoup de temps.'}, error: { genericAdd: "Un problème est survenu lors de l'ajout de cet agent", + genericUpdate: 'Un problème est survenu lors de la mise à jour de cet agent', + updateName: 'Un problème est survenu lors de la mise à jour du nom de cet agent', + updatePrompt: 'Un problème est survenu lors de la mise à jour des instructions de cet agent', + updateAvatar: "Un problème est survenu lors de la mise à jour de l'avatar de cet agent", }, }, addAgentPage: { @@ -2752,11 +2762,22 @@ ${amount} pour ${merchant} - ${date}`, agentName: 'Nom de l’agent', instructions: 'Rédiger des instructions personnalisées', createAgent: 'Créer un agent', - switchAvatar: "Changer d'avatar", + editAvatar: "Changer d'avatar", defaultAgentName: (displayName: string) => `Agent de ${displayName}`, defaultPrompt: 'Rejeter les dépenses liées aux jeux d’argent, aux films ou à d’autres motifs manifestement non professionnels.\n\nRappeler à l’utilisateur d’inclure systématiquement une image du reçu où le pourboire est clairement visible.\n\nApprouver le rapport s’il est très similaire aux rapports précédents du même utilisateur.\n\nRejeter les rapports contenant plus de 500 $ de frais de déplacement.', }, + editAgentPage: { + title: 'Modifier l’agent', + agentName: 'Nom de l’agent', + instructions: 'Écrire des instructions personnalisées', + deleteAgent: 'Supprimer l’agent', + deleteAgentTitle: 'Supprimer l’agent ?', + deleteAgentMessage: 'Voulez-vous vraiment supprimer cet agent ? Cette action est irréversible.', + }, + editAgentAvatarPage: {title: 'Modifier l’avatar'}, + editAgentNamePage: {title: 'Nom de l’agent'}, + editAgentPromptPage: {title: 'Écrire des instructions personnalisées', error: {emptyPrompt: 'Veuillez saisir des instructions pour votre agent.'}}, expenseRulesPage: { title: 'Règles de dépenses', findRule: 'Rechercher une règle', @@ -4572,6 +4593,7 @@ ${amount} pour ${merchant} - ${date}`, notConfigured: 'Non configuré', bankAccountDescription: 'Choisissez d’où envoyer les chèques.', creditCardAccount: 'Compte de carte de crédit', + travelInvoicingDescription: 'Les frais de voyage seront exportés comme des débits de carte de crédit vers le compte QuickBooks Online indiqué ci-dessous.', companyCardsLocationEnabledDescription: 'QuickBooks Online ne prend pas en charge les emplacements pour l’exportation des factures fournisseur. Comme vous avez activé les emplacements sur votre espace de travail, cette option d’exportation n’est pas disponible.', outOfPocketTaxEnabledDescription: @@ -4763,6 +4785,7 @@ ${amount} pour ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Factures fournisseurs', }, }, + travelInvoicingDescription: 'Les frais de voyage seront exportés comme des débits de carte de crédit vers le compte Sage Intacct indiqué ci-dessous.', creditCardAccount: 'Compte de carte de crédit', defaultVendor: 'Fournisseur par défaut', defaultVendorDescription: (isReimbursable: boolean) => @@ -4809,8 +4832,8 @@ ${amount} pour ${merchant} - ${date}`, journalPostingPreference: { label: 'Préférence de comptabilisation des écritures de journal', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Saisie unique et détaillée pour chaque note de frais', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Une seule entrée pour chaque dépense', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Saisie unique pour chaque dépense', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Entrée unique et détaillée pour chaque rapport', }, }, invoiceItem: { @@ -5202,6 +5225,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. free: 'Gratuit', control: 'Contrôle', collect: 'Encaisser', + submit: 'Soumettre', }, companyCards: { addCards: 'Ajouter des cartes', @@ -5322,6 +5346,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. requiredColumns: (missingColumns: string) => `Veuillez attribuer une colonne à chacun des attributs : ${missingColumns}.`, duplicateColumns: (duplicateColumn: string) => `Oups ! Vous avez associé un seul champ (« ${duplicateColumn} ») à plusieurs colonnes. Veuillez vérifier et réessayer.`, }, + fileImportDescription: 'Une option manuelle si votre banque ne peut pas envoyer de flux.', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Dernier jour du mois', @@ -5566,8 +5591,8 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. subtitle: 'Félicitations ! Vous êtes prêt à réserver et gérer des voyages sur cet espace de travail.', manageTravelLabel: 'Gérer les déplacements', }, - centralInvoicingSection: { - title: 'Facturation centralisée', + travelInvoicingSection: { + title: 'Facturation de voyages', subtitle: 'Centralisez toutes les dépenses de voyage dans une facture mensuelle au lieu de payer au moment de l’achat.', learnHow: 'Découvrez comment.', subsections: { @@ -5585,7 +5610,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. reduceLimitWarning: 'Si vous réduisez la limite, les membres ayant déjà dépensé plus que ce montant ne pourront pas effectuer de nouvelles réservations de voyage avant le mois prochain.', provisioningError: - 'Nous n’avons pas pu configurer certains membres de votre espace de travail pour la facturation centralisée. Veuillez réessayer plus tard ou contacter Concierge pour obtenir de l’aide.', + 'Nous n’avons pas pu provisionner certains membres de votre espace de travail pour la facturation de voyage. Veuillez réessayer plus tard ou contacter Concierge pour obtenir de l’aide.', }, }, disableModal: { @@ -5606,7 +5631,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. exportToCSV: 'Exporter en CSV', selectDateRangeError: 'Veuillez sélectionner une plage de dates à exporter', invalidDateRangeError: 'La date de début doit être antérieure à la date de fin', - enabled: 'Facturation centralisée activée !', + enabled: 'Facturation des déplacements activée !', enabledDescription: 'Toutes les dépenses de voyage sur cet espace de travail seront désormais centralisées dans une facture mensuelle.', }, personalDetailsDescription: 'Pour pouvoir réserver un voyage, veuillez saisir votre nom légal tel qu’il apparaît sur votre pièce d’identité délivrée par le gouvernement.', @@ -5770,7 +5795,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. subtitle: 'Définissez un taux horaire facturable pour le suivi du temps.', defaultHourlyRate: 'Taux horaire par défaut', }, - hrWarningModal: {disconnectText: 'Pour désactiver les RH, veuillez d’abord déconnecter Gusto de cet espace de travail.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Pour désactiver les RH, veuillez d'abord déconnecter ${integration} de cet espace de travail.`}, }, reports: { reportsCustomTitleExamples: 'Exemples :', @@ -6209,7 +6234,6 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cette action supprimera toutes les connexions comptables existantes.`, enterCredentials: 'Saisissez vos identifiants', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Offre disponible !', xero: { @@ -7064,15 +7088,21 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Synchronisation des employés Gusto'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Chargement des données depuis Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Affectation des employés à la politique'; + case 'zenefitsSyncTitle': + return 'Synchronisation des employés TriNet'; + case 'zenefitsSyncLoadData': + return 'Chargement des données depuis TriNet'; + case 'zenefitsSyncProvisioning': + return 'Affectation des employés à la politique'; case 'jobDone': return 'En attente du chargement des données importées'; default: { - return `Traduction manquante pour l’étape : ${stage}`; + return `Traduction manquante pour l'étape : ${stage}`; } } }, @@ -7099,6 +7129,41 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e syncError: 'Impossible de se connecter à Gusto', disconnectTitle: 'Déconnecter Gusto', disconnectPrompt: 'Voulez-vous vraiment déconnecter Gusto ?', + syncResults: { + title: 'Résultats de la synchronisation Gusto', + successTitle: 'Connexion Gusto synchronisée avec succès !', + added: 'Ajouté', + removed: 'Supprimé', + skipped: 'Ignoré', + employeeCount: () => ({ + one: '1 employé', + other: (count: number) => `${count} employés`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Connecter', + syncNow: 'Synchroniser maintenant', + disconnect: 'Déconnecter', + lastSync: (relativeDate: string) => `Dernière synchronisation ${relativeDate}`, + syncError: 'Impossible de se connecter à TriNet', + disconnectTitle: 'Déconnecter TriNet', + disconnectPrompt: 'Voulez-vous vraiment déconnecter TriNet ?', + connectionDescription: 'Connectez TriNet pour synchroniser les approbations des employés avec votre espace de travail.', + approvalMode: 'Mode d’approbation', + finalApprover: 'Approbateur final', + notSet: 'Non défini', + approvalModeDescription: 'Les membres et les responsables sont configurés pour se synchroniser avec TriNet.', + approvalModeWarningTitle: 'Changer le mode d’approbation ?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Voulez-vous vraiment modifier le mode d’approbation de cet espace de travail ? En savoir plus sur les différents modes de workflow compatibles TriNet sur notre site d’aide.`, + approvalModeWarningConfirm: 'Modifier le mode d’approbation', + approvalModes: { + basic: {label: 'Approbation de base', description: 'Tous les utilisateurs soumettent à une seule personne pour traitement et approbation.'}, + manager: {label: 'Approbation du responsable', description: 'Les employés soumettent des notes de frais à leur supérieur hiérarchique direct configuré dans TriNet.'}, + custom: {label: 'Approbation personnalisée', description: 'Je configurerai manuellement les workflows d’approbation dans Expensify.'}, + }, }, }, }, @@ -7754,11 +7819,12 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e deleteSavedSearchConfirm: 'Voulez-vous vraiment supprimer cette recherche ?', searchName: 'Rechercher un nom', savedSearchesMenuItemTitle: 'Enregistré', + urlCopied: 'URL copiée', groupedExpenses: 'dépenses groupées', bulkActions: { editMultiple: 'Modifier plusieurs', editMultipleTitle: 'Modifier plusieurs dépenses', - editMultipleDescription: 'Les modifications seront appliquées à toutes les dépenses sélectionnées et remplaceront toutes les valeurs précédemment définies.', + editMultipleDescription: 'Les modifications seront définies pour toutes les dépenses sélectionnées et remplaceront toutes les valeurs définies précédemment.', approve: 'Approuver', pay: 'Payer', delete: 'Supprimer', @@ -7808,7 +7874,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Tous les ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Toutes les cartes CSV importées${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Facturation centralisée', + travelInvoicing: 'Facturation de voyages', }, reportField: (name: string, value: string) => `${name} est ${value}`, current: 'Actuel', @@ -7842,7 +7908,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e withdrawalType: { [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Carte Expensify', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Remboursement', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Facturation centralisée', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Facturation de voyages', }, is: 'Est', action: { @@ -8096,7 +8162,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} pour ${dayCount} ${dayCount === 1 ? 'jour' : 'jours'} jusqu’au ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} du ${timePeriod} le ${date}`, startTimer: 'Démarrer le minuteur', - stopTimer: 'Arrêter le minuteur', + stopTimer: (duration: string) => `Arrêter le minuteur (${duration})`, scheduleOOO: 'Planifier une absence', scheduleOOOTitle: 'Planifier une absence du bureau', date: 'Date', @@ -8162,6 +8228,14 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e selectAllFeatures: 'Sélectionner toutes les fonctionnalités', selectAllTransactions: 'Sélectionner toutes les transactions', selectAllItems: 'Sélectionner tous les éléments', + selectAllCategories: 'Sélectionner toutes les catégories', + selectAllDistanceRates: 'Sélectionner tous les taux de distance', + selectAllTags: 'Sélectionner toutes les étiquettes', + selectAllTaxes: 'Sélectionner toutes les taxes', + selectAllPerDiemRates: 'Sélectionner tous les taux de per diem', + selectAllMembers: 'Sélectionner tous les membres', + selectAllValues: 'Sélectionner toutes les valeurs', + selectAllRules: 'Sélectionner toutes les règles', }, parentReportAction: { deletedReport: 'Note de frais supprimée', @@ -8257,7 +8331,8 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e personalCard: 'Carte personnelle', companyCard: 'Carte d’entreprise', expensifyCard: 'Carte Expensify', - centralInvoicing: 'Facturation centralisée', + travelInvoicing: 'Facturation de voyages', + travelCard: 'Carte de voyage', }, distance: { addStop: 'Ajouter un arrêt', @@ -8889,8 +8964,10 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e copilotDelegatedAccessDescription: 'Autoriser les autres membres à accéder à votre compte.', learnMoreAboutDelegatedAccess: "En savoir plus sur l'accès délégué", addCopilot: 'Ajouter un copilote', + switch: 'Changer', + copilot: 'Copilot', membersCanAccessYourAccount: 'Ces membres peuvent accéder à votre compte :', - youCanAccessTheseAccounts: 'Vous pouvez accéder à ces comptes via le sélecteur de compte :', + youCanAccessTheseAccounts: 'Vous pouvez accéder à ces comptes :', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9235,6 +9312,8 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`, addMember: 'Impossible d’ajouter ce membre. Veuillez réessayer.', vacationDelegate: 'Impossible de définir cet utilisateur comme délégué de vacances. Veuillez réessayer.', moveMember: 'Impossible de déplacer ce membre. Veuillez réessayer.', + moveMemberNotPolicyAdmin: + 'Impossible de déplacer le membre vers le groupe de domaine. Vous devez être Administrateur de Politique pour la Politique Préférée définie sur le groupe de domaine vers lequel vous essayez de déplacer cet utilisateur.', }, cannotSetVacationDelegateForMember: (email: string) => `Vous ne pouvez pas définir un délégué de vacances pour ${email}, car cette personne est actuellement le délégué des membres suivants :`, @@ -9266,7 +9345,13 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`, `Êtes-vous sûr de vouloir faire de ${newName} le groupe par défaut ? Les nouveaux membres seront invités à ce groupe au lieu du groupe par défaut précédent (${currentName}). `, makeDefault: 'Définir par défaut', neverMind: 'Peu importe', + createGroupError: 'Impossible de créer ce groupe. Veuillez réessayer.', permissions: 'Autorisations du groupe', + createNewGroupButton: 'Nouveau groupe', + createGroupSubmitButton: 'Créer le groupe', + expensifyCardPreferredWorkspace: 'Espace de travail préféré pour la carte Expensify', + expensifyCardPreferredWorkspaceDescription: + "Toutes les transactions Expensify Card seront créées dans l'espace de travail préféré Expensify Card au lieu de l'espace de travail préféré.", strictlyEnforceWorkspaceRules: 'Appliquer strictement les règles de l’espace de travail', strictlyEnforceWorkspaceRulesDescription: 'Toutes les règles de l’espace de travail doivent être respectées avant de soumettre un rapport. Aucune exception manuelle n’est autorisée.', @@ -9286,11 +9371,8 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`, restrictDefaultLoginSelection: 'Restreindre la sélection de connexion par défaut', restrictDefaultLoginSelectionDescription: 'Empêche les membres de modifier leur e-mail de connexion en dehors du domaine de leur entreprise afin d’éviter les restrictions de politique.', - expensifyCardPreferredWorkspace: 'Espace de travail préféré pour la Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Toutes les transactions Expensify Card seront créées dans l’espace de travail préféré pour la Expensify Card au lieu de l’espace de travail préféré. L’activation de cette fonctionnalité remplacera le paramètre d’espace de travail préféré uniquement pour les transactions Expensify Card.', expensifyCardPreferredWorkspaceDisabledMessage: - 'Pour utiliser ce paramètre, l’espace de travail préféré doit être activé et la Expensify Card doit être configurée pour le domaine.', + 'Pour activer ce paramètre, veuillez d’abord activer un espace de travail préféré et configurer les cartes Expensify sur votre domaine.', findGroup: 'Trouver un groupe', }, }, diff --git a/src/languages/it.ts b/src/languages/it.ts index 2bee6799d69c..bc2372f91dab 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1228,9 +1228,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Elimina ricevuta', findExpense: 'Trova spesa', deletedTransaction: (amount: string, merchant: string) => `ha eliminato una spesa (${amount} per ${merchant})`, - movedFromReport: (reportName: string) => `ha spostato una spesa${reportName ? `da ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `ha spostato questa spesa${reportName ? `a ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `ha spostato questa spesa${reportName ? `da ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `ha spostato una spesa da ${reportName}`, + movedFromReportNoName: 'ha spostato una spesa', + movedTransactionTo: (reportUrl: string, reportName: string) => `ha spostato questa spesa su ${reportName}`, + movedTransactionToAnotherReport: 'ha spostato questa spesa in un altro report', + movedTransactionFrom: (reportUrl: string, reportName: string) => `ha spostato questa spesa da ${reportName}`, + movedTransactionFromAnotherReport: 'ha spostato questa nota spese da un altro report', unreportedTransaction: (reportUrl: string) => `ha spostato questa spesa nel tuo spazio personale`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1441,6 +1444,8 @@ const translations: TranslationDeepObject = { receiptFailureMessage: 'Si è verificato un errore durante il caricamento della ricevuta. Salva la ricevuta e riprova più tardi.', receiptFailureMessageShort: 'Si è verificato un errore durante il caricamento della ricevuta.', + receiptUploadFailedMessage: 'Caricamento della ricevuta non riuscito. Salva la ricevuta oppure elimina la spesa e perdila.', + saveReceipt: 'Salva ricevuta', genericDeleteFailureMessage: 'Errore imprevisto durante l’eliminazione di questa spesa. Riprova più tardi.', genericEditFailureMessage: 'Errore imprevisto durante la modifica di questa spesa. Riprova più tardi.', genericSmartscanFailureMessage: 'Alla transazione mancano dei campi', @@ -2470,6 +2475,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Mostra dettagli', revealCvv: 'Mostra CVV', copyCardNumber: 'Copia numero carta', + copyCvv: 'Copia CVV', updateAddress: 'Aggiorna indirizzo', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Aggiunto al portafoglio ${platform}`, @@ -2735,6 +2741,10 @@ ${amount} per ${merchant} - ${date}`, emptyAgents: {title: 'Nessun agente creato', subtitle: 'Smetti di fare le cose manualmente. Dai istruzioni a un agente e risparmia un sacco di tempo.'}, error: { genericAdd: "Si è verificato un problema durante l'aggiunta di questo agente", + genericUpdate: "Si è verificato un problema durante l'aggiornamento di questo agente", + updateName: "Si è verificato un problema durante l'aggiornamento del nome di questo agente", + updatePrompt: "Si è verificato un problema durante l'aggiornamento delle istruzioni di questo agente", + updateAvatar: "Si è verificato un problema durante l'aggiornamento dell'avatar di questo agente", }, }, addAgentPage: { @@ -2742,11 +2752,22 @@ ${amount} per ${merchant} - ${date}`, agentName: 'Nome agente', instructions: 'Scrivi istruzioni personalizzate', createAgent: 'Crea agente', - switchAvatar: 'Cambia avatar', + editAvatar: 'Cambia avatar', defaultAgentName: (displayName: string) => `Agente di ${displayName}`, defaultPrompt: "Rifiuta le spese relative a gioco d'azzardo, cinema o altri motivi chiaramente non legati all'attività.\n\nRicorda all'utente di includere sempre un'immagine della ricevuta in cui la mancia sia ben visibile.\n\nApprova il report se è molto simile ai report precedenti dello stesso utente.\n\nRifiuta i report con più di 500 $ di spese di viaggio.", }, + editAgentPage: { + title: 'Modifica agente', + agentName: 'Nome agente', + instructions: 'Scrivi istruzioni personalizzate', + deleteAgent: 'Elimina agente', + deleteAgentTitle: 'Eliminare agente?', + deleteAgentMessage: 'Sei sicuro di voler eliminare questo agente? Questa azione non può essere annullata.', + }, + editAgentAvatarPage: {title: 'Modifica avatar'}, + editAgentNamePage: {title: 'Nome agente'}, + editAgentPromptPage: {title: 'Scrivi istruzioni personalizzate', error: {emptyPrompt: 'Inserisci le istruzioni per il tuo agente.'}}, expenseRulesPage: { title: 'Regole spese', findRule: 'Trova regola', @@ -4547,6 +4568,7 @@ ${amount} per ${merchant} - ${date}`, notConfigured: 'Non configurato', bankAccountDescription: 'Scegli da dove inviare gli assegni.', creditCardAccount: 'Conto della carta di credito', + travelInvoicingDescription: 'Le spese di viaggio verranno esportate come addebiti su carta di credito nel conto QuickBooks Online specificato di seguito.', companyCardsLocationEnabledDescription: 'QuickBooks Online non supporta le sedi nell’esportazione delle fatture fornitore. Poiché hai le sedi abilitate nel tuo spazio di lavoro, questa opzione di esportazione non è disponibile.', outOfPocketTaxEnabledDescription: @@ -4738,6 +4760,7 @@ ${amount} per ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Fatture fornitori', }, }, + travelInvoicingDescription: 'Le spese di viaggio verranno esportate come addebiti su carta di credito nel conto Sage Intacct specificato di seguito.', creditCardAccount: 'Conto della carta di credito', defaultVendor: 'Fornitore predefinito', defaultVendorDescription: (isReimbursable: boolean) => @@ -4784,8 +4807,8 @@ ${amount} per ${merchant} - ${date}`, journalPostingPreference: { label: 'Preferenze di registrazione delle scritture contabili', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Voce singola, con dettagli per ogni report', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Voce singola per ogni spesa', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Voce singola per ogni spesa', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Voce singola e dettagliata per ogni report', }, }, invoiceItem: { @@ -5177,6 +5200,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. free: 'Gratis', control: 'Controllo', collect: 'Riscuoti', + submit: 'Invia', }, companyCards: { addCards: 'Aggiungi carte', @@ -5296,6 +5320,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. requiredColumns: (missingColumns: string) => `Assegna una colonna a ciascuno degli attributi: ${missingColumns}.`, duplicateColumns: (duplicateColumn: string) => `Ops! Hai associato un singolo campo ("${duplicateColumn}") a più colonne. Controlla e riprova.`, }, + fileImportDescription: "Un'opzione manuale se la tua banca non può inviare un feed.", }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Ultimo giorno del mese', @@ -5538,8 +5563,8 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. subtitle: 'Complimenti! Ora sei prontə per prenotare e gestire i viaggi in questo spazio di lavoro.', manageTravelLabel: 'Gestisci viaggi', }, - centralInvoicingSection: { - title: 'Fatturazione centralizzata', + travelInvoicingSection: { + title: 'Fatturazione viaggi', subtitle: 'Centralizza tutte le spese di viaggio in una fattura mensile invece di pagare al momento dell’acquisto.', learnHow: 'Scopri come.', subsections: { @@ -5557,7 +5582,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. reduceLimitWarning: 'Se riduci il limite, i membri che hanno già speso più di questo importo non potranno effettuare nuove prenotazioni di viaggio fino al mese prossimo.', provisioningError: - 'Non siamo riusciti a configurare alcuni membri del tuo spazio di lavoro per la fatturazione centralizzata. Riprova più tardi o contatta Concierge per assistenza.', + 'Non siamo riusciti a configurare alcuni membri del tuo spazio di lavoro per la fatturazione di viaggio. Riprova più tardi oppure contatta Concierge per assistenza.', }, }, disableModal: { @@ -5578,7 +5603,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. exportToCSV: 'Esporta in CSV', selectDateRangeError: 'Seleziona un intervallo di date da esportare', invalidDateRangeError: 'La data di inizio deve essere precedente alla data di fine', - enabled: 'Fatturazione centralizzata abilitata!', + enabled: 'Fatturazione Viaggi abilitata!', enabledDescription: 'Tutte le spese di viaggio in questo spazio di lavoro saranno ora centralizzate in una fattura mensile.', }, personalDetailsDescription: 'Per prenotare il viaggio, inserisci il tuo nome legale così come appare sul tuo documento d’identità rilasciato dal governo.', @@ -5740,7 +5765,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. subtitle: 'Imposta una tariffa oraria fatturabile per il rilevamento del tempo.', defaultHourlyRate: 'Tariffa oraria predefinita', }, - hrWarningModal: {disconnectText: 'Per disattivare le risorse umane, disconnetti prima Gusto da questo spazio di lavoro.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Per disattivare HR, scollega prima ${integration} da questo workspace.`}, }, reports: { reportsCustomTitleExamples: 'Esempi:', @@ -6178,7 +6203,6 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`, enterCredentials: 'Inserisci le tue credenziali', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Offerta disponibile!', xero: { @@ -7028,11 +7052,17 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Sincronizzazione dei dipendenti Gusto'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Caricamento dei dati da Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Provisioning dei dipendenti nella policy'; + case 'zenefitsSyncTitle': + return 'Sincronizzazione dipendenti TriNet'; + case 'zenefitsSyncLoadData': + return 'Caricamento dei dati da TriNet'; + case 'zenefitsSyncProvisioning': + return 'Provisioning dei dipendenti nella policy'; case 'jobDone': return 'In attesa del caricamento dei dati importati'; default: { @@ -7063,6 +7093,41 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, syncError: 'Impossibile connettersi a Gusto', disconnectTitle: 'Disconnetti Gusto', disconnectPrompt: 'Sei sicuro di voler disconnettere Gusto?', + syncResults: { + title: 'Risultati sincronizzazione Gusto', + successTitle: 'Connessione a Gusto sincronizzata con successo!', + added: 'Aggiunto', + removed: 'Rimosso', + skipped: 'Saltato', + employeeCount: () => ({ + one: '1 dipendente', + other: (count: number) => `${count} dipendenti`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Connetti', + syncNow: 'Sincronizza ora', + disconnect: 'Disconnetti', + lastSync: (relativeDate: string) => `Ultima sincronizzazione ${relativeDate}`, + syncError: 'Impossibile connettersi a TriNet', + disconnectTitle: 'Disconnetti TriNet', + disconnectPrompt: 'Sei sicuro di voler disconnettere TriNet?', + connectionDescription: 'Collega TriNet per mantenere sincronizzate le approvazioni dei dipendenti con il tuo spazio di lavoro.', + approvalMode: 'Modalità approvazione', + finalApprover: 'Responsabile finale approvazione', + notSet: 'Non impostato', + approvalModeDescription: 'Membri e responsabili sono configurati per sincronizzarsi con TriNet.', + approvalModeWarningTitle: 'Cambiare modalità di approvazione?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Sei sicuro di voler cambiare la modalità di approvazione per questo workspace? Scopri di più sulle diverse modalità di workflow abilitate per TriNet nel nostro sito di assistenza.`, + approvalModeWarningConfirm: 'Modifica modalità di approvazione', + approvalModes: { + basic: {label: 'Approvazione di base', description: 'Tutti gli utenti inviano a una sola persona per l’elaborazione e l’approvazione.'}, + manager: {label: 'Approvazione del manager', description: 'I dipendenti inviano i report al loro responsabile diretto configurato in TriNet.'}, + custom: {label: 'Approvazione personalizzata', description: 'Imposterò manualmente i flussi di approvazione in Expensify.'}, + }, }, }, }, @@ -7723,11 +7788,12 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, deleteSavedSearchConfirm: 'Sei sicuro di voler eliminare questa ricerca?', searchName: 'Cerca nome', savedSearchesMenuItemTitle: 'Salvato', + urlCopied: 'URL copiato', groupedExpenses: 'spese raggruppate', bulkActions: { editMultiple: 'Modifica multipli', editMultipleTitle: 'Modifica più spese', - editMultipleDescription: 'Le modifiche verranno applicate a tutte le spese selezionate e sostituiranno i valori precedentemente impostati.', + editMultipleDescription: 'Le modifiche verranno applicate a tutte le spese selezionate e sovrascriveranno qualsiasi valore impostato in precedenza.', approve: 'Approva', pay: 'Paga', delete: 'Elimina', @@ -7777,7 +7843,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Tutti ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Tutte le carte CSV importate${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Fatturazione centralizzata', + travelInvoicing: 'Fatturazione viaggi', }, reportField: (name: string, value: string) => `${name} è ${value}`, current: 'Attuale', @@ -7811,7 +7877,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, withdrawalType: { [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Carta Expensify', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Rimborso', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Fatturazione centralizzata', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Fatturazione viaggi', }, is: 'È', action: { @@ -8065,7 +8131,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} per ${dayCount} ${dayCount === 1 ? 'giorno' : 'giorni'} fino al ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} dal ${timePeriod} del ${date}`, startTimer: 'Avvia timer', - stopTimer: 'Ferma timer', + stopTimer: (duration: string) => `Ferma timer (${duration})`, scheduleOOO: 'Pianifica OOO', scheduleOOOTitle: 'Programma assenza dall’ufficio', date: 'Data', @@ -8131,6 +8197,14 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, selectAllFeatures: 'Seleziona tutte le funzionalità', selectAllTransactions: 'Seleziona tutte le transazioni', selectAllItems: 'Seleziona tutti gli elementi', + selectAllCategories: 'Seleziona tutte le categorie', + selectAllDistanceRates: 'Seleziona tutte le tariffe chilometriche', + selectAllTags: 'Seleziona tutti i tag', + selectAllTaxes: 'Seleziona tutte le imposte', + selectAllPerDiemRates: 'Seleziona tutte le tariffe giornaliere', + selectAllMembers: 'Seleziona tutti i membri', + selectAllValues: 'Seleziona tutti i valori', + selectAllRules: 'Seleziona tutte le regole', }, parentReportAction: { deletedReport: 'Report eliminato', @@ -8226,7 +8300,8 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, personalCard: 'Carta personale', companyCard: 'Carta aziendale', expensifyCard: 'Carta Expensify', - centralInvoicing: 'Fatturazione centralizzata', + travelInvoicing: 'Fatturazione viaggi', + travelCard: 'Carta Viaggio', }, distance: { addStop: 'Aggiungi fermata', @@ -8854,12 +8929,14 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, }, delegate: { switchAccount: 'Cambia account:', + switch: 'Cambia', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot: Accesso delegato', copilotDelegatedAccessDescription: 'Consenti agli altri membri di accedere al tuo account.', learnMoreAboutDelegatedAccess: "Scopri di più sull'accesso delegato", addCopilot: 'Aggiungi copilota', membersCanAccessYourAccount: 'Questi membri possono accedere al tuo account:', - youCanAccessTheseAccounts: 'Puoi accedere a questi account tramite il selettore di account:', + youCanAccessTheseAccounts: 'Puoi accedere a questi account:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9206,6 +9283,8 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`, addMember: 'Impossibile aggiungere questo membro. Riprova.', vacationDelegate: 'Impossibile impostare questo utente come delegato per le ferie. Riprova.', moveMember: 'Impossibile spostare questo membro. Riprova.', + moveMemberNotPolicyAdmin: + 'Impossibile spostare il membro nel gruppo di dominio. Devi essere Amministratore di Criteri per il Criterio Preferito impostato nel gruppo di dominio in cui stai cercando di spostare questo utente.', }, cannotSetVacationDelegateForMember: (email: string) => `Non puoi impostare un delegato per le vacanze per ${email} perché al momento è il delegato per i seguenti membri:`, reportSuspiciousActivityPrompt: (email: string) => @@ -9235,7 +9314,13 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`, `Sei sicuro di voler impostare ${newName} come gruppo predefinito? I nuovi membri verranno invitati a questo gruppo invece del precedente gruppo predefinito (${currentName}). `, makeDefault: 'Imposta come predefinito', neverMind: 'Lascia perdere', + createGroupError: 'Impossibile creare questo gruppo. Riprova.', permissions: 'Autorizzazioni del gruppo', + createNewGroupButton: 'Nuovo gruppo', + createGroupSubmitButton: 'Crea gruppo', + expensifyCardPreferredWorkspace: 'Workspace preferito per Expensify Card', + expensifyCardPreferredWorkspaceDescription: + "Tutte le transazioni Expensify Card verranno create nell'area di lavoro preferita Expensify Card anziché nell'area di lavoro preferita.", strictlyEnforceWorkspaceRules: 'Applica rigorosamente le regole dello spazio di lavoro', strictlyEnforceWorkspaceRulesDescription: 'Tutte le regole dello spazio di lavoro devono essere soddisfatte prima di inviare un rapporto. Non sono consentite eccezioni manuali.', restrictExpenseWorkspaceCreation: 'Limita la creazione/rimozione dell’area di lavoro spese', @@ -9253,11 +9338,8 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`, noWorkspacesMessage: 'Non ci sono spazi di lavoro su questo dominio. È necessario uno spazio di lavoro per abilitare questa restrizione.', restrictDefaultLoginSelection: 'Limita la selezione di accesso predefinita', restrictDefaultLoginSelectionDescription: 'Impedisce ai membri di modificare l’email di accesso al di fuori del dominio aziendale per eludere le restrizioni delle policy.', - expensifyCardPreferredWorkspace: 'Area di lavoro preferita per Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Tutte le transazioni Expensify Card verranno create nell’area di lavoro preferita per Expensify Card anziché nell’area di lavoro preferita. L’attivazione di questa funzione sostituirà l’impostazione dell’area di lavoro preferita solo per le transazioni Expensify Card.', expensifyCardPreferredWorkspaceDisabledMessage: - 'Per utilizzare questa impostazione, l’area di lavoro preferita deve essere abilitata e la Expensify Card deve essere configurata per il dominio.', + 'Per abilitare questa impostazione, abilita prima uno spazio di lavoro preferito e configura le Expensify Card per il tuo dominio.', findGroup: 'Trova gruppo', }, }, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 7d1faaf7d3d4..ce66751429fb 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1211,9 +1211,12 @@ const translations: TranslationDeepObject = { deleteReceipt: '領収書を削除', findExpense: '経費を検索', deletedTransaction: (amount: string, merchant: string) => `経費を削除しました(${merchant} に ${amount})`, - movedFromReport: (reportName: string) => `経費${reportName ? `${reportName} から` : ''}を移動しました`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `この経費を移動しました${reportName ? `${reportName}へ` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `この経費を移動しました${reportName ? `${reportName} から` : ''}`, + movedFromReport: (reportName: string) => `${reportName} から経費を移動しました`, + movedFromReportNoName: '経費を移動しました', + movedTransactionTo: (reportUrl: string, reportName: string) => `この経費を${reportName}に移動しました`, + movedTransactionToAnotherReport: 'この経費を別のレポートに移動しました', + movedTransactionFrom: (reportUrl: string, reportName: string) => `この経費を${reportName}から移動しました`, + movedTransactionFromAnotherReport: 'この経費を別のレポートから移動しました', unreportedTransaction: (reportUrl: string) => `この経費をあなたの個人スペースに移動しました`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1423,6 +1426,8 @@ const translations: TranslationDeepObject = { receiptFailureMessage: '領収書のアップロード中にエラーが発生しました。後で再度お試しいただくために、領収書を保存してから、時間をおいてもう一度お試しください', receiptFailureMessageShort: 'レシートのアップロード中にエラーが発生しました。', + receiptUploadFailedMessage: 'レシートのアップロードに失敗しました。レシートを保存するか、経費を削除して失うかを選択してください。', + saveReceipt: '領収書を保存', genericDeleteFailureMessage: 'この経費の削除中に予期しないエラーが発生しました。しばらくしてからもう一度お試しください。', genericEditFailureMessage: 'この経費の編集中に予期しないエラーが発生しました。後でもう一度お試しください。', genericSmartscanFailureMessage: '取引に未入力の項目があります', @@ -2447,6 +2452,7 @@ const translations: TranslationDeepObject = { revealDetails: '詳細を表示', revealCvv: 'CVV を表示', copyCardNumber: 'カード番号をコピー', + copyCvv: 'CVV をコピー', updateAddress: '住所を更新', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `${platform}ウォレットに追加しました`, @@ -2707,6 +2713,10 @@ ${date} の ${merchant} への ${amount}`, emptyAgents: {title: 'エージェントは作成されていません', subtitle: '手作業はやめて、代わりにエージェントに指示を出して、時間を大幅に節約しましょう。'}, error: { genericAdd: 'このエージェントの追加中に問題が発生しました', + genericUpdate: 'このエージェントの更新中に問題が発生しました', + updateName: 'このエージェント名の更新中に問題が発生しました', + updatePrompt: 'このエージェントの指示を更新する際に問題が発生しました', + updateAvatar: 'このエージェントのアバターを更新する際に問題が発生しました', }, }, addAgentPage: { @@ -2714,11 +2724,22 @@ ${date} の ${merchant} への ${amount}`, agentName: 'エージェント名', instructions: 'カスタム指示を作成', createAgent: 'エージェントを作成', - switchAvatar: 'アバターを切り替え', + editAvatar: 'アバターを切り替え', defaultAgentName: (displayName: string) => `${displayName} さんの代理人`, defaultPrompt: 'ギャンブル、映画、またはその他明らかにビジネス目的ではない理由による経費は却下します。\n\nチップの金額が明確にわかるレシート画像を必ず添付するよう、ユーザーにリマインドします。\n\n同じユーザーの過去のレポートと非常によく似ている場合は、そのレポートを承認します。\n\n出張費が500ドルを超えるレポートは却下します。', }, + editAgentPage: { + title: 'エージェントを編集', + agentName: '担当者名', + instructions: 'カスタム手順を作成', + deleteAgent: 'エージェントを削除', + deleteAgentTitle: 'エージェントを削除しますか?', + deleteAgentMessage: 'このエージェントを削除してもよろしいですか?この操作は元に戻せません。', + }, + editAgentAvatarPage: {title: 'アバターを編集'}, + editAgentNamePage: {title: '担当者名'}, + editAgentPromptPage: {title: 'カスタム手順を作成', error: {emptyPrompt: 'エージェントへの指示を入力してください。'}}, expenseRulesPage: { title: '経費ルール', findRule: 'ルールを検索', @@ -4511,6 +4532,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' notConfigured: '未設定', bankAccountDescription: '小切手の送金元を選択してください。', creditCardAccount: 'クレジットカード口座', + travelInvoicingDescription: '旅費は、以下で指定した QuickBooks Online アカウントにクレジットカード請求としてエクスポートされます。', companyCardsLocationEnabledDescription: 'QuickBooks Online は仕入先請求書のエクスポートでロケーションをサポートしていません。ワークスペースでロケーションが有効になっているため、このエクスポートオプションは使用できません。', outOfPocketTaxEnabledDescription: @@ -4695,6 +4717,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: '仕入先請求書', }, }, + travelInvoicingDescription: '旅費は、以下で指定した Sage Intacct アカウントにクレジットカード請求としてエクスポートされます。', creditCardAccount: 'クレジットカード口座', defaultVendor: 'デフォルトのベンダー', defaultVendorDescription: (isReimbursable: boolean) => @@ -4740,8 +4763,8 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' journalPostingPreference: { label: '仕訳の記帳設定', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '各レポートごとの単一の項目別エントリ', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '各経費につき1件の入力', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '各経費につき1件の入力', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '各レポートごとの単一の明細エントリ', }, }, invoiceItem: { @@ -5129,6 +5152,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO free: '無料', control: 'コントロール', collect: '回収', + submit: '提出', }, companyCards: { addCards: 'カードを追加', @@ -5245,6 +5269,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO requiredColumns: (missingColumns: string) => `各属性に列を割り当ててください:${missingColumns}`, duplicateColumns: (duplicateColumn: string) => `おっと!1 つのフィールド("${duplicateColumn}")を複数の列にマッピングしています。確認して、もう一度お試しください。`, }, + fileImportDescription: '銀行からフィードを送信できない場合の手動オプションです。', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: '月末最終日', @@ -5475,8 +5500,8 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO subtitle: 'おめでとうございます!このワークスペースで旅行の予約と管理を行う準備ができました。', manageTravelLabel: '出張を管理', }, - centralInvoicingSection: { - title: '集中請求', + travelInvoicingSection: { + title: '出張請求書作成', subtitle: '購入時に支払うのではなく、すべての出張費を月次請求書に集約しましょう。', learnHow: '詳しく見る', subsections: { @@ -5492,7 +5517,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO reduceLimitTitle: '出張支出上限を引き下げますか?', reduceLimitWarning: 'この上限を引き下げると、すでにこの金額を超えて支出しているメンバーは、翌月まで新しい出張予約ができなくなります。', provisioningError: - 'ワークスペース内の一部メンバーを集中請求用にプロビジョニングできませんでした。時間をおいてもう一度お試しいただくか、サポートが必要な場合は Concierge までお問い合わせください。', + 'ワークスペース内の一部メンバーを旅行請求用にプロビジョニングできませんでした。時間をおいてもう一度お試しいただくか、サポートが必要な場合は Concierge までご連絡ください。', }, }, disableModal: { @@ -5509,7 +5534,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO exportToCSV: 'CSV にエクスポート', selectDateRangeError: 'エクスポートする日付範囲を選択してください', invalidDateRangeError: '開始日は終了日より前でなければなりません', - enabled: '集中請求が有効になりました!', + enabled: '出張請求書機能が有効になりました!', enabledDescription: 'このワークスペースのすべての出張費は、今後、月次請求書で一元管理されます。', }, personalDetailsDescription: '旅行を予約するために、政府発行の身分証明書に記載されているとおりの正式な氏名を入力してください。', @@ -5671,7 +5696,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO subtitle: '時間追跡用の請求可能な時間単価を設定します。', defaultHourlyRate: 'デフォルトの時給率', }, - hrWarningModal: {disconnectText: '人事機能を無効にするには、まずこのワークスペースから Gusto の連携を解除してください。'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `HR を無効にするには、まずこのワークスペースから ${integration} を切断してください。`}, }, reports: { reportsCustomTitleExamples: '例:', @@ -6107,7 +6132,6 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO connectPrompt: ({connectionName}: ConnectionNameParams) => `${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計連携'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`, enterCredentials: '認証情報を入力してください', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'オファーをご利用いただけます!', xero: { @@ -6949,15 +6973,21 @@ ${reportName} syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Gusto 従業員を同期中'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Gusto からデータを読み込んでいます'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'ポリシー内で従業員をプロビジョニングする'; + case 'zenefitsSyncTitle': + return 'TriNet 従業員を同期しています'; + case 'zenefitsSyncLoadData': + return 'TriNet からデータを読み込んでいます'; + case 'zenefitsSyncProvisioning': + return 'ポリシー内で従業員をプロビジョニングする'; case 'jobDone': return 'インポートしたデータの読み込みを待機しています'; default: { - return `ステージの翻訳が見つかりません: ${stage}`; + return `ステージ「${stage}」の翻訳が見つかりません`; } } }, @@ -6984,6 +7014,41 @@ ${reportName} syncError: 'Gusto に接続できません', disconnectTitle: 'Gusto の接続を解除', disconnectPrompt: 'Gusto との接続を本当に解除しますか?', + syncResults: { + title: 'Gusto 同期結果', + successTitle: 'Gusto との連携が正常に同期されました!', + added: '追加済み', + removed: '削除済み', + skipped: 'スキップ済み', + employeeCount: () => ({ + one: '1 従業員', + other: (count: number) => `${count} 従業員`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: '接続', + syncNow: '今すぐ同期', + disconnect: '切断する', + lastSync: (relativeDate: string) => `最終同期日時:${relativeDate}`, + syncError: 'TriNet に接続できません', + disconnectTitle: 'TriNet の接続を解除', + disconnectPrompt: 'TriNet との接続を解除してもよろしいですか?', + connectionDescription: 'TriNet を接続して、従業員の承認をワークスペースと同期させましょう。', + approvalMode: '承認モード', + finalApprover: '最終承認者', + notSet: '未設定', + approvalModeDescription: 'メンバーとマネージャーは TriNet と同期するように設定されています。', + approvalModeWarningTitle: '承認モードを変更しますか?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `このワークスペースの承認モードを本当に変更してもよろしいですか?TriNet に対応した各種ワークフローモードの詳細は、ヘルプサイトをご覧ください。`, + approvalModeWarningConfirm: '承認モードを変更', + approvalModes: { + basic: {label: '基本承認', description: 'すべてのユーザーが、処理と承認のために 1 人の担当者へ経費を提出します。'}, + manager: {label: 'マネージャー承認', description: '従業員は、TriNet で設定された直属のマネージャーにレポートを提出します。'}, + custom: {label: 'カスタム承認', description: 'Expensify で承認ワークフローを手動で設定します。'}, + }, }, }, }, @@ -7629,11 +7694,12 @@ ${reportName} deleteSavedSearchConfirm: 'この検索を削除してもよろしいですか?', searchName: '名前を検索', savedSearchesMenuItemTitle: '保存済み', + urlCopied: 'URLをコピーしました', groupedExpenses: 'グループ化された経費', bulkActions: { editMultiple: '複数を編集', editMultipleTitle: '複数の経費を編集', - editMultipleDescription: '変更は選択したすべての経費に適用され、以前に設定された値は上書きされます。', + editMultipleDescription: '変更は選択されたすべての経費に適用され、以前に設定された値は上書きされます。', approve: '承認', pay: '支払う', delete: '削除', @@ -7683,7 +7749,7 @@ ${reportName} cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `すべての${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `すべてのCSVインポート済みカード${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: '集中請求', + travelInvoicing: '出張請求書作成', }, reportField: (name: string, value: string) => `${name} は ${value} です`, current: '現在', @@ -7715,9 +7781,9 @@ ${reportName} }, feed: 'フィード', withdrawalType: { - [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Card', - [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: '払い戻し', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: '一括請求', + [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify カード', + [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: '精算', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: '出張請求書作成', }, is: 'は', action: { @@ -7964,7 +8030,7 @@ ${reportName} oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary}(${date} までの ${dayCount} ${dayCount === 1 ? '日' : '日数'} 分)`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${date}の${timePeriod}の${summary}`, startTimer: 'タイマー開始', - stopTimer: 'タイマーを停止', + stopTimer: (duration: string) => `タイマーを停止 (${duration})`, scheduleOOO: '不在予定を設定', scheduleOOOTitle: '不在予定を設定', date: '日付', @@ -8030,6 +8096,14 @@ ${reportName} selectAllFeatures: 'すべての機能を選択', selectAllTransactions: 'すべての取引を選択', selectAllItems: 'すべての項目を選択', + selectAllCategories: 'すべてのカテゴリを選択', + selectAllDistanceRates: 'すべての距離レートを選択', + selectAllTags: 'すべてのタグを選択', + selectAllTaxes: 'すべての税を選択', + selectAllPerDiemRates: 'すべての日当レートを選択', + selectAllMembers: 'すべてのメンバーを選択', + selectAllValues: 'すべての値を選択', + selectAllRules: 'すべてのルールを選択', }, parentReportAction: { deletedReport: '削除されたレポート', @@ -8124,7 +8198,8 @@ ${reportName} personalCard: '個人のカード', companyCard: '会社カード', expensifyCard: 'Expensify カード', - centralInvoicing: '集中請求', + travelInvoicing: '出張請求書作成', + travelCard: 'トラベルカード', }, distance: { addStop: '経由地を追加', @@ -8742,12 +8817,14 @@ ${reportName} }, delegate: { switchAccount: 'アカウントを切り替え:', + switch: '切り替え', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot:代理アクセス', copilotDelegatedAccessDescription: '他のメンバーがあなたのアカウントにアクセスできるようにする', learnMoreAboutDelegatedAccess: '代理アクセスの詳細', addCopilot: 'コパイロットを追加', membersCanAccessYourAccount: '次のメンバーがあなたのアカウントにアクセスできます:', - youCanAccessTheseAccounts: 'これらのアカウントには、アカウント切り替え機能からアクセスできます。', + youCanAccessTheseAccounts: 'これらのアカウントにアクセスできます:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9089,6 +9166,8 @@ ${reportName} addMember: 'このメンバーを追加できませんでした。もう一度お試しください。', vacationDelegate: 'このユーザーを休暇代理人として設定できませんでした。もう一度お試しください。', moveMember: 'このメンバーを移動できませんでした。もう一度お試しください。', + moveMemberNotPolicyAdmin: + 'メンバーをドメイングループに移動できません。このユーザーを移動しようとしているドメイングループに設定された優先ポリシーのポリシー管理者である必要があります。', }, cannotSetVacationDelegateForMember: (email: string) => `${email} に休暇代理人を設定できません。現在、このユーザーは次のメンバーの代理人になっています。`, reportSuspiciousActivityPrompt: (email: string) => @@ -9118,7 +9197,12 @@ ${reportName} `本当に ${newName} をデフォルトグループに設定しますか?新しいメンバーは、以前のデフォルトグループ (${currentName}) ではなく、このグループに招待されます。`, makeDefault: 'デフォルトに設定', neverMind: 'やめておく', + createGroupError: 'このグループを作成できませんでした。もう一度お試しください。', permissions: 'グループの権限', + createNewGroupButton: '新しいグループ', + createGroupSubmitButton: 'グループを作成', + expensifyCardPreferredWorkspace: 'Expensify Card の優先ワークスペース', + expensifyCardPreferredWorkspaceDescription: 'すべてのExpensify Cardトランザクションは、優先ワークスペースではなくExpensify Card優先ワークスペースで作成されます。', strictlyEnforceWorkspaceRules: 'ワークスペースのルールを厳密に適用する', strictlyEnforceWorkspaceRulesDescription: 'レポートを送信する前にすべてのワークスペースのルールを満たす必要があります。手動による例外は許可されていません。', restrictExpenseWorkspaceCreation: '経費ワークスペースの作成/削除を制限する', @@ -9135,10 +9219,7 @@ ${reportName} noWorkspacesMessage: 'このドメインにワークスペースがありません。この制限を有効にするにはワークスペースが必要です。', restrictDefaultLoginSelection: 'デフォルトのログイン選択を制限する', restrictDefaultLoginSelectionDescription: 'メンバーがポリシー制限を回避するために、ログイン用のメールアドレスを会社のドメイン以外に変更することを防ぎます。', - expensifyCardPreferredWorkspace: 'Expensify Card 優先ワークスペース', - expensifyCardPreferredWorkspaceDescription: - 'すべての Expensify Card トランザクションは、優先ワークスペースではなく Expensify Card 優先ワークスペースで作成されます。この機能を有効にすると、Expensify Card トランザクションに対してのみ優先ワークスペースの設定が上書きされます。', - expensifyCardPreferredWorkspaceDisabledMessage: 'この設定を使用するには、優先ワークスペースを有効にし、ドメインに Expensify Card が設定されている必要があります。', + expensifyCardPreferredWorkspaceDisabledMessage: 'この設定を有効にするには、まず優先するワークスペースを有効にし、ドメインでExpensify Cardsを設定してください。', findGroup: 'グループを検索', }, }, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index bbefe7514f09..f49b1a731a59 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1226,9 +1226,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Bon verwijderen', findExpense: 'Uitgave zoeken', deletedTransaction: (amount: string, merchant: string) => `heeft een uitgave verwijderd (${amount} voor ${merchant})`, - movedFromReport: (reportName: string) => `heeft een uitgave verplaatst${reportName ? `van ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `heeft deze uitgave verplaatst${reportName ? `naar ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `heeft deze uitgave verplaatst${reportName ? `van ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `heeft een uitgave verplaatst uit ${reportName}`, + movedFromReportNoName: 'heeft een uitgave verplaatst', + movedTransactionTo: (reportUrl: string, reportName: string) => `heeft deze uitgave verplaatst naar ${reportName}`, + movedTransactionToAnotherReport: 'heeft deze uitgave naar een ander rapport verplaatst', + movedTransactionFrom: (reportUrl: string, reportName: string) => `heeft deze uitgave verplaatst van ${reportName}`, + movedTransactionFromAnotherReport: 'heeft deze uitgave van een ander rapport verplaatst', unreportedTransaction: (reportUrl: string) => `heeft deze uitgave verplaatst naar je persoonlijke ruimte`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1438,6 +1441,8 @@ const translations: TranslationDeepObject = { receiptDeleteFailureError: 'Onverwachte fout bij het verwijderen van deze bon. Probeer het later opnieuw.', receiptFailureMessage: 'Er is een fout opgetreden bij het uploaden van je bon. Sla de bon op en probeer het later opnieuw.', receiptFailureMessageShort: 'Er is een fout opgetreden bij het uploaden van je bon.', + receiptUploadFailedMessage: 'Uploaden van bon mislukt. Sla de bon op of verwijder de uitgave en verlies hem.', + saveReceipt: 'Bon opslaan', genericDeleteFailureMessage: 'Onverwachte fout bij het verwijderen van deze uitgave. Probeer het later opnieuw.', genericEditFailureMessage: 'Onverwachte fout bij het bewerken van deze uitgave. Probeer het later opnieuw.', genericSmartscanFailureMessage: 'Transactie mist velden', @@ -2467,6 +2472,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Details weergeven', revealCvv: 'CVV weergeven', copyCardNumber: 'Kaartnummer kopiëren', + copyCvv: 'CVV kopiëren', updateAddress: 'Adres bijwerken', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Toegevoegd aan ${platform}-wallet`, @@ -2731,6 +2737,10 @@ ${amount} voor ${merchant} - ${date}`, emptyAgents: {title: 'Geen agents aangemaakt', subtitle: 'Stop met dingen handmatig doen. Geef in plaats daarvan een opdracht aan een agent en bespaar jezelf veel tijd.'}, error: { genericAdd: 'Er was een probleem bij het toevoegen van deze agent', + genericUpdate: 'Er is een probleem opgetreden bij het bijwerken van deze agent', + updateName: 'Er is een probleem opgetreden bij het bijwerken van de naam van deze agent', + updatePrompt: 'Er is een probleem opgetreden bij het bijwerken van de instructies van deze agent', + updateAvatar: 'Er is een probleem opgetreden bij het bijwerken van de avatar van deze agent', }, }, addAgentPage: { @@ -2738,11 +2748,22 @@ ${amount} voor ${merchant} - ${date}`, agentName: 'Naam medewerker', instructions: 'Schrijf aangepaste instructies', createAgent: 'Agent aanmaken', - switchAvatar: 'Profielavatar wisselen', + editAvatar: 'Profielavatar wisselen', defaultAgentName: (displayName: string) => `Agent van ${displayName}`, defaultPrompt: 'Wijs declaraties af die zijn voor gokken, films of andere duidelijk niet-zakelijke redenen.\n\nHerinner de gebruiker eraan altijd een bonafbeelding toe te voegen waarop de fooi duidelijk is.\n\nKeur het verslag goed als het sterk lijkt op eerdere verslagen van dezelfde gebruiker.\n\nWijs verslagen af met meer dan $500 aan reiskosten.', }, + editAgentPage: { + title: 'Agent bewerken', + agentName: 'Naam medewerker', + instructions: 'Aangepaste instructies schrijven', + deleteAgent: 'Agent verwijderen', + deleteAgentTitle: 'Agent verwijderen?', + deleteAgentMessage: 'Weet je zeker dat je deze agent wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', + }, + editAgentAvatarPage: {title: 'Avatar bewerken'}, + editAgentNamePage: {title: 'Naam medewerker'}, + editAgentPromptPage: {title: 'Aangepaste instructies schrijven', error: {emptyPrompt: 'Voer instructies in voor je medewerker.'}}, expenseRulesPage: { title: 'Declaratieregels', findRule: 'Regel zoeken', @@ -4539,6 +4560,7 @@ ${amount} voor ${merchant} - ${date}`, notConfigured: 'Niet geconfigureerd', bankAccountDescription: 'Kies vanaf waar cheques worden verzonden.', creditCardAccount: 'Creditcardrekening', + travelInvoicingDescription: 'Reiskosten worden als creditcardkosten geëxporteerd naar het hieronder opgegeven QuickBooks Online-account.', companyCardsLocationEnabledDescription: 'QuickBooks Online ondersteunt geen locaties bij het exporteren van leveranciersfacturen. Omdat je locaties hebt ingeschakeld in je workspace, is deze exportoptie niet beschikbaar.', outOfPocketTaxEnabledDescription: @@ -4728,6 +4750,7 @@ ${amount} voor ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Leveranciersfacturen', }, }, + travelInvoicingDescription: 'Reiskosten worden als creditcardkosten geëxporteerd naar het hieronder opgegeven Sage Intacct-account.', creditCardAccount: 'Creditcardrekening', defaultVendor: 'Standaardleverancier', defaultVendorDescription: (isReimbursable: boolean) => @@ -4774,8 +4797,8 @@ ${amount} voor ${merchant} - ${date}`, journalPostingPreference: { label: 'Voorkeur voor het boeken van journaalposten', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Enkele, uitgesplitste boeking voor elk rapport', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Eén boeking per uitgave', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Enkele boeking per uitgave', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Enkele, uitgesplitste boeking per rapport', }, }, invoiceItem: { @@ -5167,6 +5190,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ free: 'Gratis', control: 'Beheer', collect: 'Incasseren', + submit: 'Indienen', }, companyCards: { addCards: 'Kaarten toevoegen', @@ -5285,6 +5309,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ duplicateColumns: (duplicateColumn: string) => `Oeps! Je hebt één enkel veld (“${duplicateColumn}”) aan meerdere kolommen gekoppeld. Controleer dit en probeer het opnieuw.`, }, + fileImportDescription: 'Een handmatige optie als je bank geen feed kan versturen.', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Laatste dag van de maand', @@ -5523,8 +5548,8 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ subtitle: 'Gefeliciteerd! Je bent helemaal klaar om reizen in deze workspace te boeken en te beheren.', manageTravelLabel: 'Reizen beheren', }, - centralInvoicingSection: { - title: 'Gecentraliseerde facturatie', + travelInvoicingSection: { + title: 'Reisfacturatie', subtitle: 'Centraliseer alle reiskosten op één maandelijkse factuur in plaats van bij aankoop te betalen.', learnHow: 'Kom meer te weten.', subsections: { @@ -5540,7 +5565,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ reduceLimitTitle: 'Reisbestedingslimiet verlagen?', reduceLimitWarning: 'Als u het limiet verlaagt, kunnen leden die dit bedrag al hebben overschreden geen nieuwe reisboekingen maken tot volgende maand.', provisioningError: - 'We konden sommige leden van je workspace niet instellen voor centrale facturatie. Probeer het later opnieuw of neem contact op met Concierge voor hulp.', + 'We konden voor sommige leden van je workspace geen toegang voor reisfacturatie instellen. Probeer het later opnieuw of neem contact op met Concierge voor hulp.', }, }, disableModal: { @@ -5557,7 +5582,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ exportToCSV: 'Exporteren naar CSV', selectDateRangeError: 'Selecteer een datumbereik om te exporteren', invalidDateRangeError: 'De begindatum moet vóór de einddatum liggen', - enabled: 'Centraal factureren ingeschakeld!', + enabled: 'Facturatie voor reizen ingeschakeld!', enabledDescription: 'Alle reiskosten in deze workspace worden nu gebundeld op één maandelijkse factuur.', }, personalDetailsDescription: 'Om een reis te boeken, voer je wettelijke naam in zoals deze op je door de overheid uitgegeven identiteitsbewijs staat.', @@ -5718,7 +5743,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ subtitle: 'Stel een factureerbaar uurtarief in voor tijdregistratie.', defaultHourlyRate: 'Standaard uurtarief', }, - hrWarningModal: {disconnectText: 'Om HR uit te schakelen, verbreek eerst de verbinding van Gusto met deze workspace.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Om HR uit te schakelen, koppel eerst ${integration} los van deze workspace.`}, }, reports: { reportsCustomTitleExamples: 'Voorbeelden:', @@ -6156,7 +6181,6 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ connectPrompt: ({connectionName}: ConnectionNameParams) => `Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkoppeling'} wilt koppelen? Hierdoor worden alle bestaande boekhoudkundige koppelingen verwijderd.`, enterCredentials: 'Voer je inloggegevens in', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Aanbieding beschikbaar!', xero: { @@ -7004,13 +7028,19 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Gusto-medewerkers synchroniseren'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Gegevens laden van Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Medewerkers toewijzen in beleid'; + case 'zenefitsSyncTitle': + return 'TriNet-medewerkers synchroniseren'; + case 'zenefitsSyncLoadData': + return 'Gegevens laden van TriNet'; + case 'zenefitsSyncProvisioning': + return 'Medewerkers toewijzen in beleid'; case 'jobDone': - return 'Wachten tot geïmporteerde gegevens zijn geladen'; + return 'Wachten tot geïmporteerde gegevens worden geladen'; default: { return `Vertaling ontbreekt voor fase: ${stage}`; } @@ -7039,6 +7069,41 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, syncError: 'Kan geen verbinding maken met Gusto', disconnectTitle: 'Verbinding met Gusto verbreken', disconnectPrompt: 'Weet je zeker dat je de verbinding met Gusto wilt verbreken?', + syncResults: { + title: 'Gusto-synchronisatieresultaten', + successTitle: 'Je Gusto-verbinding is succesvol gesynchroniseerd!', + added: 'Toegevoegd', + removed: 'Verwijderd', + skipped: 'Overgeslagen', + employeeCount: () => ({ + one: '1 werknemer', + other: (count: number) => `${count} medewerkers`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Verbinden', + syncNow: 'Nu synchroniseren', + disconnect: 'Verbinding verbreken', + lastSync: (relativeDate: string) => `Laatst gesynchroniseerd ${relativeDate}`, + syncError: 'Kan geen verbinding maken met TriNet', + disconnectTitle: 'Koppeling met TriNet verbreken', + disconnectPrompt: 'Weet je zeker dat je TriNet wilt loskoppelen?', + connectionDescription: 'Verbind TriNet om goedkeuringen van medewerkers synchroon te houden met je werkruimte.', + approvalMode: 'Goedkeuringsmodus', + finalApprover: 'Laatste fiatteur', + notSet: 'Niet ingesteld', + approvalModeDescription: 'Leden en managers zijn ingesteld om te synchroniseren met TriNet.', + approvalModeWarningTitle: 'Goedkeuringsmodus wijzigen?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Weet je zeker dat je de goedkeuringsmodus voor deze workspace wilt wijzigen? Lees meer over de verschillende TriNet-ondersteunde workflowmodi op onze help-pagina.`, + approvalModeWarningConfirm: 'Goedkeuringsmodus wijzigen', + approvalModes: { + basic: {label: 'Eenvoudige goedkeuring', description: 'Alle gebruikers dienen in bij één persoon voor verwerking en goedkeuring.'}, + manager: {label: 'Goedkeuring door manager', description: 'Werknemers dienen rapporten in bij hun direct leidinggevende die is ingesteld in TriNet.'}, + custom: {label: 'Aangepaste goedkeuring', description: 'Ik stel handmatig goedkeuringsworkflows in Expensify in.'}, + }, }, }, }, @@ -7694,6 +7759,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, deleteSavedSearchConfirm: 'Weet je zeker dat je deze zoekopdracht wilt verwijderen?', searchName: 'Zoeknaam', savedSearchesMenuItemTitle: 'Opgeslagen', + urlCopied: 'URL gekopieerd', groupedExpenses: 'gegroepeerde uitgaven', bulkActions: { editMultiple: 'Meerdere bewerken', @@ -7748,7 +7814,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Alle ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Alle geïmporteerde CSV-kaarten${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Gecentraliseerde facturatie', + travelInvoicing: 'Reisfacturatie', }, reportField: (name: string, value: string) => `${name} is ${value}`, current: 'Huidig', @@ -7780,9 +7846,9 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, }, feed: 'Feed', withdrawalType: { - [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Card', + [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify Kaart', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Terugbetaling', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Centrale facturatie', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Reisfacturatie', }, is: 'Is', action: { @@ -8036,7 +8102,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} voor ${dayCount} ${dayCount === 1 ? 'dag' : 'dagen'} tot ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} van ${timePeriod} op ${date}`, startTimer: 'Timer starten', - stopTimer: 'Timer stoppen', + stopTimer: (duration: string) => `Timer stoppen (${duration})`, scheduleOOO: 'Afwezigheid plannen', scheduleOOOTitle: 'Afwezigheid plannen', date: 'Datum', @@ -8102,6 +8168,14 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, selectAllFeatures: 'Selecteer alle functies', selectAllTransactions: 'Selecteer alle transacties', selectAllItems: 'Alle items selecteren', + selectAllCategories: 'Selecteer alle categorieën', + selectAllDistanceRates: 'Selecteer alle afstandstarieven', + selectAllTags: 'Alle tags selecteren', + selectAllTaxes: 'Selecteer alle belastingen', + selectAllPerDiemRates: 'Selecteer alle dagvergoedingen', + selectAllMembers: 'Alle leden selecteren', + selectAllValues: 'Selecteer alle waarden', + selectAllRules: 'Selecteer alle regels', }, parentReportAction: { deletedReport: 'Verwijderd rapport', @@ -8197,7 +8271,8 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, personalCard: 'Persoonlijke kaart', companyCard: 'Bedrijfskaart', expensifyCard: 'Expensify Kaart', - centralInvoicing: 'Gecentraliseerde facturatie', + travelInvoicing: 'Reisfacturatie', + travelCard: 'Reiskaart', }, distance: { addStop: 'Stop toevoegen', @@ -8823,12 +8898,14 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, }, delegate: { switchAccount: 'Van account wisselen:', + switch: 'Wisselen', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot: Gedelegeerde toegang', copilotDelegatedAccessDescription: 'Sta andere leden toe toegang te krijgen tot je account.', learnMoreAboutDelegatedAccess: 'Meer informatie over gedelegeerde toegang', addCopilot: 'Copiloot toevoegen', membersCanAccessYourAccount: 'Deze leden hebben toegang tot je account:', - youCanAccessTheseAccounts: 'Je hebt toegang tot deze accounts via de accountwisselaar:', + youCanAccessTheseAccounts: 'Je hebt toegang tot deze accounts:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9173,6 +9250,8 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`, addMember: 'Kan dit lid niet toevoegen. Probeer het opnieuw.', vacationDelegate: 'Kan deze gebruiker niet als vakantiemandataris instellen. Probeer het opnieuw.', moveMember: 'Kan dit lid niet verplaatsen. Probeer het opnieuw.', + moveMemberNotPolicyAdmin: + 'Kan het lid niet naar de domeingroep verplaatsen. U moet Beleidsbeheerder zijn voor het Voorkeursbeleid dat is ingesteld op de domeingroep waarnaar u deze gebruiker probeert te verplaatsen.', }, cannotSetVacationDelegateForMember: (email: string) => `Je kunt geen vakantiemandataris instellen voor ${email} omdat die persoon momenteel gedelegeerde is voor de volgende leden:`, @@ -9204,7 +9283,12 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`, `Weet je zeker dat je ${newName} de standaardgroep wilt maken? Nieuwe leden worden uitgenodigd voor deze groep in plaats van de vorige standaardgroep (${currentName}). `, makeDefault: 'Standaard maken', neverMind: 'Laat maar', + createGroupError: 'Kan deze groep niet aanmaken. Probeer het opnieuw.', permissions: 'Groepsmachtigingen', + createNewGroupButton: 'Nieuwe groep', + createGroupSubmitButton: 'Groep aanmaken', + expensifyCardPreferredWorkspace: 'Expensify Card voorkeurswerkruimte', + expensifyCardPreferredWorkspaceDescription: 'Alle Expensify Card-transacties worden aangemaakt in de Expensify Card-voorkeurswerkruimte in plaats van de voorkeurswerkruimte.', strictlyEnforceWorkspaceRules: 'Werkruimteregels strikt afdwingen', strictlyEnforceWorkspaceRulesDescription: 'Aan alle werkruimteregels moet worden voldaan voordat een rapport kan worden ingediend. Handmatige uitzonderingen zijn niet toegestaan.', @@ -9222,11 +9306,7 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`, noWorkspacesMessage: 'Er zijn geen werkruimtes op dit domein. Een werkruimte is vereist om deze beperking in te schakelen.', restrictDefaultLoginSelection: 'Standaard login-selectie beperken', restrictDefaultLoginSelectionDescription: 'Voorkomt dat leden hun login-e-mail wijzigen naar een adres buiten het bedrijfsdomein om beleidsbeperkingen te omzeilen.', - expensifyCardPreferredWorkspace: 'Voorkeurswerkruimte voor Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Alle Expensify Card-transacties worden aangemaakt in de voorkeurswerkruimte voor Expensify Card in plaats van de voorkeurswerkruimte. Door deze functie in te schakelen, wordt de instelling voor de voorkeurswerkruimte alleen voor Expensify Card-transacties overschreven.', - expensifyCardPreferredWorkspaceDisabledMessage: - 'Om deze instelling te gebruiken, moet de voorkeurswerkruimte zijn ingeschakeld en moet voor het domein een Expensify Card zijn ingesteld.', + expensifyCardPreferredWorkspaceDisabledMessage: 'Om deze instelling in te schakelen, schakelt u eerst een voorkeurswerkruimte in en stelt u Expensify Cards in op uw domein.', findGroup: 'Groep zoeken', }, }, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index bc9c344cd35b..7494a45ab943 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1226,9 +1226,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Usuń paragon', findExpense: 'Znajdź wydatek', deletedTransaction: (amount: string, merchant: string) => `usunął(-ę) wydatek (${amount} dla ${merchant})`, - movedFromReport: (reportName: string) => `przeniesiono wydatek${reportName ? `z ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `przeniósł ten wydatek${reportName ? `do ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `przeniósł(-ę) ten wydatek${reportName ? `z ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `przeniesiono wydatek z ${reportName}`, + movedFromReportNoName: 'przeniesiono wydatek', + movedTransactionTo: (reportUrl: string, reportName: string) => `przeniósł ten wydatek do ${reportName}`, + movedTransactionToAnotherReport: 'przeniesiono ten wydatek do innego raportu', + movedTransactionFrom: (reportUrl: string, reportName: string) => `przeniósł ten wydatek z ${reportName}`, + movedTransactionFromAnotherReport: 'przeniesiono ten wydatek z innego raportu', unreportedTransaction: (reportUrl: string) => `przeniósł ten wydatek do Twojej przestrzeni osobistej`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1437,6 +1440,8 @@ const translations: TranslationDeepObject = { receiptDeleteFailureError: 'Nieoczekiwany błąd podczas usuwania tego paragonu. Spróbuj ponownie później.', receiptFailureMessage: 'Wystąpił błąd podczas przesyłania paragonu. Prosimy zapisać paragon i spróbować ponownie później.', receiptFailureMessageShort: 'Wystąpił błąd podczas przesyłania paragonu.', + receiptUploadFailedMessage: 'Nie udało się przesłać paragonu. Zapisz paragon lub usuń wydatek i utracisz go.', + saveReceipt: 'Zapisz paragon', genericDeleteFailureMessage: 'Nieoczekiwany błąd podczas usuwania tego wydatku. Spróbuj ponownie później.', genericEditFailureMessage: 'Nieoczekiwany błąd podczas edycji tego wydatku. Spróbuj ponownie później.', genericSmartscanFailureMessage: 'W transakcji brakuje pól', @@ -2465,6 +2470,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Pokaż szczegóły', revealCvv: 'Pokaż kod CVV', copyCardNumber: 'Skopiuj numer karty', + copyCvv: 'Skopiuj CVV', updateAddress: 'Zaktualizuj adres', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Dodano do portfela ${platform}`, @@ -2726,18 +2732,33 @@ ${amount} dla ${merchant} - ${date}`, emptyAgents: {title: 'Nie utworzono agentów', subtitle: 'Przestań robić wszystko ręcznie. Zamiast tego wydaj polecenia agentowi i zaoszczędź mnóstwo czasu.'}, error: { genericAdd: 'Wystąpił problem podczas dodawania tego agenta', + genericUpdate: 'Wystąpił problem z aktualizacją tego agenta', + updateName: 'Wystąpił problem z aktualizacją imienia i nazwiska tego agenta', + updatePrompt: 'Wystąpił problem z aktualizacją instrukcji tego agenta', + updateAvatar: 'Wystąpił problem z aktualizacją awatara tego agenta', }, }, addAgentPage: { title: 'Nowy agent', agentName: 'Nazwa agenta', - instructions: 'Napisz własne instrukcje', + instructions: 'Napisz niestandardowe instrukcje', createAgent: 'Utwórz agenta', - switchAvatar: 'Zmień awatar', + editAvatar: 'Zmień awatar', defaultAgentName: (displayName: string) => `Agent ${displayName}`, defaultPrompt: 'Odrzucaj wydatki związane z hazardem, filmami lub innymi oczywistymi celami niezwiązanymi z działalnością biznesową.\n\nPrzypominaj użytkownikowi, aby zawsze dołączał zdjęcie paragonu, na którym wysokość napiwku jest wyraźnie widoczna.\n\nZatwierdź raport, jeśli jest bardzo podobny do wcześniejszych raportów tego samego użytkownika.\n\nOdrzucaj raporty zawierające więcej niż 500 USD wydatków na podróże.', }, + editAgentPage: { + title: 'Edytuj agenta', + agentName: 'Nazwa agenta', + instructions: 'Napisz własne instrukcje', + deleteAgent: 'Usuń agenta', + deleteAgentTitle: 'Usunąć agenta?', + deleteAgentMessage: 'Czy na pewno chcesz usunąć tego agenta? Tej akcji nie można cofnąć.', + }, + editAgentAvatarPage: {title: 'Edytuj awatar'}, + editAgentNamePage: {title: 'Nazwa agenta'}, + editAgentPromptPage: {title: 'Napisz własne instrukcje', error: {emptyPrompt: 'Wprowadź instrukcje dla swojego agenta.'}}, expenseRulesPage: { title: 'Reguły wydatków', findRule: 'Znajdź regułę', @@ -4532,6 +4553,7 @@ ${amount} dla ${merchant} - ${date}`, notConfigured: 'Nie skonfigurowano', bankAccountDescription: 'Wybierz, skąd wysyłać czeki.', creditCardAccount: 'Konto karty kredytowej', + travelInvoicingDescription: 'Wydatki na podróże zostaną wyeksportowane jako obciążenia karty kredytowej na konto QuickBooks Online wskazane poniżej.', companyCardsLocationEnabledDescription: 'QuickBooks Online nie obsługuje lokalizacji w eksporcie rachunków do dostawców. Ponieważ masz włączone lokalizacje w swoim obszarze roboczym, ta opcja eksportu jest niedostępna.', outOfPocketTaxEnabledDescription: @@ -4721,6 +4743,7 @@ ${amount} dla ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Rachunki od dostawców', }, }, + travelInvoicingDescription: 'Wydatki na podróże zostaną wyeksportowane jako obciążenia karty kredytowej na konto Sage Intacct wskazane poniżej.', creditCardAccount: 'Konto karty kredytowej', defaultVendor: 'Domyślny dostawca', defaultVendorDescription: (isReimbursable: boolean) => @@ -4767,8 +4790,8 @@ ${amount} dla ${merchant} - ${date}`, journalPostingPreference: { label: 'Preferencje księgowania zapisów w dzienniku', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Pojedynczy, wyszczególniony wpis dla każdego raportu', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Pojedynczy wpis dla każdego wydatku', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Pojedynczy wpis dla każdego wydatku', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Pojedyncza, wyszczególniona pozycja dla każdego raportu', }, }, invoiceItem: { @@ -5160,6 +5183,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy free: 'Darmowy', control: 'Sterowanie', collect: 'Zbierz', + submit: 'Prześlij', }, companyCards: { addCards: 'Dodaj karty', @@ -5277,6 +5301,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy requiredColumns: (missingColumns: string) => `Przypisz kolumnę do każdego z atrybutów: ${missingColumns}.`, duplicateColumns: (duplicateColumn: string) => `Ups! Przypisałeś jedno pole („${duplicateColumn}”) do wielu kolumn. Sprawdź i spróbuj ponownie.`, }, + fileImportDescription: 'Ręczna opcja, jeśli Twój bank nie może wysyłać kanału danych.', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Ostatni dzień miesiąca', @@ -5512,8 +5537,8 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy subtitle: 'Gratulacje! Wszystko gotowe, aby rezerwować i zarządzać podróżami w tym obszarze roboczym.', manageTravelLabel: 'Zarządzaj podróżami', }, - centralInvoicingSection: { - title: 'Centralne fakturowanie', + travelInvoicingSection: { + title: 'Fakturowanie podróży', subtitle: 'Skonsoliduj wszystkie wydatki na podróże w jednym miesięcznym rachunku zamiast płacić w momencie zakupu.', learnHow: 'Dowiedz się jak.', subsections: { @@ -5530,7 +5555,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy reduceLimitWarning: 'Jeśli zmniejszysz limit, członkowie, którzy już wydali więcej niż ta kwota, nie będą mogli dokonywać nowych rezerwacji podróży do następnego miesiąca.', provisioningError: - 'Nie udało się skonfigurować części członków twojej przestrzeni roboczej do scentralizowanego fakturowania. Spróbuj ponownie później albo skontaktuj się z Concierge, żeby uzyskać pomoc.', + 'Nie udało się utworzyć dostępu do fakturowania podróży dla części członków Twojego workspace. Spróbuj ponownie później albo skontaktuj się z Concierge, żeby uzyskać pomoc.', }, }, disableModal: { @@ -5551,7 +5576,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy exportToCSV: 'Eksportuj do CSV', selectDateRangeError: 'Wybierz zakres dat do eksportu', invalidDateRangeError: 'Data początkowa musi być wcześniejsza niż data końcowa', - enabled: 'Centralne fakturowanie włączone!', + enabled: 'Fakturowanie podróży włączone!', enabledDescription: 'Wszystkie wydatki podróżne w tym obszarze roboczym będą teraz rozliczane na scentralizowanej, miesięcznej fakturze.', }, personalDetailsDescription: 'Aby zarezerwować podróż, wpisz swoje imię i nazwisko dokładnie tak, jak widnieje w Twoim dokumencie tożsamości wydanym przez organ państwowy.', @@ -5713,7 +5738,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy subtitle: 'Ustaw godzinową stawkę rozliczeniową do śledzenia czasu.', defaultHourlyRate: 'Domyślna stawka godzinowa', }, - hrWarningModal: {disconnectText: 'Aby wyłączyć HR, najpierw odłącz Gusto od tego miejsca pracy.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Aby wyłączyć HR, najpierw odłącz ${integration} od tego workspace’a.`}, }, reports: { reportsCustomTitleExamples: 'Przykłady:', @@ -6150,7 +6175,6 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy connectPrompt: ({connectionName}: ConnectionNameParams) => `Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'ta integracja księgowa'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`, enterCredentials: 'Wprowadź swoje dane logowania', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Oferta dostępna!', xero: { @@ -6999,11 +7023,17 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Synchronizowanie pracowników Gusto'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Wczytywanie danych z Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Przydzielanie pracowników w polisie'; + case 'zenefitsSyncTitle': + return 'Synchronizowanie pracowników TriNet'; + case 'zenefitsSyncLoadData': + return 'Wczytywanie danych z TriNet'; + case 'zenefitsSyncProvisioning': + return 'Przydzielanie pracowników w polisie'; case 'jobDone': return 'Oczekiwanie na załadowanie zaimportowanych danych'; default: { @@ -7034,6 +7064,41 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, syncError: 'Nie można połączyć się z Gusto', disconnectTitle: 'Odłącz Gusto', disconnectPrompt: 'Czy na pewno chcesz odłączyć Gusto?', + syncResults: { + title: 'Wyniki synchronizacji Gusto', + successTitle: 'Pomyślnie zsynchronizowano Twoje połączenie z Gusto!', + added: 'Dodano', + removed: 'Usunięto', + skipped: 'Pominięto', + employeeCount: () => ({ + one: '1 pracownik', + other: (count: number) => `${count} pracownicy`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Połącz', + syncNow: 'Synchronizuj teraz', + disconnect: 'Odłącz', + lastSync: (relativeDate: string) => `Ostatnia synchronizacja: ${relativeDate}`, + syncError: 'Nie można połączyć się z TriNet', + disconnectTitle: 'Odłącz TriNet', + disconnectPrompt: 'Czy na pewno chcesz odłączyć TriNet?', + connectionDescription: 'Połącz TriNet, żeby utrzymywać zatwierdzenia pracowników w synchronizacji z twoim workspace’em.', + approvalMode: 'Tryb zatwierdzania', + finalApprover: 'Ostateczny zatwierdzający', + notSet: 'Nie ustawiono', + approvalModeDescription: 'Członkowie i menedżerowie są skonfigurowani do synchronizacji z TriNet.', + approvalModeWarningTitle: 'Zmienić tryb zatwierdzania?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Czy na pewno chcesz zmienić tryb zatwierdzania dla tego workspace? Dowiedz się więcej o różnych trybach workflow obsługiwanych przez TriNet na naszej stronie pomocy.`, + approvalModeWarningConfirm: 'Zmień tryb akceptacji', + approvalModes: { + basic: {label: 'Podstawowa akceptacja', description: 'Wszyscy użytkownicy przesyłają wydatki do jednej osoby w celu ich przetworzenia i zatwierdzenia.'}, + manager: {label: 'Akceptacja przez menedżera', description: 'Pracownicy składają raporty do swojego bezpośredniego przełożonego skonfigurowanego w TriNet.'}, + custom: {label: 'Niestandardowe zatwierdzanie', description: 'Ręcznie skonfiguruję przepływy akceptacji w Expensify.'}, + }, }, }, }, @@ -7686,11 +7751,12 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, deleteSavedSearchConfirm: 'Na pewno chcesz usunąć to wyszukiwanie?', searchName: 'Wyszukaj nazwę', savedSearchesMenuItemTitle: 'Zapisano', + urlCopied: 'URL skopiowany', groupedExpenses: 'zgrupowane wydatki', bulkActions: { editMultiple: 'Edytuj wiele', editMultipleTitle: 'Edytuj wiele wydatków', - editMultipleDescription: 'Zmiany zostaną zastosowane do wszystkich wybranych wydatków i zastąpią wcześniej ustawione wartości.', + editMultipleDescription: 'Zmiany zostaną ustawione dla wszystkich wybranych wydatków i nadpiszą wszystkie wcześniej ustawione wartości.', approve: 'Zatwierdź', pay: 'Zapłać', delete: 'Usuń', @@ -7740,7 +7806,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Wszystkie ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Wszystkie zaimportowane karty CSV${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Centralne fakturowanie', + travelInvoicing: 'Fakturowanie podróży', }, reportField: (name: string, value: string) => `${name} to ${value}`, current: 'Bieżące', @@ -7774,7 +7840,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, withdrawalType: { [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Karta Expensify', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Zwrot kosztów', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Centralne fakturowanie', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Fakturowanie podróży', }, is: 'Jest', action: { @@ -8027,7 +8093,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} za ${dayCount} ${dayCount === 1 ? 'dzień' : 'dni'} do ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} z ${timePeriod} z dnia ${date}`, startTimer: 'Startuj licznik', - stopTimer: 'Zatrzymaj licznik czasu', + stopTimer: (duration: string) => `Zatrzymaj licznik czasu (${duration})`, scheduleOOO: 'Zaplanuj nieobecność', scheduleOOOTitle: 'Zaplanuj nieobecność', date: 'Data', @@ -8093,6 +8159,14 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, selectAllFeatures: 'Zaznacz wszystkie funkcje', selectAllTransactions: 'Zaznacz wszystkie transakcje', selectAllItems: 'Zaznacz wszystkie elementy', + selectAllCategories: 'Zaznacz wszystkie kategorie', + selectAllDistanceRates: 'Wybierz wszystkie stawki za dystans', + selectAllTags: 'Zaznacz wszystkie tagi', + selectAllTaxes: 'Wybierz wszystkie podatki', + selectAllPerDiemRates: 'Wybierz wszystkie stawki diet', + selectAllMembers: 'Zaznacz wszystkich członków', + selectAllValues: 'Zaznacz wszystkie wartości', + selectAllRules: 'Zaznacz wszystkie reguły', }, parentReportAction: { deletedReport: 'Usunięty raport', @@ -8188,7 +8262,8 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, personalCard: 'Karta osobista', companyCard: 'Karta firmowa', expensifyCard: 'Karta Expensify', - centralInvoicing: 'Centralne fakturowanie', + travelInvoicing: 'Fakturowanie podróży', + travelCard: 'Karta podróżna', }, distance: { addStop: 'Dodaj przystanek', @@ -8810,12 +8885,14 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, }, delegate: { switchAccount: 'Przełącz konta:', + switch: 'Przełącz', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot: Dostęp delegowany', copilotDelegatedAccessDescription: 'Zezwól innym członkom na dostęp do Twojego konta.', learnMoreAboutDelegatedAccess: 'Dowiedz się więcej o dostępie delegowanym', addCopilot: 'Dodaj pilota', membersCanAccessYourAccount: 'Ci członkowie mają dostęp do Twojego konta:', - youCanAccessTheseAccounts: 'Masz dostęp do tych kont za pomocą przełącznika kont:', + youCanAccessTheseAccounts: 'Masz dostęp do tych kont:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9158,6 +9235,8 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`, addMember: 'Nie można dodać tego członka. Spróbuj ponownie.', vacationDelegate: 'Nie można ustawić tego użytkownika jako zastępującego na czas nieobecności. Spróbuj ponownie.', moveMember: 'Nie można przenieść tego członka. Spróbuj ponownie.', + moveMemberNotPolicyAdmin: + 'Nie można przenieść członka do grupy domeny. Musisz być Administratorem Zasad dla Preferowanych Zasad ustawionych dla grupy domeny, do której próbujesz przenieść tego użytkownika.', }, cannotSetVacationDelegateForMember: (email: string) => `Nie możesz ustawić zastępstwa urlopowego dla ${email}, ponieważ jest on/ona obecnie zastępcą dla następujących członków:`, reportSuspiciousActivityPrompt: (email: string) => @@ -9187,7 +9266,13 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`, `Czy na pewno chcesz ustawić ${newName} jako grupę domyślną? Nowi członkowie będą zapraszani do tej grupy zamiast do poprzedniej grupy domyślnej (${currentName}). `, makeDefault: 'Ustaw jako domyślną', neverMind: 'Nieważne', + createGroupError: 'Nie udało się utworzyć tej grupy. Spróbuj ponownie.', permissions: 'Uprawnienia grupy', + createNewGroupButton: 'Nowa grupa', + createGroupSubmitButton: 'Utwórz grupę', + expensifyCardPreferredWorkspace: 'Preferowany workspace karty Expensify', + expensifyCardPreferredWorkspaceDescription: + 'Wszystkie transakcje Expensify Card będą tworzone w preferowanym obszarze roboczym Expensify Card zamiast w preferowanym obszarze roboczym.', strictlyEnforceWorkspaceRules: 'Ściśle egzekwuj reguły przestrzeni roboczej', strictlyEnforceWorkspaceRulesDescription: 'Przed przesłaniem raportu muszą zostać spełnione wszystkie reguły przestrzeni roboczej. Ręczne wyjątki są niedozwolone.', restrictExpenseWorkspaceCreation: 'Ogranicz tworzenie/usuwanie przestrzeni roboczej wydatków', @@ -9204,11 +9289,7 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`, noWorkspacesMessage: 'W tej domenie nie ma żadnych obszarów roboczych. Obszar roboczy jest wymagany, aby włączyć to ograniczenie.', restrictDefaultLoginSelection: 'Ogranicz wybór domyślnego logowania', restrictDefaultLoginSelectionDescription: 'Zapobiega zmianie adresu e-mail do logowania przez członków na adres spoza domeny firmowej, aby obejść ograniczenia zasad.', - expensifyCardPreferredWorkspace: 'Preferowana przestrzeń robocza dla Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Wszystkie transakcje Expensify Card będą tworzone w preferowanej przestrzeni roboczej dla Expensify Card zamiast w preferowanej przestrzeni roboczej. Włączenie tej funkcji zastąpi ustawienie preferowanej przestrzeni roboczej wyłącznie dla transakcji Expensify Card.', - expensifyCardPreferredWorkspaceDisabledMessage: - 'Aby korzystać z tego ustawienia, preferowana przestrzeń robocza musi być włączona, a domena musi mieć skonfigurowaną Expensify Card.', + expensifyCardPreferredWorkspaceDisabledMessage: 'Aby włączyć to ustawienie, najpierw włącz preferowane miejsce pracy i skonfiguruj karty Expensify w swojej domenie.', findGroup: 'Znajdź grupę', }, }, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 435b147ade21..62cd43e552f4 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1226,9 +1226,12 @@ const translations: TranslationDeepObject = { deleteReceipt: 'Excluir recibo', findExpense: 'Encontrar despesa', deletedTransaction: (amount: string, merchant: string) => `excluiu uma despesa (${amount} em ${merchant})`, - movedFromReport: (reportName: string) => `moveu uma despesa${reportName ? `de ${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `moveu esta despesa${reportName ? `para ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `moveu esta despesa${reportName ? `de ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `moveu uma despesa de ${reportName}`, + movedFromReportNoName: 'moveu uma despesa', + movedTransactionTo: (reportUrl: string, reportName: string) => `moveu esta despesa para ${reportName}`, + movedTransactionToAnotherReport: 'moveu esta despesa para outro relatório', + movedTransactionFrom: (reportUrl: string, reportName: string) => `moveu esta despesa de ${reportName}`, + movedTransactionFromAnotherReport: 'moveu esta despesa de outro relatório', unreportedTransaction: (reportUrl: string) => `moveu esta despesa para o seu espaço pessoal`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1436,6 +1439,8 @@ const translations: TranslationDeepObject = { receiptDeleteFailureError: 'Erro inesperado ao excluir este recibo. Tente novamente mais tarde.', receiptFailureMessage: 'Ocorreu um erro ao enviar seu recibo. Por favor, salve o recibo e tente novamente mais tarde.', receiptFailureMessageShort: 'Ocorreu um erro ao enviar seu recibo.', + receiptUploadFailedMessage: 'Falha no envio do recibo. Salve o recibo ou exclua a despesa e perca-a.', + saveReceipt: 'Salvar recibo', genericDeleteFailureMessage: 'Erro inesperado ao excluir esta despesa. Tente novamente mais tarde.', genericEditFailureMessage: 'Erro inesperado ao editar esta despesa. Tente novamente mais tarde.', genericSmartscanFailureMessage: 'A transação está com campos ausentes', @@ -2463,6 +2468,7 @@ const translations: TranslationDeepObject = { revealDetails: 'Revelar detalhes', revealCvv: 'Revelar código CVV', copyCardNumber: 'Copiar número do cartão', + copyCvv: 'Copiar CVV', updateAddress: 'Atualizar endereço', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `Adicionado à carteira ${platform}`, @@ -2726,6 +2732,10 @@ ${amount} para ${merchant} - ${date}`, emptyAgents: {title: 'Nenhum agente criado', subtitle: 'Pare de fazer tudo manualmente. Instrua um agente e economize muito tempo.'}, error: { genericAdd: 'Houve um problema ao adicionar este agente', + genericUpdate: 'Ocorreu um problema ao atualizar este agente', + updateName: 'Ocorreu um problema ao atualizar o nome deste agente', + updatePrompt: 'Ocorreu um problema ao atualizar as instruções deste agente', + updateAvatar: 'Ocorreu um problema ao atualizar o avatar deste agente', }, }, addAgentPage: { @@ -2733,11 +2743,22 @@ ${amount} para ${merchant} - ${date}`, agentName: 'Nome do agente', instructions: 'Escrever instruções personalizadas', createAgent: 'Criar agente', - switchAvatar: 'Trocar avatar', + editAvatar: 'Trocar avatar', defaultAgentName: (displayName: string) => `Agente de ${displayName}`, defaultPrompt: 'Rejeite despesas relacionadas a jogos de azar, cinema ou outros motivos claramente não relacionados ao negócio.\n\nLembre o usuário de sempre incluir uma imagem do recibo em que a gorjeta fique clara.\n\nAprove o relatório se ele for muito semelhante a relatórios anteriores do mesmo usuário.\n\nRejeite relatórios com mais de US$ 500 em despesas de viagem.', }, + editAgentPage: { + title: 'Editar agente', + agentName: 'Nome do agente', + instructions: 'Escrever instruções personalizadas', + deleteAgent: 'Excluir agente', + deleteAgentTitle: 'Excluir agente?', + deleteAgentMessage: 'Tem certeza de que quer excluir este agente? Essa ação não pode ser desfeita.', + }, + editAgentAvatarPage: {title: 'Editar avatar'}, + editAgentNamePage: {title: 'Nome do agente'}, + editAgentPromptPage: {title: 'Escrever instruções personalizadas', error: {emptyPrompt: 'Insira as instruções para o seu agente.'}}, expenseRulesPage: { title: 'Regras de despesas', findRule: 'Encontrar regra', @@ -4536,6 +4557,7 @@ ${amount} para ${merchant} - ${date}`, notConfigured: 'Não configurado', bankAccountDescription: 'Escolha de onde enviar os cheques.', creditCardAccount: 'Conta de cartão de crédito', + travelInvoicingDescription: 'As despesas de viagem serão exportadas como cobranças de cartão de crédito para a conta do QuickBooks Online especificada abaixo.', companyCardsLocationEnabledDescription: 'O QuickBooks Online não oferece suporte a locais nas exportações de contas de fornecedor. Como você ativou locais no seu workspace, esta opção de exportação não está disponível.', outOfPocketTaxEnabledDescription: @@ -4725,6 +4747,7 @@ ${amount} para ${merchant} - ${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: 'Faturas de fornecedores', }, }, + travelInvoicingDescription: 'As despesas de viagem serão exportadas como cobranças de cartão de crédito para a conta do Sage Intacct especificada abaixo.', creditCardAccount: 'Conta de cartão de crédito', defaultVendor: 'Fornecedor padrão', defaultVendorDescription: (isReimbursable: boolean) => @@ -4770,8 +4793,8 @@ ${amount} para ${merchant} - ${date}`, journalPostingPreference: { label: 'Preferência de lançamento de lançamentos contábeis', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Lançamento único, detalhado, para cada relatório', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Lançamento único para cada despesa', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: 'Lançamento único para cada despesa', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: 'Lançamento único e detalhado para cada relatório', }, }, invoiceItem: { @@ -5162,6 +5185,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS free: 'Grátis', control: 'Controle', collect: 'Cobrar', + submit: 'Enviar', }, companyCards: { addCards: 'Adicionar cartões', @@ -5279,6 +5303,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS requiredColumns: (missingColumns: string) => `Atribua uma coluna a cada um dos atributos: ${missingColumns}.`, duplicateColumns: (duplicateColumn: string) => `Ops! Você mapeou um único campo ("${duplicateColumn}") para várias colunas. Revise e tente novamente.`, }, + fileImportDescription: 'Uma opção manual caso seu banco não possa enviar um feed.', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: 'Último dia do mês', @@ -5519,8 +5544,8 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS subtitle: 'Parabéns! Agora você está pronto para reservar e gerenciar viagens neste workspace.', manageTravelLabel: 'Gerenciar viagens', }, - centralInvoicingSection: { - title: 'Faturamento centralizado', + travelInvoicingSection: { + title: 'Faturamento de viagens', subtitle: 'Centralize todos os gastos de viagem em uma fatura mensal em vez de pagar no momento da compra.', learnHow: 'Saiba como.', subsections: { @@ -5537,7 +5562,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS reduceLimitTitle: 'Reduzir o limite de gastos com viagens?', reduceLimitWarning: 'Se você reduzir o limite, os membros que já gastaram mais do que esse valor não poderão fazer novas reservas de viagem até o próximo mês.', provisioningError: - 'Não conseguimos provisionar alguns membros do seu workspace para faturamento centralizado. Tente novamente mais tarde ou entre em contato com o Concierge para obter ajuda.', + 'Não foi possível provisionar alguns dos membros do seu workspace para faturamento de viagens. Tente novamente mais tarde ou entre em contato com o Concierge para obter ajuda.', }, }, disableModal: { @@ -5558,7 +5583,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS exportToCSV: 'Exportar para CSV', selectDateRangeError: 'Selecione um intervalo de datas para exportar', invalidDateRangeError: 'A data de início deve ser anterior à data de término', - enabled: 'Faturamento centralizado ativado!', + enabled: 'Faturamento de Viagem ativado!', enabledDescription: 'Todos os gastos de viagem neste workspace agora serão centralizados em uma fatura mensal.', }, personalDetailsDescription: 'Para reservar viagens, insira seu nome legal exatamente como consta no documento de identificação emitido pelo governo.', @@ -5719,7 +5744,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS subtitle: 'Defina uma taxa horária faturável para o controle de tempo.', defaultHourlyRate: 'Taxa horária padrão', }, - hrWarningModal: {disconnectText: 'Para desativar o RH, primeiro desconecte o Gusto deste workspace.'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `Para desativar RH, desconecte primeiro a integração ${integration} deste workspace.`}, }, reports: { reportsCustomTitleExamples: 'Exemplos:', @@ -6157,7 +6182,6 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS connectPrompt: ({connectionName}: ConnectionNameParams) => `Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`, enterCredentials: 'Insira suas credenciais', - updateCredentials: 'Update credentials', claimOffer: { badgeText: 'Oferta disponível!', xero: { @@ -7005,15 +7029,21 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return 'Sincronizando funcionários do Gusto'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return 'Carregando dados do Gusto'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return 'Provisionamento de funcionários na política'; + case 'zenefitsSyncTitle': + return 'Sincronizando funcionários da TriNet'; + case 'zenefitsSyncLoadData': + return 'Carregando dados do TriNet'; + case 'zenefitsSyncProvisioning': + return 'Provisionamento de funcionários na política'; case 'jobDone': return 'Aguardando o carregamento dos dados importados'; default: { - return `Tradução ausente para o estágio: ${stage}`; + return `Tradução ausente para a etapa: ${stage}`; } } }, @@ -7040,6 +7070,41 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, syncError: 'Não é possível conectar ao Gusto', disconnectTitle: 'Desconectar Gusto', disconnectPrompt: 'Tem certeza de que deseja desconectar o Gusto?', + syncResults: { + title: 'Resultados da sincronização com Gusto', + successTitle: 'Sua conexão com o Gusto foi sincronizada com sucesso!', + added: 'Adicionado', + removed: 'Removido', + skipped: 'Ignorado', + employeeCount: () => ({ + one: '1 funcionário', + other: (count: number) => `${count} funcionários`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: 'Conectar', + syncNow: 'Sincronizar agora', + disconnect: 'Desconectar', + lastSync: (relativeDate: string) => `Última sincronização ${relativeDate}`, + syncError: 'Não é possível conectar ao TriNet', + disconnectTitle: 'Desconectar TriNet', + disconnectPrompt: 'Tem certeza de que quer desconectar a TriNet?', + connectionDescription: 'Conecte o TriNet para manter as aprovações de funcionários sincronizadas com o seu espaço de trabalho.', + approvalMode: 'Modo de aprovação', + finalApprover: 'Aprovador final', + notSet: 'Não definido', + approvalModeDescription: 'Os membros e gerentes estão configurados para sincronizar com o TriNet.', + approvalModeWarningTitle: 'Alterar modo de aprovação?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `Tem certeza de que deseja alterar o modo de aprovação deste espaço de trabalho? Saiba mais sobre os diferentes modos de fluxo de trabalho habilitados pelo TriNet no nosso site de ajuda.`, + approvalModeWarningConfirm: 'Alterar modo de aprovação', + approvalModes: { + basic: {label: 'Aprovação básica', description: 'Todos os usuários enviam para uma única pessoa para processamento e aprovação.'}, + manager: {label: 'Aprovação do gerente', description: 'Os funcionários enviam relatórios para o gerente direto configurado no TriNet.'}, + custom: {label: 'Aprovação personalizada', description: 'Vou configurar manualmente fluxos de aprovação no Expensify.'}, + }, }, }, }, @@ -7688,6 +7753,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, deleteSavedSearchConfirm: 'Tem certeza de que deseja excluir esta pesquisa?', searchName: 'Pesquisar nome', savedSearchesMenuItemTitle: 'Salvo', + urlCopied: 'URL copiado', groupedExpenses: 'despesas agrupadas', bulkActions: { editMultiple: 'Editar múltiplos', @@ -7742,7 +7808,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `Todos os ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `Todos os cartões CSV importados${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: 'Faturamento centralizado', + travelInvoicing: 'Faturamento de viagens', }, reportField: (name: string, value: string) => `${name} é ${value}`, current: 'Atual', @@ -7776,7 +7842,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, withdrawalType: { [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Cartão Expensify', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: 'Reembolso', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Faturamento centralizado', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: 'Faturamento de viagens', }, is: 'É', action: { @@ -8030,7 +8096,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary} por ${dayCount} ${dayCount === 1 ? 'dia' : 'dias'} até ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary} de ${timePeriod} em ${date}`, startTimer: 'Iniciar cronômetro', - stopTimer: 'Parar cronômetro', + stopTimer: (duration: string) => `Parar cronômetro (${duration})`, scheduleOOO: 'Agendar ausência', scheduleOOOTitle: 'Agendar ausência do escritório', date: 'Data', @@ -8096,6 +8162,14 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, selectAllFeatures: 'Selecionar todos os recursos', selectAllTransactions: 'Selecionar todas as transações', selectAllItems: 'Selecionar todos os itens', + selectAllCategories: 'Selecionar todas as categorias', + selectAllDistanceRates: 'Selecionar todas as tarifas de distância', + selectAllTags: 'Selecionar todas as tags', + selectAllTaxes: 'Selecionar todos os impostos', + selectAllPerDiemRates: 'Selecionar todas as diárias', + selectAllMembers: 'Selecionar todos os membros', + selectAllValues: 'Selecionar todos os valores', + selectAllRules: 'Selecionar todas as regras', }, parentReportAction: { deletedReport: 'Relatório excluído', @@ -8191,7 +8265,8 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, personalCard: 'Cartão pessoal', companyCard: 'Cartão corporativo', expensifyCard: 'Cartão Expensify', - centralInvoicing: 'Faturamento centralizado', + travelInvoicing: 'Faturamento de viagens', + travelCard: 'Cartão de viagem', }, distance: { addStop: 'Adicionar parada', @@ -8817,12 +8892,14 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, }, delegate: { switchAccount: 'Trocar de conta:', + switch: 'Trocar', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot: Acesso delegado', copilotDelegatedAccessDescription: 'Permitir que outros membros acessem sua conta.', learnMoreAboutDelegatedAccess: 'Saiba mais sobre acesso delegado', addCopilot: 'Adicionar copiloto', membersCanAccessYourAccount: 'Esses membros podem acessar sua conta:', - youCanAccessTheseAccounts: 'Você pode acessar essas contas pelo alternador de conta:', + youCanAccessTheseAccounts: 'Você pode acessar essas contas:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -9166,6 +9243,8 @@ Aqui está um *comprovante de teste* para mostrar como funciona:`, addMember: 'Não foi possível adicionar este membro. Tente novamente.', vacationDelegate: 'Não foi possível definir este usuário como delegado de férias. Tente novamente.', moveMember: 'Não foi possível mover este membro. Tente novamente.', + moveMemberNotPolicyAdmin: + 'Não é possível mover o membro para o grupo de domínio. Você deve ser Administrador de Política para a Política Preferencial definida no grupo de domínio para o qual está tentando mover este usuário.', }, cannotSetVacationDelegateForMember: (email: string) => `Você não pode definir um procurador de férias para ${email} porque esta pessoa já é procuradora dos seguintes membros:`, reportSuspiciousActivityPrompt: (email: string) => @@ -9195,7 +9274,13 @@ Aqui está um *comprovante de teste* para mostrar como funciona:`, `Tem certeza de que deseja tornar ${newName} o grupo padrão? Novos membros serão convidados para este grupo em vez do grupo padrão anterior (${currentName}). `, makeDefault: 'Tornar padrão', neverMind: 'Deixa pra lá', + createGroupError: 'Não foi possível criar este grupo. Tente novamente.', permissions: 'Permissões do grupo', + createNewGroupButton: 'Novo grupo', + createGroupSubmitButton: 'Criar grupo', + expensifyCardPreferredWorkspace: 'Espaço de trabalho preferido para o cartão Expensify', + expensifyCardPreferredWorkspaceDescription: + 'Todas as transações do Expensify Card serão criadas no espaço de trabalho preferido do Expensify Card em vez do espaço de trabalho preferido.', strictlyEnforceWorkspaceRules: 'Aplicar rigorosamente as regras do espaço de trabalho', strictlyEnforceWorkspaceRulesDescription: 'Todas as regras do espaço de trabalho devem ser atendidas antes de enviar um relatório. Não são permitidas exceções manuais.', restrictExpenseWorkspaceCreation: 'Restringir a criação/remoção de espaços de trabalho de despesas', @@ -9214,11 +9299,7 @@ Aqui está um *comprovante de teste* para mostrar como funciona:`, restrictDefaultLoginSelection: 'Restringir seleção de login padrão', restrictDefaultLoginSelectionDescription: 'Impede que os membros alterem o e-mail de login para um endereço fora do domínio da empresa, evitando que burlem restrições de políticas.', - expensifyCardPreferredWorkspace: 'Espaço de trabalho preferido para o Expensify Card', - expensifyCardPreferredWorkspaceDescription: - 'Todas as transações do Expensify Card serão criadas no espaço de trabalho preferido para o Expensify Card em vez do espaço de trabalho preferido. Ativar este recurso substituirá a configuração do espaço de trabalho preferido apenas para as transações do Expensify Card.', - expensifyCardPreferredWorkspaceDisabledMessage: - 'Para usar esta configuração, o espaço de trabalho preferido deve estar habilitado e o domínio deve ter o Expensify Card configurado.', + expensifyCardPreferredWorkspaceDisabledMessage: 'Para ativar esta configuração, primeiro ative um workspace preferido e configure os Cartões Expensify no seu domínio.', findGroup: 'Encontrar grupo', }, }, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 9e73f8f3e8df..131fdd725408 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1190,9 +1190,12 @@ const translations: TranslationDeepObject = { deleteReceipt: '删除收据', findExpense: '查找报销', deletedTransaction: (amount: string, merchant: string) => `已删除一笔报销(${merchant} 的 ${amount})`, - movedFromReport: (reportName: string) => `已移动一笔报销${reportName ? `来自${reportName}` : ''}`, - movedTransactionTo: (reportUrl: string, reportName?: string) => `已移动此报销${reportName ? `到 ${reportName}` : ''}`, - movedTransactionFrom: (reportUrl: string, reportName?: string) => `已移动此报销${reportName ? `来自 ${reportName}` : ''}`, + movedFromReport: (reportName: string) => `已从${reportName}中移出一笔费用`, + movedFromReportNoName: '移动了一笔报销', + movedTransactionTo: (reportUrl: string, reportName: string) => `已将此报销移动到 ${reportName}`, + movedTransactionToAnotherReport: '已将此报销移动到另一份报表', + movedTransactionFrom: (reportUrl: string, reportName: string) => `已将此报销从 ${reportName} 中移出`, + movedTransactionFromAnotherReport: '已将此报销从另一份报表中移出', unreportedTransaction: (reportUrl: string) => `已将此报销移动到你的个人空间`, movedAction: (shouldHideMovedReportUrl: boolean, movedReportUrl: string, newParentReportUrl: string, toPolicyName: string) => { if (shouldHideMovedReportUrl) { @@ -1396,6 +1399,8 @@ const translations: TranslationDeepObject = { receiptDeleteFailureError: '删除此收据时发生意外错误。请稍后再试。', receiptFailureMessage: '上传您的收据时出错。请保存收据并在稍后重试', receiptFailureMessageShort: '上传您的收据时出错。', + receiptUploadFailedMessage: '收据上传失败。保存收据,或删除该支出并失去它。', + saveReceipt: '保存收据', genericDeleteFailureMessage: '删除此报销时发生意外错误。请稍后重试。', genericEditFailureMessage: '编辑此报销时发生意外错误。请稍后再试。', genericSmartscanFailureMessage: '交易缺少字段', @@ -2402,6 +2407,7 @@ const translations: TranslationDeepObject = { revealDetails: '显示详细信息', revealCvv: '显示 CVV', copyCardNumber: '复制卡号', + copyCvv: '复制 CVV', updateAddress: '更新地址', }, cardAddedToWallet: ({platform}: {platform: 'Google' | 'Apple'}) => `已添加到 ${platform} 钱包`, @@ -2657,6 +2663,10 @@ ${amount},商户:${merchant} - 日期:${date}`, emptyAgents: {title: '尚未创建代理', subtitle: '别再手动处理这些事情了。交给智能代理去执行,为自己节省大量时间。'}, error: { genericAdd: '添加此智能体时出现了问题', + genericUpdate: '更新此代理时出现问题', + updateName: '更新此代理名称时出现问题', + updatePrompt: '更新此代理的说明时出现问题', + updateAvatar: '更新此代理的头像时出现问题', }, }, addAgentPage: { @@ -2664,11 +2674,22 @@ ${amount},商户:${merchant} - 日期:${date}`, agentName: '代理名称', instructions: '编写自定义说明', createAgent: '创建代理', - switchAvatar: '切换头像', + editAvatar: '切换头像', defaultAgentName: (displayName: string) => `${displayName} 的代理人`, defaultPrompt: '拒绝与赌博、电影或其他明显非商务原因相关的报销。\n\n提醒用户务必附上一张能清楚显示小费金额的收据图片。\n\n如果报销报告与同一用户之前的报告非常相似,则批准该报告。\n\n拒绝包含超过 500 美元差旅费用的报销报告。', }, + editAgentPage: { + title: '编辑代理', + agentName: '代理人姓名', + instructions: '编写自定义说明', + deleteAgent: '删除代理', + deleteAgentTitle: '删除代理?', + deleteAgentMessage: '确定要删除此代理吗?此操作无法撤销。', + }, + editAgentAvatarPage: {title: '编辑头像'}, + editAgentNamePage: {title: '代理人姓名'}, + editAgentPromptPage: {title: '编写自定义说明', error: {emptyPrompt: '请输入给您代理的指示。'}}, expenseRulesPage: { title: '报销规则', findRule: '查找规则', @@ -4436,6 +4457,7 @@ ${amount},商户:${merchant} - 日期:${date}`, notConfigured: '未配置', bankAccountDescription: '选择从哪里寄送支票。', creditCardAccount: '信用卡账户', + travelInvoicingDescription: '差旅费用将作为信用卡费用导出到下面指定的 QuickBooks Online 账户。', companyCardsLocationEnabledDescription: 'QuickBooks Online 不支持在供应商账单导出中使用地点。由于您在工作区中启用了地点功能,该导出选项不可用。', outOfPocketTaxEnabledDescription: 'QuickBooks Online 不支持在日记账分录导出中包含税费。由于你已在工作区中启用税费功能,因此无法使用此导出选项。', outOfPocketTaxEnabledError: '启用税费时无法使用日记账分录。请选择其他导出选项。', @@ -4618,6 +4640,7 @@ ${amount},商户:${merchant} - 日期:${date}`, [CONST.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSE_TYPE.VENDOR_BILL]: '供应商账单', }, }, + travelInvoicingDescription: '差旅费用将作为信用卡费用导出到下面指定的 Sage Intacct 账户。', creditCardAccount: '信用卡账户', defaultVendor: '默认供应商', defaultVendorDescription: (isReimbursable: boolean) => `为没有在 Sage Intacct 中匹配供应商的${isReimbursable ? '' : '非'}可报销费用设置一个默认供应商。`, @@ -4660,8 +4683,8 @@ ${amount},商户:${merchant} - 日期:${date}`, journalPostingPreference: { label: '日记账分录过账偏好', values: { - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '每个报表使用单独的分项条目', - [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '每笔报销一条记录', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_INDIVIDUAL_LINE]: '每笔报销仅一条记录', + [CONST.NETSUITE_JOURNAL_POSTING_PREFERENCE.JOURNALS_POSTING_TOTAL_LINE]: '每份报表使用单一分项明细记录', }, }, invoiceItem: { @@ -5045,6 +5068,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM free: '免费', control: '控制', collect: '收款', + submit: '提交', }, companyCards: { addCards: '添加卡片', @@ -5161,6 +5185,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM requiredColumns: (missingColumns: string) => `请为以下每个属性分配一列:${missingColumns}`, duplicateColumns: (duplicateColumn: string) => `哎呀!你已将单个字段(“${duplicateColumn}”)映射到了多个列。请检查后重试。`, }, + fileImportDescription: '如果您的银行无法发送数据馈送时的手动选项。', }, statementCloseDate: { [CONST.COMPANY_CARDS.STATEMENT_CLOSE_DATE.LAST_DAY_OF_MONTH]: '月末最后一天', @@ -5388,8 +5413,8 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM subtitle: '恭喜!您已经可以在此工作区预订和管理差旅了。', manageTravelLabel: '管理差旅', }, - centralInvoicingSection: { - title: '集中开票', + travelInvoicingSection: { + title: '差旅开票', subtitle: '将所有差旅支出集中到每月发票中,而不是在购买时即时支付。', learnHow: '了解方法。', subsections: { @@ -5404,7 +5429,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM monthlySpendLimitDescription: '每位成员每月可用于出差的最高金额。', reduceLimitTitle: '降低出差支出限额?', reduceLimitWarning: '如果您降低限额,已超出该金额的成员将无法进行新的出差预订,直至下个月。', - provisioningError: '我们无法为您工作区中的部分成员开通集中开票功能。请稍后重试或联系 Concierge 获得协助。', + provisioningError: '我们无法为您的工作区中的部分成员开通差旅开票功能。请稍后重试或联系 Concierge 获取帮助。', }, }, disableModal: {title: '关闭差旅开票?', body: '即将到来的酒店和汽车租赁预订可能需要使用不同的付款方式重新预订,以避免被取消。', confirm: '关闭'}, @@ -5414,7 +5439,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM exportToCSV: '导出为 CSV', selectDateRangeError: '请选择要导出的日期范围', invalidDateRangeError: '开始日期必须早于结束日期', - enabled: '中央开票已启用!', + enabled: '差旅开票已启用!', enabledDescription: '此工作区的所有差旅支出现在将集中在一张月度发票中。', }, personalDetailsDescription: '为预订行程,请输入您在政府签发的身份证件上显示的法定姓名。', @@ -5573,7 +5598,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM subtitle: '为时间跟踪设置可计费的小时费率。', defaultHourlyRate: '默认时薪', }, - hrWarningModal: {disconnectText: '若要禁用人力资源功能,请先将 Gusto 与此工作区断开连接。'}, + hrWarningModal: {disconnectText: ({integration}: {integration: string}) => `若要禁用人力资源功能,请先将此工作区与 ${integration} 断开连接。`}, }, reports: { reportsCustomTitleExamples: '示例:', @@ -6004,7 +6029,6 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM connectPrompt: ({connectionName}: ConnectionNameParams) => `确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将删除所有现有的会计连接。`, enterCredentials: '请输入您的凭证', - updateCredentials: 'Update credentials', claimOffer: { badgeText: '优惠可用!', xero: { @@ -6831,11 +6855,17 @@ ${reportName} syncStageName: ({stage}: SyncStageNameConnectionsParams) => { switch (stage) { case 'gustoSyncTitle': - return 'Synchronizing Gusto Employees'; + return '同步 Gusto 员工'; case 'gustoSyncLoadData': - return 'Loading data from Gusto'; + return '正在从 Gusto 加载数据'; case 'gustoSyncProvisioning': - return 'Provisioning employees in policy'; + return '在政策中为员工开通账号'; + case 'zenefitsSyncTitle': + return '正在同步 TriNet 员工'; + case 'zenefitsSyncLoadData': + return '正在从 TriNet 加载数据'; + case 'zenefitsSyncProvisioning': + return '在政策中为员工开通账号'; case 'jobDone': return '正在加载导入的数据'; default: { @@ -6866,6 +6896,41 @@ ${reportName} syncError: '无法连接到 Gusto', disconnectTitle: '断开 Gusto', disconnectPrompt: '确定要断开与 Gusto 的连接吗?', + syncResults: { + title: 'Gusto 同步结果', + successTitle: '已成功同步你的 Gusto 连接!', + added: '已添加', + removed: '已移除', + skipped: '已跳过', + employeeCount: () => ({ + one: '1 员工', + other: (count: number) => `${count} 员工`, + }), + }, + }, + zenefits: { + title: 'TriNet', + connect: '连接', + syncNow: '立即同步', + disconnect: '断开连接', + lastSync: (relativeDate: string) => `上次同步时间:${relativeDate}`, + syncError: '无法连接到 TriNet', + disconnectTitle: '断开 TriNet 连接', + disconnectPrompt: '确定要断开 TriNet 吗?', + connectionDescription: '连接 TriNet,将员工审批与你的工作区保持同步。', + approvalMode: '审批模式', + finalApprover: '最终审批人', + notSet: '未设置', + approvalModeDescription: '成员和管理者已设置为与 TriNet 同步。', + approvalModeWarningTitle: '更改审批模式?', + approvalModeWarningPrompt: (helpSiteURL: string) => + `您确定要更改此工作区的审批模式吗?在我们的帮助网站中了解更多关于不同 TriNet 启用的工作流模式的信息。`, + approvalModeWarningConfirm: '更改审批模式', + approvalModes: { + basic: {label: '基础审批', description: '所有用户都提交给同一个人进行处理和审批。'}, + manager: {label: '经理审批', description: '员工会将报销报告提交给在 TriNet 中配置的直属经理。'}, + custom: {label: '自定义审批', description: '我会在 Expensify 中手动设置审批流程。'}, + }, }, }, }, @@ -7499,11 +7564,12 @@ ${reportName} deleteSavedSearchConfirm: '确定要删除此搜索吗?', searchName: '搜索名称', savedSearchesMenuItemTitle: '已保存', + urlCopied: 'URL 已复制', groupedExpenses: '已分组的报销费用', bulkActions: { editMultiple: '批量编辑', editMultipleTitle: '编辑多个费用', - editMultipleDescription: '更改将应用于所有选定的费用,并将覆盖之前设置的任何值。', + editMultipleDescription: '更改将应用于所有选中的报销,并覆盖任何先前设置的值。', approve: '批准', pay: '支付', delete: '删除', @@ -7553,7 +7619,7 @@ ${reportName} cardFeedName: ({cardFeedBankName, cardFeedLabel}: {cardFeedBankName: string; cardFeedLabel?: string}) => `所有 ${cardFeedBankName}${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, cardFeedNameCSV: ({cardFeedLabel}: {cardFeedLabel?: string}) => `所有导入的 CSV 卡片${cardFeedLabel ? ` - ${cardFeedLabel}` : ''}`, - centralInvoicing: '集中开票', + travelInvoicing: '差旅开票', }, reportField: (name: string, value: string) => `${name} 为 ${value}`, current: '当前', @@ -7587,7 +7653,7 @@ ${reportName} withdrawalType: { [CONST.SEARCH.WITHDRAWAL_TYPE.EXPENSIFY_CARD]: 'Expensify 卡', [CONST.SEARCH.WITHDRAWAL_TYPE.REIMBURSEMENT]: '报销', - [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: '集中开票', + [CONST.SEARCH.WITHDRAWAL_TYPE.CENTRAL_TRAVEL_INVOICING]: '差旅开票', }, is: '是', action: { @@ -7829,7 +7895,7 @@ ${reportName} oooEventSummaryFullDay: (summary: string, dayCount: number, date: string) => `${summary},共计 ${dayCount} ${dayCount === 1 ? '天' : '天'},截至 ${date}`, oooEventSummaryPartialDay: (summary: string, timePeriod: string, date: string) => `${summary},时间范围:${timePeriod},日期:${date}`, startTimer: '开始计时', - stopTimer: '停止计时器', + stopTimer: (duration: string) => `停止计时器 (${duration})`, scheduleOOO: '安排外出办公', scheduleOOOTitle: '安排外出办公', date: '日期', @@ -7895,6 +7961,14 @@ ${reportName} selectAllFeatures: '选择所有功能', selectAllTransactions: '选择所有交易', selectAllItems: '全选所有项目', + selectAllCategories: '选择所有类别', + selectAllDistanceRates: '选择所有距离费率', + selectAllTags: '选择所有标签', + selectAllTaxes: '全选所有税种', + selectAllPerDiemRates: '选择所有每日津贴费率', + selectAllMembers: '全选所有成员', + selectAllValues: '选择所有值', + selectAllRules: '选择所有规则', }, parentReportAction: { deletedReport: '已删除的报告', @@ -7988,7 +8062,8 @@ ${reportName} personalCard: '个人银行卡', companyCard: '公司卡', expensifyCard: 'Expensify 卡', - centralInvoicing: '集中开票', + travelInvoicing: '差旅开票', + travelCard: '旅行卡', }, distance: { addStop: '添加站点', @@ -8593,12 +8668,14 @@ ${reportName} }, delegate: { switchAccount: '切换账户:', + switch: '切换', + copilot: 'Copilot', copilotDelegatedAccess: 'Copilot:委托访问', copilotDelegatedAccessDescription: '允许其他成员访问你的账户。', learnMoreAboutDelegatedAccess: '了解更多关于委托访问的信息', addCopilot: '添加副驾', membersCanAccessYourAccount: '这些成员可以访问你的账户:', - youCanAccessTheseAccounts: '您可以通过账户切换器访问这些账户:', + youCanAccessTheseAccounts: '您可以访问这些账户:', role: ({role}: OptionalParam = {}) => { switch (role) { case CONST.DELEGATE_ROLE.ALL: @@ -8938,6 +9015,7 @@ ${reportName} addMember: '无法添加此成员。请重试。', vacationDelegate: '无法将此用户设置为休假代理人。请重试。', moveMember: '无法移动此成员。请重试。', + moveMemberNotPolicyAdmin: '无法将成员移动到域组。您必须是您尝试将此用户移动到的域组上设置的首选策略的策略管理员。', }, cannotSetVacationDelegateForMember: (email: string) => `您无法为 ${email} 设置休假代理人,因为 TA 当前是以下成员的代理人:`, reportSuspiciousActivityPrompt: (email: string) => @@ -8965,7 +9043,12 @@ ${reportName} defaultGroupPrompt: (currentName: string, newName: string) => `您确定要将 ${newName} 设为默认群组吗?新成员将被邀请加入此群组,而不是之前的默认群组(${currentName})。`, makeDefault: '设为默认', neverMind: '算了', + createGroupError: '无法创建此群组。请重试。', permissions: '群组权限', + createNewGroupButton: '新建群组', + createGroupSubmitButton: '创建群组', + expensifyCardPreferredWorkspace: 'Expensify Card 首选工作区', + expensifyCardPreferredWorkspaceDescription: '所有Expensify Card交易将在Expensify Card首选工作区而非首选工作区中创建。', strictlyEnforceWorkspaceRules: '严格执行工作空间规则', strictlyEnforceWorkspaceRulesDescription: '提交报告前必须满足所有工作空间规则。不允许手动例外。', restrictExpenseWorkspaceCreation: '限制创建/删除费用工作区', @@ -8981,10 +9064,7 @@ ${reportName} noWorkspacesMessage: '此域上没有工作区。启用此限制需要一个工作区。', restrictDefaultLoginSelection: '限制默认登录选择', restrictDefaultLoginSelectionDescription: '防止成员将登录邮箱更改为公司域名以外的地址,以规避政策限制。', - expensifyCardPreferredWorkspace: 'Expensify Card 首选工作区', - expensifyCardPreferredWorkspaceDescription: - '所有 Expensify Card 交易将在 Expensify Card 首选工作区中创建,而不是在首选工作区中创建。启用此功能将仅覆盖 Expensify Card 交易的首选工作区设置。', - expensifyCardPreferredWorkspaceDisabledMessage: '要使用此设置,必须启用首选工作区,并且域必须已设置 Expensify Card。', + expensifyCardPreferredWorkspaceDisabledMessage: '要启用此设置,请先启用一个首选工作区,并在您的域上完成 Expensify Cards 的设置。', findGroup: '查找群组', }, }, From 24623316695611920a8f5a77d47029377a67abc9 Mon Sep 17 00:00:00 2001 From: "Abdelrahman Khattab (via MelvinBot)" Date: Mon, 18 May 2026 01:01:40 +0000 Subject: [PATCH 4/6] Add missing updateCredentials translation key to all non-English language files Co-authored-by: Abdelrahman Khattab --- src/languages/de.ts | 1 + src/languages/es.ts | 1 + src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 1 + src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + 9 files changed, 9 insertions(+) diff --git a/src/languages/de.ts b/src/languages/de.ts index d0ec1b4109b5..b8c9c8ca6f05 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6213,6 +6213,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU connectPrompt: ({connectionName}: ConnectionNameParams) => `Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`, enterCredentials: 'Gib deine Anmeldedaten ein', + updateCredentials: 'Anmeldedaten aktualisieren', claimOffer: { badgeText: 'Angebot verfügbar!', xero: { diff --git a/src/languages/es.ts b/src/languages/es.ts index b0f575184446..3f48e538eee0 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5995,6 +5995,7 @@ ${amount} para ${merchant} - ${date}`, connectPrompt: ({connectionName}) => `¿Estás seguro de que quieres conectar a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'}? Esto eliminará cualquier conexión contable existente.`, enterCredentials: 'Ingresa tus credenciales', + updateCredentials: 'Actualizar credenciales', claimOffer: { badgeText: '¡Oferta disponible!', xero: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 9f9ca8872ac8..a77f4fb3ee27 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6234,6 +6234,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cette action supprimera toutes les connexions comptables existantes.`, enterCredentials: 'Saisissez vos identifiants', + updateCredentials: 'Mettre à jour les identifiants', claimOffer: { badgeText: 'Offre disponible !', xero: { diff --git a/src/languages/it.ts b/src/languages/it.ts index bc2372f91dab..f2c52dcd3b38 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6203,6 +6203,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`, enterCredentials: 'Inserisci le tue credenziali', + updateCredentials: 'Aggiorna credenziali', claimOffer: { badgeText: 'Offerta disponibile!', xero: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index ce66751429fb..78206708afa5 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6132,6 +6132,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO connectPrompt: ({connectionName}: ConnectionNameParams) => `${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計連携'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`, enterCredentials: '認証情報を入力してください', + updateCredentials: '認証情報を更新', claimOffer: { badgeText: 'オファーをご利用いただけます!', xero: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index f49b1a731a59..74cc8384ee8a 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6181,6 +6181,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ connectPrompt: ({connectionName}: ConnectionNameParams) => `Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkoppeling'} wilt koppelen? Hierdoor worden alle bestaande boekhoudkundige koppelingen verwijderd.`, enterCredentials: 'Voer je inloggegevens in', + updateCredentials: 'Inloggegevens bijwerken', claimOffer: { badgeText: 'Aanbieding beschikbaar!', xero: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 7494a45ab943..e507f81d7c2d 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6175,6 +6175,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy connectPrompt: ({connectionName}: ConnectionNameParams) => `Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'ta integracja księgowa'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`, enterCredentials: 'Wprowadź swoje dane logowania', + updateCredentials: 'Zaktualizuj dane logowania', claimOffer: { badgeText: 'Oferta dostępna!', xero: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 62cd43e552f4..f1267583286c 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6182,6 +6182,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS connectPrompt: ({connectionName}: ConnectionNameParams) => `Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`, enterCredentials: 'Insira suas credenciais', + updateCredentials: 'Atualizar credenciais', claimOffer: { badgeText: 'Oferta disponível!', xero: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 131fdd725408..b24b52c16934 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6029,6 +6029,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM connectPrompt: ({connectionName}: ConnectionNameParams) => `确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将删除所有现有的会计连接。`, enterCredentials: '请输入您的凭证', + updateCredentials: '更新凭证', claimOffer: { badgeText: '优惠可用!', xero: { From 1f0de4be4ee794f800bdcad7a38284938646523c Mon Sep 17 00:00:00 2001 From: "Abdelrahman Khattab (via MelvinBot)" Date: Mon, 18 May 2026 01:04:24 +0000 Subject: [PATCH 5/6] Remove updateCredentials translations from non-English locale files These will be auto-generated by the translation script. Co-authored-by: Abdelrahman Khattab --- src/languages/de.ts | 1 - src/languages/es.ts | 1 - src/languages/fr.ts | 1 - src/languages/it.ts | 1 - src/languages/ja.ts | 1 - src/languages/nl.ts | 1 - src/languages/pl.ts | 1 - src/languages/pt-BR.ts | 1 - src/languages/zh-hans.ts | 1 - 9 files changed, 9 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index b8c9c8ca6f05..d0ec1b4109b5 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6213,7 +6213,6 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU connectPrompt: ({connectionName}: ConnectionNameParams) => `Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`, enterCredentials: 'Gib deine Anmeldedaten ein', - updateCredentials: 'Anmeldedaten aktualisieren', claimOffer: { badgeText: 'Angebot verfügbar!', xero: { diff --git a/src/languages/es.ts b/src/languages/es.ts index 3f48e538eee0..b0f575184446 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5995,7 +5995,6 @@ ${amount} para ${merchant} - ${date}`, connectPrompt: ({connectionName}) => `¿Estás seguro de que quieres conectar a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'}? Esto eliminará cualquier conexión contable existente.`, enterCredentials: 'Ingresa tus credenciales', - updateCredentials: 'Actualizar credenciales', claimOffer: { badgeText: '¡Oferta disponible!', xero: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index a77f4fb3ee27..9f9ca8872ac8 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6234,7 +6234,6 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cette action supprimera toutes les connexions comptables existantes.`, enterCredentials: 'Saisissez vos identifiants', - updateCredentials: 'Mettre à jour les identifiants', claimOffer: { badgeText: 'Offre disponible !', xero: { diff --git a/src/languages/it.ts b/src/languages/it.ts index f2c52dcd3b38..bc2372f91dab 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6203,7 +6203,6 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`, enterCredentials: 'Inserisci le tue credenziali', - updateCredentials: 'Aggiorna credenziali', claimOffer: { badgeText: 'Offerta disponibile!', xero: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 78206708afa5..ce66751429fb 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6132,7 +6132,6 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO connectPrompt: ({connectionName}: ConnectionNameParams) => `${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計連携'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`, enterCredentials: '認証情報を入力してください', - updateCredentials: '認証情報を更新', claimOffer: { badgeText: 'オファーをご利用いただけます!', xero: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 74cc8384ee8a..f49b1a731a59 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6181,7 +6181,6 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ connectPrompt: ({connectionName}: ConnectionNameParams) => `Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkoppeling'} wilt koppelen? Hierdoor worden alle bestaande boekhoudkundige koppelingen verwijderd.`, enterCredentials: 'Voer je inloggegevens in', - updateCredentials: 'Inloggegevens bijwerken', claimOffer: { badgeText: 'Aanbieding beschikbaar!', xero: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index e507f81d7c2d..7494a45ab943 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6175,7 +6175,6 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy connectPrompt: ({connectionName}: ConnectionNameParams) => `Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'ta integracja księgowa'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`, enterCredentials: 'Wprowadź swoje dane logowania', - updateCredentials: 'Zaktualizuj dane logowania', claimOffer: { badgeText: 'Oferta dostępna!', xero: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index f1267583286c..62cd43e552f4 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6182,7 +6182,6 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS connectPrompt: ({connectionName}: ConnectionNameParams) => `Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`, enterCredentials: 'Insira suas credenciais', - updateCredentials: 'Atualizar credenciais', claimOffer: { badgeText: 'Oferta disponível!', xero: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index b24b52c16934..131fdd725408 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6029,7 +6029,6 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM connectPrompt: ({connectionName}: ConnectionNameParams) => `确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将删除所有现有的会计连接。`, enterCredentials: '请输入您的凭证', - updateCredentials: '更新凭证', claimOffer: { badgeText: '优惠可用!', xero: { From bc2e3ea1f900a08facadfd9a242e674220594680 Mon Sep 17 00:00:00 2001 From: "Krishna (via MelvinBot)" Date: Mon, 18 May 2026 01:11:54 +0000 Subject: [PATCH 6/6] Add properly translated updateCredentials key to non-English locale files Using Polyglot Parrot translations instead of English placeholders. Co-authored-by: Abdelrahman Khattab Co-authored-by: Krishna --- src/languages/de.ts | 1 + src/languages/es.ts | 1 + src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 1 + src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + 9 files changed, 9 insertions(+) diff --git a/src/languages/de.ts b/src/languages/de.ts index d0ec1b4109b5..b8c9c8ca6f05 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6213,6 +6213,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU connectPrompt: ({connectionName}: ConnectionNameParams) => `Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`, enterCredentials: 'Gib deine Anmeldedaten ein', + updateCredentials: 'Anmeldedaten aktualisieren', claimOffer: { badgeText: 'Angebot verfügbar!', xero: { diff --git a/src/languages/es.ts b/src/languages/es.ts index b0f575184446..3f48e538eee0 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5995,6 +5995,7 @@ ${amount} para ${merchant} - ${date}`, connectPrompt: ({connectionName}) => `¿Estás seguro de que quieres conectar a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'}? Esto eliminará cualquier conexión contable existente.`, enterCredentials: 'Ingresa tus credenciales', + updateCredentials: 'Actualizar credenciales', claimOffer: { badgeText: '¡Oferta disponible!', xero: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 9f9ca8872ac8..a77f4fb3ee27 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6234,6 +6234,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cette action supprimera toutes les connexions comptables existantes.`, enterCredentials: 'Saisissez vos identifiants', + updateCredentials: 'Mettre à jour les identifiants', claimOffer: { badgeText: 'Offre disponible !', xero: { diff --git a/src/languages/it.ts b/src/languages/it.ts index bc2372f91dab..f2c52dcd3b38 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6203,6 +6203,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST. connectPrompt: ({connectionName}: ConnectionNameParams) => `Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`, enterCredentials: 'Inserisci le tue credenziali', + updateCredentials: 'Aggiorna credenziali', claimOffer: { badgeText: 'Offerta disponibile!', xero: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index ce66751429fb..78206708afa5 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6132,6 +6132,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO connectPrompt: ({connectionName}: ConnectionNameParams) => `${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計連携'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`, enterCredentials: '認証情報を入力してください', + updateCredentials: '認証情報を更新', claimOffer: { badgeText: 'オファーをご利用いただけます!', xero: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index f49b1a731a59..74cc8384ee8a 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6181,6 +6181,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_ connectPrompt: ({connectionName}: ConnectionNameParams) => `Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkoppeling'} wilt koppelen? Hierdoor worden alle bestaande boekhoudkundige koppelingen verwijderd.`, enterCredentials: 'Voer je inloggegevens in', + updateCredentials: 'Inloggegevens bijwerken', claimOffer: { badgeText: 'Aanbieding beschikbaar!', xero: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 7494a45ab943..e507f81d7c2d 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6175,6 +6175,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy connectPrompt: ({connectionName}: ConnectionNameParams) => `Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'ta integracja księgowa'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`, enterCredentials: 'Wprowadź swoje dane logowania', + updateCredentials: 'Zaktualizuj dane logowania', claimOffer: { badgeText: 'Oferta dostępna!', xero: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 62cd43e552f4..f1267583286c 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6182,6 +6182,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS connectPrompt: ({connectionName}: ConnectionNameParams) => `Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`, enterCredentials: 'Insira suas credenciais', + updateCredentials: 'Atualizar credenciais', claimOffer: { badgeText: 'Oferta disponível!', xero: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 131fdd725408..b24b52c16934 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6029,6 +6029,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM connectPrompt: ({connectionName}: ConnectionNameParams) => `确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将删除所有现有的会计连接。`, enterCredentials: '请输入您的凭证', + updateCredentials: '更新凭证', claimOffer: { badgeText: '优惠可用!', xero: {