From 48c8d3cc99697bd22049538ec04c0544491d656b Mon Sep 17 00:00:00 2001 From: behrinml Date: Mon, 18 May 2026 17:08:36 +0200 Subject: [PATCH] added localization for finance/cost center functionality (AI translated for fr, it, ja, pt, zh) --- frontend/src/i18n/locales/de.ts | 109 ++++++++++++++++++++++++++++- frontend/src/i18n/locales/en.ts | 109 ++++++++++++++++++++++++++++- frontend/src/i18n/locales/fr.ts | 105 +++++++++++++++++++++++++++ frontend/src/i18n/locales/it.ts | 105 +++++++++++++++++++++++++++ frontend/src/i18n/locales/ja.ts | 105 +++++++++++++++++++++++++++ frontend/src/i18n/locales/pt-BR.ts | 105 +++++++++++++++++++++++++++ frontend/src/i18n/locales/zh-CN.ts | 107 ++++++++++++++++++++++++++++ frontend/src/i18n/locales/zh-TW.ts | 106 ++++++++++++++++++++++++++++ 8 files changed, 849 insertions(+), 2 deletions(-) diff --git a/frontend/src/i18n/locales/de.ts b/frontend/src/i18n/locales/de.ts index 0459bafad..7c722e367 100644 --- a/frontend/src/i18n/locales/de.ts +++ b/frontend/src/i18n/locales/de.ts @@ -8,6 +8,7 @@ export default { profiles: 'Profile', maintenance: 'Wartung', projects: 'Projekte', + finance: 'Finanzen', inventory: 'Filament', files: 'Dateimanager', makerworld: 'MakerWorld', @@ -66,6 +67,7 @@ export default { actions: 'Aktionen', status: 'Status', name: 'Name', + user: 'Benutzer', description: 'Beschreibung', date: 'Datum', time: 'Zeit', @@ -121,6 +123,95 @@ export default { duplicate: 'Duplizieren', left: 'Links', right: 'Rechts', + run: 'Ausführen', + running: 'Wird ausgeführt...', + }, + + finance: { + allTypes: 'Alle Typen', + allCostCenters: 'Alle Kostenstellen', + title: 'Finanzen', + subtitle: 'Wallet, persönliche Transaktionen und Kostenstellen', + noAccess: 'Du hast keine Berechtigung, Finanzdaten anzuzeigen.', + personalView: 'Persönliche Ansicht', + adminView: 'Admin-Ansicht', + createCostCenter: 'Kostenstelle erstellen', + adjustWallet: 'Wallet anpassen', + addManualPrint: 'Manuellen Druck nachtragen', + manageMembers: 'Mitglieder der Kostenstelle verwalten', + currentBalance: 'Persönlicher Kontostand', + transactions: 'Transaktionen', + personalTransactions: 'Persönliche Transaktionen', + costCenters: 'Kostenstellen', + availableForPrinting: 'Für Druckzuordnung verfügbar', + costCenterName: 'Name', + budgetType: 'Budgettyp', + monthlyBudget: 'Monatsbudget', + totalBudget: 'Gesamtbudget', + noBudget: "kein Budget gesetzt", + create: 'Erstellen', + selectUser: 'Benutzer auswählen', + transactionType: 'Typ', + amount: 'Betrag', + noCostCenter: 'Keine Kostenstelle', + descriptionOptional: 'Beschreibung (optional)', + applyAdjustment: 'Anpassung anwenden', + memberCanPrint: 'Mitglied darf drucken', + addMember: 'Mitglied hinzufügen', + canPrint: 'Darf drucken', + noMembers: 'Keine Mitglieder zugewiesen.', + editCostCenter: 'Kostenstelle bearbeiten', + myCostCenters: 'Meine Kostenstellen', + costCentersHint: 'Budgetgrenzen prüfen und Kosten im Blick behalten', + noCostCenters: 'Keine Kostenstellen gefunden.', + owner: 'Besitzer', + balance: 'Saldo', + budget: 'Budget', + shared: 'Geteilt', + cannotEditPrivateCostCenter: 'Private Kostenstellen können hier nicht bearbeitet werden', + recentTransactions: 'Aktuelle Transaktionen', + transactionsHint: 'Nach Typ und Kostenstelle filtern', + first: 'Erste', + prev: 'Zurück', + next: 'Weiter', + last: 'Letzte', + pageNumberOf: 'Seite {{page}} von {{total}}', + noTransactions: 'Keine Transaktionen verfügbar.', + noTransactionsForFilter: 'Keine Transaktionen entsprechen den ausgewählten Filtern.', + costCenter: 'Kostenstelle', + balanceAfter: 'Saldo nachher', + userWithId: 'Benutzer #{{id}}', + partial: 'Teilweise', + editTransaction: 'Transaktion bearbeiten', + selectCostCenter: 'Kostenstelle auswählen...', + costCenterRequired: 'Bitte eine Kostenstelle auswählen', + amountExample: 'z. B. 4,00', + manualAdjustmentExample: 'z. B. Manuelle Anpassung', + userRequired: 'Bitte einen Benutzer auswählen', + amountInvalid: 'Betrag muss eine gültige Zahl sein', + createdCostCenter: 'Kostenstelle erstellt', + createCostCenterFailed: 'Kostenstelle konnte nicht erstellt werden', + transactionDeleted: 'Transaktion gelöscht', + deleteTransactionFailed: 'Transaktion konnte nicht gelöscht werden', + transactionEdited: 'Transaktion aktualisiert und Ledger neu berechnet', + editTransactionFailed: 'Transaktion konnte nicht bearbeitet werden', + manualPrintCreated: 'Manueller Druck hinzugefügt und Ledger neu berechnet', + manualPrintFailed: 'Manueller Druck konnte nicht erstellt werden', + memberSaved: 'Mitglied gespeichert', + memberSaveFailed: 'Mitglied konnte nicht gespeichert werden', + memberRemoved: 'Mitglied entfernt', + memberRemoveFailed: 'Mitglied konnte nicht entfernt werden', + costCenterNameRequired: 'Kostenstellenname ist erforderlich', + costCenterUpdated: 'Kostenstelle aktualisiert', + costCenterUpdateFailed: 'Kostenstelle konnte nicht aktualisiert werden', + confirmDeleteCostCenter: 'Kostenstelle "{{name}}" löschen?', + costCenterDeleted: 'Kostenstelle gelöscht', + costCenterDeleteFailed: 'Kostenstelle konnte nicht gelöscht werden', + deleteTransactionConfirm: 'Diese Transaktion löschen? Die Salden werden automatisch neu berechnet.', + deposit: 'Einzahlung', + withdraw: 'Auszahlung', + printCharge: 'Druckkosten', + deleteTransaction: 'Transaktion löschen', }, // Printers page @@ -2084,6 +2175,21 @@ export default { }, externalCameras: 'Externe Kameras', costTracking: 'Kostenverfolgung', + billingEnabled: 'Abrechnung aktivieren', + billingEnabledDescription: 'Kostenstellen aktivieren und Drucke verbuchen', + printerKillSwitch: 'Automatischer Druckstopp', + printerKillSwitchDescription: 'Drucke ohne Authorisierung sofort abbrechen', + financeBudgetReset: 'Finanzbudget monatlich zurücksetzen', + financeBudgetResetDay: 'Reset-Tag', + financeBudgetResetDayHelp: 'Für kurze Monate verwendet der Reset den letzten Tag des Monats.', + financeBudgetResetTimezone: 'Reset-Zeitzone', + financeBudgetResetTimezoneHelp: 'Der Budget-Fenster-Start wird in dieser Zeitzone berechnet.', + rebuildLedger: 'Ledger wiederaufbauen', + rebuildLedgerStarted: 'Ledger-Wiederaufbau gestartet', + rebuildLedgerConfirmTitle: 'Ledger wiederaufbauen?', + rebuildLedgerConfirmMessage: + 'Dies baut das Wallet-Ledger neu auf, um historische Saldenwerte zu reparieren. Führen Sie dies nur aus, wenn Sie genau wissen, was Sie tun.', + rebuildLedgerInProgress: 'Wiederaufbau wird gestartet...', printsOnly: 'Nur Drucke', totalConsumption: 'Gesamtverbrauch', dataManagement: 'Datenverwaltung', @@ -3596,7 +3702,7 @@ export default { title: 'Kostenverfolgung', filamentCost: 'Filamentkosten', energy: 'Energie', - totalCost: 'Gesamtkosten', + totalCost: 'Erwartete Gesamtkosten', total: 'Gesamt', includesBom: 'inkl. Stückliste', budget: 'Budget', @@ -4301,6 +4407,7 @@ export default { staggerTotal: 'insgesamt: {{minutes}} Min.', staggerToPrinters: 'Gestaffelt an {{count}} Drucker senden', gcodeInjection: 'Auto-Print G-code einfügen', + insufficientBudget: 'Budget nicht ausreichend', }, // Backup diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index d0c78568a..b4ba7ca5f 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -8,6 +8,7 @@ export default { profiles: 'Profiles', maintenance: 'Maintenance', projects: 'Projects', + finance: 'Finance', inventory: 'Filament', files: 'File Manager', makerworld: 'MakerWorld', @@ -66,6 +67,7 @@ export default { actions: 'Actions', status: 'Status', name: 'Name', + user: 'User', description: 'Description', date: 'Date', time: 'Time', @@ -121,6 +123,95 @@ export default { duplicate: 'Duplicate', left: 'Left', right: 'Right', + run: 'Run', + running: 'Running...', + }, + + finance: { + allTypes: 'All types', + allCostCenters: 'All cost centers', + title: 'Finance', + subtitle: 'Wallet, personal transactions, and cost centers', + noAccess: 'You do not have permission to view finance data.', + personalView: 'Personal view', + adminView: 'Admin view', + createCostCenter: 'Create cost center', + adjustWallet: 'Adjust wallet', + addManualPrint: 'Add manual print', + manageMembers: 'Manage cost center members', + currentBalance: 'Personal balance', + transactions: 'Transactions', + personalTransactions: 'Personal transactions', + costCenters: 'Cost centers', + availableForPrinting: 'Available for print assignment', + costCenterName: 'Name', + budgetType: 'Budget type', + monthlyBudget: 'Monthly budget', + totalBudget: 'Total budget', + noBudget: "No budget", + create: 'Create', + selectUser: 'Select user', + transactionType: 'Type', + amount: 'Amount', + noCostCenter: 'No cost center', + descriptionOptional: 'Description (optional)', + applyAdjustment: 'Apply adjustment', + memberCanPrint: 'Member can print', + addMember: 'Add member', + canPrint: 'Can print', + noMembers: 'No members assigned.', + editCostCenter: 'Edit cost center', + myCostCenters: 'My cost centers', + costCentersHint: 'Review budget limits and keep costs under control', + noCostCenters: 'No cost centers found.', + owner: 'Owner', + balance: 'Balance', + budget: 'Budget', + shared: 'Shared', + cannotEditPrivateCostCenter: 'Private cost centers cannot be edited here', + recentTransactions: 'Recent transactions', + transactionsHint: 'Filter by type and cost center', + first: 'First', + prev: 'Previous', + next: 'Next', + last: 'Last', + pageNumberOf: 'Page {{page}} of {{total}}', + noTransactions: 'No transactions available.', + noTransactionsForFilter: 'No transactions match the selected filters.', + costCenter: 'Cost center', + balanceAfter: 'Balance after', + userWithId: 'User #{{id}}', + partial: 'Partial', + editTransaction: 'Edit Transaction', + selectCostCenter: 'Select cost center...', + costCenterRequired: 'Please select a cost center', + amountExample: 'e.g., 4.00', + manualAdjustmentExample: 'e.g., Manual adjustment', + userRequired: 'Please select a user', + amountInvalid: 'Amount must be a valid number', + createdCostCenter: 'Cost center created', + createCostCenterFailed: 'Failed to create cost center', + transactionDeleted: 'Transaction deleted', + deleteTransactionFailed: 'Failed to delete transaction', + transactionEdited: 'Transaction updated and ledger recalculated', + editTransactionFailed: 'Failed to edit transaction', + manualPrintCreated: 'Manual print charge added and ledger recalculated', + manualPrintFailed: 'Failed to create manual print', + memberSaved: 'Member saved', + memberSaveFailed: 'Failed to save member', + memberRemoved: 'Member removed', + memberRemoveFailed: 'Failed to remove member', + costCenterNameRequired: 'Cost center name is required', + costCenterUpdated: 'Cost center updated', + costCenterUpdateFailed: 'Failed to update cost center', + confirmDeleteCostCenter: 'Delete cost center "{{name}}"?', + costCenterDeleted: 'Cost center deleted', + costCenterDeleteFailed: 'Failed to delete cost center', + deleteTransactionConfirm: 'Delete this transaction? Balances will be recalculated automatically.', + deposit: 'Deposit', + withdraw: 'Withdraw', + printCharge: 'Print charge', + deleteTransaction: 'Delete transaction', }, // Printers page @@ -2098,6 +2189,21 @@ export default { }, externalCameras: 'External Cameras', costTracking: 'Cost Tracking', + billingEnabled: 'Enable Billing', + billingEnabledDescription: 'Charge users for prints and enable finance features', + printerKillSwitch: 'Unauthorized print kill switch', + printerKillSwitchDescription: 'Immediately stop prints that start without authorization.', + financeBudgetReset: 'Finance Monthly Budget Reset', + financeBudgetResetDay: 'Reset Day', + financeBudgetResetDayHelp: 'For short months, reset uses the last day of the month.', + financeBudgetResetTimezone: 'Reset timezone', + financeBudgetResetTimezoneHelp: 'Budget window start is calculated in this timezone.")', + rebuildLedger: 'Rebuild wallet ledger', + rebuildLedgerStarted: 'Ledger rebuild started', + rebuildLedgerConfirmTitle: 'Rebuild wallet ledger?', + rebuildLedgerConfirmMessage: + 'This will rebuild the wallet ledger to repair historical balance values. Run this only if you know what you are doing.', + rebuildLedgerInProgress: 'Starting rebuild...', printsOnly: 'Prints Only', totalConsumption: 'Total Consumption', dataManagement: 'Data Management', @@ -3611,7 +3717,7 @@ export default { title: 'Cost Tracking', filamentCost: 'Filament Cost', energy: 'Energy', - totalCost: 'Total Cost', + totalCost: 'Estimated Cost', total: 'Total', includesBom: 'incl. BOM', budget: 'Budget', @@ -4325,6 +4431,7 @@ export default { staggerTotal: 'total: {{minutes}} min', staggerToPrinters: 'Stagger to {{count}} printers', gcodeInjection: 'Inject auto-print G-code', + insufficientBudget: 'Insufficient Budget', }, // Backup diff --git a/frontend/src/i18n/locales/fr.ts b/frontend/src/i18n/locales/fr.ts index 9ca02de9e..e1aaa8669 100644 --- a/frontend/src/i18n/locales/fr.ts +++ b/frontend/src/i18n/locales/fr.ts @@ -121,6 +121,95 @@ export default { duplicate: 'Dupliquer', left: 'Gauche', right: 'Droite', + run: 'Exécuter', + running: 'En cours d\'exécution...', + }, + + finance: { + allTypes: 'Tous les types', + allCostCenters: 'Tous les centres de coûts', + title: 'Finances', + subtitle: 'Portefeuille, transactions personnelles et centres de coûts', + noAccess: 'Vous n\'avez pas la permission d\'accéder aux données financières.', + personalView: 'Vue personnelle', + adminView: 'Vue administrateur', + createCostCenter: 'Créer un centre de coûts', + adjustWallet: 'Ajuster le portefeuille', + addManualPrint: 'Ajouter un tirage manuel', + manageMembers: 'Gérer les membres du centre de coûts', + currentBalance: 'Solde personnel', + transactions: 'Transactions', + personalTransactions: 'Transactions personnelles', + costCenters: 'Centres de coûts', + availableForPrinting: 'Disponible pour l\'attribution d\'impression', + costCenterName: 'Nom', + budgetType: 'Type de budget', + monthlyBudget: 'Budget mensuel', + totalBudget: 'Budget total', + noBudget: 'Aucun budget', + create: 'Créer', + selectUser: 'Sélectionner un utilisateur', + transactionType: 'Type', + amount: 'Montant', + noCostCenter: 'Aucun centre de coûts', + descriptionOptional: 'Description (facultative)', + applyAdjustment: 'Appliquer l\'ajustement', + memberCanPrint: 'Le membre peut imprimer', + addMember: 'Ajouter un membre', + canPrint: 'Peut imprimer', + noMembers: 'Aucun membre assigné.', + editCostCenter: 'Modifier le centre de coûts', + myCostCenters: 'Mes centres de coûts', + costCentersHint: 'Vérifier les limites budgétaires et garder les coûts sous contrôle', + noCostCenters: 'Aucun centre de coûts trouvé.', + owner: 'Propriétaire', + balance: 'Solde', + budget: 'Budget', + shared: 'Partagé', + cannotEditPrivateCostCenter: 'Les centres de coûts privés ne peuvent pas être modifiés ici', + recentTransactions: 'Transactions récentes', + transactionsHint: 'Filtrer par type et centre de coûts', + first: 'Première', + prev: 'Précédente', + next: 'Suivante', + last: 'Dernière', + pageNumberOf: 'Page {{page}} sur {{total}}', + noTransactions: 'Aucune transaction disponible.', + noTransactionsForFilter: 'Aucune transaction ne correspond aux filtres sélectionnés.', + costCenter: 'Centre de coûts', + balanceAfter: 'Solde après', + userWithId: 'Utilisateur #{{id}}', + partial: 'Partiel', + editTransaction: 'Modifier la transaction', + selectCostCenter: 'Sélectionner un centre de coûts...', + costCenterRequired: 'Veuillez sélectionner un centre de coûts', + amountExample: 'p. ex. 4,00', + manualAdjustmentExample: 'p. ex. Ajustement manuel', + userRequired: 'Veuillez sélectionner un utilisateur', + amountInvalid: 'Le montant doit être un nombre valide', + createdCostCenter: 'Centre de coûts créé', + createCostCenterFailed: 'Impossible de créer le centre de coûts', + transactionDeleted: 'Transaction supprimée', + deleteTransactionFailed: 'Impossible de supprimer la transaction', + transactionEdited: 'Transaction mise à jour et ledger recalculé', + editTransactionFailed: 'Impossible de modifier la transaction', + manualPrintCreated: 'Frais de tirage manuel ajoutés et ledger recalculé', + manualPrintFailed: 'Impossible de créer le tirage manuel', + memberSaved: 'Membre enregistré', + memberSaveFailed: 'Impossible d\'enregistrer le membre', + memberRemoved: 'Membre supprimé', + memberRemoveFailed: 'Impossible de supprimer le membre', + costCenterNameRequired: 'Le nom du centre de coûts est requis', + costCenterUpdated: 'Centre de coûts mis à jour', + costCenterUpdateFailed: 'Impossible de mettre à jour le centre de coûts', + confirmDeleteCostCenter: 'Supprimer le centre de coûts « {{name}} » ?', + costCenterDeleted: 'Centre de coûts supprimé', + costCenterDeleteFailed: 'Impossible de supprimer le centre de coûts', + deleteTransactionConfirm: 'Supprimer cette transaction ? Les soldes seront recalculés automatiquement.', + deposit: 'Dépôt', + withdraw: 'Retrait', + printCharge: 'Frais d\'impression', + deleteTransaction: 'Supprimer la transaction', }, // Printers page @@ -2058,6 +2147,21 @@ export default { useTls: 'Utiliser TLS', enableMetricsEndpoint: 'Activer l\'endpoint Metrics', availableMetrics: 'Metrics disponibles', + billingEnabled: 'Activer la facturation', + billingEnabledDescription: 'Facturer les utilisateurs pour les impressions et activer les fonctionnalités financières', + printerKillSwitch: 'Interrupteur d\'arrêt automatique', + printerKillSwitchDescription: 'Arrêter immédiatement les impressions qui démarrent sans autorisation', + financeBudgetReset: 'Réinitialisation mensuelle du budget financier', + financeBudgetResetDay: 'Jour de réinitialisation', + financeBudgetResetDayHelp: 'Pour les mois courts, la réinitialisation utilise le dernier jour du mois.', + financeBudgetResetTimezone: 'Fuseau horaire de réinitialisation', + financeBudgetResetTimezoneHelp: 'Le fuseau horaire utilisé pour déterminer le moment de la réinitialisation du budget chaque mois.', + rebuildLedger: 'Reconstruire le grand livre du portefeuille', + rebuildLedgerStarted: 'Reconstruction du grand livre commencée', + rebuildLedgerConfirmTitle: 'Reconstruire le grand livre du portefeuille?', + rebuildLedgerConfirmMessage: + 'Cela reconstruira le grand livre du portefeuille pour réparer les valeurs de solde historiques. Exécutez ceci uniquement si vous savez ce que vous faites.', + rebuildLedgerInProgress: 'Reconstruction en cours de démarrage...', editUser: 'Modifier l\'utilisateur', deleteUserTitle: 'Supprimer l\'utilisateur', groupName: 'Nom du groupe', @@ -4290,6 +4394,7 @@ export default { staggerTotal: 'total : {{minutes}} min', staggerToPrinters: 'Échelonner sur {{count}} imprimantes', gcodeInjection: 'Injecter le G-code auto-impression', + insufficientBudget: 'Budget insuffisant', }, // Backup diff --git a/frontend/src/i18n/locales/it.ts b/frontend/src/i18n/locales/it.ts index bcc671564..07001d45f 100644 --- a/frontend/src/i18n/locales/it.ts +++ b/frontend/src/i18n/locales/it.ts @@ -121,6 +121,95 @@ export default { duplicate: 'Duplica', left: 'Sinistra', right: 'Destra', + run: 'Esegui', + running: 'In esecuzione...', + }, + + finance: { + allTypes: 'Tutti i tipi', + allCostCenters: 'Tutti i centri di costo', + title: 'Finanza', + subtitle: 'Portafoglio, transazioni personali e centri di costo', + noAccess: 'Non hai il permesso di visualizzare i dati finanziari.', + personalView: 'Vista personale', + adminView: 'Vista amministratore', + createCostCenter: 'Crea centro di costo', + adjustWallet: 'Regola portafoglio', + addManualPrint: 'Aggiungi stampa manuale', + manageMembers: 'Gestisci membri del centro di costo', + currentBalance: 'Saldo personale', + transactions: 'Transazioni', + personalTransactions: 'Transazioni personali', + costCenters: 'Centri di costo', + availableForPrinting: 'Disponibile per l\'assegnazione stampa', + costCenterName: 'Nome', + budgetType: 'Tipo di budget', + monthlyBudget: 'Budget mensile', + totalBudget: 'Budget totale', + noBudget: 'Nessun budget', + create: 'Crea', + selectUser: 'Seleziona utente', + transactionType: 'Tipo', + amount: 'Importo', + noCostCenter: 'Nessun centro di costo', + descriptionOptional: 'Descrizione (facoltativa)', + applyAdjustment: 'Applica rettifica', + memberCanPrint: 'Il membro può stampare', + addMember: 'Aggiungi membro', + canPrint: 'Può stampare', + noMembers: 'Nessun membro assegnato.', + editCostCenter: 'Modifica centro di costo', + myCostCenters: 'I miei centri di costo', + costCentersHint: 'Controlla i limiti di budget e mantieni i costi sotto controllo', + noCostCenters: 'Nessun centro di costo trovato.', + owner: 'Proprietario', + balance: 'Saldo', + budget: 'Budget', + shared: 'Condiviso', + cannotEditPrivateCostCenter: 'I centri di costo privati non possono essere modificati qui', + recentTransactions: 'Transazioni recenti', + transactionsHint: 'Filtra per tipo e centro di costo', + first: 'Prima', + prev: 'Precedente', + next: 'Successiva', + last: 'Ultima', + pageNumberOf: 'Pagina {{page}} di {{total}}', + noTransactions: 'Nessuna transazione disponibile.', + noTransactionsForFilter: 'Nessuna transazione corrisponde ai filtri selezionati.', + costCenter: 'Centro di costo', + balanceAfter: 'Saldo successivo', + userWithId: 'Utente #{{id}}', + partial: 'Parziale', + editTransaction: 'Modifica transazione', + selectCostCenter: 'Seleziona centro di costo...', + costCenterRequired: 'Si prega di selezionare un centro di costo', + amountExample: 'es. 4,00', + manualAdjustmentExample: 'es. Rettifica manuale', + userRequired: 'Si prega di selezionare un utente', + amountInvalid: 'L\'importo deve essere un numero valido', + createdCostCenter: 'Centro di costo creato', + createCostCenterFailed: 'Impossibile creare il centro di costo', + transactionDeleted: 'Transazione eliminata', + deleteTransactionFailed: 'Impossibile eliminare la transazione', + transactionEdited: 'Transazione aggiornata e ledger ricalcolato', + editTransactionFailed: 'Impossibile modificare la transazione', + manualPrintCreated: 'Addebito stampa manuale aggiunto e ledger ricalcolato', + manualPrintFailed: 'Impossibile creare la stampa manuale', + memberSaved: 'Membro salvato', + memberSaveFailed: 'Impossibile salvare il membro', + memberRemoved: 'Membro rimosso', + memberRemoveFailed: 'Impossibile rimuovere il membro', + costCenterNameRequired: 'Il nome del centro di costo è obbligatorio', + costCenterUpdated: 'Centro di costo aggiornato', + costCenterUpdateFailed: 'Impossibile aggiornare il centro di costo', + confirmDeleteCostCenter: 'Eliminare il centro di costo "{{name}}"?', + costCenterDeleted: 'Centro di costo eliminato', + costCenterDeleteFailed: 'Impossibile eliminare il centro di costo', + deleteTransactionConfirm: 'Eliminare questa transazione? I saldi verranno ricalcolati automaticamente.', + deposit: 'Deposito', + withdraw: 'Prelievo', + printCharge: 'Addebito stampa', + deleteTransaction: 'Elimina transazione', }, // Printers page @@ -2058,6 +2147,21 @@ export default { useTls: 'Usa TLS', enableMetricsEndpoint: 'Abilita endpoint metriche', availableMetrics: 'Metriche disponibili', + billingEnabled: 'Abilita fatturazione', + billingEnabledDescription: 'Addebita agli utenti le stampe e abilita le funzioni finanziarie', + printerKillSwitch: 'Arresto automatico della stampa', + printerKillSwitchDescription: 'Interrompi immediatamente le stampe non autorizzate', + financeBudgetReset: 'Azzeramento mensile del budget finanziario', + financeBudgetResetDay: 'Giorno di azzeramento', + financeBudgetResetDayHelp: "Per i mesi brevi, l'azzeramento utilizza l'ultimo giorno del mese.", + financeBudgetResetTimezone: 'Fuso orario di azzeramento', + financeBudgetResetTimezoneHelp: "L'inizio della finestra di bilancio viene calcolato in questo fuso orario.", + rebuildLedger: 'Ricostruisci il ledger del portafoglio', + rebuildLedgerStarted: 'Ricostruzione del ledger avviata', + rebuildLedgerConfirmTitle: 'Ricostruire il ledger del portafoglio?', + rebuildLedgerConfirmMessage: + 'Questo ricostruirà il ledger del portafoglio per riparare i valori di saldo storici. Eseguire solo se sai cosa stai facendo.', + rebuildLedgerInProgress: 'Avvio della ricostruzione...', editUser: 'Modifica utente', deleteUserTitle: 'Elimina utente', groupName: 'Nome gruppo', @@ -4289,6 +4393,7 @@ export default { staggerTotal: 'totale: {{minutes}} min', staggerToPrinters: 'Scagliona a {{count}} stampanti', gcodeInjection: 'Inietta G-code auto-stampa', + insufficientBudget: 'Budget insufficiente', }, // Backup diff --git a/frontend/src/i18n/locales/ja.ts b/frontend/src/i18n/locales/ja.ts index 62e3fc40b..b4a545d25 100644 --- a/frontend/src/i18n/locales/ja.ts +++ b/frontend/src/i18n/locales/ja.ts @@ -121,6 +121,95 @@ export default { duplicate: '複製', left: '左', right: '右', + run: '実行', + running: '実行中...', + }, + + finance: { + allTypes: 'すべてのタイプ', + allCostCenters: 'すべてのコストセンター', + title: 'ファイナンス', + subtitle: 'ウォレット、個人トランザクション、およびコストセンター', + noAccess: '財務データを表示する権限がありません。', + personalView: '個人ビュー', + adminView: '管理者ビュー', + createCostCenter: 'コストセンターを作成', + adjustWallet: 'ウォレットを調整', + addManualPrint: '手動プリントを追加', + manageMembers: 'コストセンターメンバーを管理', + currentBalance: '個人残高', + transactions: 'トランザクション', + personalTransactions: '個人トランザクション', + costCenters: 'コストセンター', + availableForPrinting: 'プリント割り当てが可能', + costCenterName: '名前', + budgetType: '予算タイプ', + monthlyBudget: '月間予算', + totalBudget: '総予算', + noBudget: '予算なし', + create: '作成', + selectUser: 'ユーザーを選択', + transactionType: 'タイプ', + amount: '金額', + noCostCenter: 'コストセンターなし', + descriptionOptional: '説明(オプション)', + applyAdjustment: '調整を適用', + memberCanPrint: 'メンバーはプリント可能', + addMember: 'メンバーを追加', + canPrint: 'プリント可能', + noMembers: '割り当てられたメンバーはありません。', + editCostCenter: 'コストセンターを編集', + myCostCenters: 'マイコストセンター', + costCentersHint: '予算限度額を確認し、コストを管理下に置きます', + noCostCenters: 'コストセンターが見つかりません。', + owner: '所有者', + balance: '残高', + budget: '予算', + shared: '共有', + cannotEditPrivateCostCenter: 'プライベートコストセンターはここで編集できません', + recentTransactions: '最近のトランザクション', + transactionsHint: 'タイプとコストセンターでフィルタリングしてから、ページを移動します', + first: '最初', + prev: '前へ', + next: '次へ', + last: '最後', + pageNumberOf: 'ページ {{page}} / {{total}}', + noTransactions: '利用可能なトランザクションはありません。', + noTransactionsForFilter: '選択したフィルターに一致するトランザクションはありません。', + costCenter: 'コストセンター', + balanceAfter: '調整後残高', + userWithId: 'ユーザー #{{id}}', + partial: '部分', + editTransaction: 'トランザクションを編集', + selectCostCenter: 'コストセンターを選択...', + costCenterRequired: 'コストセンターを選択してください', + amountExample: '例:4.00', + manualAdjustmentExample: '例:手動調整', + userRequired: 'ユーザーを選択してください', + amountInvalid: '金額は有効な数値である必要があります', + createdCostCenter: 'コストセンターが作成されました', + createCostCenterFailed: 'コストセンターの作成に失敗しました', + transactionDeleted: 'トランザクションが削除されました', + deleteTransactionFailed: 'トランザクションの削除に失敗しました', + transactionEdited: 'トランザクションが更新され、レジャーが再計算されました', + editTransactionFailed: 'トランザクションの編集に失敗しました', + manualPrintCreated: '手動プリント料金が追加され、レジャーが再計算されました', + manualPrintFailed: '手動プリントの作成に失敗しました', + memberSaved: 'メンバーが保存されました', + memberSaveFailed: 'メンバーの保存に失敗しました', + memberRemoved: 'メンバーが削除されました', + memberRemoveFailed: 'メンバーの削除に失敗しました', + costCenterNameRequired: 'コストセンター名は必須です', + costCenterUpdated: 'コストセンターが更新されました', + costCenterUpdateFailed: 'コストセンターの更新に失敗しました', + confirmDeleteCostCenter: 'コストセンター "{{name}}" を削除しますか?', + costCenterDeleted: 'コストセンターが削除されました', + costCenterDeleteFailed: 'コストセンターの削除に失敗しました', + deleteTransactionConfirm: 'このトランザクションを削除しますか?残高は自動的に再計算されます。', + deposit: '預金', + withdraw: '引き出し', + printCharge: 'プリント料金', + deleteTransaction: 'トランザクションを削除', }, // Printers page printers: { @@ -2101,6 +2190,21 @@ export default { useTls: 'TLSを使用', enableMetricsEndpoint: 'メトリクスエンドポイントを有効化', availableMetrics: '利用可能なメトリクス', + billingEnabled: '課金を有効にする', + billingEnabledDescription: 'ユーザーにプリント料金を請求し、財務機能を有効にします', + printerKillSwitch: '印刷の自動停止', + printerKillSwitchDescription: '承認されていない印刷を即座に停止する', + financeBudgetReset: '月次財務予算のリセット', + financeBudgetResetDay: 'リセット日', + financeBudgetResetDayHelp: "短い月の場合、リセットは月の最終日を使用します。", + financeBudgetResetTimezone: 'リセットタイムゾーン', + financeBudgetResetTimezoneHelp: "L'inizio della finestra di bilancio viene calcolato in questo fuso orario.", + rebuildLedger: 'ウォレットレジャーを再構築', + rebuildLedgerStarted: 'レジャー再構築が開始されました', + rebuildLedgerConfirmTitle: 'ウォレットレジャーを再構築しますか?', + rebuildLedgerConfirmMessage: + 'これにより、ウォレットレジャーが再構築され、履歴残高値が修復されます。何をしているかを確認した時にのみこれを実行してください。', + rebuildLedgerInProgress: '再構築を開始中...', editUser: 'ユーザーを編集', deleteUserTitle: 'ユーザーを削除', groupName: 'グループ名', @@ -4301,6 +4405,7 @@ export default { staggerTotal: '合計: {{minutes}}分', staggerToPrinters: '{{count}}台のプリンターに段階的に送信', gcodeInjection: '自動印刷G-codeを挿入', + insufficientBudget: '予算が不足しています', }, // Backup diff --git a/frontend/src/i18n/locales/pt-BR.ts b/frontend/src/i18n/locales/pt-BR.ts index 4730f4db5..51959ab87 100644 --- a/frontend/src/i18n/locales/pt-BR.ts +++ b/frontend/src/i18n/locales/pt-BR.ts @@ -121,6 +121,95 @@ export default { duplicate: 'Duplicar', left: 'Esquerda', right: 'Direita', + run: 'Executar', + running: 'Executando...', + }, + + finance: { + allTypes: 'Todos os tipos', + allCostCenters: 'Todos os centros de custo', + title: 'Finanças', + subtitle: 'Carteira, transações pessoais e centros de custo', + noAccess: 'Você não tem permissão para visualizar dados financeiros.', + personalView: 'Visualização pessoal', + adminView: 'Visualização do administrador', + createCostCenter: 'Criar centro de custo', + adjustWallet: 'Ajustar carteira', + addManualPrint: 'Adicionar impressão manual', + manageMembers: 'Gerenciar membros do centro de custo', + currentBalance: 'Saldo pessoal', + transactions: 'Transações', + personalTransactions: 'Transações pessoais', + costCenters: 'Centros de custo', + availableForPrinting: 'Disponível para atribuição de impressão', + costCenterName: 'Nome', + budgetType: 'Tipo de orçamento', + monthlyBudget: 'Orçamento mensal', + totalBudget: 'Orçamento total', + noBudget: 'Sem orçamento', + create: 'Criar', + selectUser: 'Selecionar usuário', + transactionType: 'Tipo', + amount: 'Valor', + noCostCenter: 'Sem centro de custo', + descriptionOptional: 'Descrição (opcional)', + applyAdjustment: 'Aplicar ajuste', + memberCanPrint: 'Membro pode imprimir', + addMember: 'Adicionar membro', + canPrint: 'Pode imprimir', + noMembers: 'Nenhum membro atribuído.', + editCostCenter: 'Editar centro de custo', + myCostCenters: 'Meus centros de custo', + costCentersHint: 'Revise os limites de orçamento e mantenha os custos sob controle', + noCostCenters: 'Nenhum centro de custo encontrado.', + owner: 'Proprietário', + balance: 'Saldo', + budget: 'Orçamento', + shared: 'Compartilhado', + cannotEditPrivateCostCenter: 'Centros de custo privados não podem ser editados aqui', + recentTransactions: 'Transações recentes', + transactionsHint: 'Filtre por tipo e centro de custo', + first: 'Primeira', + prev: 'Anterior', + next: 'Próxima', + last: 'Última', + pageNumberOf: 'Página {{page}} de {{total}}', + noTransactions: 'Nenhuma transação disponível.', + noTransactionsForFilter: 'Nenhuma transação corresponde aos filtros selecionados.', + costCenter: 'Centro de custo', + balanceAfter: 'Saldo após', + userWithId: 'Usuário #{{id}}', + partial: 'Parcial', + editTransaction: 'Editar transação', + selectCostCenter: 'Selecionar centro de custo...', + costCenterRequired: 'Por favor, selecione um centro de custo', + amountExample: 'ex.: 4,00', + manualAdjustmentExample: 'ex.: Ajuste manual', + userRequired: 'Por favor, selecione um usuário', + amountInvalid: 'O valor deve ser um número válido', + createdCostCenter: 'Centro de custo criado', + createCostCenterFailed: 'Falha ao criar o centro de custo', + transactionDeleted: 'Transação excluída', + deleteTransactionFailed: 'Falha ao excluir a transação', + transactionEdited: 'Transação atualizada e razão recalculada', + editTransactionFailed: 'Falha ao editar a transação', + manualPrintCreated: 'Cobrança de impressão manual adicionada e razão recalculada', + manualPrintFailed: 'Falha ao criar a impressão manual', + memberSaved: 'Membro salvo', + memberSaveFailed: 'Falha ao salvar o membro', + memberRemoved: 'Membro removido', + memberRemoveFailed: 'Falha ao remover o membro', + costCenterNameRequired: 'O nome do centro de custo é obrigatório', + costCenterUpdated: 'Centro de custo atualizado', + costCenterUpdateFailed: 'Falha ao atualizar o centro de custo', + confirmDeleteCostCenter: 'Excluir o centro de custo "{{name}}"?', + costCenterDeleted: 'Centro de custo excluído', + costCenterDeleteFailed: 'Falha ao excluir o centro de custo', + deleteTransactionConfirm: 'Excluir essa transação? Os saldos serão recalculados automaticamente.', + deposit: 'Depósito', + withdraw: 'Saque', + printCharge: 'Cobrança de impressão', + deleteTransaction: 'Excluir transação', }, // Printers page @@ -2058,6 +2147,21 @@ export default { useTls: 'Usar TLS', enableMetricsEndpoint: 'Ativar Endpoint de Métricas', availableMetrics: 'Métricas Disponíveis', + billingEnabled: 'Habilitar cobrança', + billingEnabledDescription: 'Cobrar dos usuários por impressões e habilitar recursos de financeiro', + printerKillSwitch: 'Parada Automática de Impressão', + printerKillSwitchDescription: 'Interromper imediatamente impressões não autorizadas', + financeBudgetReset: 'Redefinir Orçamento Financeiro Mensal', + financeBudgetResetDay: 'Dia de Redefinição', + financeBudgetResetDayHelp: 'Para meses curtos, a redefinição utiliza o último dia do mês.', + financeBudgetResetTimezone: 'Fuso Horário de Redefinição', + financeBudgetResetTimezoneHelp: 'Der Budget-Fenster-Start wird in dieser Zeitzone berechnet.', + rebuildLedger: 'Reconstruir razão da carteira', + rebuildLedgerStarted: 'Reconstrução da razão iniciada', + rebuildLedgerConfirmTitle: 'Reconstruir razão da carteira?', + rebuildLedgerConfirmMessage: + 'Isto reconstruirá a razão da carteira para reparar valores de saldo histórico. Execute isso apenas se você souber o que está fazendo.', + rebuildLedgerInProgress: 'Iniciando reconstrução...', editUser: 'Editar Usuário', deleteUserTitle: 'Excluir Usuário', groupName: 'Nome do Grupo', @@ -4289,6 +4393,7 @@ export default { staggerTotal: 'total: {{minutes}} min', staggerToPrinters: 'Escalonar para {{count}} impressoras', gcodeInjection: 'Injetar G-code de auto-impressão', + insufficientBudget: 'Orçamento insuficiente', }, // Backup diff --git a/frontend/src/i18n/locales/zh-CN.ts b/frontend/src/i18n/locales/zh-CN.ts index b80bc9760..31bbb5e27 100644 --- a/frontend/src/i18n/locales/zh-CN.ts +++ b/frontend/src/i18n/locales/zh-CN.ts @@ -8,6 +8,7 @@ export default { profiles: '配置文件', maintenance: '维护', projects: '项目', + finance: '财务', inventory: '耗材', files: '文件管理器', makerworld: 'MakerWorld', @@ -66,6 +67,7 @@ export default { actions: '操作', status: '状态', name: '名称', + user: '用户', description: '描述', date: '日期', time: '时间', @@ -121,6 +123,95 @@ export default { duplicate: '复制', left: '左', right: '右', + run: '运行', + running: '运行中...', + }, + + finance: { + allTypes: '所有类型', + allCostCenters: '所有成本中心', + title: '财务', + subtitle: '钱包、个人交易和成本中心', + noAccess: '您没有权限查看财务数据。', + personalView: '个人视图', + adminView: '管理员视图', + createCostCenter: '创建成本中心', + adjustWallet: '调整钱包', + addManualPrint: '添加手动打印', + manageMembers: '管理成本中心成员', + currentBalance: '个人余额', + transactions: '交易', + personalTransactions: '个人交易', + costCenters: '成本中心', + availableForPrinting: '可用于打印分配', + costCenterName: '名称', + budgetType: '预算类型', + monthlyBudget: '月度预算', + totalBudget: '总预算', + noBudget: '无预算', + create: '创建', + selectUser: '选择用户', + transactionType: '类型', + amount: '金额', + noCostCenter: '无成本中心', + descriptionOptional: '描述(可选)', + applyAdjustment: '应用调整', + memberCanPrint: '成员可以打印', + addMember: '添加成员', + canPrint: '可以打印', + noMembers: '未分配任何成员。', + editCostCenter: '编辑成本中心', + myCostCenters: '我的成本中心', + costCentersHint: '审查预算限制并将成本控制在可控范围内', + noCostCenters: '未找到成本中心。', + owner: '所有者', + balance: '余额', + budget: '预算', + shared: '共享', + cannotEditPrivateCostCenter: '私人成本中心无法在此处编辑', + recentTransactions: '最近的交易', + transactionsHint: '按类型和成本中心筛选,然后浏览页面', + first: '首页', + prev: '上一页', + next: '下一页', + last: '末页', + pageNumberOf: '第 {{page}} 页,共 {{total}} 页', + noTransactions: '没有可用的交易。', + noTransactionsForFilter: '没有交易与选定的筛选器相匹配。', + costCenter: '成本中心', + balanceAfter: '调整后余额', + userWithId: '用户 #{{id}}', + partial: '部分', + editTransaction: '编辑交易', + selectCostCenter: '选择成本中心...', + costCenterRequired: '请选择一个成本中心', + amountExample: '例如 4.00', + manualAdjustmentExample: '例如 手动调整', + userRequired: '请选择一个用户', + amountInvalid: '金额必须是有效的数字', + createdCostCenter: '成本中心已创建', + createCostCenterFailed: '创建成本中心失败', + transactionDeleted: '交易已删除', + deleteTransactionFailed: '删除交易失败', + transactionEdited: '交易已更新,账本已重新计算', + editTransactionFailed: '编辑交易失败', + manualPrintCreated: '手动打印费用已添加,账本已重新计算', + manualPrintFailed: '创建手动打印失败', + memberSaved: '成员已保存', + memberSaveFailed: '保存成员失败', + memberRemoved: '成员已移除', + memberRemoveFailed: '移除成员失败', + costCenterNameRequired: '成本中心名称为必填项', + costCenterUpdated: '成本中心已更新', + costCenterUpdateFailed: '更新成本中心失败', + confirmDeleteCostCenter: '删除成本中心 "{{name}}" ?', + costCenterDeleted: '成本中心已删除', + costCenterDeleteFailed: '删除成本中心失败', + deleteTransactionConfirm: '删除此交易?余额将自动重新计算。', + deposit: '存款', + withdraw: '取款', + printCharge: '打印费用', + deleteTransaction: '删除交易', }, // Printers page @@ -2103,6 +2194,21 @@ export default { useTls: '使用 TLS', enableMetricsEndpoint: '启用指标端点', availableMetrics: '可用指标', + billingEnabled: '启用账单', + billingEnabledDescription: '对用户的打印进行收费并启用财务功能', + printerKillSwitch: '打印机紧急停止开关', + printerKillSwitchDescription: '立即停止未经授权的打印', + financeBudgetReset: '财务预算月度重置', + financeBudgetResetDay: '重置日期', + financeBudgetResetDayHelp: '对于少数月份,重置使用该月的最后一天。', + financeBudgetResetTimezone: '重置时区', + financeBudgetResetTimezoneHelp: '预算窗口的开始时间在此时区计算。', + rebuildLedger: '重建钱包账本', + rebuildLedgerStarted: '钱包账本重建已启动', + rebuildLedgerConfirmTitle: '重建钱包账本?', + rebuildLedgerConfirmMessage: + '这将重建钱包账本以修复历史余额值。仅在您知道自己在做什么时才执行此操作。', + rebuildLedgerInProgress: '正在启动重建...', editUser: '编辑用户', deleteUserTitle: '删除用户', groupName: '组名称', @@ -4289,6 +4395,7 @@ export default { staggerTotal: '共 {{minutes}} 分钟', staggerToPrinters: '分批发送到 {{count}} 台打印机', gcodeInjection: '注入自动打印G-code', + insufficientBudget: '预算不足', }, // Backup diff --git a/frontend/src/i18n/locales/zh-TW.ts b/frontend/src/i18n/locales/zh-TW.ts index 49564514d..d1933c7a8 100644 --- a/frontend/src/i18n/locales/zh-TW.ts +++ b/frontend/src/i18n/locales/zh-TW.ts @@ -8,6 +8,7 @@ export default { profiles: '設定檔案', maintenance: '維護', projects: '專案', + finance: '財務', inventory: '耗材', files: '檔案管理器', makerworld: 'MakerWorld', @@ -121,6 +122,95 @@ export default { duplicate: '複製', left: '左', right: '右', + run: '執行', + running: '執行中...', + }, + + finance: { + allTypes: '所有類型', + allCostCenters: '所有成本中心', + title: '財務', + subtitle: '錢包、個人交易和成本中心', + noAccess: '您沒有權限查看財務資料。', + personalView: '個人檢視', + adminView: '管理員檢視', + createCostCenter: '建立成本中心', + adjustWallet: '調整錢包', + addManualPrint: '新增手動列印', + manageMembers: '管理成本中心成員', + currentBalance: '個人餘額', + transactions: '交易', + personalTransactions: '個人交易', + costCenters: '成本中心', + availableForPrinting: '可用於列印分配', + costCenterName: '名稱', + budgetType: '預算類型', + monthlyBudget: '月度預算', + totalBudget: '總預算', + noBudget: '無預算', + create: '建立', + selectUser: '選擇使用者', + transactionType: '類型', + amount: '金額', + noCostCenter: '無成本中心', + descriptionOptional: '說明(可選)', + applyAdjustment: '套用調整', + memberCanPrint: '成員可以列印', + addMember: '新增成員', + canPrint: '可以列印', + noMembers: '未分配任何成員。', + editCostCenter: '編輯成本中心', + myCostCenters: '我的成本中心', + costCentersHint: '檢視預算限制並將成本保持在控制範圍內', + noCostCenters: '未找到成本中心。', + owner: '擁有者', + balance: '餘額', + budget: '預算', + shared: '共用', + cannotEditPrivateCostCenter: '無法在此處編輯私人成本中心', + recentTransactions: '最近的交易', + transactionsHint: '按類型和成本中心篩選,然後瀏覽頁面', + first: '首頁', + prev: '上一頁', + next: '下一頁', + last: '末頁', + pageNumberOf: '第 {{page}} 頁,共 {{total}} 頁', + noTransactions: '沒有可用的交易。', + noTransactionsForFilter: '沒有交易符合選定的篩選條件。', + costCenter: '成本中心', + balanceAfter: '調整後餘額', + userWithId: '使用者 #{{id}}', + partial: '部分', + editTransaction: '編輯交易', + selectCostCenter: '選擇成本中心...', + costCenterRequired: '請選擇一個成本中心', + amountExample: '例如 4.00', + manualAdjustmentExample: '例如 手動調整', + userRequired: '請選擇一個使用者', + amountInvalid: '金額必須是有效的數字', + createdCostCenter: '成本中心已建立', + createCostCenterFailed: '建立成本中心失敗', + transactionDeleted: '交易已刪除', + deleteTransactionFailed: '刪除交易失敗', + transactionEdited: '交易已更新,帳本已重新計算', + editTransactionFailed: '編輯交易失敗', + manualPrintCreated: '已新增手動列印費用,帳本已重新計算', + manualPrintFailed: '建立手動列印失敗', + memberSaved: '成員已儲存', + memberSaveFailed: '儲存成員失敗', + memberRemoved: '成員已移除', + memberRemoveFailed: '移除成員失敗', + costCenterNameRequired: '成本中心名稱為必填項', + costCenterUpdated: '成本中心已更新', + costCenterUpdateFailed: '更新成本中心失敗', + confirmDeleteCostCenter: '刪除成本中心 "{{name}}" ?', + costCenterDeleted: '成本中心已刪除', + costCenterDeleteFailed: '刪除成本中心失敗', + deleteTransactionConfirm: '刪除此交易?餘額將自動重新計算。', + deposit: '存款', + withdraw: '取款', + printCharge: '列印費用', + deleteTransaction: '刪除交易', }, // Printers page @@ -2103,6 +2193,21 @@ export default { useTls: '使用 TLS', enableMetricsEndpoint: '啟用指標端點', availableMetrics: '可用指標', + billingEnabled: '啟用帳單', + billingEnabledDescription: '向用戶收取列印費用並啟用財務功能', + printerKillSwitch: '列印機緊急停止開關', + printerKillSwitchDescription: '立即停止未經授權的列印', + financeBudgetReset: '財務預算月度重置', + financeBudgetResetDay: '重置日期', + financeBudgetResetDayHelp: '對於少數月份,重置使用該月的最後一天。', + financeBudgetResetTimezone: '重置時區', + financeBudgetResetTimezoneHelp: '預算視窗的開始時間在此時區計算。', + rebuildLedger: '重建錢包帳本', + rebuildLedgerStarted: '錢包帳本重建已啟動', + rebuildLedgerConfirmTitle: '重建錢包帳本?', + rebuildLedgerConfirmMessage: + '這將重建錢包帳本以修復歷史餘額值。僅在您知道自己在做什麼時才執行此操作。', + rebuildLedgerInProgress: '正在啟動重建...', editUser: '編輯使用者', deleteUserTitle: '刪除使用者', groupName: '群組名稱', @@ -4289,6 +4394,7 @@ export default { staggerTotal: '總計:{{minutes}} 分鐘', staggerToPrinters: '分批傳送到 {{count}} 臺印表機', gcodeInjection: '注入自動列印G-code', + insufficientBudget: '預算不足', }, // Backup