From 88152dc0c60191cd5a9d9c37c375c77ff837ff1e Mon Sep 17 00:00:00 2001 From: maziggy Date: Thu, 27 Aug 2026 07:59:31 +0200 Subject: [PATCH] Add Dutch to the interface languages (issue #2891) The translation was contributed as a file on the issue and needed three corrections before it could be wired up, all of which the parity gate found. The nine stats.timeframe.* entries had their keys translated along with their values -- 'today' had become 'vandaag'. Code resolves those by the English key, so the Statistics timeframe selector would have found nothing and rendered raw key names for every Dutch user. The values are kept and the keys restored. The file was translated against an older en.ts and was 84 leaves short: the Filament Track Switch feed prompts, the AI-detection status strings, the no-3MF internal-history banner, the batch-order stranded-plate notices, the Avery starting-position field, and the whole locationHaSensors section from #2824. Rather than splice those in, nl.ts is regenerated from the en.ts skeleton with the contributor's strings carried over by key, so its structure, key order and section comments match the reference exactly and a later diff against en.ts reads as content rather than as reordering. The generator fails rather than emit a key it has no translation for, so nothing fell back to English silently. 229 leaves are identical to English. Each was checked and all are kept: Dutch takes most technical UI vocabulary verbatim -- printer, filament, status, nozzle, timelapse, dashboard -- and Dutch slicer users use the English feature names untranslated, so support, ironing, prime tower and gap fill stay as they are. The 123 distinct values are enumerated in a NL_COGNATES list in check-i18n-parity.mjs, the same shape the other twelve locales use, so the exemption is a listed decision per string rather than a blanket skip for the locale. Backend app/i18n still carries English and German only, so push notification text falls back to English for Dutch. That is true of the eleven other non-German locales too and is left alone here. Parity green at 6264 leaves across 14 locales. --- CHANGELOG.md | 1 + frontend/scripts/check-i18n-parity.mjs | 40 + frontend/src/i18n/index.ts | 5 +- frontend/src/i18n/locales/nl.ts | 7630 +++++++++++++++++ .../{index-DL1B9Y3L.js => index-DFcvtgAy.js} | 7 +- static/index.html | 2 +- 6 files changed, 7681 insertions(+), 4 deletions(-) create mode 100644 frontend/src/i18n/locales/nl.ts rename static/assets/{index-DL1B9Y3L.js => index-DFcvtgAy.js} (94%) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad6201a15..57615c6d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to Bambuddy will be documented in this file. - **Printer file downloads can be selected in ranges and print-history videos can be downloaded (#2850, requested and contributed by @logikal in #2853)** — The printer file browser's multi-select download now prepares large selections on the app data volume instead of buffering them in server and browser memory, uses per-file compression (videos stored, G-code/3MF compressed), reports partial results and preparation progress, supports cancellation, rejects over-large or under-space selections, and preserves the legacy API contract. Shift-click selects a contiguous visible range and hidden selections are discarded when navigating or filtering. Print History now offers attached timelapses, matching printer timelapses, and `/ipcam` chunks when available; offline or unreadable storage is distinguished from an empty directory. Download tokens are single-use and resource-bound, API-key printer allowlists are enforced, FTP short reads are rejected, and abandoned staging is pruned. Translated in all locales; wiki updated. Covered by backend and frontend regression tests. - **Bambuddy now asks a printer that refuses FTPS what it actually said (#2780, measured by @grolmus)** — When a printer's file service answers port 990 with something that is not TLS, Python reports `[SSL: WRONG_VERSION_NUMBER]` and the bytes that caused it are gone, consumed by the TLS layer before the error surfaces. That has left #2780 open on a theory rather than a finding. The client now opens one plain connection straight afterwards and reads what the printer says, so the log carries the printer's own words — an FTP refusal such as `421 Too many connections` would identify the fault outright — and the line is marked as the one to quote in a report. Reading nothing is informative too, and says so: a healthy implicit-FTPS service stays silent until it gets a handshake, so silence means the refusal had already passed. It asks once per cool-off window rather than once per attempt, which keeps it to one extra connection per printer per five minutes — the suspected fault is a printer running out of connections, so the diagnosis must not add to it. What made this worth doing is a measurement from a nine-printer farm, reproduced here: a cleartext banner on the TLS port produces exactly the error the field reports, a genuine TLS version mismatch produces a different one, and a client with no version cap reaches a TLS-1.2-only peer unaided. So this failure was never a TLS-version problem, and the per-model `cap_tls_v1_2` knob cannot affect it. Two of the three entries carrying that knob were added on the belief that it could; they are kept, since their reporters saw the symptom clear and nobody here has the hardware to re-test on, but they are now marked for re-test and the reasoning recorded next to them is what was measured rather than what was assumed. Both measurements are pinned by tests, so the explanation stays falsifiable. - **The K value is on the AMS slot itself, not only in the popover (#2532, requested and contributed by @gyrene2083)** — Reading back a slot's pressure-advance value meant hovering it: the K factor lived in the filament popover alone, so checking whether a calibration had actually taken across four slots was four hovers, and comparing two of them side by side was not possible at all. Every slot card now carries the value under the material name, the way Bambu Studio shows it per slot — on regular AMS units, on AMS-HT, and on the external spool of a dual-nozzle machine. Only a value the printer actually reported is shown: a loaded but never-calibrated slot stays blank rather than inheriting the 0.020 that fills the popover's own field, and a slot the firmware reports as exactly 0 counts as uncalibrated the same way the stored K-profiles do. The label is shortened to **K** with the full localized name on hover, because "K Factor", "K-Faktor" and "Facteur K" ate the value itself — the whole point of the line — on cards under about 350px, and the figure is set in tabular numerals so it measures the same in Safari as in Chromium. Where one slot of a unit is calibrated and its neighbours are not, the neighbours hold the same row open so the fill bars stay level across the card. +- **Dutch (nl) is now a supported interface language (#2891, requested and contributed by @Igiegel)** — Adds `nl` as the fourteenth locale, listed as "Nederlands" in the language picker. The translation was contributed as a file on the issue and needed three corrections before it could be wired up, all of which the parity gate found. First, the nine `stats.timeframe.*` entries had their **keys** translated along with their values (`'today'` had become `'vandaag'`), which would have left the Statistics timeframe selector resolving nothing and rendering raw key names for every Dutch user — the values were kept and the keys restored. Second, the file was translated against an older `en.ts` and was 84 leaves short, missing the Filament Track Switch feed prompts, the AI-detection status strings, the no-3MF internal-history banner, the batch-order stranded-plate notices, the Avery starting-position field and the whole `locationHaSensors` section from #2824; those were translated and added. Rather than splice them in, `nl.ts` was regenerated from the `en.ts` skeleton with the contributor's strings carried over, so its structure, key order and section comments now match the reference locale exactly and a future diff against `en.ts` reads as content rather than as reordering. Third, 229 leaves were identical to English; each was checked individually and all were kept, because Dutch takes most technical UI vocabulary verbatim — printer, filament, status, nozzle, timelapse, dashboard — and Dutch slicer users use the English feature names (support, ironing, prime tower, gap fill) untranslated. Those 123 distinct values are now listed explicitly in a `NL_COGNATES` allow-list in `check-i18n-parity.mjs`, the same shape the other twelve locales use, so the exemption is an enumerated translator decision rather than a blanket skip. Parity green at 6264 leaves across all 14 locales. ### Changed - **Home Assistant sensors moved out of the Smart Plugs settings tab into their own (#2824)** — Sensors are things you read and plugs are things you switch, and with storage-location bindings joining the printer ones the two no longer belong on one page. Both now live under **Settings → Sensors**; nothing about the printer bindings themselves changed, only where they are. The template that carried the printer alert is renamed from "Home Assistant Sensor Alert" to "Printer Sensor Alert", along with the toggle and badge labels that name it, because once a storage-location alert existed beside it the old name no longer said which one it was; the rename only touches templates still holding the old default name, so one that was edited keeps whatever it was called. A battery-class printer sensor now draws a battery icon instead of the generic gauge — the printer map never had an entry for it and the shared one does, which reads as the omission it was rather than a choice worth preserving. diff --git a/frontend/scripts/check-i18n-parity.mjs b/frontend/scripts/check-i18n-parity.mjs index 0a6fd2e17..5d3f9cc7c 100644 --- a/frontend/scripts/check-i18n-parity.mjs +++ b/frontend/scripts/check-i18n-parity.mjs @@ -415,6 +415,45 @@ const UK_COGNATES = [ '(25%, 50%, 75%)', ]; +// Dutch cognates. Dutch shares most technical UI vocabulary with English +// verbatim -- printer, filament, status, nozzle, timelapse, dashboard -- +// and the slicer feature names (support, ironing, prime tower, gap fill) +// are used untranslated by Dutch slicer users. Each entry below was +// checked individually against the Dutch translation in #2891. +const NL_COGNATES = [ + '1 week', '(25%, 50%, 75%)', 'Accent', 'AMS Filament Backup', + '{{ams}} Slot {{slot}}', 'Auto', 'Auto Home', 'Bambu Cloud', + 'Batch', 'Batches', 'Branch', 'Budget', + 'Camera', 'China', 'Client Secret', 'Cloud', + 'Commit', 'Compact', '({{count}}/8)', '{{count}} downloads', + '{{count}} filament', '({{count}} item)', '{{count}} item', '({{count}} items)', + '{{count}} items', '{{count}} object', 'Dashboard', 'Diagnose', + 'Diameter', 'EC984C,#6CD4BC,A66EB9,D87694', 'Effect', 'email', + 'ETA {{minutes}} min', 'Expert', 'Extruder', 'Extruders', + 'Factor', 'Filament', 'Filament {{index}} ({{type}})', 'Filament {{n}}', + '{{filament}} @ {{temp}}°C', 'Filters', 'Firmware', 'Flow', + 'Galaxy', 'Gap fill', 'Hex', 'Hex: #{{hex}}', + 'Host', 'In browser', 'Interval', 'Interval (min)', + 'Interval ({{type}})', 'Ironing', 'Jade White, Fire Red...', 'Label', + 'Label...', 'LAN Developer Mode', 'Live', 'Long-Lived Access Token', + 'Ludicrous (166%)', 'MakerWorld: {{designer}}', 'Metadata', 'Min', + 'Model', '{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}', '{{name}} - Timelapse', 'Nozzle', + 'Nozzle 2', '{{n}} run', '{{n}} runs', 'Offline', + 'Online', 'Open', 'Orca Cloud', 'parallel', + 'Personal Access Token', 'Pipeline', 'Pipelines', 'Platform', + 'Pressure Advance', 'Prime tower', 'Printer', 'Printer:', + '{{printer}}: {{error}}', '{{printer}} is offline', 'Printer is offline', 'Printer offline', + 'Printers', 'Project', 'Project: {{name}}', 'Protocol', + 'Providers', 'Provider: {{type}}', 'Proxy', 'Recent', + 'Records', 'round robin', 'Scopes', 'Score', + 'sets', 'Skirt / brim', 'Slicer', 'SpoolBuddy is offline', + 'Sport (124%)', 'Start', 'Status', 'Subtype', + 'Support', 'Tag', 'Tags', 'Temp', + 'Timelapse', 'Topic', 'Trend', 'Type', + 'Type:', 'Updates', 'Uptime', 'Urgent', + 'Warm', '{{weight}}g', 'Workflow', +]; + const IDENTICAL_TO_EN_ALLOWED = { de: new Set(DE_COGNATES), fr: new Set(FR_COGNATES), @@ -428,6 +467,7 @@ const IDENTICAL_TO_EN_ALLOWED = { tr: new Set(TR_COGNATES), ru: new Set(RU_COGNATES), uk: new Set(UK_COGNATES), + nl: new Set(NL_COGNATES), }; // Pure comparison logic, exported so tests can verify each failure mode diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts index 90a21371f..8775a1ab6 100644 --- a/frontend/src/i18n/index.ts +++ b/frontend/src/i18n/index.ts @@ -9,6 +9,7 @@ import es from './locales/es'; import fr from './locales/fr'; import ja from './locales/ja'; import it from './locales/it'; +import nl from './locales/nl'; import ko from './locales/ko'; import ptBR from './locales/pt-BR'; import zhCN from './locales/zh-CN'; @@ -24,6 +25,7 @@ const resources = { fr: { translation: fr }, ja: { translation: ja }, it: { translation: it }, + nl: { translation: nl }, ko: { translation: ko }, 'pt-BR': { translation: ptBR }, 'zh-CN': { translation: zhCN }, @@ -33,7 +35,7 @@ const resources = { uk: { translation: uk }, }; -const SUPPORTED_LNGS = ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'pt-BR', 'ru', 'tr', 'uk', 'zh-CN', 'zh-TW']; +const SUPPORTED_LNGS = ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'nl', 'pt-BR', 'ru', 'tr', 'uk', 'zh-CN', 'zh-TW']; const APPLIANCE_CONSUMED_KEY = 'bambuddy_appliance_locale_consumed'; i18n @@ -107,6 +109,7 @@ export const availableLanguages = [ { code: 'ja', name: 'Japanese', nativeName: '日本語' }, { code: 'it', name: 'Italian', nativeName: 'Italiano' }, { code: 'ko', name: 'Korean', nativeName: '한국어' }, + { code: 'nl', name: 'Dutch', nativeName: 'Nederlands' }, { code: 'pt-BR', name: 'Portuguese (Brazil)', nativeName: 'Português (Brasil)' }, { code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文' }, { code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '繁體中文' }, diff --git a/frontend/src/i18n/locales/nl.ts b/frontend/src/i18n/locales/nl.ts new file mode 100644 index 000000000..4bd9f65da --- /dev/null +++ b/frontend/src/i18n/locales/nl.ts @@ -0,0 +1,7630 @@ +export default { + // Navigation + nav: { + printers: 'Printers', + archives: 'Archieven', + queue: 'Afdrukwachtrij', + stats: 'Statistieken', + profiles: 'Profielen', + maintenance: 'Onderhoud', + projects: 'Projecten', + finance: 'Financiën', + inventory: 'Filament', + files: 'Bestandsbeheer', + makerworld: 'MakerWorld', + notifications: 'Meldingen', + settings: 'Instellingen', + system: 'Systeem', + collapseSidebar: 'Zijbalk inklappen', + expandSidebar: 'Zijbalk uitklappen', + update: 'Bijwerken', + updateAvailable: 'Update beschikbaar: v{{version}}', + updateAvailableBanner: 'Versie {{version}} is beschikbaar!', + viewUpdate: 'Update bekijken', + viewOnGithub: 'Bekijken op GitHub', + keyboardShortcuts: 'Sneltoetsen (?)', + switchToLight: 'Overschakelen naar lichte modus', + switchToDark: 'Overschakelen naar donkere modus', + switchToSystem: 'Overschakelen naar systeemmodus', + smartSwitches: 'Slimme schakelaars', + logout: 'Uitloggen', + installApp: 'App installeren', + installAppSuccess: 'Bambuddy is geïnstalleerd', + }, + + // Common + common: { + plusNMore: '+{{count}} meer', + save: 'Opslaan', + saving: 'Opslaan...', + cancel: 'Annuleren', + delete: 'Verwijderen', + edit: 'Bewerken', + add: 'Toevoegen', + close: 'Sluiten', + confirm: 'Bevestigen', + loading: 'Laden...', + error: 'Fout', + errorLoading: 'Fout bij laden van gegevens', + retry: 'Opnieuw proberen', + success: 'Geslaagd', + warning: 'Waarschuwing', + enabled: 'Ingeschakeld', + disabled: 'Uitgeschakeld', + yes: 'Ja', + no: 'Nee', + on: 'Aan', + off: 'Uit', + all: 'Alle', + none: 'Geen', + search: 'Zoeken', + filter: 'Filteren', + sort: 'Sorteren', + refresh: 'Vernieuwen', + download: 'Downloaden', + upload: 'Uploaden', + uploading: 'Uploaden...', + uploadFailed: 'Upload mislukt', + actions: 'Acties', + status: 'Status', + name: 'Naam', + user: 'Gebruiker', + description: 'Beschrijving', + date: 'Datum', + time: 'Tijd', + hours: 'uren', + minutes: 'minuten', + seconds: 'seconden', + days: 'dagen', + enable: 'Inschakelen', + disable: 'Uitschakelen', + permissions: 'Machtigingen', + noPrinters: 'Geen printers geconfigureerd', + noData: 'Geen gegevens beschikbaar', + linkNotFound: 'Link niet gevonden', + required: 'Verplicht', + optional: 'Optioneel', + dismiss: 'Negeren', + apply: 'Toepassen', + reset: 'Resetten', + export: 'Exporteren', + import: 'Importeren', + clear: 'Wissen', + selectAll: 'Alles selecteren', + deselectAll: 'Alles deselecteren', + noChange: '— Geen wijziging —', + unchanged: 'Ongewijzigd', + unassigned: 'Niet toegewezen', + unknown: 'Onbekend', + unknownError: 'Onbekende fout', + today: 'Vandaag', + tomorrow: 'Morgen', + asap: 'Zo snel mogelijk', + overdue: 'Te laat', + now: 'Nu', + collapse: 'Inklappen', + expand: 'Uitklappen', + previous: 'Vorige', + next: 'Volgende', + viewArchive: 'Archief bekijken', + viewInFileManager: 'Bekijken in Bestandsbeheer', + addedBy: 'Toegevoegd door {{username}}', + prints: 'afdrukken', + more: '+{{count}} meer', + ascending: 'Oplopend', + descending: 'Aflopend', + back: 'Terug', + copy: 'Kopiëren', + copied: 'Gekopieerd!', + printer: 'Printer', + remove: 'Verwijderen', + type: 'Type', + print: 'Afdrukken', + rename: 'Naam wijzigen', + move: 'Verplaatsen', + create: 'Maken', + duplicate: 'Dupliceren', + left: 'Links', + right: 'Rechts', + run: 'Uitvoeren', + running: 'Bezig met uitvoeren...', + }, + + finance: { + allTypes: 'Alle typen', + allCostCenters: 'Alle kostenplaatsen', + title: 'Financiën', + subtitle: 'Portemonnee, persoonlijke transacties en kostenplaatsen', + noAccess: 'Je hebt geen toestemming om financiële gegevens te bekijken.', + personalView: 'Persoonlijke weergave', + adminView: 'Beheerdersweergave', + createCostCenter: 'Kostenplaats maken', + adjustWallet: 'Portemonnee aanpassen', + addManualPrint: 'Handmatige afdruk toevoegen', + manageMembers: 'Leden van kostenplaats beheren', + currentBalance: 'Persoonlijk saldo', + transactions: 'Transacties', + personalTransactions: 'Persoonlijke transacties', + costCenters: 'Kostenplaatsen', + availableForPrinting: 'Beschikbaar voor toewijzing aan afdruk', + costCenterName: 'Naam', + budgetType: 'Budgettype', + monthlyBudget: 'Maandbudget', + totalBudget: 'Totaalbudget', + noBudget: 'Geen budget', + create: 'Maken', + selectUser: 'Gebruiker selecteren', + transactionType: 'Type', + amount: 'Bedrag', + noCostCenter: 'Geen kostenplaats', + descriptionOptional: 'Beschrijving (optioneel)', + applyAdjustment: 'Aanpassing toepassen', + memberCanPrint: 'Lid mag afdrukken', + addMember: 'Lid toevoegen', + canPrint: 'Mag afdrukken', + noMembers: 'Geen leden toegewezen.', + editCostCenter: 'Kostenplaats bewerken', + myCostCenters: 'Mijn kostenplaatsen', + costCentersHint: 'Controleer budgetlimieten en houd kosten onder controle', + noCostCenters: 'Geen kostenplaatsen gevonden.', + owner: 'Eigenaar', + balance: 'Rekeningsaldo', + unlimited: 'Onbeperkt', + budgetPolicyHint: 'Rekeningsaldi houden kosten bij. Afdrukken wordt alleen beperkt door het budget van de geselecteerde kostenplaats; zonder budget is afdrukken onbeperkt.', + budget: 'Budget', + shared: 'Gedeeld', + cannotEditPrivateCostCenter: 'Privé-kostenplaatsen kunnen hier niet worden bewerkt', + recentTransactions: 'Recente transacties', + transactionsHint: 'Filteren op type en kostenplaats', + first: 'Eerste', + prev: 'Vorige', + next: 'Volgende', + last: 'Laatste', + pageNumberOf: 'Pagina {{page}} van {{total}}', + noTransactions: 'Geen transacties beschikbaar.', + noTransactionsForFilter: 'Geen transacties komen overeen met de geselecteerde filters.', + costCenter: 'Kostenplaats', + balanceAfter: 'Saldo na', + userWithId: 'Gebruiker #{{id}}', + partial: 'Gedeeltelijk', + editTransaction: 'Transactie bewerken', + selectCostCenter: 'Kostenplaats selecteren...', + costCenterRequired: 'Selecteer een kostenplaats', + amountExample: 'bijv. 4,00', + manualAdjustmentExample: 'bijv. Handmatige aanpassing', + userRequired: 'Selecteer een gebruiker', + amountInvalid: 'Bedrag moet een geldig getal zijn', + createdCostCenter: 'Kostenplaats gemaakt', + createCostCenterFailed: 'Kostenplaats maken mislukt', + transactionDeleted: 'Transactie verwijderd', + deleteTransactionFailed: 'Transactie verwijderen mislukt', + transactionEdited: 'Transactie bijgewerkt en grootboek opnieuw berekend', + editTransactionFailed: 'Transactie bewerken mislukt', + manualPrintCreated: 'Handmatige afdrukkosten toegevoegd en grootboek opnieuw berekend', + manualPrintFailed: 'Handmatige afdruk maken mislukt', + memberSaved: 'Lid opgeslagen', + memberSaveFailed: 'Lid opslaan mislukt', + memberRemoved: 'Lid verwijderd', + memberRemoveFailed: 'Lid verwijderen mislukt', + costCenterNameRequired: 'Naam van kostenplaats is verplicht', + costCenterUpdated: 'Kostenplaats bijgewerkt', + costCenterUpdateFailed: 'Kostenplaats bijwerken mislukt', + confirmDeleteCostCenter: 'Kostenplaats "{{name}}" verwijderen?', + costCenterDeleted: 'Kostenplaats verwijderd', + costCenterDeleteFailed: 'Kostenplaats verwijderen mislukt', + deleteTransactionConfirm: 'Deze transactie verwijderen? Saldi worden automatisch opnieuw berekend.', + deposit: 'Storten', + withdraw: 'Opnemen', + printCharge: 'Afdrukkosten', + deleteTransaction: 'Transactie verwijderen', + }, + + // Printers page + printers: { + title: 'Printers', + addPrinter: 'Printer toevoegen', + addPreflight: { + checking: 'Verbinding controleren...', + warning: 'Sommige verbindingscontroles zijn mislukt. Deze printer kan als offline worden weergegeven. Controleer de onderstaande controles, herstel wat je kunt of sla toch op.', + back: 'Terug', + saveAnyway: 'Toch opslaan', + }, + editPrinter: 'Printer bewerken', + deletePrinter: 'Printer verwijderen', + printerName: 'Printernaam', + serialNumber: 'Serienummer', + ipAddress: 'IP-adres / hostnaam', + accessCode: 'Toegangscode', + model: 'Model', + nozzleCount: 'Aantal nozzles', + autoArchive: 'Automatisch archiveren', + status: { + available: 'Beschikbaar', + idle: 'Inactief', + printing: 'Bezig met afdrukken', + paused: 'Gepauzeerd', + offline: 'Offline', + problem: 'Probleem', + error: 'Fout', + finished: 'Voltooid', + unknown: 'Onbekend', + }, + temperatures: { + nozzle: 'Nozzle', + bed: 'Printbed', + chamber: 'Kamer', + }, + heaterHistory: { + title: 'Verwarmingsgeschiedenis', + openLabel: 'Verwarmingsgeschiedenis bekijken', + nozzle: 'Nozzle', + nozzle2: 'Nozzle 2', + bed: 'Printbed', + chamber: 'Kamer', + error: 'Geschiedenis laden mislukt', + empty: 'Nog geen gegevens vastgelegd', + }, + progress: '{{percent}}% voltooid', + timeRemaining: '{{time}} resterend', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen?', + maintenanceOk: 'Onderhoud OK', + maintenanceWarning: '{{count}} waarschuwing', + maintenanceWarning_plural: '{{count}} waarschuwingen', + maintenanceDue: '{{count}} te doen', + maintenanceDue_plural: '{{count}} te doen', + // Sort options + sort: { + name: 'Naam', + status: 'Status', + model: 'Model', + location: 'Locatie', + eta: 'ETA', + ascending: 'Oplopend sorteren', + descending: 'Aflopend sorteren', + }, + // Card size + cardSize: { + small: 'Kleine kaarten', + medium: 'Middelgrote kaarten', + large: 'Grote kaarten', + extraLarge: 'Extra grote kaarten', + }, + pageView: { + openCamWallPage: 'Camerawand als pagina openen', + cards: 'Kaarten', + camWall: 'Camerawand', + }, + camWall: { + page: { + tokenRejected: + 'Deze camerawandlink is niet meer geldig. Het token is mogelijk verlopen of ingetrokken.', + loadFailed: 'Printers konden niet worden geladen.', + }, + noPrinters: 'Geen printers om weer te geven', + noSignal: 'Geen signaal', + live: 'Live', + snap: 'Momentopname', + off: 'Uit', + summary: '{{live}} live, {{snap}} momentopnamen, {{total}} totaal', + layer: 'Laag {{cur}}/{{total}}', + timeLeft: '{{time}} resterend', + statusMode: { + off: 'Uit', + compact: 'Compact', + full: 'Volledig', + }, + settings: { + title: 'Instellingen camerawand', + maxLive: 'Max. live streams', + maxLiveHint: 'Hoeveel tegels tegelijk live streamen. De overige worden vernieuwd als momentopnamen.', + snapshotInterval: 'Interval momentopnamen (seconden)', + snapshotIntervalHint: 'Hoe vaak niet-live tegels een nieuwe momentopname ophalen.', + statusOverlay: 'Statusoverlay', + statusOverlayHint: 'Compact: alleen statusbadge. Volledig: + voortgang, laag, resterende tijd.', + }, + }, + // Controls + hideOffline: 'Offline verbergen', + nextAvailable: 'Volgende beschikbare', + powerOn: 'Inschakelen', + offlinePrintersWithPlugs: 'Offline printers met slimme stekkers', + noPrintersConfigured: 'Nog geen printers geconfigureerd', + search: 'Printers zoeken...', + noSearchResults: 'Geen printers komen overeen met je zoekopdracht of filters', + filter: { + allStatuses: 'Alle statussen', + allLocations: 'Alle locaties', + }, + toolbar: { + filters: 'Filters', + view: 'Weergave', + actions: 'Acties', + }, + // Printer card + readyToPrint: 'Klaar om af te drukken', + external: 'Extern', + extL: 'Ext-L', + extR: 'Ext-R', + deleteArchives: 'Afdrukarchieven verwijderen', + noLabel: 'Geen label', + printPreview: 'Afdrukvoorbeeld', + width: 'Breedte', + height: 'Hoogte', + noObjectsFound: 'Geen objecten gevonden', + objectsLoadedOnPrintStart: 'Objecten worden geladen wanneer een afdruk start', + willBeSkipped: 'Wordt overgeslagen', + name: 'Naam', + serialCannotBeChanged: 'Serienummer kan niet worden gewijzigd', + locationHelp: 'Gebruikt om printers te groeperen en wachtrijtaken te filteren', + // WiFi signal strength + wifiSignal: { + veryWeak: 'Zeer zwak', + weak: 'Zwak', + fair: 'Redelijk', + good: 'Goed', + excellent: 'Uitstekend', + }, + // Maintenance + maintenanceUpToDate: 'Al het onderhoud is bijgewerkt - Klik om te bekijken', + // Maintenance Mode (#1476) — operator-flipped "out of service" state. + // Distinct from the scheduled-maintenance dashboard above; this one + // wraps the backend is_active flag and stops MQTT + queue dispatch. + maintenance: { + title: 'In onderhoud', + subtitle: 'Deze printer is gepauzeerd — niet verbonden, niet beschikbaar voor de wachtrij en verzendt geen meldingen.', + pillLabel: 'Onderhoud', + exitButton: 'Onderhoud afsluiten', + menuEnter: 'Onderhoudsmodus inschakelen', + menuExit: 'Onderhoudsmodus afsluiten', + toastEntered: '{{name}} staat nu in onderhoudsmodus', + toastExited: '{{name}} is weer online', + confirmMidPrintTitle: 'Onderhoudsmodus inschakelen tijdens afdrukken?', + confirmMidPrintMessage: '{{name}} is momenteel aan het afdrukken. Als je de onderhoudsmodus inschakelt, wordt MQTT verbroken en stoppen voortgangsregistratie en voltooiingsmeldingen voor deze taak. Doorgaan?', + editFieldLabel: 'Onderhoudsmodus', + editFieldHelp: 'Als dit is ingeschakeld, wordt deze printer gepauzeerd voor MQTT, wachtrijverwerking en meldingen — handig voor reparatie, parallelle Bambuddy-installaties of tijdelijke buitengebruikstelling.', + }, + // Chamber light + chamberLightOn: 'Kamerverlichting inschakelen', + chamberLightOff: 'Kamerverlichting uitschakelen', + // Files + files: 'Bestanden', + browseFiles: 'Printerbestanden bekijken', + // Smart plug + autoOffAfterPrint: 'Automatisch uitschakelen na afdruk', + autoOffExecuted: 'Automatisch uitschakelen is uitgevoerd - schakel de printer in om te resetten', + // HMS errors + hmsErrors: 'HMS-fouten', + viewHmsErrors: '{{count}} HMS-fout(en) bekijken', + // Actions + resume: 'Hervatten', + pause: 'Pauzeren', + stop: 'Stoppen', + camera: 'Camera', + skipObject: 'Object overslaan', + reconnect: 'Opnieuw verbinden', + forceRefresh: 'Geforceerd vernieuwen', + forceRefreshSuccess: 'Vernieuwing aangevraagd', + mqttDebug: 'MQTT-debug', + printerInformation: 'Printerinformatie', + copyToClipboard: 'Kopiëren', + copied: 'Gekopieerd!', + state: 'Status', + wifiSignalLabel: 'Wifi-signaal', + developerMode: 'Ontwikkelaarsmodus', + enabled: 'Ingeschakeld', + disabled: 'Uitgeschakeld', + addedOn: 'Toegevoegd', + sdCard: 'SD-kaart', + inserted: 'Geplaatst', + notInserted: 'Niet geplaatst', + totalPrintHours: 'Afdrukuren', + activeNozzle: 'Actief: {{nozzle}}-nozzle', + amsSwitchInletTooltip: 'Filament Track Switch IN-{{inlet}} ({{side}}) — voedt beide nozzles', + nozzleRack: 'Nozzlerek', + nozzleDocked: 'Gedockt', + nozzleMounted: 'Gemonteerd', + nozzleActive: 'Actief', + nozzleIdle: 'Inactief', + nozzleDiameter: 'Diameter', + nozzleType: 'Type', + nozzleStatus: 'Status', + nozzleFilament: 'Filament', + nozzleWear: 'Slijtage', + nozzleMaxTemp: 'Max. temp.', + nozzleSerial: 'Serienummer', + nozzleHardenedSteel: 'Gehard staal', + nozzleStainlessSteel: 'Roestvast staal', + nozzleTungstenCarbide: 'Wolfraamcarbide', + nozzleFlow: 'Flow', + nozzleHighFlow: 'Hoge flow', + nozzleStandardFlow: 'Standaard', + // Firmware + firmwareUpdate: 'Firmware-update', + firmwareInstructions: 'Ga op het touchscreen van de printer naar', + firmwareNav: 'Navigeer naar', + settings: 'Instellingen', + firmware: 'Firmware', + // Discovery + discoverPrinters: 'Printers ontdekken', + searching: 'Zoeken...', + manualEntry: 'Handmatige invoer', + addFromCloud: 'Toevoegen vanuit cloud', + // Toast messages + toast: { + printerDeleted: 'Printer verwijderd', + missingSpoolAssignment: 'Afdruk gestart op {{printer}}. Spoeltoewijzing ontbreekt voor: {{slots}}', + killSwitchTriggered: 'De facturerings-noodstop heeft een ongeautoriseerde afdruk op {{printer}} gestopt: {{filename}}', + billingChargeFailed: 'Facturering mislukt voor {{filename}} op {{printer}}. De budgetreservering is behouden; controleer de serverlogboeken.', + assignmentVerified: 'Filament geladen in sleuf {{slot}} ({{printer}})', + assignmentVerifiedNoKprofile: 'Sleuf {{slot}} op {{printer}} is geladen, maar de flowkalibratie (K-profiel) is niet toegepast', + assignmentNotConfirmed: 'De toewijzing voor sleuf {{slot}} op {{printer}} kon niet worden bevestigd — controleer de AMS-sleuf', + printerAdded: 'Printer toegevoegd', + printerUpdated: 'Printer bijgewerkt', + failedToDelete: 'Printer verwijderen mislukt', + failedToAdd: 'Printer toevoegen mislukt', + connectionFailedNotAdded: 'Kan geen verbinding maken met de printer. Controleer het IP-adres, serienummer en de toegangscode en bevestig dat LAN-only-modus is ingeschakeld. De printer is niet toegevoegd.', + failedToUpdate: 'Printer bijwerken mislukt', + commandSent: 'Opdracht verzonden', + failedToSendCommand: 'Opdracht verzenden mislukt', + turnedOn: '{{name}} ingeschakeld', + failedToPowerOn: 'Inschakelen van {{name}} mislukt', + scriptTriggered: 'Script geactiveerd', + printStopped: 'Afdruk gestopt', + printPaused: 'Afdruk gepauzeerd', + printResumed: 'Afdruk hervat', + referenceDeleted: 'Referentie verwijderd', + detectionAreaSaved: 'Detectiegebied opgeslagen', + failedToRunScript: 'Script uitvoeren mislukt', + failedToStopPrint: 'Afdruk stoppen mislukt', + failedToPausePrint: 'Afdruk pauzeren mislukt', + failedToResumePrint: 'Afdruk hervatten mislukt', + failedToControlChamberLight: 'Kamerverlichting bedienen mislukt', + failedToSetSpeed: 'Afdruksnelheid instellen mislukt', + failedToUpdateSetting: 'Instelling bijwerken mislukt', + failedToSkipObjects: 'Objecten overslaan mislukt', + failedToRereadRfid: 'RFID opnieuw uitlezen mislukt', + failedToCheckPlate: 'Plaat controleren mislukt', + failedToUpdateLabel: 'Label bijwerken mislukt', + failedToDeleteReference: 'Referentie verwijderen mislukt', + failedToSaveDetectionArea: 'Detectiegebied opslaan mislukt', + plateCheckEnabled: 'Plaatcontrole ingeschakeld', + plateCheckDisabled: 'Plaatcontrole uitgeschakeld', + calibrationSaved: 'Kalibratie opgeslagen!', + calibrationFailed: 'Kalibratie mislukt', + rfidRereadInitiated: 'Opnieuw uitlezen van RFID gestart', + loadInitiated: 'Filament laden…', + unloadInitiated: 'Filament ontladen…', + failedToLoad: 'Filament laden mislukt', + failedToUnload: 'Filament ontladen mislukt', + }, + // Connection status + connection: { + connected: 'Verbonden', + offline: 'Offline', + }, + plateStatus: { + markCleared: 'Plaat als leeg markeren', + cleared: 'Plaat leeg', + notCleared: 'Plaat niet leeg', + inUse: 'Plaat in gebruik', + }, + // Queue info + queue: { + inQueue: '{{count}} afdruk in wachtrij', + inQueue_plural: '{{count}} afdrukken in wachtrij', + }, + // Controls section + controls: 'Bediening', + // RFID + rfid: { + reread: 'RFID opnieuw uitlezen', + }, + // AMS load/unload (#891) + ams: { + load: 'Laden', + unload: 'Ontladen', + feedTitle: '{{slot}} naar welke nozzle laden?', + feedPrompt: 'De Filament Track Switch kan dit slot naar beide hotends leiden. Kies welke je wilt voeden.', + feedLeft: 'Linker nozzle', + feedRight: 'Rechter nozzle', + feedAlreadyLoaded: 'Al geladen', + switchNotReady: 'De Filament Track Switch is nog niet ingesteld. Wijs elke AMS toe aan een inlaat op de printer en probeer het opnieuw.', + }, + bedJog: { + limitWarning: 'Bewegingslimieten worden niet afgedwongen tijdens handmatige verplaatsingen — door een bug in Bambu-firmware worden software-eindstops bij externe opdrachten genegeerd. Verplaats voorzichtig om een botsing te voorkomen.', + title: 'Jog-bediening', + bed: 'Printbed', + step: 'Stap (mm)', + up: 'Plaat omhoog bewegen', + down: 'Plaat omlaag bewegen', + disabledWhilePrinting: 'Uitgeschakeld tijdens afdrukken', + notHomedTitle: 'Printer is niet gehomed', + notHomedMessage: 'De printer is sinds de laatste afdruk niet gehomed. Voer eerst auto-home uit voor een veilige positionering (parkeert de toolhead en homet daarna X, Y en Z), of verplaats toch — soft endstops worden omzeild.', + homeZ: 'Auto Home', + moveAnyway: 'Toch verplaatsen', + homingStarted: 'Printer automatisch homen…', + }, + // Permissions + permission: { + noAdd: 'Je hebt geen toestemming om printers toe te voegen', + noEdit: 'Je hebt geen toestemming om printers te bewerken', + noDelete: 'Je hebt geen toestemming om printers te verwijderen', + noControl: 'Je hebt geen toestemming om printers te bedienen', + noFiles: 'Je hebt geen toestemming om printerbestanden te openen', + noAmsRfid: 'Je hebt geen toestemming om AMS-RFID opnieuw uit te lezen', + noSmartPlugControl: 'Je hebt geen toestemming om slimme stekkers te bedienen', + noCamera: 'Je hebt geen toestemming om camera\'s te bekijken', + }, + // Add/Edit modal + modal: { + addTitle: 'Printer toevoegen', + editTitle: 'Printer bewerken', + myPrinter: 'Mijn printer', + selectModel: 'Model selecteren...', + locationGroup: 'Locatie / groep (optioneel)', + locationPlaceholder: 'bijv. Werkplaats, kantoor, kelder', + autoArchiveLabel: 'Voltooide afdrukken automatisch archiveren', + fromPrinterSettings: 'Uit printerinstellingen', + modelOptional: 'Model (optioneel)', + saveChanges: 'Wijzigingen opslaan', + }, + // Skip objects + skipObjects: { + tooltip: 'Objecten overslaan', + onlyWhilePrinting: 'Objecten overslaan (alleen tijdens afdrukken)', + requiresMultiple: 'Objecten overslaan (vereist 2+ objecten)', + title: 'Objecten overslaan', + matchIdsInfo: 'Stem ID\'s af met het printerdisplay', + printerShowsIds: 'Het printerscherm toont object-ID\'s op de bouwplaat', + skipSelected: 'Geselecteerde overslaan', + skipping: 'Overslaan...', + noObjectsSelected: 'Geen objecten geselecteerd', + selectObjectsToSkip: 'Selecteer objecten die je in de huidige afdruk wilt overslaan', + skipped: 'overgeslagen', + objectsSkipped: 'Objecten overgeslagen', + activeCount: '{{count}} actief', + waitForLayer: 'Wacht tot laag 2+ om objecten over te slaan (momenteel laag {{layer}})', + skip: 'Overslaan', + confirmTitle: 'Object overslaan?', + confirmMessage: 'Weet je zeker dat je "{{name}}" wilt overslaan? Dit kan niet ongedaan worden gemaakt.', + confirmAllMessage: 'Alle resterende objecten zijn geselecteerd. Hierdoor wordt de afdruktaak gestopt. Doorgaan?', + confirmMultipleMessage: '{{count}} geselecteerde objecten overslaan? Dit kan niet ongedaan worden gemaakt.', + }, + // Confirm modals + confirm: { + deleteTitle: 'Printer verwijderen', + deleteMessage: 'Weet je zeker dat je "{{name}}" wilt verwijderen? Hiermee worden alle verbindingsinstellingen verwijderd.', + deleteArchivesNote: 'De volledige afdrukgeschiedenis van deze printer wordt permanent verwijderd.', + keepArchivesNote: 'De afdrukgeschiedenis blijft bewaard, maar is niet langer aan deze printer gekoppeld.', + stopTitle: 'Afdruk stoppen', + stopMessage: 'Weet je zeker dat je de huidige afdruk op "{{name}}" wilt stoppen? Hiermee wordt de afdruktaak geannuleerd.', + stopButton: 'Afdruk stoppen', + pauseTitle: 'Afdruk pauzeren', + pauseMessage: 'Weet je zeker dat je de huidige afdruk op "{{name}}" wilt pauzeren?', + pauseButton: 'Afdruk pauzeren', + resumeTitle: 'Afdruk hervatten', + resumeMessage: 'Weet je zeker dat je de afdruk op "{{name}}" wilt hervatten?', + resumeButton: 'Afdruk hervatten', + powerOnTitle: 'Printer inschakelen', + powerOnMessage: 'Weet je zeker dat je de stroom voor "{{name}}" wilt INSCHAKELEN?', + powerOnButton: 'Inschakelen', + powerOffTitle: 'Printer uitschakelen', + powerOffMessage: 'Weet je zeker dat je de stroom voor "{{name}}" wilt UITSCHAKELEN?', + powerOffWarning: 'WAARSCHUWING: "{{name}}" is momenteel aan het afdrukken! Weet je zeker dat je de stroom wilt UITSCHAKELEN? Dit onderbreekt de afdruk en kan de printer beschadigen.', + powerOffButton: 'Uitschakelen', + haToggleTitle: '"{{name}}" omschakelen', + haToggleMessage: 'Home Assistant-entiteit {{entity}} omschakelen? Hierdoor kan de stroom worden uitgeschakeld als deze momenteel aan staat.', + haToggleWarning: 'WAARSCHUWING: "{{name}}" is momenteel aan het afdrukken! Het omschakelen van {{entity}} kan de stroom onderbreken en de afdruk stoppen. Doorgaan?', + haToggleButton: 'Omschakelen', + }, + // Bulk actions + bulk: { + select: 'Selecteren', + selectAll: 'Alles selecteren', + selectByLocation: 'Selecteren op locatie', + selected: '{{count}} geselecteerd', + actions: { + stop: 'Stoppen', + pause: 'Pauzeren', + resume: 'Hervatten', + clearPlate: 'Printbed vrijgeven', + clearHMS: 'Meldingen wissen', + }, + confirm: { + stopTitle: '{{count}} afdrukken stoppen', + stopMessage: 'Hiermee worden actieve afdrukken op {{count}} printer(s) geannuleerd. Deze actie kan niet ongedaan worden gemaakt.', + stopButton: 'Alles stoppen', + pauseTitle: '{{count}} afdrukken pauzeren', + pauseMessage: 'Hiermee worden actieve afdrukken op {{count}} printer(s) gepauzeerd.', + pauseButton: 'Alles pauzeren', + clearPlateTitle: '{{count}} printbedden vrijgeven', + clearPlateMessage: 'Hiermee wordt het printbed op {{count}} printer(s) vrijgegeven en kunnen wachtrijtaken worden gestart.', + clearPlateButton: 'Alles wissen', + }, + success: '{{action}} voltooid op {{count}} printer(s)', + partial: '{{succeeded}} geslaagd, {{failed}} mislukt', + noneApplicable: 'Geen van de geselecteerde printers heeft de juiste status voor deze actie', + selectByState: 'Selecteren op status', + }, + // Discovery + discovery: { + title: 'Printers ontdekken', + searching: 'Zoeken...', + scanning: 'Scannen...', + scanProgress: 'Scannen... {{scanned}}/{{total}}', + foundPrinters: '{{count}} printer(s) gevonden', + noPrintersFound: 'Geen printers gevonden', + noPrintersFoundSubnet: 'Geen printers gevonden in het opgegeven subnet.', + noPrintersFoundNetwork: 'Geen printers gevonden op het netwerk.', + allConfigured: 'Alle ontdekte printers zijn al geconfigureerd.', + alreadyAdded: 'Al toegevoegd', + select: 'Selecteren', + manualEntry: 'Handmatige invoer', + addFromCloud: 'Toevoegen vanuit cloud', + subnetToScan: 'Te scannen subnet', + dockerNote: 'Docker gedetecteerd. Voer het subnet van je printer in CIDR-notatie in. Vereist network_mode: host in docker-compose.yml.', + scanSubnet: 'Subnet scannen op printers', + discoverNetwork: 'Printers op netwerk ontdekken', + scanningSubnet: 'Subnet scannen op Bambu-printers...', + scanningNetwork: 'Netwerk scannen...', + serialRequired: 'Serienummer verplicht', + unknown: 'Onbekend', + failedToStart: 'Ontdekking starten mislukt', + customSubnetOption: 'Aangepast subnet...', + customSubnetLabel: 'Aangepast subnet (CIDR)', + customSubnetNote: 'Gebruik een aangepast subnet als je printer zich op een ander netwerk bevindt dan deze server. De FTP-poort (990) en MQTT-poort (8883) moeten bereikbaar zijn over de routeringsgrens.', + }, + // AMS Drying + drying: { + start: 'Drogen starten', + stop: 'Drogen stoppen', + temperature: 'Temperatuur', + duration: 'Duur', + hours: 'uren', + timeRemaining: '{{time}} resterend', + active: 'Drogen', + targetSummary: '{{filament}} @ {{temp}}°C', + notSupported: 'Drogen niet ondersteund', + powerRequired: 'Sluit de AMS-voedingsadapter aan om drogen in te schakelen', + cannotDryNow: 'AMS kan op dit moment niet beginnen met drogen', + startingDrying: 'Drogen starten...', + toastCommandSent: 'Droogopdracht verzonden', + toastStopped: 'Drogen gestopt', + toastNotStarted: 'De printer heeft de opdracht geaccepteerd, maar de AMS is niet begonnen met drogen. Controleer of de AMS-voedingsadapter is aangesloten en de printer inactief is.', + screenOnly: 'AMS-drogen op deze printer kan alleen via het eigen scherm van de printer worden bediend (Bambu-beperking)', + stoppingDrying: 'Drogen stoppen...', + rotateTray: 'Spoel draaien tijdens drogen', + rotateUnavailableReason: 'Niet beschikbaar — een sleuf in deze AMS is naar de toolhead geladen. De spoel wordt door de toevoerbuis geblokkeerd en kan niet draaien. Trek eerst het filament terug.', + startMode: 'Starttijd', + modeNow: 'Nu', + modeDelay: 'Na vertraging', + modeAtTime: 'Op tijdstip', + // Verb (button label), not the noun. + schedule: 'Plannen', + scheduledFor: 'Drogen gepland voor {{time}}', + scheduledAsap: 'Drogen gepland (wachten op printer)', + cancelScheduled: 'Gepland drogen annuleren', + scheduleFailed: 'Drogen plannen mislukt', + retractFilament: 'Trek het filament bij de AMS-uitgang terug om het drogen te starten', + waitingAmsNotFound: 'Wachten tot de AMS wordt gedetecteerd', + waitingOffline: 'Wachten tot de printer online komt', + waitingPrinterBusy: 'Wachten tot de printer vrij is', + waitingAlreadyDrying: 'Wachten tot de huidige droogcyclus is voltooid', + waitingInterrupted: 'Onderbroken, wordt opnieuw gestart zodra de printer vrij is', + scheduleFailedReason: 'Gepland drogen mislukt: {{reason}}', + scheduleFailedUnknown: 'Onbekende fout', + dismissFailed: 'Negeren', + }, + // AMS Filament Backup status badge (printer-wide auto-switch to another spool) + amsBackup: { + titleOn: 'AMS Filament Backup staat AAN. Klik om uit te schakelen.', + titleOff: 'AMS Filament Backup staat UIT. Klik om in te schakelen.', + titleUnknown: 'Status van AMS Filament Backup is niet beschikbaar op deze printer.', + toastEnabled: 'AMS Filament Backup ingeschakeld', + toastDisabled: 'AMS Filament Backup uitgeschakeld', + modalTitle: 'AMS Filament Backup', + modalHelp: 'Wanneer de actieve sleuf leeg raakt, doorloopt de printer in deze volgorde alle overeenkomende sleuven met hetzelfde preset en dezelfde kleur.', + modalNoSlots: 'Geen filament geladen.', + modalNoPairs: 'Geen back-upparen — geen twee sleuven gebruiken hetzelfde filamentprofiel en dezelfde kleur.', + extruderRightShort: 'R', + extruderLeftShort: 'L', + stateOn: 'Ingeschakeld', + stateOff: 'Uitgeschakeld', + stateUnknown: 'Niet ondersteund op deze printer', + }, + activeJobSlot: { + title: 'Deze sleuf is filament {{n}} in de actieve afdruk', + ariaLabel: 'Actieve afdruksleuf {{n}}', + }, + expectedSlot: { + title: 'De printer wacht op filament in deze sleuf', + ariaLabel: 'Verwachte filamentsleuf {{n}}', + label: '{{ams}} · Sleuf {{slot}}', + external: 'Externe spoel', + }, + // Filaments section + filaments: 'Filamenten', + externalSpool: { + hide: 'Externe spoel verbergen', + show: 'Externe spoel weergeven', + }, + // Camera + openCameraOverlay: 'Camera-overlay openen', + openCameraWindow: 'Camera in nieuw venster openen', + // Firmware + firmwareUpdateAvailable: 'Firmware-update beschikbaar: {{current}} → {{latest}}', + firmwareUpToDate: 'Firmware {{version}} — up-to-date', + firmwareUpdateButton: 'Bijwerken', + // Plate detection + plateDetection: { + noPermission: 'Je hebt geen toestemming om printers bij te werken', + enabledClick: 'Plaatcontrole ingeschakeld - Klik om uit te schakelen', + disabledClick: 'Plaatcontrole uitgeschakeld - Klik om in te schakelen', + manageCalibration: 'Kalibratie voor plaatdetectie beheren', + calibrationRequired: 'Kalibratie vereist', + calibrationInstructions: 'Zorg dat de bouwplaat volledig leeg is en klik daarna op Kalibreren.', + calibrationDescription: 'Bij kalibratie wordt een referentiebeeld van de lege plaat vastgelegd. Toekomstige controles vergelijken hiermee om objecten te detecteren.', + calibrationTip: 'Tip: Je kunt maximaal 5 kalibraties voor verschillende platen opslaan. Het systeem gebruikt bij een controle automatisch de beste overeenkomst.', + plateEmpty: 'Plaat lijkt leeg', + objectsDetected: 'Objecten op plaat gedetecteerd', + confidence: 'Betrouwbaarheid', + difference: 'Verschil', + analysisPreview: 'Analysevoorbeeld:', + analysisLegend: 'Groen kader = detectiegebied, rode overlay = verschillen ten opzichte van kalibratie', + savedReferences: 'Opgeslagen referenties ({{count}}/{{max}})', + deleteReference: 'Referentie verwijderen', + labelPlaceholder: 'Label...', + clickToEdit: '{{label}} - Klik om te bewerken', + clickToAddLabel: 'Klik om label toe te voegen', + }, + // Speed + speed: { + title: 'Afdruksnelheid', + silent: 'Stil (50%)', + standard: 'Standaard (100%)', + sport: 'Sport (124%)', + ludicrous: 'Ludicrous (166%)', + }, + airduct: { + title: 'Luchtkanaalmodus', + cooling: 'Koelen', + heating: 'Verwarmen', + }, + noSdCard: 'Geen SD', + door: { + open: 'Open', + closed: 'Gesloten', + }, + // Fans + fans: { + partCooling: 'Onderdeelkoelventilator', + auxiliary: 'Hulpventilator', + leftAuxiliary: 'Linker hulpventilator', + exhaust: 'Afvoer', + chamber: 'Kamerventilator', + }, + // HMS errors + clickToViewHmsErrors: 'Klik om HMS-fouten te bekijken', + aiDetection: { + safe: 'Veilig', + warning: 'Waarschuwing', + failure: 'Mislukking', + idle: 'Inactief', + error: 'Controleert niet', + unknown: 'Bezig met starten', + tooltipError: 'AI-storingsdetectie controleert deze print niet: {{reason}} - klik voor details', + tooltipUnknown: 'AI-storingsdetectie: wachten op het eerste resultaat - klik voor details', + errorHint: 'Deze print wordt niet gecontroleerd. De detectie hervat automatisch zodra het probleem hieronder is opgelost.', + tooltip: 'AI-foutdetectie: {{status}} (score {{score}}) - klik voor details', + tooltipIdle: 'AI-foutdetectie ingeschakeld - bewaking start bij de volgende afdruk - klik voor details', + modalTitle: 'AI-foutdetectie - {{name}}', + currentStatus: 'Status', + score: 'Score', + framesAnalyzed: 'Geanalyseerde frames', + idleHint: 'Er wordt momenteel geen afdruk bewaakt. De bewaking start automatisch bij de volgende afdruk.', + lastError: 'Laatste fout', + openSettings: 'Instellingen openen', + }, + estimatedCompletion: 'Geschatte voltooiingstijd', + plateNumber: 'Plaat {{number}}', + slotOptions: 'Sleufopties', + // AMS hover popup + amsPopup: { + friendlyName: 'AMS-naam', + friendlyNamePlaceholder: 'bijv. AMS-naam', + serialNumber: 'Serienummer', + firmwareVersion: 'Firmware', + save: 'Opslaan', + clear: 'Wissen', + noEditPermission: 'Je hebt geen toestemming om AMS-eenheden te hernoemen', + }, + // Firmware modal + firmwareModal: { + title: 'Firmware-update', + titleUpToDate: 'Firmware-informatie', + currentVersion: 'Huidig:', + latestVersion: 'Nieuwste:', + releaseNotes: 'Releaseopmerkingen', + checkingPrereqs: 'Vereisten controleren...', + sdCardReady: 'SD-kaart gereed. Klik hieronder om firmware te uploaden.', + uploadedSuccess: 'Firmware geüpload naar SD-kaart!', + applyInstructions: 'Om de update op je printer toe te passen:', + step1: 'Ga op het touchscreen van de printer naar Instellingen', + step2: 'Navigeer naar Firmware', + step3: 'Selecteer Update vanaf SD-kaart', + step4: 'De update duurt 10-20 minuten', + done: 'Klaar', + starting: 'Starten...', + uploadFirmware: 'Firmware uploaden', + uploadFailed: 'Upload starten mislukt: {{error}}', + uploadedToast: 'Firmware geüpload! Start de update vanaf het printerscherm.', + availableVersions: 'Beschikbare versies', + usable: 'Bruikbaar', + unavailable: 'Niet beschikbaar', + installed: 'Geïnstalleerd', + newerBadge: 'nieuwer', + olderBadge: 'ouder', + currentBadge: 'huidig', + }, + accessCodePlaceholder: 'Laat leeg om huidige waarde te behouden', + // ROI editor + roi: { + title: 'Detectiegebied (ROI)', + xStart: 'X-start', + yStart: 'Y-start', + width: 'Breedte', + height: 'Hoogte', + instruction: 'Pas het detectiegebied aan zodat het op de bouwplaat is gericht. Het groene kader in het voorbeeld toont het huidige gebied.', + }, + developerModeWarning: 'Developer LAN-modus is niet ingeschakeld op: {{names}}. Sommige functies werken mogelijk niet.', + howToEnable: 'Inschakelen', + incompatibleFile: 'Dit bestand is gesliced voor {{slicedFor}}, maar deze printer is een {{printerModel}}', + dropNotPrintable: 'Alleen .gcode- en .gcode.3mf-bestanden kunnen worden afgedrukt', + dropToPrint: 'Sleep hierheen om af te drukken', + dropToQueue: 'Sleep hierheen voor wachtrij', + }, + + // Archives page + archives: { + media: { + title: 'Afdrukvideo\'s', + download: 'Afdrukvideo\'s downloaden', + searching: 'Printer controleren op video\'s…', + searchFailed: 'Printer kon niet op video\'s worden gecontroleerd.', + none: 'Geen timelapse- of IP-camerafragmenten gevonden voor deze afdruk.', + attachedTimelapse: 'Gekoppelde timelapse', + printerFiles: 'Bestanden die nog op de printer staan', + downloadSelected: 'Geselecteerde downloaden', + printerMissing: 'Printer is niet meer geconfigureerd', + timelapseUnavailable: 'De timelapse-map kon niet worden gelezen', + ipcamUnavailable: 'De IP-camera-map kon niet worden gelezen', + }, + title: 'Afdrukarchieven', + no3mfBanner: { + title: 'Sommige recente afdrukken konden niet met miniaturen worden gearchiveerd', + body: 'De slicer heeft het .gcode.3mf-bestand niet op de SD-kaart van de printer achtergelaten, waardoor Bambuddy de miniatuur of slicermetadata niet kon ophalen. Dit komt meestal doordat "Verzonden bestanden opslaan op externe opslag" is uitgeschakeld in de slicer (tabblad Apparaat in Bambu Studio / OrcaSlicer).', + docsLink: 'Zie installatiestap 4', + dismissLabel: 'Deze melding sluiten', + docsLinkInternalStorage: 'Waarom dit gebeurt', + titleInternalStorage: 'Sommige recente afdrukken bleven op de interne opslag van de printer staan', + bodyInternalStorage: 'Bambu Studio plaatste het geslicede bestand op de interne opslag van de printer in plaats van op de kaart, waardoor Bambuddy via FTP niets kon uitlezen. Op H2-serie en P2S doet de knop Afdrukken dit altijd — alleen Verzenden biedt een keuze, en ook daar is Cache standaard. Die afdrukken worden nog steeds gearchiveerd met naam en timing, maar zonder miniatuur of slicermetadata. Voor volledige archieven start je de afdruk vanuit Bambuddy, slice je in OrcaSlicer, of gebruik je in Bambu Studio Verzenden met Extern geselecteerd en start je daarna de afdruk. Voor al deze opties is een kaart of USB-stick in de printer nodig.', + titleNoExternalStorage: 'Sommige recente afdrukken konden niet worden gearchiveerd — geen opslag in de printer', + bodyNoExternalStorage: 'De printer meldt dat er geen kaart of USB-stick in de sleuf zit, waardoor het geslicede bestand nergens kon worden opgeslagen en Bambuddy niets kon uitlezen. Plaats er een en de volgende afdruk wordt volledig gearchiveerd.', + titleInternalHistory: 'Sommige recente prints zijn gestart vanaf een bestand dat al op de printer stond', + bodyInternalHistory: 'Die prints liepen vanuit de eigen bibliotheek van de printer — opnieuw afdrukken via het scherm, starten vanuit Handy, of een bestand dat eerder is verstuurd en later is afgedrukt. Bambuddy leest printbestanden via FTP, dat alleen de kaart of stick aanbiedt, terwijl de printer die bibliotheek bewaart op een plek die FTP niet kan bereiken. Er was dus geen 3MF om te lezen. Geen enkele slicer-instelling verandert dit, omdat er voor deze prints niets is verstuurd. Ze worden nog steeds gearchiveerd met naam en tijden, en via Archief bewerken kun je het gebruikte filament handmatig invullen. Start de print vanuit Bambuddy of vanuit je slicer voor een volledig archief.', + }, + searchPlaceholder: 'Archieven zoeken...', + filterByPrinter: 'Filteren op printer', + filterByStatus: 'Filteren op status', + sortBy: 'Sorteren op', + sortNewest: 'Nieuwste eerst', + sortOldest: 'Oudste eerst', + sortName: 'Naam', + sortDuration: 'Duur', + sortLargest: 'Grootste eerst', + sortSmallest: 'Kleinste eerst', + sortSize: 'Grootte', + noArchives: 'Geen archieven gevonden', + noArchivesSearch: 'Geen archieven komen overeen met je zoekopdracht', + originalPrintNotVisible: 'Originele afdruk niet zichtbaar - probeer filters te wissen', + noArchivesYet: 'Nog geen archieven', + prints: 'afdrukken', + pagination: { + showing: 'Weergegeven', + to: 'tot', + of: 'van', + show: 'Tonen', + page: 'Pagina', + all: 'Alle', + }, + loadingArchives: 'Archieven laden...', + releaseToUpload: 'Loslaten om te uploaden', + showAll: 'Alles tonen', + showFavoritesOnly: 'Alleen favorieten tonen', + gridView: 'Rasterweergave', + listView: 'Lijstweergave', + calendarView: 'Kalenderweergave', + logView: 'Afdruklogboek', + manageTags: 'Tags beheren', + showFailedPrints: 'Mislukte afdrukken tonen', + hideFailedPrints: 'Mislukte afdrukken verbergen', + hideDuplicates: 'Duplicaten verbergen', + viewOriginalPrint: 'Klik om originele afdruk te bekijken (#{{id}})', + printTime: 'Afdruktijd', + filamentUsed: 'Filament gebruikt', + cost: 'Kosten', + preview: 'Voorbeeld', + deleteArchive: 'Archief verwijderen', + deleteConfirm: 'Weet je zeker dat je dit archief wilt verwijderen?', + favorite: 'Favoriet', + unfavorite: 'Uit favorieten verwijderen', + viewDetails: 'Details bekijken', + status: { + completed: 'Voltooid', + failed: 'Mislukt', + stopped: 'Gestopt', + }, + toast: { + source3mfAttached: 'Bron-3MF gekoppeld: {{filename}}', + failedUploadSource3mf: 'Uploaden van bron-3MF mislukt', + source3mfRemoved: 'Bron-3MF verwijderd', + failedRemoveSource3mf: 'Verwijderen van bron-3MF mislukt', + f3dAttached: 'F3D gekoppeld: {{filename}}', + failedUploadF3d: 'Uploaden van F3D mislukt', + f3dRemoved: 'F3D verwijderd', + failedRemoveF3d: 'Verwijderen van F3D mislukt', + timelapseAttached: 'Timelapse gekoppeld: {{filename}}', + timelapseAlreadyAttached: 'Timelapse is al gekoppeld', + noMatchingTimelapse: 'Geen overeenkomende timelapse gevonden', + failedScanTimelapse: 'Scannen naar timelapse mislukt', + failedAttachTimelapse: 'Timelapse koppelen mislukt', + timelapseRemoved: 'Timelapse verwijderd', + failedRemoveTimelapse: 'Timelapse verwijderen mislukt', + timelapseUploaded: 'Timelapse geüpload: {{filename}}', + failedUploadTimelapse: 'Timelapse uploaden mislukt', + archiveDeleted: 'Archief verwijderd', + failedDeleteArchive: 'Archief verwijderen mislukt', + addedToFavorites: 'Toegevoegd aan favorieten', + removedFromFavorites: 'Uit favorieten verwijderd', + projectUpdated: 'Project bijgewerkt', + failedUpdateProject: 'Project bijwerken mislukt', + linkCopied: 'Link naar klembord gekopieerd', + failedCopyLink: 'Link kopiëren mislukt', + photoDeleted: 'Foto verwijderd', + failedDeletePhoto: 'Foto verwijderen mislukt', + failedDeleteArchives: 'Archieven verwijderen mislukt', + failedUpdateFavorites: 'Favorieten bijwerken mislukt', + exportDownloaded: 'Export gedownload', + exportFailed: 'Export mislukt', + }, + menu: { + print: 'Afdrukken', + openInBambuStudio: 'Openen in slicer', + slice: 'Slicen', + externalLink: 'Externe link', + viewOnMakerWorld: 'Bekijken op MakerWorld', + preview3d: '3D-voorbeeld', + viewTimelapse: 'Timelapse bekijken', + scanForTimelapse: 'Zoeken naar timelapse', + uploadTimelapse: 'Timelapse uploaden', + removeTimelapse: 'Timelapse verwijderen', + downloadSource3mf: 'Bron-3MF downloaden', + uploadSource3mf: 'Bron-3MF uploaden', + replaceSource3mf: 'Bron-3MF vervangen', + removeSource3mf: 'Bron-3MF verwijderen', + uploadF3d: 'F3D uploaden', + replaceF3d: 'F3D vervangen', + downloadF3d: 'F3D downloaden', + removeF3d: 'F3D verwijderen', + download: 'Downloaden', + copyDownloadLink: 'Downloadlink kopiëren', + qrCode: 'QR-code', + viewPhotos: 'Foto\'s bekijken', + viewPhotosCount: 'Foto\'s bekijken ({{count}})', + projectPage: 'Projectpagina', + addToFavorites: 'Toevoegen aan favorieten', + removeFromFavorites: 'Uit favorieten verwijderen', + edit: 'Bewerken', + printLog: 'Afdruklogboek', + goToProject: 'Ga naar project: {{name}}', + addToProject: 'Toevoegen aan project', + removeFromProject: 'Uit project verwijderen', + loading: 'Laden...', + noProjectsAvailable: 'Geen projecten beschikbaar', + searchProjects: 'Projecten zoeken…', + select: 'Selecteren', + deselect: 'Deselecteren', + delete: 'Verwijderen', + }, + permission: { + noReprint: 'Je hebt geen toestemming om dit archief opnieuw af te drukken', + noAddToQueue: 'Je hebt geen toestemming om aan de wachtrij toe te voegen', + noUpdateArchives: 'Je hebt geen toestemming om archieven bij te werken', + noUploadFiles: 'Je hebt geen toestemming om bestanden te uploaden', + noDownload: 'Je hebt geen toestemming om archieven te downloaden', + noCopyLink: 'Je hebt geen toestemming om downloadlinks te kopiëren', + noDelete: 'Je hebt geen toestemming om dit archief te verwijderen', + noEdit: 'Je hebt geen toestemming om dit item te bewerken', + noCreate: 'Je hebt geen toestemming om archieven te maken', + }, + platePicker: { + title: 'Selecteer plaat voor voorbeeld', + hint: 'Dit archief bevat meerdere platen. Kies er een om in de GCode-viewer te openen.', + plateLabel: 'Plaat {{index}}', + objectCount: '{{count}} object', + objectCount_plural: '{{count}} objecten', + noGcode: 'Dit archief bevat geen geslicede G-code voor een voorbeeld. Open het eerst in Bambu Studio om te slicen.', + }, + card: { + previousPlate: 'Vorige plaat', + nextPlate: 'Volgende plaat', + plateNumber: 'Plaat {{index}}', + moreOptions: 'Klik met rechts voor meer opties', + addToFavorites: 'Toevoegen aan favorieten', + removeFromFavorites: 'Uit favorieten verwijderen', + cancelled: 'geannuleerd', + failed: 'mislukt', + duplicate: 'duplicaat', + duplicateTitle: 'Dit model is eerder afgedrukt', + openSource3mf: 'Bron-3MF openen in Bambu Studio (klik met rechts voor meer opties)', + downloadF3d: 'Fusion 360-ontwerpbestand downloaden', + viewTimelapse: 'Timelapse bekijken', + viewPhoto: '1 foto bekijken', + viewPhotos: '{{count}} foto\'s bekijken', + openFolder: 'Map openen: {{name}}', + slicedFile: 'Gesliced bestand - klaar om af te drukken', + sourceFile: 'Alleen bronbestand - geen AMS-toewijzing beschikbaar', + gcode: 'GCODE', + source: 'BRON', + project: 'Project: {{name}}', + runsBadge: '{{count}} afdrukken', + runsBadgeTitle: '{{count}} afdrukken totaal — {{successful}} geslaagd, {{failed}} mislukt. Klik om het volledige afdruklogboek te bekijken.', + estimated: 'Geschat: {{time}}', + actual: 'Werkelijk: {{time}}', + accuracy: 'Nauwkeurigheid: {{percent}}%', + filament: '{{weight}}g', + layer: '{{count}} laag', + layers: '{{count}} lagen', + object: '{{count}} object', + objects: '{{count}} objecten', + slicedFor: 'Gesliced voor {{model}}', + uploadedBy: 'Geüpload door', + noPermissionReprint: 'Je hebt geen toestemming om opnieuw af te drukken', + noFileForReprint: 'Geen 3MF-bestand beschikbaar — het bestand kon niet van de printer worden gedownload toen de afdruk werd geregistreerd', + slicerAmsMapping: 'AMS-toewijzing opgeslagen ({{printer}})', + slicerAmsMappingTooltip: 'De eigen AMS-sleufkeuze van de slicer is opgeslagen voor {{printer}}. Tray-nummers hebben alleen betekenis op die printer, dus bij opnieuw afdrukken worden ze alleen hergebruikt als opnieuw naar {{printer}} wordt afgedrukt.', + noPermissionEdit: 'Je hebt geen toestemming om archieven te bewerken', + noPermissionDelete: 'Je hebt geen toestemming om archieven te verwijderen', + openInBambuStudio: 'Openen in slicer', + openInBambuStudioToSlice: 'Openen in slicer om te slicen', + slice: 'Slicen', + externalLink: 'Externe link', + makerWorld: 'MakerWorld: {{designer}}', + viewProject: 'Project bekijken', + noExternalLink: 'Geen externe link', + preview3d: '3D-voorbeeld', + download: 'Downloaden', + edit: 'Bewerken', + delete: 'Verwijderen', + }, + runLog: { + title: 'Afdruklogboek', + modalTitle: 'Afdruklogboek — {{name}}', + modalTitleFallback: 'dit archief', + empty: 'Nog geen afdrukgebeurtenissen geregistreerd voor dit archief.', + col: { + date: 'Datum', + status: 'Status', + duration: 'Duur', + filament: 'Filament', + cost: 'Kosten', + }, + status: { + completed: 'Voltooid', + failed: 'Mislukt', + cancelled: 'Geannuleerd', + stopped: 'Gestopt', + skipped: 'Overgeslagen', + printing: 'Bezig met afdrukken', + }, + }, + modal: { + deleteArchive: 'Archief verwijderen', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', + deleteButton: 'Verwijderen', + deletePurgeStats: 'Deze afdruk ook verwijderen uit Snelle statistieken (filament, tijd, kosten, energie)', + deleteQueueItemsWarning: '{{count}} wachtrij-item(s) gekoppeld aan dit archief worden ook verwijderd.', + deleteBlockedByPrinting: 'Kan niet verwijderen — {{count}} wachtrij-item(s) zijn momenteel aan het afdrukken. Stop eerst de afdruk en probeer het daarna opnieuw.', + removeSource3mf: 'Bron-3MF verwijderen', + removeSource3mfConfirm: 'Weet je zeker dat je het bron-3MF-bestand uit "{{name}}" wilt verwijderen? Hiermee wordt het originele slicerprojectbestand verwijderd.', + removeButton: 'Verwijderen', + removeF3d: 'F3D verwijderen', + removeF3dConfirm: 'Weet je zeker dat je het Fusion 360-ontwerpbestand uit "{{name}}" wilt verwijderen?', + removeTimelapse: 'Timelapse verwijderen', + removeTimelapseConfirm: 'Weet je zeker dat je de timelapsevideo uit "{{name}}" wilt verwijderen?', + timelapse: '{{name}} - Timelapse', + selectTimelapse: 'Timelapse selecteren', + selectTimelapseDesc: 'Geen automatische overeenkomst gevonden. Selecteer de timelapse voor deze afdruk:', + deleteArchives: 'Archieven verwijderen', + deleteArchivesConfirm: 'Weet je zeker dat je {{count}} archief/archieven wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', + deleteCount: '{{count}} verwijderen', + }, + page: { + title: 'Archieven', + printsCount: '{{filtered}} van {{total}} afdrukken', + dropFilesHere: 'Sleep .3mf-bestanden hierheen', + releaseToUpload: 'Loslaten om te uploaden', + only3mfSupported: 'Alleen .3mf-bestanden worden ondersteund', + close: 'Sluiten', + selected: '{{count}} geselecteerd', + selectAll: 'Alles selecteren', + tags: 'Tags', + project: 'Project', + favorite: 'Favoriet', + delete: 'Verwijderen', + toggledFavorites: 'Favorieten omgeschakeld voor {{count}} archief/archieven', + failedUpdateFavorites: 'Favorieten bijwerken mislukt', + archivesDeleted: '{{count}} archief/archieven verwijderd', + failedDeleteArchives: 'Archieven verwijderen mislukt', + photoDeleted: 'Foto verwijderd', + failedDeletePhoto: 'Foto verwijderen mislukt', + }, + list: { + name: 'Naam', + printer: 'Printer', + date: 'Datum', + size: 'Grootte', + actions: 'Acties', + hasTimelapse: 'Heeft timelapse', + }, + log: { + date: 'Datum', + printName: 'Afdruknaam', + printer: 'Printer', + user: 'Gebruiker', + status: 'Status', + duration: 'Duur', + filament: 'Filament', + filamentUsed: 'Filament gebruikt', + cost: 'Kosten', + energy: 'Energie', + energyCost: 'Energiekosten', + completedAt: 'Voltooid', + columns: 'Kolommen', + sortBy: 'Sorteren op {{column}}', + allPrinters: 'Alle printers', + allUsers: 'Alle gebruikers', + allStatuses: 'Alle statussen', + cancelled: 'Geannuleerd', + skipped: 'Overgeslagen', + dateFrom: 'Van', + dateTo: 'Tot', + noEntries: 'Geen afdruklogboekitems gevonden', + showing: '{{count}} van {{total}} items weergegeven', + rowsPerPage: 'Rijen', + page: 'Pagina', + prev: 'Vorige', + next: 'Volgende', + clearLog: 'Logboek wissen', + clearLogTitle: 'Afdruklogboek wissen', + clearLogConfirm: 'Alle items in het afdruklogboek worden permanent verwijderd. Archieven en wachtrij-items blijven intact. Deze actie kan niet ongedaan worden gemaakt. Weet je het zeker?', + clearLogButton: 'Alles wissen', + cleared: '{{count}} logboekitems gewist', + clearFailed: 'Afdruklogboek wissen mislukt', + deleteEntryTitle: 'Afdruklogboekitem verwijderen', + deleteEntryConfirm: 'Dit item wordt uit het logboek verwijderd en de bijdragen aan filament, tijd en kosten verdwijnen uit Snelle statistieken. Het bijbehorende archief (indien aanwezig) blijft intact. Deze actie kan niet ongedaan worden gemaakt.', + entryDeleted: 'Afdruklogboekitem verwijderd', + entryDeleteFailed: 'Afdruklogboekitem verwijderen mislukt', + editEntryTitle: 'Afdruklogboekitem bewerken', + editEntryDescription: 'Classificeer deze afdrukrun. De widget Foutenanalyse groepeert op deze waarden, zodat wijzigingen direct in de statistieken worden verwerkt.', + entryUpdated: 'Afdruklogboekitem bijgewerkt', + entryUpdateFailed: 'Afdruklogboekitem bijwerken mislukt', + statuses: { + completed: 'Voltooid', + failed: 'Mislukt', + stopped: 'Gestopt', + cancelled: 'Geannuleerd', + skipped: 'Overgeslagen', + }, + }, + }, + + // Sticky upload-progress toast (#1625 follow-up — restored the + // legacy bg-dispatch toast UI for the scheduler-driven dispatch path). + // Strings mirror 0b43ac0d's backgroundDispatch namespace. + dispatchToast: { + untitled: 'Afdruktaak', + startingPrints: 'Afdrukken starten', + progressSummary: '{{complete}}/{{total}} voltooid • Verwerken: {{processing}}', + expandDetails: 'Verzenddetails uitklappen', + collapseDetails: 'Verzenddetails inklappen', + awaitingPrinter: 'Wachten op printer…', + status: { + processing: 'Verwerken', + completed: 'Voltooid', + failed: 'Mislukt', + }, + failed: { + generic: 'Verzenden mislukt', + upload_failed: 'Uploaden naar printer mislukt', + start_command_failed: 'Printer heeft startopdracht geweigerd', + }, + dismiss: 'Negeren', + }, + + // Pipeline Runs dashboard (#1425 PR C). Lists every Slicer Pipeline run + // across every pipeline with status + pipeline filters and pagination. + // Each row expands to per-copy job status; partial-failure runs get a + // Retry-failed button; in-flight runs get a Cancel button. + pipelineRuns: { + title: 'Pipeline-runs', + loading: 'Laden…', + empty: 'Nog geen pipeline-runs.', + filter: { + pipeline: 'Pipeline', + status: 'Status', + target: 'Doel', + all: 'Alle', + allPipelines: 'Alle pipelines', + allStatus: 'Alle statussen', + allTargets: 'Alle doelen', + clear: 'Filters wissen', + noMatches: 'Geen runs komen overeen met de huidige filters.', + }, + totalCount_one: '{{n}} run', + totalCount_other: '{{n}} runs', + copies: '{{n}} kopieën', + failedCount: '{{n}} mislukt', + copyN: 'Kopie {{n}}', + retryFailed: 'Mislukte opnieuw proberen', + retryOf: 'herhaling van #{{n}}', + pagination: '{{start}}–{{end}} van {{total}}', + cancelledByUser: 'Geannuleerd door gebruiker', + toast: { + cancelled: 'Run geannuleerd', + cancelFailed: 'Annuleren mislukt', + retryStarted: 'Opnieuw proberen gestart', + retryFailed: 'Mislukte opnieuw proberen', + cleared: '{{n}} runs gewist', + clearFailed: 'Wissen mislukt', + }, + clearLog: 'Logboek wissen', + clearConfirmTitle: 'Logboek wissen?', + clearConfirmBody: 'Alle voltooide, mislukte, geannuleerde en gedeeltelijk mislukte pipeline-runs verwijderen? Lopende runs blijven behouden. Dit kan niet ongedaan worden gemaakt.', + clearConfirmAction: 'Wissen', + jobStatus: { + pending: 'in afwachting', + awaiting_printer: 'wachten op printer', + queued: 'in wachtrij', + printing: 'bezig met afdrukken', + completed: 'voltooid', + failed: 'mislukt', + cancelled: 'geannuleerd', + }, + }, + + // Queue page + queue: { + title: 'Afdrukwachtrij', + subtitle: 'Plan en beheer je afdruktaken', + filamentShort: { + rowBadge: 'Onvoldoende filament op de toegewezen spoel', + rowTooltip: 'De verzendscheduler heeft dit item gemarkeerd. Klik op Afspelen om het tekort per sleuf te bekijken en te bepalen of je toch wilt afdrukken.', + confirmTitle: 'Onvoldoende filament', + confirmIntro: 'De toegewezen spoel kan minstens één sleuf niet voorzien. Toch afdrukken?', + lineItem: 'Sleuf {{slot}}: vereist {{required}} g, {{remaining}} g resterend', + unknown: 'onbekend', + printAnyway: 'Toch afdrukken', + }, + slicerAmsMapping: { + rowBadge: 'AMS-sleuven opgeslagen voor deze printer', + rowTooltip: 'Dit archief bevat de exacte AMS-sleuven die de slicer heeft gekozen, opgeslagen voor de printer waarop dit item is gericht. Bij opnieuw afdrukken op deze printer kunnen die trays worden hergebruikt in plaats van opnieuw op type en kleur te matchen.', + }, + // Print modal + editQueueItem: 'Wachtrij-item bewerken', + selectAllPlates: 'Alle {{count}} platen selecteren', + deselectAll: 'Alles deselecteren', + printQueued: 'Afdruk in wachtrij geplaatst', + printQueuedWillStartWhenIdle: 'Start zodra de printer inactief is', + itemsQueued: '{{count}} items in wachtrij', + sending: 'Verzenden...', + sendingProgress: '{{current}}/{{total}} verzenden...', + adding: 'Toevoegen...', + addingProgress: '{{current}}/{{total}} toevoegen...', + savingProgress: '{{current}}/{{total}} opslaan...', + clearQueue: 'Wachtrij wissen', + clearHistory: 'Geschiedenis wissen', + emptyQueue: 'Wachtrij is leeg', + position: 'Positie', + scheduledTime: 'Geplande tijd', + moveUp: 'Omhoog verplaatsen', + moveDown: 'Omlaag verplaatsen', + startNow: 'Nu starten', + printingInProgress: 'Afdrukken bezig...', + viewArchive: 'Archief bekijken', + viewInFileManager: 'Bekijken in Bestandsbeheer', + itemCount: '{{count}} item', + itemCount_plural: '{{count}} items', + dragToReorder: 'Sleep om volgorde te wijzigen (alleen ZSM)', + reorderHint: 'Positie heeft alleen invloed op ZSM-items. Geplande items draaien op hun ingestelde tijd.', + sjf: { + label: 'SJF', + tooltip: 'Shortest Job First — scheduler geeft voorrang aan kortere afdrukken', + }, + addedBy: 'Toegevoegd door {{name}}', + nextInQueue: 'Volgende in wachtrij', + clearPlateSuccess: 'Plaat vrijgegeven — klaar voor volgende afdruk', + plateNumber: 'Plaat {{index}}', + // Batch / quantity + quantity: 'Aantal', + quantityHint: 'Maakt {{count}} wachtrij-items', + plateQuantityLabel: 'Runs van {{plate}}', + plateQuantityTotal_one: '{{count}} run in totaal', + plateQuantityTotal_other: '{{count}} runs in totaal', + batchOrders: { + title: 'Batchorders', + emptyTitle: 'Geen batchorders', + emptyDescription: 'Plaats een bestand met meerdere platen, of meer dan één kopie van een plaat, in de wachtrij en de order verschijnt hier met de voortgang.', + filter: { + active: 'Actief', + completed: 'Voltooid', + cancelled: 'Geannuleerd', + all: 'Alle', + }, + status: { + active: 'Actief', + completed: 'Voltooid', + cancelled: 'Geannuleerd', + }, + noTargets: 'Alleen groepering', + noTargetsHint: 'Aangemaakt voordat doelen per plaat bestonden, dus dit volgt de runs die in de wachtrij zijn gezet in plaats van een doel.', + dispatchRemaining: '{{count}} resterende in wachtrij plaatsen', + dispatchPlate: 'Resterende in wachtrij plaatsen', + strandedPlate: 'Geen instellingen meer om van te kopiëren', + strandedNotice: 'Kan {{runs}} van de {{owed}} nog openstaande runs niet in de wachtrij zetten: die plaat heeft geen run in de wachtrij of voltooide run meer om instellingen van te kopiëren. Zet de plaat één keer vanuit het bestand in de wachtrij, of annuleer de order.', + dispatched: 'Resterende runs voor {{name}} in wachtrij geplaatst', + plateProgress: '{{completed}} van {{target}} klaar', + remaining: '{{count}} nog te doen', + failed: '{{count}} mislukt', + printing: '{{count}} bezig met afdrukken', + wholeFile: 'Hele bestand', + due: 'Vervalt {{date}}', + costSoFar: '{{amount}} tot nu toe', + costRemaining: '({{amount}} te gaan)', + }, + activeBatches: 'Actieve batches', + batchProgress: '{{completed}} van {{total}} voltooid', + cancelBatch: 'Resterende annuleren', + batchCancelled: 'Resterende batchitems geannuleerd', + cancelBatchConfirmTitle: 'Batch annuleren', + cancelBatchConfirmMessage: 'Alle resterende openstaande items in deze batch annuleren?', + batch: { + defaultName: 'Batch', + label: '{{count}} item', + label_plural: '{{count}} items', + pendingCount: '{{count}} in afwachting', + pendingCount_plural: '{{count}} in afwachting', + expand: 'Batch uitklappen', + collapse: 'Batch inklappen', + groupAsBatch: 'Als batch groeperen…', + groupAsBatchDescription: 'Combineer de {{count}} geselecteerde items tot één inklapbare batch.', + nameLabel: 'Batchnaam', + namePlaceholder: 'bijv. Vrijdagcadeaus', + create: 'Batch maken', + ungroup: 'Groepering opheffen', + ungroupConfirmTitle: 'Batchgroepering opheffen?', + ungroupConfirmMessage: 'De items blijven in de wachtrij staan, maar worden niet langer als groep weergegeven.', + dragGroup: 'Groep slepen', + }, + // Tabs + tabs: { + batches: 'Batches', + queue: 'Wachtrij', + history: 'Geschiedenis', + timeline: 'Tijdlijn', + pipelines: 'Pipelines', + }, + // Layout toggle on the Queue tab — distinct from the sort dropdown + // (those control order; these control whether items render as one flat + // list or grouped under per-printer section headers). + layout: { + flatList: 'Lijst', + byPrinter: 'Per printer', + groupByPrinter: 'Groeperen per printer', + }, + // History tab empty state + history: { + emptyTitle: 'Nog geen geschiedenis', + emptyDescription: 'Voltooide, geannuleerde en mislukte afdrukken verschijnen hier.', + showMore: 'Meer tonen', + showingCount: '{{shown}} van {{total}} weergegeven', + }, + // Drag ghost label when multi-dragging + dragGhost: { + multiCount: '{{count}} items', + batch: '{{name}} ({{count}} kopie)', + batch_plural: '{{name}} ({{count}} kopieën)', + }, + // Sections + sections: { + currentlyPrinting: 'Momenteel aan het afdrukken', + queued: 'In wachtrij', + history: 'Geschiedenis', + }, + // Status + status: { + pending: 'In afwachting', + waiting: 'Wachten', + printing: 'Bezig met afdrukken', + paused: 'Gepauzeerd', + completed: 'Voltooid', + failed: 'Mislukt', + skipped: 'Overgeslagen', + cancelled: 'Geannuleerd', + }, + // Summary cards + summary: { + printing: 'Bezig met afdrukken', + queued: 'In wachtrij', + totalTime: 'Totale wachtrijtijd', + totalWeight: 'Totaal wachtrijgewicht', + history: 'Geschiedenis', + }, + // Filters + filter: { + allPrinters: 'Alle printers', + unassigned: 'Niet toegewezen', + allStatus: 'Alle statussen', + allLocations: 'Alle locaties', + any: 'Elke', + }, + // Sort + sort: { + byPosition: 'Sorteren op positie', + byName: 'Sorteren op naam', + byPrinter: 'Sorteren op printer', + bySchedule: 'Sorteren op planning', + byDate: 'Sorteren op datum', + ascendingOldest: 'Oplopend (oudste eerst)', + descendingNewest: 'Aflopend (nieuwste eerst)', + }, + // Badges + badges: { + staged: 'Gereed voor handmatige start', + requiresPrevious: 'Vereist dat vorige taak slaagt', + autoPowerOff: 'Automatisch uitschakelen', + gcodeInjection: 'G-code', + }, + // Empty state + empty: { + title: 'Geen afdrukken gepland', + description: 'Plan een afdruk vanaf de pagina Archieven met de optie "Plannen" in het contextmenu, of sleep bestanden hierheen om te beginnen.', + }, + // Time + time: { + etaIfStartedNow: 'Voltooiingstijd als deze taak nu zou starten', + asap: 'Zo snel mogelijk', + overdue: 'Te laat', + now: 'Nu', + lessThanMinute: 'Binnen een minuut', + inMinutes: 'Over {{count}} min', + inHours: 'Over {{count}} uur', + }, + // Actions + actions: { + startPrint: 'Afdruk starten', + stopPrint: 'Afdruk stoppen', + requeue: 'Opnieuw in wachtrij plaatsen', + }, + // Bulk edit + bulkEdit: { + title: '{{count}} item bewerken', + title_plural: '{{count}} items bewerken', + description: 'Alleen gewijzigde instellingen worden toegepast op de geselecteerde items.', + printer: 'Printer', + noChange: '— Geen wijziging —', + queueOptions: 'Wachtrijopties', + staged: 'Gereed voor handmatige start', + autoPowerOff: 'Automatisch uitschakelen na afdruk', + requirePrevious: 'Vereis dat vorige taak slaagt', + printOptions: 'Afdrukopties', + bedLevelling: 'Bednivellering', + flowCalibration: 'Flowkalibratie', + vibrationCalibration: 'Trillingskalibratie', + layerInspection: 'Inspectie eerste laag', + timelapse: 'Timelapse', + useAms: 'AMS gebruiken', + nozzleOffsetCali: 'Nozzle-offsetkalibratie', + applyChanges: 'Wijzigingen toepassen', + selectAll: 'Alles selecteren', + deselectAll: 'Alles deselecteren', + selected: '{{count}} geselecteerd', + editSelected: 'Geselecteerde bewerken', + cancelSelected: 'Geselecteerde annuleren', + }, + // Confirmations + confirm: { + cancelTitle: 'Geplande afdruk annuleren', + cancelMessage: 'Weet je zeker dat je "{{name}}" wilt annuleren?', + stopTitle: 'Afdruk stoppen', + stopMessage: 'Weet je zeker dat je de huidige afdruk "{{name}}" wilt stoppen? Hiermee wordt de afdruktaak op de printer geannuleerd.', + removeTitle: 'Uit geschiedenis verwijderen', + removeMessage: 'Weet je zeker dat je "{{name}}" uit de wachtrijgeschiedenis wilt verwijderen?', + clearHistoryTitle: 'Geschiedenis wissen', + clearHistoryMessage: 'Weet je zeker dat je alle {{count}} item(s) uit de geschiedenis wilt verwijderen?', + cancelButton: 'Afdruk annuleren', + stopButton: 'Afdruk stoppen', + thisPrint: 'deze afdruk', + thisItem: 'dit item', + }, + // Toast messages + toast: { + cancelled: 'Wachtrij-item geannuleerd', + cancelFailed: 'Item annuleren mislukt', + removed: 'Wachtrij-item verwijderd', + keptForOrder: 'Geannuleerd in plaats van verwijderd: dit is de enige run waaruit de batchorder deze plaat opnieuw in de wachtrij kan zetten', + historyKeptForOrders: '{{kept}} bewaard die batchorders nog nodig hebben.', + removeFailed: 'Item verwijderen mislukt', + stopped: 'Afdruk gestopt', + stopFailed: 'Afdruk stoppen mislukt', + released: 'Afdruk vrijgegeven aan wachtrij', + startFailed: 'Afdruk starten mislukt', + reorderFailed: 'Wachtrij herschikken mislukt', + historyCleared: '{{count}} geschiedenisitem(s) gewist', + clearHistoryFailed: 'Geschiedenis wissen mislukt', + updateFailed: 'Items bijwerken mislukt', + bulkCancelled: '{{count}} item(s) geannuleerd', + bulkCancelFailed: 'Items annuleren mislukt', + batchCreated: 'Batch "{{name}}" gemaakt', + batchCreateFailed: 'Batch maken mislukt', + batchUngrouped: 'Groepering van {{count}} item(s) opgeheven', + batchUngroupFailed: 'Batchgroepering opheffen mislukt', + resumedAfterFailure: 'Wachtrij hervat — {{restored}} taak/taken teruggezet naar in afwachting', + resumeAfterFailureFailed: 'Wachtrij hervatten mislukt', + }, + resumeAfterFailure: { + banner: '{{printer}} is geblokkeerd door een eerdere afdrukfout — {{count}} taak/taken overgeslagen', + bannerHint: 'Los het printerprobleem op en hervat daarna om de overgeslagen taken terug te zetten en de blokkering op te heffen.', + button: 'Hervatten na fout', + confirmTitle: 'Wachtrij hervatten na fout?', + confirmMessage: 'Zet {{count}} overgeslagen taak/taken op {{printer}} terug naar in afwachting en hef de blokkering door de vorige afdruk op. Zorg dat de printer gereed is voordat je doorgaat.', + }, + // Timeline view + timeline: { + listView: 'Lijst', + timelineView: 'Tijdlijn', + unassigned: 'Niet toegewezen', + noData: 'Geen geplande afdrukken voor deze dag', + nothingCommitted: 'Geen vastgelegde planningen in dit venster. Gereedstaande items, wachtende items en ZSM-taken op inactieve printers worden niet getoond — stel een geplande tijd in of geef een gereedstaand item vrij om het hier te zien.', + allDoneBy: 'Alle afdrukken naar verwachting klaar om {{time}}', + staged: 'Gereed voor handmatige start', + filterAll: 'Alles tonen', + filterPrinting: 'Bezig met afdrukken', + filterQueued: 'In wachtrij', + time: { + anyMoment: 'elk moment', + minutesLeft: '{{minutes}}m resterend', + hoursLeft: '{{hours}}u resterend', + hoursMinutesLeft: '{{hours}}u {{minutes}}m resterend', + }, + day: { + previous: 'Vorige dag', + next: 'Volgende dag', + today: 'Vandaag', + }, + // Rolling-24h Gantt window + window: { + back12h: '12 uur terug', + forward12h: '12 uur vooruit', + now: 'Nu', + }, + printerColumnHeader: 'Printer', + }, + // Permissions + permissions: { + noStopPrint: 'Je hebt geen toestemming om afdrukken te stoppen', + noStartPrint: 'Je hebt geen toestemming om afdrukken te starten', + noEdit: 'Je hebt geen toestemming om dit wachtrij-item te bewerken', + noCancel: 'Je hebt geen toestemming om dit wachtrij-item te annuleren', + noRequeue: 'Je hebt geen toestemming om items opnieuw in de wachtrij te plaatsen', + noRemove: 'Je hebt geen toestemming om dit wachtrij-item te verwijderen', + noClearHistory: 'Je hebt geen toestemming om de volledige geschiedenis te wissen', + noEditItems: 'Je hebt geen toestemming om wachtrij-items te bewerken', + noCancelItems: 'Je hebt geen toestemming om wachtrij-items te annuleren', + }, + }, + + // Statistics page + stats: { + title: 'Statistieken', + subtitle: 'Sleep widgets om ze opnieuw te rangschikken. Klik op het oogpictogram om te verbergen.', + overview: 'Overzicht', + totalPrints: 'Totaal aantal afdrukken', + successRate: 'Slagingspercentage', + totalPrintTime: 'Totale afdruktijd', + printTime: 'Afdruktijd', + totalFilament: 'Totaal filamentverbruik', + filamentUsed: 'Filament gebruikt', + filamentCost: 'Filamentkosten', + totalCost: 'Totale kosten', + energyUsed: 'Energieverbruik', + energyCost: 'Energiekosten', + energyWarmingUpTooltip: 'Energietracking verzamelt nog steeds uurlijkse momentopnamen. Totalen over een datumbereik worden nauwkeurig zodra er minstens één momentopname van vóór het geselecteerde bereik bestaat. Vroege waarden kunnen te laag uitvallen.', + averagePrintTime: 'Gemiddelde afdruktijd', + printsPerDay: 'Afdrukken per dag', + byPrinter: 'Per printer', + printsByPrinter: 'Afdrukken per printer', + byMaterial: 'Per materiaal', + byMonth: 'Per maand', + last7Days: 'Laatste 7 dagen', + last30Days: 'Laatste 30 dagen', + last90Days: 'Laatste 90 dagen', + allTime: 'Altijd', + // Widgets + quickStats: 'Snelle statistieken', + printActivity: 'Afdrukactiviteit', + filamentTypes: 'Filamenttypen', + filamentTrends: 'Filamenttrends', + failureAnalysis: 'Foutenanalyse', + timeAccuracy: 'Tijdnauwkeurigheid', + successful: 'Geslaagd:', + failed: 'Mislukt:', + cancelled: 'Geannuleerd:', + perfectEstimate: '100% = perfecte schatting', + noTimeAccuracyData: 'Nog geen gegevens over tijdnauwkeurigheid', + noFilamentData: 'Geen filamentgegevens beschikbaar', + noPrinterData: 'Geen printergegevens beschikbaar', + noPrintData: 'Geen afdrukgegevens beschikbaar', + noPrintDataLast30Days: 'Geen afdrukgegevens in de laatste 30 dagen', + failureReasons: 'Oorzaken van fouten', + topFailureReasons: 'Meest voorkomende foutoorzaken', + failedPrintsCount: '{{failed}} / {{total}} afdrukken mislukt', + lastWeekRate: 'Vorige week: {{rate}}%', + // Actions + resetLayout: 'Indeling resetten', + recalculateCosts: 'Kosten opnieuw berekenen', + recalculateCostsHint: 'Alle archiefkosten opnieuw berekenen met de huidige filamentprijzen', + exportStats: 'Statistieken exporteren', + exportAsCsv: 'Exporteren als CSV', + exportAsExcel: 'Exporteren als Excel', + hiddenCount: '{{count}} verborgen', + // Toast + exportDownloaded: 'Export gedownload', + exportFailed: 'Export mislukt', + layoutReset: 'Indeling gereset', + recalculatedCosts: 'Kosten voor {{count}} archieven opnieuw berekend', + recalculateFailed: 'Kosten opnieuw berekenen mislukt', + // Loading + loadingStats: 'Statistieken laden...', + // Permissions + noPermissionResetLayout: 'Je hebt geen toestemming om de indeling te resetten', + noPermissionRecalculate: 'Je hebt geen toestemming om kosten opnieuw te berekenen', + noPrintDataInRange: 'Geen afdrukgegevens in het geselecteerde bereik', + periodFilament: 'Filament in periode', + periodCost: 'Kosten in periode', + avgPerPrint: 'Gem. per afdruk', + usageOverTime: 'Verbruik in de tijd', + energyOverTime: 'Energie in de tijd', + filamentByWeight: 'Gewicht', + printDuration: 'Afdrukduur', + printerUtilization: 'Printerbenutting', + filamentSuccess: 'Succes per materiaal', + printHabits: 'Afdrukgewoonten', + printTimeOfDay: 'Afdruktijdstip', + colorDistribution: 'Kleurverdeling', + noColorData: 'Geen kleurgegevens beschikbaar', + records: 'Records', + longestPrint: 'Langste afdruk', + heaviestPrint: 'Zwaarste afdruk', + mostExpensivePrint: 'Duurste', + busiestDay: 'Drukste dag', + successStreak: 'Succesreeks', + streakPrint: 'opeenvolgende afdruk', + streakPrints: '{{count}} opeenvolgende afdrukken', + printerStats: 'Printerstatistieken', + hours: 'uren', + avgPrints: 'Gem. afdrukken', + noArchiveData: 'Geen afdrukgegevens beschikbaar', + filamentByTime: 'Tijd', + avgWeight: 'Gem. gewicht', + avgTime: 'Gem. tijd', + filamentByPrints: 'Afdrukken', + timeframe: { + 'today': 'Vandaag', + 'this-week': 'Deze week', + 'this-month': 'Deze maand', + 'last-7': 'Laatste 7 dagen', + 'last-30': 'Laatste 30 dagen', + 'last-90': 'Laatste 90 dagen', + 'this-year': 'Dit jaar', + 'all-time': 'Altijd', + 'custom': 'Aangepast bereik', + from: 'Van', + to: 'Tot', + }, + // User filter + allUsers: 'Alle gebruikers', + noUser: 'Geen gebruiker (systeem)', + filterByUser: 'Filteren op gebruiker', + }, + + // Maintenance page + maintenance: { + title: 'Onderhoud', + overview: 'Overzicht', + allOk: 'Al het onderhoud is bijgewerkt', + dueCount: '{{count}} item te doen', + dueCount_plural: '{{count}} items te doen', + warningCount: '{{count}} waarschuwing', + warningCount_plural: '{{count}} waarschuwingen', + totalPrintTime: 'Totale afdruktijd', + nextMaintenance: 'Volgend onderhoud', + nothingDue: 'Niets te doen', + tasks: 'Taken', + lastPerformed: 'Laatst uitgevoerd', + interval: 'Interval', + hoursRemaining: '{{hours}}u resterend', + hoursOverdue: '{{hours}}u te laat', + markDone: 'Als voltooid markeren', + performMaintenance: 'Onderhoud uitvoeren', + history: 'Geschiedenis', + noHistory: 'Geen onderhoudsgeschiedenis', + editPrintHours: 'Afdrukuren bewerken', + currentHours: 'Huidige uren', + // Tabs + statusTab: 'Status', + settingsTab: 'Instellingen', + // Status + overdueCount: '{{count}} te laat', + dueSoonCount: '{{count}} binnenkort te doen', + dueSoon: 'Binnenkort te doen', + allGood: 'Alles goed', + overdueBy: '{{duration}} te laat', + dueIn: 'Over {{duration}} te doen', + timeLeft: '{{duration}} resterend', + // Duration formats + day: '1 dag', + days: '{{count}} dagen', + week: '1 week', + weeks: '{{count}} weken', + month: '1 maand', + months: '{{count}} maanden', + year: '1 jaar', + // Settings + maintenanceTypes: 'Onderhoudstypen', + maintenanceTypesDescription: 'Systeemtaken en je aangepaste onderhoudstaken', + addCustomType: 'Aangepast type toevoegen', + restoreDefaults: 'Standaardtaken herstellen', + intervalType: 'Intervaltype', + intervalValue: 'Interval ({{type}})', + icon: 'Pictogram', + documentationLink: 'Documentatielink (optioneel)', + assignToPrinters: 'Aan printers toewijzen', + selectAtLeastOnePrinter: 'Selecteer minstens één printer', + addType: 'Type toevoegen', + custom: 'Aangepast', + printHours: 'Afdrukuren', + calendarDays: 'Kalenderdagen', + exampleName: 'bijv. HEPA-filter vervangen', + viewDocumentation: 'Documentatie bekijken', + timeBasedInterval: 'Tijdsgebaseerd interval', + // Interval overrides + intervalOverrides: 'Intervaloverschrijvingen', + intervalOverridesDescription: 'Intervallen aanpassen voor specifieke printers', + // Printer assignment + assignedToPrinters: 'Toegewezen aan printers:', + noPrintersAssigned: 'Geen printers toegewezen', + addPrinterShort: 'Toevoegen:', + printersAssignedClick: '{{count}} printer(s) toegewezen - klik om te beheren', + removeFromPrinter: 'Van deze printer verwijderen', + // Types + types: { + lubricateCarbonRods: 'Koolstofstaven smeren', + lubricateRails: 'Lineaire rails smeren', + cleanNozzle: 'Nozzle/hotend reinigen', + checkBelts: 'Riemspanning controleren', + cleanBuildPlate: 'Bouwplaat reinigen', + checkExtruder: 'Extrudertandwielen controleren', + checkCooling: 'Koelventilatoren controleren', + generalInspection: 'Algemene inspectie', + cleanCarbonRods: 'Koolstofstaven reinigen', + lubricateSteelRods: 'Stalen staven smeren', + cleanSteelRods: 'Stalen staven reinigen', + cleanLinearRails: 'Lineaire rails reinigen', + checkPtfeTube: 'PTFE-buis controleren', + replaceHepaFilter: 'HEPA-filter vervangen', + replaceCarbonFilter: 'Koolstoffilter vervangen', + lubricateLeftNozzleRail: 'Linker nozzle-rail smeren', + }, + // Toast + maintenanceComplete: 'Onderhoud als voltooid gemarkeerd', + typeUpdated: 'Onderhoudstype bijgewerkt', + typeDeleted: 'Onderhoudstype verwijderd', + defaultsRestored: '{{count}} standaardtaak/taken hersteld', + printHoursUpdated: 'Afdrukuren bijgewerkt', + printerAssigned: 'Printer toegewezen', + printerRemoved: 'Printer verwijderd', + // Confirmation + deleteTypeConfirm: '"{{name}}" verwijderen?', + deleteSystemTypeTitle: 'Standaard onderhoudstaak verwijderen?', + deleteSystemTypeMessage: 'Weet je zeker dat je de standaard onderhoudstaak "{{name}}" wilt verwijderen?', + // Permissions + noPermissionUpdate: 'Je hebt geen toestemming om onderhoudsitems bij te werken', + noPermissionPerform: 'Je hebt geen toestemming om onderhoud uit te voeren', + noPermissionEditTypes: 'Je hebt geen toestemming om onderhoudstypen te bewerken', + noPermissionDeleteTypes: 'Je hebt geen toestemming om onderhoudstypen te verwijderen', + noPermissionEditHours: 'Je hebt geen toestemming om afdrukuren te bewerken', + noPermissionRemovePrinter: 'Je hebt geen toestemming om printertoewijzingen te verwijderen', + noPermissionAssignPrinter: 'Je hebt geen toestemming om printers toe te wijzen', + noPermissionEditIntervals: 'Je hebt geen toestemming om intervallen te bewerken', + // Configure link + configureSettings: 'Onderhoudstypen en intervallen configureren', + }, + + // Settings page + settings: { + sliceEngine: 'Slice-engine', + sliceEngineSidecar: 'Server-sidecar', + sliceEngineSidecarHint: 'Slicen gebeurt op de server, in de slicer-sidecarcontainer.', + sliceEngineBrowser: 'In browser', + sliceEngineBrowserHint: 'Slicen gebeurt op dit apparaat, zonder tussenkomst van de server.', + title: 'Instellingen', + general: 'Algemeen', + // Tab names + tabs: { + general: 'Algemeen', + smartPlugs: 'Slimme stekkers', + sensors: 'Sensoren', + notifications: 'Meldingen', + queue: 'Workflow', + queueDispatch: 'Wachtrij en verzending', + queuePipelines: 'Pipelines', + filament: 'Filament', + network: 'Netwerk', + apiKeys: 'API-sleutels', + virtualPrinter: 'Virtuele printer', + spoolbuddy: 'SpoolBuddy', + failureDetection: 'Foutdetectie', + users: 'Authenticatie', + backup: 'Back-up', + emailAuth: 'E-mailauthenticatie', + ldap: 'LDAP', + twoFa: 'Tweefactorauthenticatie', + oidc: 'SSO / OIDC', + security: 'Beveiliging', + }, + spoolbuddy: { + infoTitle: 'SpoolBuddy-apparaten', + infoBody: 'SpoolBuddy-kiosken registreren zichzelf automatisch via heartbeat. Registreer een apparaat hier af als het niet meer wordt gebruikt of als een verouderde duplicaatregistratie is achtergebleven na een daemoncrash.', + duplicatesTitle: '{{count}} apparaten geregistreerd', + duplicatesBody: 'Alleen het eerst geregistreerde apparaat wordt gebruikt door de kioskinterface. Als een van deze apparaten een verouderd duplicaat na een crash is, registreer het dan af — een online apparaat registreert zichzelf opnieuw bij de volgende heartbeat.', + empty: 'Nog geen SpoolBuddy-apparaten geregistreerd.', + online: 'Online', + offline: 'Offline', + unregister: 'Registratie opheffen', + unregisterSuccess: 'Apparaat afgemeld', + unregisterError: 'Apparaat afmelden mislukt', + confirmTitle: 'SpoolBuddy-apparaat afmelden?', + confirmBody: 'Hiermee wordt "{{hostname}}" ({{deviceId}}) uit de database verwijderd. Als het apparaat online is, registreert het zichzelf opnieuw bij de volgende heartbeat.', + ipAddress: 'IP-adres', + firmware: 'Firmware', + lastSeen: 'Laatst gezien', + daemonUptime: 'Daemon-uptime', + systemUptime: 'Systeem-uptime', + never: 'nooit', + nfc: 'NFC', + scale: 'Weegschaal', + cpuTemp: 'CPU-temp.', + cpuLoad: 'CPU-belasting', + memory: 'Geheugen', + disk: 'Schijf', + // Device actions + update: 'Bijwerken', + updateConfirmTitle: 'SpoolBuddy-daemon bijwerken?', + updateConfirmBody: 'Een software-update starten op "{{hostname}}"? De daemon wordt opnieuw gestart zodra de update is toegepast.', + restartBrowser: 'Browser herstarten', + restartBrowserConfirmTitle: 'Kioskbrowser herstarten?', + restartBrowserConfirmBody: 'De kioskbrowser op "{{hostname}}" herstarten? Het scherm wordt kort zwart.', + restartDaemon: 'Daemon herstarten', + restartDaemonConfirmTitle: 'SpoolBuddy-daemon herstarten?', + restartDaemonConfirmBody: 'De SpoolBuddy-daemon op "{{hostname}}" herstarten? Het apparaat is enkele seconden offline.', + reboot: 'Opnieuw opstarten', + rebootConfirmTitle: 'Apparaat opnieuw opstarten?', + rebootConfirmBody: '"{{hostname}}" opnieuw opstarten? Het apparaat is ongeveer een minuut offline.', + shutdown: 'Afsluiten', + shutdownConfirmTitle: 'Apparaat afsluiten?', + shutdownConfirmBody: '"{{hostname}}" afsluiten? Je hebt fysieke toegang nodig om het weer in te schakelen.', + commandConfirm: 'Bevestigen', + commandQueued: 'Opdracht in wachtrij geplaatst', + commandError: 'Opdracht verzenden mislukt', + }, + // LDAP settings + ldap: { + title: 'LDAP-authenticatie', + enabledDesc: 'LDAP-authenticatie is ingeschakeld', + disabledDesc: 'LDAP-authenticatie is uitgeschakeld', + disabledHint: 'Configureer en sla de LDAP-instellingen hieronder op en schakel daarna in.', + enabled: 'LDAP-authenticatie ingeschakeld', + disabled: 'LDAP-authenticatie uitgeschakeld', + feature1: 'Gebruikers kunnen inloggen met LDAP-inloggegevens', + feature2: 'Lokaal beheerdersaccount blijft beschikbaar als terugvaloptie', + feature3: 'LDAP-groepen worden bij inloggen gekoppeld aan BamBuddy-groepen', + serverConfig: 'LDAP-serverconfiguratie', + serverUrl: 'Server-URL', + serverUrlHint: 'Gebruik ldaps:// voor SSL of ldap:// met StartTLS', + security: 'Beveiliging', + securityHint: 'StartTLS zet een gewone verbinding om naar TLS. LDAPS gebruikt TLS vanaf het begin.', + bindDn: 'Bind-DN (serviceaccount)', + bindPassword: 'Bind-wachtwoord', + searchBase: 'Zoekbasis-DN', + userFilter: 'Gebruikerszoekfilter', + userFilterHint: '{username} wordt vervangen door de inloggebruikersnaam. Gebruik (uid={username}) voor OpenLDAP.', + advanced: 'Geavanceerd', + autoProvision: 'Gebruikers automatisch aanmaken', + autoProvisionHint: 'Automatisch een BamBuddy-account maken bij de eerste LDAP-login', + defaultGroup: 'Standaardgroep', + defaultGroupNone: '— Geen (geen terugval) —', + defaultGroupHint: 'Terugvalgroep die wordt toegewezen wanneer een LDAP-gebruiker zich authenticeert maar niet voorkomt in een gekoppelde LDAP-groep. Laat leeg om niet-gekoppelde gebruikers zonder machtigingen te laten.', + groupMapping: 'Groepskoppeling (JSON)', + groupMappingHint: 'Koppel LDAP-groep-DN\'s aan BamBuddy-groepen. Beschikbare groepen: ', + testConnection: 'Verbinding testen', + settingsSaved: 'LDAP-instellingen opgeslagen', + errors: { + serverRequired: 'LDAP-server-URL is verplicht', + searchBaseRequired: 'Zoekbasis-DN is verplicht', + enableAuthFirst: 'Schakel authenticatie eerst in', + configureLdapFirst: 'Sla de LDAP-instellingen eerst op', + }, + }, + // Email settings + email: { + smtpSettings: 'SMTP-configuratie', + smtpHost: 'SMTP-server', + smtpPort: 'SMTP-poort', + security: 'Beveiliging', + authentication: 'Authenticatie', + username: 'Gebruikersnaam', + password: 'Wachtwoord', + fromEmail: 'Afzender-e-mail', + fromName: 'Afzendernaam', + testConnection: 'SMTP-verbinding testen', + testRecipient: 'E-mailadres testontvanger', + sendTest: 'Testmail verzenden', + sending: 'Verzenden...', + save: 'Instellingen opslaan', + saving: 'Opslaan...', + advancedAuth: 'Geavanceerde authenticatie', + advancedAuthEnabled: 'Geavanceerde authenticatie is ingeschakeld', + advancedAuthEnabledDesc: 'E-mailgebaseerde functies voor gebruikersbeheer zijn actief. Nieuwe gebruikers ontvangen automatisch gegenereerde wachtwoorden per e-mail en gebruikers kunnen hun wachtwoord resetten via de functie Wachtwoord vergeten.', + advancedAuthDisabled: 'Geavanceerde authenticatie is uitgeschakeld', + advancedAuthDisabledDesc: 'Schakel geavanceerde authenticatie in om e-mailgebaseerde functies voor gebruikersbeheer te activeren.', + enable: 'Inschakelen', + disable: 'Uitschakelen', + feature1: 'Wachtwoorden worden automatisch gegenereerd en naar nieuwe gebruikers gemaild', + feature2: 'Gebruikers kunnen inloggen met gebruikersnaam of e-mailadres', + feature3: 'De functie Wachtwoord vergeten is beschikbaar', + feature4: 'Beheerders kunnen gebruikerswachtwoorden via e-mail resetten', + // Error messages + errors: { + requiredFields: 'Vul alle verplichte velden in', + usernameRequired: 'Gebruikersnaam is verplicht wanneer authenticatie is ingeschakeld', + enterTestEmail: 'Voer een test-e-mailadres in', + smtpServerAndEmail: 'Vul SMTP-server en Afzender-e-mail in voordat je test', + usernamePasswordRequired: 'Gebruikersnaam en wachtwoord zijn verplicht wanneer authenticatie is ingeschakeld', + configureSmtpFirst: 'Configureer en test eerst de SMTP-instellingen', + enableAuthFirst: 'Schakel authenticatie eerst in om e-mailfuncties te gebruiken.', + }, + // Success messages + success: { + settingsSaved: 'SMTP-instellingen succesvol opgeslagen', + }, + // Security options + securityOptions: { + starttls: 'STARTTLS (poort 587)', + ssl: 'SSL/TLS (poort 465)', + none: 'Geen (poort 25)', + }, + // Authentication options + authOptions: { + enabled: 'Ingeschakeld', + disabled: 'Uitgeschakeld', + }, + }, + appearance: 'Uiterlijk', + notifications: 'Meldingen', + smartPlugs: 'Slimme stekkers', + spoolman: 'Spoolman', + updates: 'Updates', + language: 'Taal', + languageDescription: 'Selecteer je voorkeurstaal', + theme: 'Thema', + themeLight: 'Licht', + themeDark: 'Donker', + themeSystem: 'Systeem', + defaultView: 'Standaardweergave', + defaultViewDescription: 'Pagina die wordt getoond bij het openen van de app', + checkForUpdates: 'Controleren op updates', + autoUpdate: 'Automatisch bijwerken', + currentVersion: 'Huidige versie', + latestVersion: 'Nieuwste versie', + upToDate: 'Je bent up-to-date', + updateAvailable: 'Update beschikbaar', + // Notifications + notificationLanguage: 'Taal voor meldingen', + notificationLanguageDescription: 'Taal voor pushmeldingen', + bedCooledThreshold: 'Drempel voor afgekoeld bed', + bedCooledThresholdDescription: 'Temperatuur waaronder het bed na een afdruk als afgekoeld wordt beschouwd', + userNotificationsEnabled: 'Gebruikersmeldingen', + userNotificationsEnabledDescription: 'Schakel het gebruikersmeldingenmenu en e-mailmeldingen voor afdrukgebeurtenissen in. Vereist Geavanceerde authenticatie.', + userNotificationsDisabledHint: 'Schakel Geavanceerde authenticatie in om gebruikersmeldingen te gebruiken.', + notificationProviders: 'Meldingsproviders', + addProvider: 'Provider toevoegen', + editProvider: 'Provider bewerken', + providerType: 'Providertype', + testNotification: 'Testmelding', + testSuccess: 'Testmelding succesvol verzonden', + testFailed: 'Testmelding verzenden mislukt', + quietHours: 'Stille uren', + quietHoursDescription: 'Niet storen tijdens deze uren', + quietHoursStart: 'Start', + quietHoursEnd: 'Einde', + events: { + title: 'Meldingsgebeurtenissen', + printStart: 'Afdruk gestart', + printComplete: 'Afdruk voltooid', + printFailed: 'Afdruk mislukt', + printStopped: 'Afdruk gestopt', + printProgress: 'Voortgangsmijlpalen', + printProgressDescription: 'Melden bij 25%, 50%, 75%', + printerOffline: 'Printer offline', + printerError: 'Printerfout', + filamentLow: 'Weinig filament', + maintenanceDue: 'Onderhoud nodig', + maintenanceDueDescription: 'Melden wanneer onderhoud nodig is', + }, + // Smart Plugs + smartPlug: { + title: 'Slimme stekkers', + add: 'Slimme stekker toevoegen', + edit: 'Slimme stekker bewerken', + name: 'Naam', + ipAddress: 'IP-adres', + linkedPrinter: 'Gekoppelde printer', + autoOn: 'Automatisch inschakelen', + autoOnDescription: 'Inschakelen wanneer afdruk start', + autoOff: 'Automatisch uitschakelen', + autoOffDescription: 'Uitschakelen nadat afdruk is voltooid', + offDelay: 'Uitschakelvertraging', + offDelayMinutes: 'Minuten na afdruk', + offDelayTemp: 'Wanneer nozzle onder temperatuur is', + currentState: 'Huidige status', + turnOn: 'Inschakelen', + turnOff: 'Uitschakelen', + }, + // Filament Tracking Mode + filamentTracking: 'Filamenttracking', + filamentTrackingDesc: 'Kies hoe je filamentspoelen wilt bijhouden. Je kunt de ingebouwde voorraad gebruiken of een externe Spoolman-server koppelen.', + autoAddUnknownRfid: 'Onbekende RFID-spoelen automatisch toevoegen', + autoAddUnknownRfidDesc: 'Maak automatisch een voorraaditem wanneer een spoel met een onbekende RFID-tag wordt gedetecteerd. Schakel dit uit als je nieuwe spoelen handmatig vooraf registreert om duplicaten te voorkomen.', + filamentChecks: 'Filamentcontroles', + disableFilamentWarnings: 'Filamentwaarschuwingen uitschakelen', + disableFilamentWarningsDesc: 'Geen waarschuwingen tonen over onvoldoende filament bij afdrukken of in wachtrij plaatsen', + preferLowestFilament: 'Voorkeur voor laagste resterende hoeveelheid filament', + preferLowestFilamentDesc: 'Als meerdere spoelen overeenkomen, gebruik dan de spoel met de minste resterende hoeveelheid filament', + preferLowestFilamentBackupNote: 'Dit werkt alleen wanneer AMS Filament Backup op de printer is ingeschakeld — anders kan de printer niet overschakelen naar een tweede spoel wanneer de gekozen spoel leeg raakt.', + trackingModeBuiltIn: 'Ingebouwde voorraad', + trackingModeBuiltInDesc: 'Automatische RFID-koppeling en verbruikstracking inbegrepen', + trackingModeSpoolmanDesc: 'Externe filamentbeheerserver', + builtInFeatureRfid: 'Detecteert automatisch Bambu Lab RFID-spoelen in AMS', + builtInFeatureUsage: 'Houdt filamentverbruik per afdruk bij', + builtInFeatureCatalog: 'Spoelen, kleuren en K-factorprofielen beheren', + builtInFeatureThirdParty: 'Spoelen van derden kunnen aan voorraadspoelen worden toegewezen', + amsSyncButton: 'Gewichten synchroniseren vanuit AMS', + amsSyncTitle: 'Spoelgewichten synchroniseren vanuit AMS', + amsSyncMessage: 'Hiermee worden alle gewichten van voorraadspoelen overschreven met de huidige AMS remain%-waarden van verbonden printers. Gebruik dit om beschadigde gewichtsgegevens te herstellen. Printers moeten online zijn.', + amsSyncing: 'Synchroniseren...', + amsSyncSuccess: '{{synced}} spoel(en) gesynchroniseerd, {{skipped}} overgeslagen', + amsSyncError: 'Gewichten synchroniseren vanuit AMS mislukt', + spoolmanAmsSyncButton: 'Spoolman-gewichten synchroniseren vanuit AMS', + spoolmanAmsSyncTitle: 'Spoolman-spoelgewichten synchroniseren vanuit AMS', + spoolmanAmsSyncMessage: 'Hiermee worden alle Spoolman-spoelgewichten bijgewerkt op basis van de huidige AMS remain%-waarden van verbonden printers. Printers moeten online zijn.', + spoolmanAmsSyncing: 'Synchroniseren...', + spoolmanAmsSyncSuccess: '{{synced}} spoel(en) gesynchroniseerd, {{skipped}} overgeslagen', + spoolmanAmsSyncError: 'Spoolman-gewichten synchroniseren vanuit AMS mislukt', + spoolmanAmsSyncErrorUnreachable: 'Spoolman-gewichten synchroniseren mislukt (Spoolman niet bereikbaar)', + spoolmanAmsSyncErrorNotConfigured: 'Spoolman-gewichten synchroniseren mislukt (Spoolman niet geconfigureerd)', + spoolmanNotConfigured: 'Spoolman niet geconfigureerd', + // Spoolman filament catalog section in spool catalog settings + spoolmanFilamentCatalogTitle: 'Spoolman-filamentcatalogus', + spoolmanFilamentCatalogDesc: 'Filamentnamen en taragewichten uit je Spoolman-instantie. Naam en spoelgewicht zijn hier bewerkbaar; alle andere eigenschappen worden rechtstreeks in Spoolman beheerd.', + // Spoolman settings + spoolmanUrl: 'Spoolman-URL', + spoolmanUrlHint: 'URL van je Spoolman-server (bijv. http://localhost:7912)', + spoolmanConnected: 'Verbonden', + spoolmanDisconnected: 'Niet verbonden', + status: 'Status', + connect: 'Verbinden', + disconnect: 'Verbinding verbreken', + howSyncWorks: 'Hoe synchronisatie werkt', + syncInfoRfidOnly: 'Alleen officiële Bambu Lab-spoelen met RFID worden gesynchroniseerd', + syncInfoAutoCreate: 'Nieuwe spoelen worden bij de eerste synchronisatie automatisch in Spoolman aangemaakt', + syncInfoThirdPartySkipped: 'Niet-Bambu Lab-spoelen (derden, hervuld) worden overgeslagen', + linkingExistingSpools: 'Bestaande spoelen koppelen', + linkingExistingSpoolsDesc: 'Om bestaande Spoolman-spoelen aan je AMS te koppelen, beweeg je over een AMS-sleuf en klik je op "Koppelen aan Spoolman".', + syncMode: 'Synchronisatiemodus', + syncModeAuto: 'Automatisch', + syncModeManual: 'Alleen handmatig', + syncModeAutoDesc: 'AMS-gegevens worden automatisch gesynchroniseerd wanneer wijzigingen worden gedetecteerd', + syncModeManualDesc: 'Alleen synchroniseren wanneer handmatig gestart', + syncAmsData: 'AMS-gegevens synchroniseren', + syncAmsDataDesc: 'Printer-AMS-gegevens handmatig synchroniseren met Spoolman', + allPrinters: 'Alle printers', + // Default printer + noDefaultPrinter: 'Geen standaard (elke keer vragen)', + // Sidebar + sidebarOrder: 'Volgorde zijbalk', + // Camera + saveThumbnails: 'Miniaturen opslaan', + captureFinishPhoto: 'Eindfoto vastleggen', + noPrintersConfigured: 'Geen printers geconfigureerd', + // Archive settings + archiveMode: { + always: 'Altijd archiefitem maken', + never: 'Nooit archiefitem maken', + ask: 'Elke keer vragen', + }, + // Updates + checkForUpdatesLabel: 'Controleren op updates', + checkPrinterFirmware: 'Printerfirmware controleren', + includeBetaUpdates: 'Bètaversies opnemen', + includeBetaUpdatesDesc: 'Melden over bèta- en prereleaseversies bij controle op updates', + localLogin: { + disable: 'Lokale login met gebruikersnaam/wachtwoord uitschakelen', + disableHint: 'Wanneer ingeschakeld kunnen alleen SSO-providers inloggen. LDAP blijft onaangetast. Stel BAMBUDDY_LOCAL_LOGIN=true in op de server om een herstelmogelijkheid te behouden.', + }, + // Queue + enableRetry: 'Opnieuw proberen inschakelen', + // Home Assistant + homeAssistantDescription: 'Slimme stekkers bedienen via Home Assistant', + environmentManagedLabel: '(Omgevingsvariabele beheerd)', + autoEnabledViaEnv: 'Automatisch ingeschakeld via omgevingsvariabelen', + urlFromEnvReadOnly: 'Waarde ingesteld door omgevingsvariabele HA_URL (alleen-lezen)', + tokenFromEnvReadOnly: 'Waarde ingesteld door omgevingsvariabele HA_TOKEN (alleen-lezen)', + // MQTT + mqttConnectedTo: 'Verbonden met', + // Prometheus + prometheusDescription: 'Printergegevens beschikbaar stellen in Prometheus-formaat', + // Smart plugs empty state + noSmartPlugsTitle: 'Geen slimme stekkers geconfigureerd', + noSmartPlugsDescription: 'Voeg een slimme stekker op basis van Tasmota toe om energieverbruik te volgen en stroomregeling te automatiseren.', + // Notifications empty state + noProvidersTitle: 'Geen providers geconfigureerd', + noProvidersDescription: 'Voeg een provider toe om waarschuwingen te ontvangen.', + noTemplatesAvailable: 'Geen sjablonen beschikbaar. Start de backend opnieuw om standaardsjablonen aan te maken.', + // API permissions + apiPermissionView: 'Printerstatus en wachtrij bekijken', + apiPermissionEdit: 'Items toevoegen aan en verwijderen uit de afdrukwachtrij', + // API keys + apiKeysEmptyTitle: 'Geen API-sleutels', + apiKeysEmptyDescription: 'Maak een API-sleutel om te integreren met externe services.', + // Users + noUsersFound: 'Geen gebruikers gevonden', + noGroupsFound: 'Geen groepen gevonden', + noGroupsAvailable: 'Geen groepen beschikbaar', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + systemGroupWarning: 'Namen van systeemgroepen kunnen niet worden gewijzigd', + // Auth disabled + authDisabledTitle: 'Authenticatie is uitgeschakeld', + authDisabledFeature1: 'Login vereisen voor toegang tot het systeem', + authDisabledFeature2: 'Meerdere gebruikers maken met groepsgebaseerde machtigingen', + authDisabledFeature3: 'Toegang regelen met meer dan 50 gedetailleerde machtigingen', + // User deletion + userHasCreated: 'Deze gebruiker heeft gemaakt:', + userItemsQuestion: 'Wat wil je met deze items doen?', + deleteUserConfirm: 'Weet je zeker dat je deze gebruiker wilt verwijderen?', + actionCannotBeUndone: 'Deze actie kan niet ongedaan worden gemaakt.', + // Smart plugs + addFirstSmartPlug: 'Je eerste slimme stekker toevoegen', + // Notifications + providers: 'Providers', + log: 'Logboek', + testAll: 'Alles testen', + testResults: 'Testresultaten', + testPassedCount: '{{count}} geslaagd', + testFailedCount: '{{count}} mislukt', + messageTemplates: 'Berichtsjablonen', + messageTemplatesDescription: 'Meldingsberichten voor elke gebeurtenis aanpassen.', + // API Keys section + apiKeys: 'API-sleutels', + apiKeysDescription: 'API-sleutels maken voor externe integraties en webhooks.', + createKey: 'Sleutel maken', + apiKeyCreated: 'API-sleutel succesvol gemaakt', + apiKeyCopyWarning: 'Kopieer deze sleutel nu - hij wordt niet opnieuw getoond!', + useInApiBrowser: 'Gebruiken in API-browser', + apiKeyQrButton: 'QR-code', + apiKeyQrTitle: 'Scannen om te configureren', + apiKeyQrCaption: 'Scan met je mobiele app om deze server en API-sleutel toe te voegen.', + apiKeyQrWarning: 'Bevat je geheime API-sleutel — deel deze niet en maak geen screenshot waar anderen hem kunnen zien.', + createNewApiKey: 'Nieuwe API-sleutel maken', + keyName: 'Sleutelnaam', + keyNamePlaceholder: 'bijv. Home Assistant, OctoPrint', + readStatus: 'Status lezen', + readStatusDescription: 'Printerstatus, wachtrij, bibliotheek, archieven en slicerpipelines bekijken', + manageQueue: 'Wachtrij beheren', + manageQueueDescription: 'Items toevoegen aan en verwijderen uit de afdrukwachtrij. Met Bibliotheek beheren kun je slicerpipelines uitvoeren', + controlPrinter: 'Printer bedienen', + controlPrinterDescription: 'Afdrukken pauzeren, hervatten en stoppen', + manageLibrary: 'Bibliotheek beheren', + manageLibraryDescription: 'Bibliotheekbestanden uploaden, hernoemen, verwijderen en slicen; modellen importeren uit MakerWorld. Met Wachtrij beheren kun je slicerpipelines uitvoeren', + manageInventory: 'Voorraad beheren', + manageInventoryDescription: 'Spoelen en voorraadrecords maken, bijwerken en verwijderen. Vereist voor SpoolBuddy-kiosken (NFC-scan, weegschaalmetingen, kiosksysteemopdrachten).', + manageMaintenance: 'Onderhoud beheren', + manageMaintenanceDescription: 'Voltooid onderhoud registreren, tellers resetten, intervallen bewerken en de catalogus met onderhoudstypen beheren. Geschikt voor Home Assistant-automatiseringen die bijvoorbeeld registreren "Ik heb de nozzle gereinigd" zonder bredere printerbediening toe te staan.', + manageArchives: 'Archieven beheren', + manageArchivesDescription: 'Afdrukarchieven bewerken en verwijderen, inclusief oude afdrukken en hun bijdrage aan statistieken. Geschikt voor automatiseringen die de afdrukgeschiedenis opschonen.', + manageProjects: 'Projecten beheren', + manageProjectsDescription: 'Projecten maken, bijwerken en verwijderen en archieven eraan toevoegen. Geschikt voor automatiseringen die afdrukken in projecten organiseren.', + libraryBadge: 'Bibliotheek', + inventoryBadge: 'Voorraad', + maintenanceBadge: 'Onderhoud', + archivesBadge: 'Archieven', + projectsBadge: 'Projecten', + cloudAccess: 'Cloudtoegang toestaan', + cloudAccessDescription: 'Bambu Cloud-presets en filamenten namens jou lezen. Vereist dat je bent ingelogd bij Bambu Cloud.', + cloudBadge: 'Cloud', + updateEnergyCost: 'Elektriciteitsprijs bijwerken', + updateEnergyCostDescription: 'Sta toe dat deze sleutel via POST een nieuwe elektriciteitsprijs per kWh naar /settings/electricity-price stuurt. Handig voor Home Assistant-automatiseringen met dynamische tarieven (Tibber, Octopus, enz.). Dit is het enige instellingenveld dat via een API-sleutel schrijfbaar is.', + energyCostBadge: 'Energie', + legacyKey: 'Verouderd', + legacyKeyTooltip: 'Aangemaakt vóór eigendom per gebruiker; maak opnieuw om cloudtoegang te gebruiken', + unnamedKey: 'Naamloze sleutel', + lastUsed: 'Laatst gebruikt', + read: 'Lezen', + control: 'Bedienen', + createFirstKey: 'Je eerste sleutel maken', + webhookEndpoints: 'Webhook-eindpunten', + webhookApiKeyHint: 'Gebruik je API-sleutel in de X-API-Key-header.', + webhook: { + getAllStatus: 'Status van alle printers ophalen', + getSpecificStatus: 'Status van specifieke printer ophalen', + addToQueue: 'Toevoegen aan afdrukwachtrij', + pausePrint: 'Afdruk pauzeren', + resumePrint: 'Afdruk hervatten', + stopPrint: 'Afdruk stoppen', + }, + apiBrowser: 'API-browser', + apiBrowserDescription: 'Alle beschikbare API-eindpunten verkennen en testen.', + apiKeyForTesting: 'API-sleutel voor testen', + apiKeyPlaceholder: 'Plak hier je API-sleutel om geauthenticeerde eindpunten te testen...', + apiKeyHint: 'Deze sleutel wordt als X-API-Key-header met verzoeken meegestuurd.', + deleteApiKeyTitle: 'API-sleutel verwijderen', + deleteApiKeyMessage: 'Weet je zeker dat je deze API-sleutel wilt verwijderen? Integraties die deze sleutel gebruiken stoppen dan met werken.', + deleteKey: 'Sleutel verwijderen', + // Filament tab + amsDisplayThresholds: 'AMS-weergavedrempels', + amsThresholdsDescription: 'Kleurdrempels voor AMS-indicatoren voor luchtvochtigheid en temperatuur configureren.', + humidity: 'Luchtvochtigheid', + goodGreen: 'Goed (groen)', + fairOrange: 'Redelijk (oranje)', + aboveFairBad: 'Boven de redelijke drempel wordt rood (slecht) weergegeven', + fairAlsoDryingThreshold: 'Deze drempel wordt ook gebruikt om automatisch drogen te starten wanneer dit is ingeschakeld', + fairBelowDryingFloor: 'Automatisch drogen kan deze waarde niet bereiken: een AMS leest {{floor}}% of hoger terwijl de verwarming draait, waardoor elke cyclus direct zou eindigen en opnieuw starten. Verhoog dit tot boven {{floor}}% als automatisch drogen is ingeschakeld.', + temperature: 'Temperatuur', + goodBlue: 'Goed (blauw)', + aboveFairHot: 'Boven de redelijke drempel wordt rood (heet) weergegeven', + tempAlarmThreshold: 'Alarm boven', + tempAlarmSeparateFromBand: 'Alleen de alarmdrempel verstuurt meldingen — Goed en Redelijk kleuren de weergave. Laat het leeg om te alarmeren bij de drempel Redelijk, zoals voorheen.', + tempAlarmMustBePositive: 'Een drempel van 0 of lager wordt genegeerd — het alarm valt terug op de drempel Redelijk.', + historyRetention: 'Bewaartermijn geschiedenis', + keepSensorHistory: 'Sensorgeschiedenis bewaren gedurende', + historyRetentionDescription: 'Oudere gegevens over luchtvochtigheid en temperatuur worden automatisch verwijderd', + defaultPrintOptions: 'Standaard afdrukopties', + defaultPrintOptionsDescription: 'Stel standaardwaarden in voor afdrukopties bij het starten van nieuwe afdrukken. Deze kunnen per afdruk in het afdrukdialoogvenster worden overschreven.', + defaultBedLevelling: 'Bednivellering', + defaultBedLevellingDesc: 'Bed automatisch nivelleren voor afdruk', + defaultFlowCali: 'Flowkalibratie', + defaultFlowCaliDesc: 'Extrusieflow kalibreren', + defaultVibrationCali: 'Trillingskalibratie', + defaultVibrationCaliDesc: 'Ringing-artefacten verminderen', + defaultLayerInspect: 'Inspectie eerste laag', + defaultLayerInspectDesc: 'AI-inspectie van de eerste laag', + defaultTimelapse: 'Timelapse', + defaultTimelapseDesc: 'Timelapsevideo opnemen', + defaultNozzleOffsetCali: 'Nozzle-offsetkalibratie', + defaultNozzleOffsetCaliDesc: 'Nozzle-offsets tussen extruders kalibreren', + tempFanPresetsTitle: 'Voorinstellingen temperatuur en ventilator', + tempFanPresetsDescription: 'Pas de snelkeuzewaarden aan die worden weergegeven in pop-overs voor temperatuur en ventilatorsnelheid op printerkaarten. De knop Uit wordt altijd weergegeven.', + tempFanPresetsNozzle: 'Nozzletemperatuur', + tempFanPresetsBed: 'Bedtemperatuur', + tempFanPresetsChamber: 'Kamertemperatuur', + tempFanPresetsFan: 'Ventilatorsnelheid', + tempFanPresetsReset: 'Standaardwaarden herstellen', + concurrentUploadsTitle: 'Gelijktijdige uploads', + concurrentUploadsDescription: 'Hoeveel printers de wachtrij tegelijk bestanden mag sturen. Printers ontvangen bestanden langzaam (een grote afdruk kan enkele minuten duren) en elke printer wacht op zijn beurt — bij een groter printerpark voorkomt een hogere waarde dat de laatste printer in een batch op alle eerdere overdrachten moet wachten. Verlaag dit als je netwerk of Bambuddy-host moeite heeft met parallelle overdrachten.', + concurrentUploadsLabel: 'Printers tegelijk uploaden', + concurrentUploadsHelp: '1 verstuurt naar één printer tegelijk (het oude gedrag). Standaard is 4.', + staggeredStart: 'Gespreide start', + staggeredStartDescription: 'Standaard groepsgrootte en interval bij gespreid starten van batches over meerdere printers. Kan per batch in het afdrukvenster worden overschreven.', + preheatTitle: 'Voorverwarmen en warmtestabilisatie', + preheatDescription: 'Verwarm het bed (en de kamer, indien ondersteund) en houd de temperatuur vast voordat elke afdruk uit de wachtrij start. Handig voor technische filamenten (PA, ABS) op printers zonder actieve kamerverwarming — het bed verwarmt de kamer via straling terwijl de stabilisatietimer loopt. Het beddoel wordt uit het afdrukbestand gelezen; kamerwerking hangt af van het printermodel.', + preheatEnabled: 'Voorverwarmen en stabiliseren inschakelen', + preheatEnabledDesc: 'Wanneer uitgeschakeld worden afdrukken uit de wachtrij direct verzonden. Elk wachtrij-item kan dit per afdruk overschrijven.', + preheatFilamentTargetsLabel: 'Kamerdoel per filament (°C)', + preheatFilamentTargetsHint: 'Bambuddy kiest het hoogste doel van de geladen AMS-sleuven; afdrukken met alleen PLA krijgen 0 en slaan de kamerfase automatisch over.', + preheatFilamentTargetsReset: 'Standaardwaarden herstellen', + preheatFilamentTargetsDefaultRow: 'Overig / niet gekoppeld', + preheatMaxWait: 'Max. wachttijd (seconden)', + preheatMaxWaitHelp: 'Maximale duur van de opwarmfase van de kamer voordat wordt doorgegaan.', + preheatSoak: 'Stabiliseren (seconden)', + preheatSoakHelp: 'Wachttijd nadat het doel is bereikt of de maximale wachttijd is verstreken.', + preheatHardwareTitle: 'Gedrag per printer:', + preheatHardwareDetail: 'H2C/H2D/H2D Pro/H2S/X2D/X1E verwarmen de kamer actief via M141. X1C/P2S lezen de kamertemperatuur maar vertrouwen op stralingswarmte van het bed. P1S/P1P/A1/A1 Mini hebben geen kamersensor — alleen de stabilisatietimer is van toepassing.', + preheatPerItemDesc: 'Verwarm bed en kamer voordat deze afdruk start. Standaard wordt de globale schakelaar Instellingen → Workflow gebruikt.', + preheatOverride_inherit: 'Overnemen', + preheatOverride_on: 'Aan', + preheatOverride_off: 'Uit', + calibrationMode_off: 'Uit', + calibrationMode_on: 'Aan', + calibrationMode_auto: 'Auto', + preheatTargetOverride: 'Kamerdoel overschrijven (°C, leeg = filamentstandaard)', + plateClear: 'Bevestiging plaat vrij', + requirePlateClear: 'Bevestiging vereisen dat plaat vrij is', + requirePlateClearDescription: 'Wanneer ingeschakeld wacht de scheduler op een bevestiging per printer dat de plaat vrij is voordat afdrukken uit de wachtrij starten op printers met voltooide taken. Als je dit uitschakelt, worden ook de plaatstatusbadge en de knop "Plaat als leeg markeren" op printerkaarten verborgen.', + keepBedWarm: 'Bed warm houden tussen afdrukken', + keepBedWarmDesc: 'Tijdens het wachten op het vrijgeven van de plaat wordt het bed op de onderstaande warmhoudtemperatuur gehouden zodat de kamer warm blijft — of op de eigen bedtemperatuur van de volgende afdruk als die hoger is. Alleen van toepassing wanneer de volgende afdruk kamerverwarming nodig heeft (ASA, ABS, PA, PC enz.). Vereist dat bevestiging plaat vrij is ingeschakeld.', + keepWarmBedTemp: 'Warmhoudtemperatuur bed (°C)', + keepWarmBedTempHelp: 'Wordt gebruikt wanneer het bed de kamer moet verwarmen — tijdens warmhouden en bij voorverwarmen wanneer het afdrukbestand geen bedtemperatuur bevat. Een hogere bedtemperatuur uit het afdrukbestand heeft altijd voorrang.', + keepWarmMaxMinutes: 'Warmhouden stoppen na (minuten)', + keepWarmMaxMinutesHelp: 'Als de plaat binnen deze tijd niet is vrijgegeven, worden de verwarmingselementen uitgeschakeld in plaats van onbeperkt warm gehouden.', + gcodeInjection: 'G-code-injectie', + gcodeInjectionDescription: 'Configureer aangepaste G-code die aan het begin en/of einde van afdrukken wordt ingevoegd voor automatische afdruksystemen zoals Farmloop, SwapMod, AutoClear en Printflow 3D. Fragmenten worden per printermodel ingesteld en toegepast wanneer "G-code injecteren" is ingeschakeld op een wachtrij-item.', + gcodeInjectionNoPrinters: 'Geen printers gevonden. Voeg printers toe om G-codefragmenten te configureren.', + gcodeStartLabel: 'Start-G-code', + gcodeEndLabel: 'Eind-G-code', + gcodeStartPlaceholder: 'G-code die vóór de start van de afdruk wordt toegevoegd...', + gcodeEndPlaceholder: 'G-code die na afloop van de afdruk wordt toegevoegd...', + staggerGroupSize: 'Groepsgrootte', + staggerGroupSizeHelp: 'Aantal printers dat per groep gelijktijdig start', + staggerInterval: 'Interval (minuten)', + staggerIntervalHelp: 'Vertraging tussen het starten van elke groep', + queueDrying: 'Automatisch drogen in wachtrij', + queueDryingDescription: 'Droog AMS-filament automatisch wanneer de printer tussen afdrukken in de wachtrij inactief is. Gebruikt de bovenstaande luchtvochtigheidsdrempel om het drogen te starten.', + queueDryingEnabled: 'Automatisch drogen inschakelen', + queueDryingEnabledDescription: 'Start AMS-drogen automatisch wanneer de printer inactief is en de luchtvochtigheid boven de drempel ligt', + queueDryingBlock: 'Wachten tot drogen is voltooid', + queueDryingBlockDescription: 'Blokkeer de afdrukwachtrij tot het drogen is voltooid. Wanneer uitgeschakeld hebben afdrukken voorrang op drogen.', + ambientDryingEnabled: 'Drogen zonder wachtrij', + ambientDryingEnabledDescription: 'Droog filament automatisch op inactieve printers wanneer de luchtvochtigheid boven de drempel komt, ook zonder afdrukken in de wachtrij.', + printDryingEnabled: 'Doorgaan met drogen tijdens afdrukken', + printDryingEnabledDescription: 'Sta toe dat automatisch drogen tijdens een afdruk blijft draaien op ondersteunde hardware (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L met recente firmware). De droogtemperatuur wordt automatisch begrensd op 5°C onder de inactieve preset om spoelen te beschermen.', + dryingPresets: 'Droogpresets', + dryingPresetsDescription: 'Temperatuur en duur per filamenttype. AMS 2 Pro gebruikt lagere temperaturen, AMS-HT ondersteunt hogere temperaturen.', + dryingFilament: 'Filament', + humidityThresholds: 'Luchtvochtigheidsdrempels', + humidityThresholdsDescription: 'Luchtvochtigheidsdrempel per filament voor automatisch drogen en alarmen. Bij gemengde lading in één AMS wordt de laagste drempel gebruikt.', + humidityThresholdCol: 'Drempel', + humidityThresholdDefault: 'Standaard (onbekende typen)', + printModal: 'Afdrukvenster', + expandCustomMapping: 'Aangepaste toewijzing standaard uitklappen', + expandCustomMappingDescription: 'Bij afdrukken naar meerdere printers de AMS-toewijzing per printer uitgeklapt tonen', + // User management + authentication: 'Authenticatie', + authEnabledDescription: 'Je instantie is beveiligd met gebruikersauthenticatie', + authDisabledDescription: 'Schakel in om inloggen te vereisen en gebruikerstoegang te beheren', + authDisabledMessage: 'Schakel authenticatie in om gebruikersaccounts te maken, machtigingen te beheren en je Bambuddy-instantie te beveiligen.', + enableAuthentication: 'Authenticatie inschakelen', + currentUser: 'Huidige gebruiker', + changePassword: 'Wachtwoord wijzigen', + admin: 'Beheerder', + users: 'Gebruikers', + addUser: 'Gebruiker toevoegen', + groups: 'Groepen', + addGroup: 'Groep toevoegen', + system: 'Systeem', + noDescription: 'Geen beschrijving', + userCount: '{{count}} gebruikers', + permissionCount: '{{count}} machtigingen', + createUser: 'Gebruiker maken', + username: 'Gebruikersnaam', + enterUsername: 'Voer gebruikersnaam in', + password: 'Wachtwoord', + enterPassword: 'Voer wachtwoord in', + passwordRequirements: 'Minstens 8 tekens, met één hoofdletter, één kleine letter, één cijfer en één speciaal teken.', + confirmPassword: 'Wachtwoord bevestigen', + confirmPasswordPlaceholder: 'Bevestig wachtwoord', + // Title tooltips + viewReleaseOnGitHub: 'Release bekijken op GitHub', + turnAllPlugsOn: 'Alle stekkers inschakelen', + turnAllPlugsOff: 'Alle stekkers uitschakelen', + // Modal: Clear logs + clearNotificationLogs: 'Meldingslogboeken wissen', + clearLogsMessage: 'Hiermee worden alle meldingslogboeken ouder dan 30 dagen permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt.', + clearLogs: 'Logboeken wissen', + // Modal: Reset UI + resetUiPreferences: 'UI-voorkeuren resetten', + resetUiPreferencesMessage: 'Hiermee worden alle UI-voorkeuren teruggezet naar de standaardwaarden: volgorde zijbalk, thema, dashboardindeling, weergavemodi en sorteervoorkeuren. Je printers, archieven en serverinstellingen worden NIET beïnvloed. De pagina wordt na het wissen opnieuw geladen.', + resetPreferences: 'Voorkeuren resetten', + // Modal: Delete group + deleteGroupTitle: 'Groep verwijderen', + deleteGroupMessage: 'Weet je zeker dat je deze groep wilt verwijderen? Gebruikers in deze groep verliezen deze machtigingen.', + deleteGroup: 'Groep verwijderen', + // Modal: Disable auth + disableAuthenticationTitle: 'Authenticatie uitschakelen', + disableAuthenticationMessage: 'Weet je zeker dat je authenticatie wilt uitschakelen? Hierdoor wordt je Bambuddy-instantie toegankelijk zonder login. Alle gebruikers blijven in de database, maar authenticatie wordt uitgeschakeld.', + disableAuthentication: 'Authenticatie uitschakelen', + // Additional settings + configureBambuddy: 'Bambuddy configureren', + systemDefault: 'Systeemstandaard', + archiveSettings: 'Archiefinstellingen', + newWindow: 'Nieuw venster', + embeddedOverlay: 'Ingebedde overlay', + preferredSlicer: 'Voorkeursslicer', + preferredSlicerDescription: 'Slicer die wordt gebruikt voor slicen in de app via de API-sidecar', + openInSlicerLabel: 'Openen in slicer', + openInSlicerInherit: 'Zelfde als API-slicer', + openInSlicerDescription: 'Desktop-slicer die wordt gebruikt door de knop \'Openen in slicer\'. Laat op \'Zelfde als API-slicer\' staan om deze over te nemen, of kies een andere slicer voor lokaal gebruik.', + orcaslicerKnownIssuesWarning: 'OrcaSlicer 2.3.2 / 2.4.0-dev heeft bekende CLI-bugs die het slicen van veel door Bambu gemaakte 3MF\'s blokkeren — zie upstream issues #12426 (segfault bij gekleurde multi-extruderbestanden) en #13386 (afwijzing door strikte validatie van parameterbereik). Bambu Studio wordt aanbevolen tot de upstream fixes beschikbaar zijn.', + useSlicerApi: 'Slicer-API gebruiken', + useSlicerApiDescription: 'Wanneer ingeschakeld openen acties "Slicen" het slicervenster in de app en roepen ze de slicer-API-sidecar aan. Wanneer uitgeschakeld (standaard) worden ze via een URI-schema aan de desktopslicer doorgegeven.', + slicerCard: 'Slicer', + orcaslicerApiUrl: 'OrcaSlicer-sidecar-URL', + bambuStudioApiUrl: 'Bambu Studio-sidecar-URL', + slicerStallTimeout: 'Time-out slicerstagnatie (minuten)', + slicerStallTimeoutDescription: 'Stop een slice na deze tijd als er geen voortgang van de sidecar is. Zware modellen die voortgang blijven melden worden nooit afgebroken, hoe lang ze ook duren. Sidecars die geen voortgang melden gebruiken dit in plaats daarvan als totale tijdslimiet.', + slicerApiUrlDescription: 'URL van de slicer-API-sidecarcontainer. Laat leeg om de standaardwaarden van de omgevingsvariabelen SLICER_API_URL / BAMBU_STUDIO_API_URL te gebruiken.', + externalCameras: 'Externe camera\'s', + costTracking: 'Kostentracking', + billingEnabled: 'Facturering inschakelen', + billingEnabledDescription: 'Gebruikers kosten voor afdrukken in rekening brengen en financiële functies inschakelen', + printerKillSwitch: 'Noodstop ongeautoriseerde afdruk', + printerKillSwitchDescription: 'Stop afdrukken direct wanneer ze zonder autorisatie starten.', + financeBudgetReset: 'Maandelijkse reset financieel budget', + financeBudgetResetDay: 'Resetdag', + financeBudgetResetDayHelp: 'Voor korte maanden wordt op de laatste dag van de maand gereset.', + financeBudgetResetTimezone: 'Tijdzone voor reset', + financeBudgetResetTimezoneHelp: 'Start van budgetperiode wordt in deze tijdzone berekend.")', + rebuildLedger: 'Portemonnee-grootboek opnieuw opbouwen', + rebuildLedgerStarted: 'Opnieuw opbouwen van grootboek gestart', + rebuildLedgerConfirmTitle: 'Portemonnee-grootboek opnieuw opbouwen?', + rebuildLedgerConfirmMessage: + 'Hiermee wordt het portemonnee-grootboek opnieuw opgebouwd om historische saldowaarden te herstellen. Voer dit alleen uit als je weet wat je doet.', + rebuildLedgerInProgress: 'Opnieuw opbouwen starten...', + printsOnly: 'Alleen afdrukken', + totalConsumption: 'Totaal verbruik', + dataManagement: 'Gegevensbeheer', + storageUsage: 'Opslaggebruik', + storageUsageDescription: 'Verdeling van gegevensgebruik per categorie', + storageUsageTotal: 'Totaal', + storageUsageErrors: 'Fouten', + storageUsageOtherBreakdown: 'Overig (inclusief statische assets, scripts en configuratiebestanden)', + storageUsageSystem: 'Systeem', + storageUsageData: 'Gegevens', + storageUsageUnavailable: 'Informatie over opslaggebruik niet beschikbaar', + clearNotificationLogsDescription: 'Meldingslogboeken ouder dan 30 dagen verwijderen', + resetUiPreferencesDescription: 'Reset volgorde zijbalk, thema, weergavemodi en indelingsvoorkeuren. Printers, archieven en instellingen worden niet beïnvloed.', + enableHomeAssistant: 'Home Assistant inschakelen', + enableMqtt: 'MQTT inschakelen', + useTls: 'TLS gebruiken', + enableMetricsEndpoint: 'Metrics-eindpunt inschakelen', + availableMetrics: 'Beschikbare metrics', + editUser: 'Gebruiker bewerken', + deleteUserTitle: 'Gebruiker verwijderen', + groupName: 'Groepsnaam', + // Placeholders + leaveEmptyForAnonymous: 'Laat leeg voor anoniem', + leaveEmptyForNoAuth: 'Laat leeg voor geen authenticatie', + enterNewPassword: 'Voer nieuw wachtwoord in', + confirmNewPassword: 'Bevestig nieuw wachtwoord', + enterGroupName: 'Voer groepsnaam in', + enterDescriptionOptional: 'Voer beschrijving in (optioneel)', + enterCurrentPassword: 'Voer huidig wachtwoord in', + enterNewPasswordMin6: 'Voer nieuw wachtwoord in (min. 6 tekens)', + toast: { + keyCopied: 'Sleutel naar klembord gekopieerd', + copyFailed: 'Sleutel kopiëren mislukt', + keyAddedToBrowser: 'Sleutel toegevoegd aan API-browser', + clearLogsFailed: 'Logboeken wissen mislukt', + uiPreferencesReset: 'UI-voorkeuren gereset. Vernieuwen...', + authDisabled: 'Authenticatie succesvol uitgeschakeld', + authDisableFailed: 'Authenticatie uitschakelen mislukt', + apiKeyCreated: 'API-sleutel gemaakt', + apiKeyDeleted: 'API-sleutel verwijderd', + userCreated: 'Gebruiker succesvol gemaakt', + userUpdated: 'Gebruiker succesvol bijgewerkt', + userDeleted: 'Gebruiker succesvol verwijderd', + groupCreated: 'Groep succesvol gemaakt', + groupUpdated: 'Groep succesvol bijgewerkt', + groupDeleted: 'Groep succesvol verwijderd', + fillRequiredFields: 'Vul alle verplichte velden in', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + passwordTooShort: 'Wachtwoord moet minstens 8 tekens bevatten', + passwordNeedsUppercase: 'Wachtwoord moet minstens één hoofdletter bevatten', + passwordNeedsLowercase: 'Wachtwoord moet minstens één kleine letter bevatten', + passwordNeedsDigit: 'Wachtwoord moet minstens één cijfer bevatten', + passwordNeedsSpecial: 'Wachtwoord moet minstens één speciaal teken bevatten', + enterGroupName: 'Voer een groepsnaam in', + settingsSaved: 'Instellingen opgeslagen', + noPermissionUpdate: 'Je hebt geen toestemming om instellingen te wijzigen', + cameraSettingsSaved: 'Camera-instellingen opgeslagen', + enterCameraUrl: 'Voer een camera-URL in', + passwordChanged: 'Wachtwoord succesvol gewijzigd', + connectionFailed: 'Verbinding mislukt', + testFailed: 'Test mislukt', + cameraConnected: 'Camera verbonden{{resolution}}', + cameraConnectedCoalesced: 'Camera verbonden{{resolution}} (gedeeld met een opname die al draait)', + }, + testConnection: 'Verbinding testen', + catalog: { + spoolCatalog: 'Spoelcatalogus', + spoolCatalogDescription: 'Lege spoelgewichten per merk/type. Gebruikt voor automatisch opzoeken van gewicht bij het toevoegen van spoelen.', + searchCatalog: 'Catalogus zoeken...', + addNewEntry: 'Nieuw item toevoegen', + namePlaceholder: 'Naam (bijv. Bambu Lab - Plastic)', + weight: 'Gewicht', + type: 'Type', + default: 'Standaard', + custom: 'Aangepast', + noMatch: 'Geen items komen overeen met je zoekopdracht', + empty: 'Geen items in catalogus', + deleteEntry: 'Item verwijderen', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen?', + resetCatalog: 'Catalogus resetten', + resetConfirm: 'Catalogus terugzetten naar standaardwaarden? Hiermee worden alle aangepaste items verwijderd.', + loadFailed: 'Spoelcatalogus laden mislukt', + nameWeightRequired: 'Naam en gewicht zijn verplicht', + entryAdded: 'Item toegevoegd', + addFailed: 'Item toevoegen mislukt', + entryUpdated: 'Item bijgewerkt', + updateFailed: 'Item bijwerken mislukt', + entryDeleted: 'Item verwijderd', + deleteFailed: 'Item verwijderen mislukt', + resetSuccess: 'Catalogus teruggezet naar standaardwaarden', + resetFailed: 'Catalogus resetten mislukt', + exported: '{{count}} items geëxporteerd', + imported: '{{added}} items geïmporteerd ({{skipped}} overgeslagen)', + importFailed: 'Importeren mislukt: ongeldig JSON-formaat', + exportTooltip: 'Catalogus exporteren naar JSON', + importTooltip: 'Catalogus importeren uit JSON', + resetTooltip: 'Standaardwaarden herstellen', + selectedCount: '{{count}} geselecteerd', + deleteSelected: 'Geselecteerde verwijderen', + bulkDeleteConfirm: 'Weet je zeker dat je {{count}} items wilt verwijderen?', + bulkDeleted: '{{count}} items verwijderd', + bulkDeleteFailed: 'Items verwijderen mislukt', + material: 'Materiaal', + spoolWeight: 'Spoelgewicht', + color: 'Kleur', + updateSpoolWeight: 'Spoelgewicht bijwerken', + filamentUpdated: 'Filament bijgewerkt', + filamentUpdateFailed: 'Filament bijwerken mislukt', + filamentUpdateInvalid: 'Ongeldige filamentgegevens', + keepExistingSpoolWeight: 'Oud gewicht behouden voor bestaande spoelen', + keepExistingSpoolWeightDesc: 'Spoelen die al met dit filamenttype zijn gemaakt behouden het oude taragewicht. Nieuwe spoelen gebruiken de bijgewerkte waarde.', + applyToAllSpools: 'Toepassen op alle spoelen', + applyToAllSpoolsDesc: 'Alle gewichtsberekeningen voor dit filamenttype gebruiken direct het nieuwe taragewicht.', + }, + colorCatalog: { + title: 'Kleurcatalogus', + description: 'Filamentkleuren per fabrikant/materiaal. Gebruikt voor automatisch opzoeken van kleur bij het toevoegen van spoelen.', + searchColors: 'Kleuren zoeken...', + allManufacturers: 'Alle fabrikanten', + addNewColor: 'Nieuwe kleur toevoegen', + manufacturer: 'Fabrikant', + colorName: 'Kleurnaam', + hex: 'Hex', + materialOptional: 'Materiaal (optioneel)', + showing: '{{filtered}} van {{total}} kleuren weergegeven', + noMatch: 'Geen kleuren komen overeen met je zoekopdracht', + empty: 'Geen kleuren in catalogus', + deleteColor: 'Kleur verwijderen', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen?', + resetCatalog: 'Kleurcatalogus resetten', + resetConfirm: 'Catalogus terugzetten naar standaardwaarden? Hiermee worden alle aangepaste kleuren verwijderd.', + sync: 'Synchroniseren', + starting: 'Starten...', + syncTooltip: 'Synchroniseren vanaf FilamentColors.xyz (2000+ kleuren, kan een minuut duren)', + loadFailed: 'Kleurcatalogus laden mislukt', + fieldsRequired: 'Fabrikant, kleurnaam en hexkleur zijn verplicht', + colorAdded: 'Kleur toegevoegd', + addFailed: 'Kleur toevoegen mislukt', + colorUpdated: 'Kleur bijgewerkt', + updateFailed: 'Kleur bijwerken mislukt', + colorDeleted: 'Kleur verwijderd', + deleteFailed: 'Kleur verwijderen mislukt', + resetSuccess: 'Kleurcatalogus teruggezet naar standaardwaarden', + resetFailed: 'Catalogus resetten mislukt', + syncUpToDate: 'Al up-to-date ({{count}} kleuren gecontroleerd)', + syncComplete: '{{added}} nieuwe kleuren toegevoegd ({{skipped}} bestonden al)', + syncError: 'Synchronisatiefout', + syncFailed: 'Synchroniseren vanaf FilamentColors.xyz mislukt', + exported: '{{count}} kleuren geëxporteerd', + imported: '{{added}} kleuren geïmporteerd ({{skipped}} overgeslagen)', + importFailed: 'Importeren mislukt: ongeldig JSON-formaat', + selectedCount: '{{count}} geselecteerd', + deleteSelected: 'Geselecteerde verwijderen', + bulkDeleteConfirm: 'Weet je zeker dat je {{count}} kleuren wilt verwijderen?', + bulkDeleted: '{{count}} kleuren verwijderd', + bulkDeleteFailed: 'Kleuren verwijderen mislukt', + }, + // General tab + dateFormat: 'Datumnotatie', + dateFormatUs: 'VS (MM/DD/JJJJ)', + dateFormatEu: 'EU (DD/MM/JJJJ)', + dateFormatIso: 'ISO (JJJJ-MM-DD)', + timeFormat: 'Tijdnotatie', + timeFormat12: '12-uurs (3:30 PM)', + timeFormat24: '24-uurs (15:30)', + defaultPrinter: 'Standaardprinter', + defaultPrinterDescription: 'Selecteer deze printer vooraf voor uploads, opnieuw afdrukken en andere bewerkingen.', + slicerBambuStudio: 'Bambu Studio', + slicerOrcaSlicer: 'OrcaSlicer', + sidebarOrderDescription: 'Gebruik Zijbalk om items opnieuw te ordenen, zichtbaarheid te resetten en aangepaste links te beheren.', + setDefault: 'Als standaard instellen', + sidebarOrderSetDefaultHint: 'Als standaard instellen past de huidige menuvolgorde toe op gebruikers die hun menu nog niet hebben aangepast.', + sidebarDefaultSet: 'Standaard menuvolgorde is ingesteld.', + sidebarDefaultCleared: 'Standaard menuvolgorde is gewist.', + sidebarDefaultFailed: 'Standaard menuvolgorde instellen mislukt.', + reset: 'Resetten', + // Appearance + darkMode: 'Donkere modus', + lightMode: 'Lichte modus', + active: '(actief)', + background: 'Achtergrond', + accent: 'Accent', + style: 'Stijl', + bgNeutral: 'Neutraal', + bgWarm: 'Warm', + bgCool: 'Koel', + bgOled: 'OLED-zwart', + bgSlate: 'Leisteenblauw', + bgForest: 'Bosgroen', + accentGreen: 'Groen', + accentTeal: 'Blauwgroen', + accentBlue: 'Blauw', + accentOrange: 'Oranje', + accentPurple: 'Paars', + accentRed: 'Rood', + styleClassic: 'Klassiek', + styleGlow: 'Gloed', + styleVibrant: 'Levendig', + themeToggleHint: 'Schakel met het pictogram in de zijbalk tussen donkere, lichte en systeemmodus.', + progressInTitle: 'Afdrukvoortgang in tabblad', + progressInTitleDescription: 'Toon het percentage van de actieve afdruk en een voortgangsring in het browsertabblad.', + // Archive + autoArchivePrints: 'Afdrukken automatisch archiveren', + autoArchiveDescription: '3MF-bestanden automatisch opslaan wanneer afdrukken zijn voltooid', + saveThumbnailsDescription: 'Voorbeeldafbeeldingen uit 3MF-bestanden extraheren en opslaan', + captureFinishPhotoDescription: 'Maak een foto met de printercamera wanneer de afdruk is voltooid. Bambuddy neemt tijdens de afdruk een korte timelapse op zodat de foto kan worden genomen van het moment voordat het bed zakt; het timelapsebestand blijft behouden als je timelapse voor deze afdruk hebt ingeschakeld, anders wordt het automatisch verwijderd nadat de foto is vastgelegd.', + finishPhotoRestorePlate: 'Plaat herstellen voor eindfoto', + finishPhotoRestorePlateDescription: 'De printer laat de bouwplaat ongeveer 100 mm zakken wanneer een afdruk eindigt, waardoor de voltooide afdruk onder het camerabeeld komt. Bambuddy brengt de plaat terug tot net boven de laatst geprinte laag, maakt de foto en laat hem daarna weer zakken. Wordt overgeslagen wanneer de afdrukhoogte onbekend is of er een andere taak in de wachtrij staat.', + ffmpegNotInstalled: 'ffmpeg niet geïnstalleerd', + ffmpegRequired: 'Camera-opname vereist ffmpeg. Installeer dit via brew install ffmpeg (macOS) of apt install ffmpeg (Linux).', + // Camera + camera: 'Camera', + cameraViewMode: 'Cameraweergavemodus', + cameraOverlayDescription: 'Camera opent in een schaalbare overlay op het hoofdscherm', + cameraWindowDescription: 'Camera opent in een apart browservenster', + externalCamerasDescription: 'Configureer externe camera\'s ter vervanging van de ingebouwde printercamera. Ondersteunt MJPEG-streams, RTSP, HTTP-momentopnamen en USB-camera\'s (V4L2). Wanneer ingeschakeld wordt de externe camera gebruikt voor liveweergave en eindfoto\'s.', + cameraPlaceholderUsb: 'Apparaatpad (/dev/video0)', + cameraPlaceholderUrl: 'Camera-URL (rtsp://... of http://...)', + cameraTypeMjpeg: 'MJPEG-stream', + cameraTypeRtsp: 'RTSP-stream', + cameraTypeSnapshot: 'HTTP-momentopname', + cameraTypeUsb: 'USB-camera (V4L2)', + cameraSnapshotUrl: 'Momentopname-URL (optioneel)', + cameraSnapshotUrlPlaceholder: 'http://192.168.1.61:1984/api/frame.jpeg?src=printer', + cameraSnapshotUrlHelp: 'URL voor één frame, gebruikt voor miniaturen in meldingen, eindfoto\'s, frames van laagtimelapses en plaatdetectie. Timelapse en plaatdetectie vereisen elk hun eigen schakelaar per printer — deze URL is alleen de afbeeldingsbron die ze gebruiken wanneer actief. Laat leeg om beelden uit de bovenstaande livestream vast te leggen. Handig voor go2rtc (/api/frame.jpeg) en IP-camera\'s met een speciaal snapshot-eindpunt.', + cameraRotation: 'Rotatie', + test: 'Testen', + connected: 'Verbonden', + disconnected: 'Niet verbonden', + // Cost tracking + currency: 'Valuta', + defaultFilamentCost: 'Standaard filamentkosten (per kg)', + electricityCost: 'Elektriciteitskosten per kWh', + energyDisplayMode: 'Weergavemodus energie', + energyModePrintDescription: 'Dashboard toont de som van energie die tijdens afdrukken is gebruikt', + energyModeTotalDescription: 'Dashboard toont het totale energieverbruik van slimme stekkers over de hele levensduur', + // File Manager + fileManager: 'Bestandsbeheer', + createArchiveEntry: 'Archiefitem maken bij afdrukken', + createArchiveEntryDescription: 'Bij afdrukken vanuit Bestandsbeheer optioneel een archiefitem maken', + lowDiskSpaceWarning: 'Waarschuwing weinig schijfruimte', + lowDiskSpaceDescription: 'Waarschuwing tonen wanneer vrije schijfruimte onder deze drempel komt', + // Updates + printerFirmware: 'Printerfirmware', + checkFirmwareDescription: 'Controleren op printerfirmware-updates van Bambu Lab', + bambuddySoftware: 'Bambuddy-software', + autoCheckDescription: 'Automatisch controleren op nieuwe versies bij opstarten', + checkNow: 'Nu controleren', + updateAvailableVersion: 'Update beschikbaar: v{{version}}', + releaseNotes: 'Releaseopmerkingen', + updateViaDocker: 'Bijwerken via Docker Compose:', + composeDirectory: 'Compose-map', + composeDirectoryHint: 'Map met je docker-compose.yml. Laat leeg om cd weg te laten.', + copyUpdateCommand: 'Update-opdracht kopiëren', + updateViaHomeAssistant: 'Updates worden beheerd door de Home Assistant Supervisor. Open Instellingen → Add-ons → Bambuddy in Home Assistant om de nieuwe versie te installeren.', + updateViaWindowsInstaller: 'Windows-installaties worden bijgewerkt door het installatieprogramma opnieuw uit te voeren. Download hieronder de nieuwe versie — je gegevens, instellingen en printers blijven behouden.', + downloadWindowsInstaller: 'Installatieprogramma voor v{{version}} downloaden', + installUpdate: 'Update installeren', + latestVersionRunning: 'Je gebruikt de nieuwste versie', + failedToCheckUpdates: 'Controleren op updates mislukt: {{error}}', + // Data Management + backupRestore: 'Back-up en herstel', + backupRestoreDescription: 'Instellingen exporteren/importeren en GitHub-back-up configureren', + goToBackup: 'Ga naar Back-up', + // Network tab + externalUrl: 'Externe URL', + externalUrlDescription: 'De externe URL waarop Bambuddy bereikbaar is. Wordt gebruikt voor afbeeldingen in meldingen en externe integraties.', + bambuddyUrl: 'Bambuddy-URL', + externalUrlHint: 'Inclusief protocol en poort (bijv. http://192.168.1.100:8000)', + ftpRetry: 'FTP opnieuw proberen', + ftpRetryDescription: 'FTP-bewerkingen opnieuw proberen wanneer de wifi van de printer onbetrouwbaar is. Geldt voor 3MF-downloads, afdrukuploads, timelapse-downloads en firmware-updates.', + autoRetryDescription: 'Mislukte FTP-bewerkingen automatisch opnieuw proberen', + retryAttempts: 'Aantal pogingen', + retryDelay: 'Vertraging tussen pogingen', + connectionTimeout: 'Verbindingstime-out', + time_one: '{{count}} keer', + time_other: '{{count}} keer', + second_one: '{{count}} seconde', + second_other: '{{count}} seconden', + nSeconds: '{{count}} seconden', + increaseForWeakWifi: 'Verhoog dit voor printers met zwakke wifi', + // Home Assistant + homeAssistant: 'Home Assistant', + homeAssistantFullDescription: 'Verbind met Home Assistant om slimme stekkers via de REST-API van HA te bedienen. Ondersteunt switch-, light-, input_boolean- en script-entiteiten.', + homeAssistantUrl: 'Home Assistant-URL', + longLivedAccessToken: 'Long-Lived Access Token', + haTokenHint: 'Maak een token in HA: Profiel → Long-Lived Access Tokens → Token maken', + connectionSuccessful: 'Verbinding geslaagd', + connectionFailed: 'Verbinding mislukt', + haConnectionSuccess: 'Succesvol verbonden met Home Assistant.', + haConnectionFailed: 'Verbinding met Home Assistant mislukt.', + // MQTT + mqttPublishing: 'MQTT-publicatie', + mqttDescription: 'Publiceer BamBuddy-gebeurtenissen naar een externe MQTT-broker voor integratie met Node-RED, Home Assistant en andere automatiseringssystemen.', + mqttEnableDescription: 'Gebeurtenissen publiceren naar externe MQTT-broker', + brokerHostname: 'Hostnaam broker', + port: 'Poort', + usernameOptional: 'Gebruikersnaam (optioneel)', + passwordOptional: 'Wachtwoord (optioneel)', + topicPrefix: 'Topic-prefix', + topicPrefixHint: 'Topics worden: {{prefix}}/printers//status, enz.', + // Prometheus + prometheusMetrics: 'Prometheus-metrics', + prometheusEndpointDescription: 'Printermetrics beschikbaar stellen op /api/v1/metrics voor bewaking met Prometheus/Grafana.', + bearerTokenOptional: 'Bearer-token (optioneel)', + bearerTokenHint: 'Indien ingesteld moeten verzoeken Authorization: Bearer bevatten', + metricsConnectionStatus: 'Verbindingsstatus', + metricsPrinterState: 'Printerstatus (inactief/afdrukken/enz.)', + metricsPrintProgress: 'Afdrukvoortgang 0-100%', + metricsBedTemp: 'Bedtemperatuur', + metricsNozzleTemp: 'Nozzletemperatuur', + metricsPrintsTotal: 'Totaal aantal afdrukken per resultaat', + metricsMore: '...en meer (lagen, ventilatoren, wachtrij, filamentverbruik)', + // Smart Plugs + smartPlugsDescription: 'Verbind slimme stekkers (Tasmota of Home Assistant) om stroomregeling te automatiseren en energieverbruik van je printers te volgen.', + allOn: 'Alles aan', + allOff: 'Alles uit', + addSmartPlug: 'Slimme stekker toevoegen', + energySummary: 'Energieoverzicht', + currentPower: 'Huidig vermogen', + plugsOnline: '{{reachable}}/{{total}} stekkers online', + today: 'Vandaag', + yesterday: 'Gisteren', + total: 'Totaal', + enablePlugsForSummary: 'Schakel stekkers in om energieoverzicht te zien', + addNotificationProvider: 'Toevoegen', + // Users + systemBadge: '(Systeem)', + creating: 'Maken...', + changing: 'Wijzigen...', + deleteUserAndItems: 'Gebruiker EN diens items verwijderen', + deleteUserKeepItems: 'Gebruiker verwijderen, items behouden (worden eigenaarloos)', + ok: 'OK', + + // 2FA settings + twoFa: { + totpTitle: 'Authenticator-app (TOTP)', + totpDesc: 'Gebruik een authenticator-app zoals Google Authenticator, Aegis of Authy.', + emailOtpTitle: 'E-mail-OTP', + emailOtpDesc: 'Stuur bij inloggen een eenmalige code naar {{email}}.', + emailOtpNoEmail: 'Voeg een e-mailadres toe aan je account om deze methode in te schakelen.', + addEmailFirst: 'Je account heeft geen e-mailadres. Vraag een beheerder om er een toe te voegen voordat je E-mail-OTP inschakelt.', + setupTotp: 'Authenticator-app instellen', + setupAuthApp: 'Authenticator-app instellen', + setupInstructions: 'Scan onderstaande QR-code met je authenticator-app en bevestig daarna met een code.', + manualEntry: 'Kun je niet scannen? Voer dit geheim handmatig in:', + scannedContinue: 'Ik heb de code gescand — doorgaan', + enterCodeToConfirm: 'Voer de 6-cijferige code uit je authenticator-app in om de installatie te bevestigen.', + activate: 'Activeren', + disableTotp: 'Authenticator uitschakelen', + disableConfirmHint: 'Voer een geldige TOTP-code of back-upcode in om de authenticator uit te schakelen.', + totpDisabled: 'Authenticator-app uitgeschakeld.', + emailOtpEnabled: 'E-mail-OTP ingeschakeld.', + emailOtpDisabled: 'E-mail-OTP uitgeschakeld.', + smtpRequired: 'Configureer en test eerst de SMTP-instellingen.', + invalidCode: 'Ongeldige code. Probeer het opnieuw.', + enableEmailOtp: 'E-mail-OTP inschakelen', + disableEmailOtp: 'E-mail-OTP uitschakelen', + emailSetupEnterCode: 'Er is een verificatiecode naar je e-mailadres gestuurd. Voer deze hieronder in om te bevestigen dat deze inbox van jou is.', + verifyAndEnable: 'Verifiëren en inschakelen', + emailDisablePasswordHint: 'Voer je accountwachtwoord in om het uitschakelen van e-mail-OTP te bevestigen.', + passwordPlaceholder: 'Voer je wachtwoord in', + backupCodesTitle: 'Bewaar je back-upcodes', + backupCodesWarning: 'Bewaar deze codes op een veilige plek. Elke code kan maar één keer worden gebruikt en wordt niet opnieuw getoond.', + backupCodesRemaining: '{{count}} back-upcodes resterend', + savedCodes: 'Ik heb mijn codes opgeslagen', + regenBackup: 'Back-upcodes opnieuw genereren', + regenBackupHint: 'Voer je huidige TOTP-code in om 10 nieuwe back-upcodes te genereren. Alle bestaande back-upcodes worden ongeldig.', + newBackupCodes: 'Nieuwe back-upcodes', + linkedAccounts: 'Gekoppelde SSO-accounts', + linkedAccountsDesc: 'Deze externe identiteitsproviders zijn gekoppeld aan je account.', + oidcUnlinked: 'Account ontkoppeld.', + }, + + // Session Policy (#1706) — admin-configurable session lifetime ceiling. + sessionPolicy: { + title: 'Sessiebeleid', + description: 'Maximale sessieduur voor nieuwe gebruikerslogins. Reeds uitgegeven tokens behouden hun oorspronkelijke vervaldatum.', + preset24h: '24 uur', + preset7d: '7 dagen', + preset30d: '30 dagen', + customHoursLabel: 'Aangepaste sessieduur in uren', + hoursSuffix: 'uren', + warning: 'Langere sessies verminderen de bescherming door automatisch uitloggen. Alleen aanbevolen voor vertrouwde installaties met één gebruiker.', + }, + + // OIDC provider settings + oidc: { + title: 'SSO / OIDC-providers', + desc: 'Configureer OpenID Connect-providers om single sign-on via externe identiteitsproviders toe te staan.', + addProvider: 'Provider toevoegen', + newProvider: 'Nieuwe provider', + empty: 'Nog geen OIDC-providers geconfigureerd.', + created: 'Provider gemaakt.', + updated: 'Provider bijgewerkt.', + deleted: 'Provider verwijderd.', + refreshIcon: 'Pictogram vernieuwen', + removeIcon: 'Pictogram verwijderen', + iconRefreshed: 'Pictogram vernieuwd.', + iconRemoved: 'Pictogram verwijderd.', + iconFetchFailed: 'Pictogram kon niet worden opgehaald van de provider-URL.', + deleteTitle: 'Provider verwijderen', + deleteMessage: '"{{name}}" verwijderen? Alle gekoppelde gebruikersaccounts worden ontkoppeld.', + form: { + name: 'Weergavenaam', + issuerUrl: 'Issuer-URL', + clientId: 'Client-ID', + clientSecret: 'Client Secret', + scopes: 'Scopes', + iconUrl: 'Pictogram-URL (optioneel)', + enabled: 'Ingeschakeld', + autoCreate: 'Gebruikers automatisch maken', + autoCreateDesc: 'Automatisch een lokaal account maken bij de eerste login.', + autoLink: 'Bestaande accounts automatisch koppelen', + autoLinkDesc: 'Bestaande lokale accounts bij de eerste login koppelen op basis van een overeenkomend e-mailadres.', + secretHint: 'laat leeg om huidige waarde te behouden', + secretPlaceholder: 'nieuw geheim', + emailClaim: 'E-mailclaim', + emailClaimDesc: 'JWT-claim die als e-mailidentiteit wordt gebruikt. Gebruik \'preferred_username\' of \'upn\' voor Azure Entra ID (dat email_verified niet meestuurt). Gebruik alleen vertrouwde claimnamen.', + emailClaimPlaceholder: 'email', + emailClaimCustomClaimAutoLinkWarning: 'Aangepaste claims zijn alleen veilig voor automatische koppeling wanneer de waarde door de tenantbeheerder wordt beheerd (bijv. Azure Entra ID upn / preferred_username). Schakel automatisch koppelen niet in als je IdP gebruikers deze claim zelf laat opgeven.', + requireEmailVerified: 'Geverifieerd e-mailadres vereisen', + requireEmailVerifiedDesc: 'Accepteer de e-mailclaim alleen wanneer de provider deze als geverifieerd markeert.', + requireEmailVerifiedWarning: 'Waarschuwing: e-mail wordt ook zonder verificatie geaccepteerd. Gebruik dit alleen met vertrouwde providers.', + requireEmailVerifiedAutoLink: 'Schakel automatisch koppelen eerst uit om deze instelling te wijzigen.', + defaultGroup: 'Standaardgroep', + defaultGroupDesc: 'Groep die aan automatisch gemaakte gebruikers wordt toegewezen. Valt terug op Kijkers indien niet ingesteld.', + defaultGroupViewersFallback: 'Kijkers (standaard)', + autologin: 'Automatisch inloggen', + autologinDesc: 'Stuur niet-geauthenticeerde bezoekers rechtstreeks door naar deze provider. Slechts één provider kan deze vlag hebben.', + }, + }, + + encryption: { + title: 'MFA-versleutelingsstatus', + enabledFromEnv: 'Versleuteling in opslag ingeschakeld (sleutel uit omgevingsvariabele MFA_ENCRYPTION_KEY)', + enabledFromFile: 'Versleuteling in opslag ingeschakeld (sleutel geladen uit gegevensmap)', + enabledGenerated: 'Versleuteling in opslag ingeschakeld met automatisch gegenereerde sleutel', + notConfigured: 'Versleuteling in opslag niet geconfigureerd', + notConfiguredDesc: 'TOTP-geheimen en OIDC client_secrets worden als platte tekst opgeslagen. Stel MFA_ENCRYPTION_KEY in of start Bambuddy opnieuw met een schrijfbare gegevensmap om automatisch een sleutel te genereren.', + allEncrypted: 'Alle MFA-geheimen zijn versleuteld opgeslagen.', + legacyRowsLabel: 'Verouderde rijen met platte tekst', + encryptedRowsLabel: 'Versleutelde rijen', + legacyRowsWarning: '{{count}} verouderde rij(en) met platte tekst gedetecteerd. Sla de OIDC-provider opnieuw op of registreer de authenticator-app van de gebruiker opnieuw om naar versleutelde opslag te migreren.', + backupHint: 'De automatisch gegenereerde sleutel wordt opgeslagen in DATA_DIR/.mfa_encryption_key en zit in lokale back-up-ZIP\'s. Bewaar je back-ups veilig of stel MFA_ENCRYPTION_KEY expliciet in.', + decryptionBrokenTitle: 'Versleutelingssleutel ontbreekt', + decryptionBrokenError: '{{count}} versleutelde record(s) kunnen niet worden ontsleuteld omdat de versleutelingssleutel niet meer beschikbaar is. Herstel de vorige MFA_ENCRYPTION_KEY of DATA_DIR/.mfa_encryption_key om te herstellen.', + migrationErrorWarning: '{{count}} verouderde rij(en) konden bij het opstarten niet opnieuw worden versleuteld. Controleer de serverlogboeken en start Bambuddy opnieuw om het opnieuw te proberen.', + }, + + // Slicer Pipeline limits (#1425 PR C). Admin-tunable cap that constrains + // the copies input in the Run-with-pipeline modal. Lives on the Workflow + // tab's Queue & Dispatch sub-tab. + pipelineLimits: { + title: 'Limieten slicerpipeline', + maxCopiesLabel: 'Max. kopieën per run', + maxCopiesDesc: 'Bovengrens voor het aantal kopieën dat operators kunnen aanvragen bij het uitvoeren van een pipeline. Harde serverlimiet is 1000.', + }, + + // Slicer Pipelines (#1425): list/edit/delete preset bundles users saved + // from the Slice dialog. Lives in Settings → Workflow → Pipelines sub-tab. + pipelines: { + title: 'Slicerpipelines', + subtitle: 'Herbruikbare bundels met presets (printer + proces + filamenten + bedtype). Sla er een op vanuit het Slice-dialoogvenster en pas deze met één klik toe op het volgende bestand.', + loading: 'Pipelines laden…', + loadError: 'Pipelines konden niet worden geladen.', + confirmDelete: 'Deze pipeline verwijderen? Dit kan niet ongedaan worden gemaakt.', + staleWarning: 'Een of meer gekoppelde presets bestaan niet meer. Sla deze pipeline opnieuw op vanuit het Slice-dialoogvenster om dit te herstellen.', + empty: { + title: 'Nog geen pipelines.', + howto: 'Open het Slice-dialoogvenster voor een bestand, kies printer / proces / filamenten / bedtype en klik daarna op "Opslaan als pipeline". Je opgeslagen pipelines verschijnen hier.', + }, + field: { + name: 'Pipelinenaam', + description: 'Beschrijving', + targetPrinter: 'Doelprinter', + noTarget: '— Geen doel —', + // PR C + targetKind: 'Doeltype', + targetKindSpecific: 'Specifieke printer', + targetKindClass: 'Printerklasse', + targetModelClass: 'Printermodel', + fanoutStrategy: 'Verdelingsstrategie', + fanout: { + max_parallel: 'Maximaal parallel — verdelen over elke inactieve overeenkomende printer', + round_robin: 'Round robin — rouleren door geschikte printers', + fill_one_first: 'Eerst één vullen — alle kopieën aan één printer koppelen', + }, + // Short labels for the inline target chip on each pipeline card. + // The verbose ones above explain the strategy in the editor; the + // card just needs a compact reminder of which one is in use. + fanoutShort: { + max_parallel: 'parallel', + round_robin: 'round robin', + fill_one_first: 'eerst één vullen', + }, + }, + action: { + save: 'Opslaan', + cancel: 'Annuleren', + rename: 'Naam wijzigen', + delete: 'Verwijderen', + }, + slot: { + printer: 'Printer', + process: 'Proces', + filament: 'Filament', + filamentN: 'Filament {{n}}', + filamentAll: 'Alle {{n}} sleuven', + bed: 'Printbed', + }, + // PR C polish — grouped sections in the card body, plus the + // panel-level search + filter row. + group: { + profiles: 'Profielen', + filaments: 'Filamenten', + }, + searchPlaceholder: 'Pipelines zoeken…', + filterTargetType: 'Filteren op doeltype', + filterTarget: 'Filteren op doel', + filter: { + all: 'Alle doelen', + noTarget: 'Geen doel ingesteld', + count: '{{shown}} / {{total}}', + noMatches: 'Geen pipelines komen overeen met de huidige filters.', + }, + toast: { + saved: 'Pipeline opgeslagen', + saveFailed: 'Opslaan mislukt', + deleted: 'Pipeline verwijderd', + deleteFailed: 'Verwijderen mislukt', + }, + // PR B target binding + last-run summary + noTargetHint: 'Stel een doelprinter in om dit uit te voeren', + noTargetWarning: 'Stel een doelprinter in voordat je deze pipeline uitvoert.', + runs: { + lastRun: 'Laatste run', + status: { + queued: 'in wachtrij', + slicing: 'slicen', + dispatching: 'verzenden', + in_progress: 'bezig met afdrukken', + completed: 'voltooid', + failed: 'mislukt', + partial_failure: 'gedeeltelijke fout', + cancelled: 'geannuleerd', + }, + }, + }, + }, + + // Notifications (for push notifications) + notification: { + printStarted: { + title: 'Afdruk gestart', + body: '{{printer}}: {{filename}} is begonnen met afdrukken', + }, + printCompleted: { + title: 'Afdruk voltooid', + body: '{{printer}}: {{filename}} succesvol voltooid', + }, + printFailed: { + title: 'Afdruk mislukt', + body: '{{printer}}: {{filename}} is mislukt', + }, + printStopped: { + title: 'Afdruk gestopt', + body: '{{printer}}: {{filename}} is gestopt', + }, + printProgress: { + title: 'Afdrukvoortgang', + body: '{{printer}}: {{filename}} is {{percent}}% voltooid', + }, + printerOffline: { + title: 'Printer offline', + body: '{{printer}} is offline', + }, + printerError: { + title: 'Printerfout', + body: '{{printer}}: {{error}}', + }, + filamentLow: { + title: 'Weinig filament', + body: '{{printer}}: Filament raakt bijna op', + }, + maintenanceDue: { + title: 'Onderhoud nodig', + body: '{{printer}}: {{items}} vereisen aandacht', + }, + }, + + // Errors + errors: { + generic: 'Er is iets misgegaan', + networkError: 'Netwerkfout. Controleer je verbinding.', + notFound: 'Niet gevonden', + unauthorized: 'Niet geautoriseerd', + serverError: 'Serverfout', + validationError: 'Controleer je invoer', + printerConnectionFailed: 'Verbinding met printer mislukt', + saveFailed: 'Wijzigingen opslaan mislukt', + deleteFailed: 'Verwijderen mislukt', + loadFailed: 'Gegevens laden mislukt', + }, + + // HMS Errors modal + hmsErrors: { + title: 'Fouten - {{name}}', + noErrors: 'Geen fouten', + viewOnWiki: 'Bekijken op Bambu Lab Wiki', + mqttVerifyFailedRemedy: 'Schakel Developer Mode op de printer in, start de printer opnieuw en start daarna de taak opnieuw.', + unknownCode: 'Onbekende HMS-code — zie de Bambu Lab-wiki voor details.', + clearInstructions: 'Wis fouten op de printer om ze hier te verwijderen.', + clearErrors: 'Fouten wissen', + clearSuccess: 'HMS-fouten gewist', + clearFailed: 'HMS-fouten wissen mislukt', + actionSuccess: 'Actie naar printer verzonden', + actionFailed: 'Actie verzenden mislukt', + runoutExpectedSlot: 'Filament is op in {{ranOut}}. De printer wacht nu op compatibel filament in {{expected}}. Plaats een spoel in {{expected}} en selecteer daarna Opnieuw proberen.', + runoutExpectedSlotOnly: 'De printer wacht op compatibel filament in {{expected}}. Plaats daar een spoel en selecteer daarna Opnieuw proberen.', + runoutSlotUnknown: 'Filament is op en de afdruk is gepauzeerd. Bambuddy kon niet bepalen welke sleuf de printer nu verwacht — controleer het printerscherm voor de gevraagde sleuf.', + actions: { + RESUME_PRINTING: 'Afdrukken hervatten', + RESUME_PRINTING_DEFECTS: 'Hervatten (defecten acceptabel)', + RESUME_PRINTING_PROBELM_SOLVED: 'Hervatten (probleem opgelost)', + STOP_PRINTING: 'Afdrukken stoppen', + CHECK_ASSISTANT: 'Assistent controleren', + FILAMENT_EXTRUDED: 'Filament geëxtrudeerd, doorgaan', + RETRY_FILAMENT_EXTRUDED: 'Nog niet geëxtrudeerd, opnieuw proberen', + CONTINUE: 'Voltooid, doorgaan', + LOAD_VIRTUAL_TRAY: 'Filament laden', + OK_BUTTON: 'OK', + FILAMENT_LOAD_RESUME: 'Filament geladen, hervatten', + JUMP_TO_LIVEVIEW: 'Liveweergave bekijken', + NO_REMINDER_NEXT_TIME: 'Volgende keer niet herinneren', + REFRESH_NOZZLE: 'Opnieuw controleren', + IGNORE_NO_REMINDER_NEXT_TIME: 'Negeren. Volgende keer niet herinneren', + IGNORE_RESUME: 'Negeren en hervatten', + PROBLEM_SOLVED_RESUME: 'Probleem opgelost en hervatten', + TURN_OFF_FIRE_ALARM: 'Begrepen, brandalarm uitschakelen.', + RETRY_PROBLEM_SOLVED: 'Opnieuw proberen (probleem opgelost)', + CANCLE: 'Annuleren', + STOP_DRYING: 'Drogen stoppen', + PROCEED: 'Doorgaan', + OK_JUMP_RACK: 'OK', + ABORT: 'Afbreken', + DISABLE_PURIFICATION: 'Luchtreiniging voor deze afdruk uitschakelen', + DONT_REMIND_NEXT_TIME: 'Niet meer herinneren', + DBL_CHECK_CANCEL: 'Annuleren', + DBL_CHECK_DONE: 'Klaar', + DBL_CHECK_RETRY: 'Opnieuw proberen', + DBL_CHECK_RESUME: 'Hervatten', + DBL_CHECK_OK: 'Bevestigen', + REMOVE_CLOSE_BTN: 'Sluiten', + } + }, + + // MQTT Debug modal + mqttDebug: { + title: 'MQTT-debuglogboek', + searchPlaceholder: 'Topic of payload zoeken...', + noMessages: 'Nog geen berichten gelogd', + startLoggingHint: 'Klik op "Loggen starten" om MQTT-berichten vast te leggen', + noMessagesMatch: 'Geen berichten komen overeen met je filter', + adjustFilterHint: 'Probeer je zoekopdracht of filtercriteria aan te passen', + incoming: 'Inkomend', + outgoing: 'Uitgaand', + loggingStopped: 'Loggen gestopt', + loggingActive: 'Loggen actief - berichten worden automatisch vernieuwd', + startLogging: 'Loggen starten', + stopLogging: 'Loggen stoppen', + clearLog: 'Logboek wissen', + topic: 'Topic', + timestamp: 'Tijdstempel', + direction: 'Richting', + all: 'Alle', + }, + + // Printer File Manager modal (printer internal storage) + printerFiles: { + zipStarted_one: 'ZIP-download gestart voor {{count}} bestand', + zipStarted_other: 'ZIP-download gestart voor {{count}} bestanden', + zipPartial: 'ZIP-download gestart met {{successful}} van {{total}} bestanden; de overige konden niet worden opgehaald', + downloadFailed: 'Download mislukt: {{error}}', + unknownError: 'Onbekende fout', + shiftSelectHint: 'Shift-klik om een bereik te selecteren', + selectFile: '{{name}} selecteren', + deselectFile: '{{name}} deselecteren', + title: 'Bestandsbeheer', + storageUsed: 'Gebruikt:', + storageFree: 'Vrij:', + filterPlaceholder: 'Bestanden filteren...', + deleteButton: 'Verwijderen', + deleteFiles: '{{count}} bestanden verwijderen', + deleteFileConfirm: '"{{name}}" verwijderen? Dit kan niet ongedaan worden gemaakt.', + deleteFilesConfirm: '{{count}} geselecteerde bestanden verwijderen? Dit kan niet ongedaan worden gemaakt.', + noFiles: 'Geen bestanden op printer', + printerUnavailable: 'De bestandsservice van de printer is niet beschikbaar. Probeer het opnieuw wanneer de printer bereikbaar is.', + loadingFiles: 'Bestanden laden...', + failedToLoad: 'Bestanden laden mislukt', + toast: { + filesDeleted: '{{count}} bestand(en) verwijderd', + deleteFailed: 'Verwijderen mislukt: {{error}}', + }, + }, + + // Confirmations + confirm: { + delete: 'Weet je zeker dat je dit wilt verwijderen?', + unsavedChanges: 'Je hebt niet-opgeslagen wijzigingen. Weet je zeker dat je wilt vertrekken?', + clearQueue: 'Weet je zeker dat je de wachtrij wilt wissen?', + }, + + // Login page + login: { + title: 'Bambuddy-login', + subtitle: 'Log in op je account', + username: 'Gebruikersnaam', + usernamePlaceholder: 'Voer je gebruikersnaam in', + usernameOrEmail: 'Gebruikersnaam of e-mail', + usernameOrEmailPlaceholder: 'Gebruikersnaam of @ e-mail', + password: 'Wachtwoord', + passwordPlaceholder: 'Voer je wachtwoord in', + signIn: 'Inloggen', + signingIn: 'Inloggen...', + rememberMe: 'Onthoud mij', + forgotPassword: 'Wachtwoord vergeten?', + autologinFailed: 'Automatisch inloggen via SSO is mislukt. Kies hieronder een provider om door te gaan.', + localDisabledNotice: 'Lokaal inloggen is uitgeschakeld. Gebruik een van de onderstaande SSO-providers.', + loginSuccess: 'Succesvol ingelogd', + loginFailed: 'Inloggen mislukt', + enterCredentials: 'Voer gebruikersnaam en wachtwoord in', + enterEmail: 'Voer je e-mailadres in', + oidcLoginFailed: 'OIDC-login mislukt', + oidcErrors: { + providerError: 'De identiteitsprovider heeft een fout geretourneerd', + missingParameters: 'OIDC-callback mist vereiste parameters', + invalidState: 'OIDC-status is ongeldig of is al gebruikt', + stateExpired: 'OIDC-inlogsessie verlopen — probeer het opnieuw', + providerNotFound: 'OIDC-provider niet gevonden', + discoveryFailed: 'OIDC-discoverydocument ophalen mislukt', + invalidDiscovery: 'OIDC-discoverydocument is ongeldig', + networkError: 'Netwerkfout tijdens OIDC-tokenuitwisseling', + badResponse: 'Onverwachte reactie tijdens OIDC-tokenuitwisseling', + noIdToken: 'OIDC-provider heeft geen ID-token geretourneerd', + validationFailed: 'OIDC-tokenvalidatie mislukt', + nonceMismatch: 'OIDC-nonce komt niet overeen — mogelijke replay-aanval', + missingSubClaim: 'OIDC-token mist de sub-claim', + noLinkedAccount: 'Er is geen lokaal account gekoppeld aan deze OIDC-identiteit', + accountInactive: 'Je account is inactief', + userResolutionFailed: 'Je account kon niet worden bepaald', + internalError: 'Er is een interne fout opgetreden tijdens OIDC-login', + tokenExchangeFailed: 'OIDC-tokenuitwisseling mislukt', + }, + forgotPasswordTitle: 'Wachtwoord vergeten', + forgotPasswordMessage: 'Als je je wachtwoord bent vergeten, neem dan contact op met je systeembeheerder om het te laten resetten.', + forgotPasswordEmailMessage: 'Voer je e-mailadres in en we sturen je een nieuw wachtwoord.', + emailAddress: 'E-mailadres', + emailPlaceholder: 'jouw.email@voorbeeld.nl', + cancel: 'Annuleren', + sending: 'Verzenden...', + sendResetEmail: 'Resetmail verzenden', + howToReset: 'Zo reset je je wachtwoord:', + resetStep1: 'Neem contact op met je Bambuddy-beheerder', + resetStep2: 'Vraag om je wachtwoord te resetten in Gebruikersbeheer', + resetStep3: 'De beheerder kan een nieuw tijdelijk wachtwoord voor je instellen', + resetStep4: 'Log in met het nieuwe wachtwoord en wijzig het in Instellingen', + gotIt: 'Begrepen', + resetPassword: { + title: 'Nieuw wachtwoord instellen', + subtitle: 'Voer hieronder je nieuwe wachtwoord in en bevestig het.', + newPassword: 'Nieuw wachtwoord', + newPasswordPlaceholder: 'Minstens 8 tekens', + confirmPassword: 'Wachtwoord bevestigen', + confirmPasswordPlaceholder: 'Herhaal nieuw wachtwoord', + saving: 'Opslaan…', + submit: 'Nieuw wachtwoord instellen', + backToLogin: 'Terug naar login', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + passwordTooShort: 'Wachtwoord moet minstens 8 tekens bevatten', + resetFailed: 'Wachtwoord resetten mislukt. De link is mogelijk verlopen.', + }, + twoFA: { + title: 'Tweefactorauthenticatie', + subtitle: 'Je account is beveiligd met 2FA. Voer hieronder de verificatiecode in.', + methodAuthenticator: 'Authenticator-app', + methodEmail: 'E-mailcode', + methodBackup: 'Back-upcode', + instructionsTotp: 'Open je authenticator-app en voer de 6-cijferige code voor Bambuddy in.', + instructionsEmail: 'Er is een 6-cijferige code naar je e-mailadres gestuurd. Deze verloopt over 10 minuten.', + instructionsEmailNotSent: 'Klik op de knop hieronder om een verificatiecode per e-mail te ontvangen.', + instructionsBackup: 'Voer een van je 8-teken lange back-upherstelcodes in. Elke code kan maar één keer worden gebruikt.', + sendCodeButton: 'Code per e-mail verzenden', + sendingCode: 'Verzenden...', + resendCode: 'Code opnieuw verzenden', + codeLabel: 'Verificatiecode', + backupCodeLabel: 'Back-upcode', + codePlaceholder: '000000', + backupCodePlaceholder: 'XXXXXXXX', + verifyButton: 'Verifiëren', + verifyingButton: 'Verifiëren...', + backToLogin: '← Terug naar login', + orContinueWith: 'of doorgaan met', + signInWith: 'Inloggen met {{provider}}', + enterCode: 'Voer de verificatiecode in', + sendCodeFailed: 'Verificatiecode verzenden mislukt', + invalidCode: 'Ongeldige code. Probeer het opnieuw.', + }, + + }, + + // Setup page + setup: { + title: 'Bambuddy-installatie', + subtitle: 'Authenticatie configureren voor je Bambuddy-instantie', + enableAuth: 'Authenticatie inschakelen', + adminAccount: 'Beheerdersaccount', + adminAccountDesc: 'Als er al beheerders bestaan, wordt authenticatie ingeschakeld met de bestaande beheerdersaccounts. Laat de onderstaande velden leeg om bestaande beheerders te gebruiken, of voer nieuwe gegevens in om een nieuwe beheerder te maken.', + adminUsername: 'Gebruikersnaam beheerder', + adminPassword: 'Wachtwoord beheerder', + optionalIfAdminExists: '(optioneel als er beheerders bestaan)', + adminUsernamePlaceholder: 'Voer gebruikersnaam beheerder in (optioneel)', + adminPasswordPlaceholder: 'Voer wachtwoord beheerder in (optioneel)', + confirmPassword: 'Wachtwoord bevestigen', + confirmPasswordPlaceholder: 'Bevestig wachtwoord beheerder', + settingUp: 'Instellen...', + completeSetup: 'Installatie voltooien', + toast: { + authEnabledAdminCreated: 'Authenticatie ingeschakeld en beheerdersgebruiker gemaakt', + authEnabledExistingAdmins: 'Authenticatie ingeschakeld met bestaande beheerders', + setupCompleted: 'Installatie voltooid', + enterBothCredentials: 'Voer zowel gebruikersnaam als wachtwoord van de beheerder in, of laat beide leeg om bestaande beheerders te gebruiken', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + passwordTooShort: 'Wachtwoord moet minstens 6 tekens bevatten', + }, + }, + + // Password change + changePassword: { + title: 'Wachtwoord wijzigen', + currentPassword: 'Huidig wachtwoord', + currentPasswordPlaceholder: 'Voer huidig wachtwoord in', + newPassword: 'Nieuw wachtwoord', + newPasswordPlaceholder: 'Voer nieuw wachtwoord in (min. 6 tekens)', + confirmPassword: 'Nieuw wachtwoord bevestigen', + confirmPasswordPlaceholder: 'Bevestig nieuw wachtwoord', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + passwordTooShort: 'Wachtwoord moet minstens 6 tekens bevatten', + changing: 'Wijzigen...', + success: 'Wachtwoord succesvol gewijzigd', + failed: 'Wachtwoord wijzigen mislukt', + }, + + // Plate detection alert + plateAlert: { + title: 'Afdruk gepauzeerd!', + message: 'Objecten gedetecteerd op de bouwplaat. De afdruk is automatisch gepauzeerd. Maak de plaat vrij en hervat de afdruk.', + understand: 'Ik begrijp het', + }, + + // Camera page + camera: { + title: 'Cameraweergave', + invalidPrinterId: 'Ongeldige printer-ID', + live: 'Live', + snapshot: 'Momentopname', + restartStream: 'Stream opnieuw starten', + refreshSnapshot: 'Momentopname vernieuwen', + fullscreen: 'Volledig scherm', + exitFullscreen: 'Volledig scherm afsluiten', + connectingToCamera: 'Verbinding maken met camera...', + capturingSnapshot: 'Momentopname vastleggen...', + connectionLost: 'Verbinding verbroken', + connectionFailed: 'Cameraverbinding mislukt', + reconnecting: 'Opnieuw verbinden over {{countdown}}s... (poging {{attempt}}/{{max}})', + reconnectNow: 'Nu opnieuw verbinden', + cameraUnavailable: 'Camera niet beschikbaar', + cameraUnavailableDesc: 'Zorg dat de printer is ingeschakeld en verbonden.', + noCamera: 'Geen camera beschikbaar', + retry: 'Opnieuw proberen', + cameraStream: 'Camerastream', + zoomOut: 'Uitzoomen', + zoomIn: 'Inzoomen', + resetZoom: 'Zoom resetten', + recording: 'Opnemen', + startRecording: 'Opname starten', + stopRecording: 'Opname stoppen', + chamberLight: 'Kamerverlichting omschakelen', + unavailable: 'Camera niet beschikbaar', + diagnose: { + button: 'Diagnose', + modalTitle: 'Cameradiagnose', + running: 'Diagnose uitvoeren...', + runFailed: 'Diagnose kon niet worden uitgevoerd: {{error}}', + retry: 'Opnieuw uitvoeren', + stage: { + tcp_reachable: 'Netwerkbereikbaarheid', + first_frame: 'Frame vastleggen', + live_stream_active: 'Livestream actief', + }, + summary: { + all_ok: 'Camera werkt. De diagnose heeft alle stappen succesvol voltooid.', + live_stream_active_healthy: 'Camera streamt momenteel met recente frames — geen test nodig.', + printer_unreachable: 'Printer is niet bereikbaar. Controleer het IP-adres, de netwerkverbinding en of de printer is ingeschakeld.', + camera_port_closed: 'Printer is bereikbaar maar de camerapoort is gesloten. Zorg dat LAN-only-modus en Developer Mode zijn ingeschakeld in de printerinstellingen.', + no_frame: 'Verbonden met de camera, maar er zijn geen frames ontvangen. Probeer opnieuw of controleer of de camera is ingeschakeld in de printerinstellingen.', + unknown_failure: 'Cameradiagnose is om onbekende reden mislukt. Controleer het supportlogboek voor details.', + }, + meta: { + protocol: 'Protocol', + port: 'Poort', + profile: 'Profiel', + }, + }, + }, + + // Groups management + groups: { + title: 'Groepsbeheer', + subtitle: 'Machtigingsgroepen beheren voor toegangscontrole', + backToSettings: 'Terug naar Instellingen', + createGroup: 'Groep maken', + noPermission: 'Je hebt geen toestemming om deze pagina te openen.', + system: 'Systeem', + noDescription: 'Geen beschrijving', + usersCount: '{{count}} gebruikers', + permissionsCount: '{{count}} machtigingen', + edit: 'Bewerken', + delete: 'Verwijderen', + toast: { + created: 'Groep succesvol gemaakt', + updated: 'Groep succesvol bijgewerkt', + deleted: 'Groep succesvol verwijderd', + enterGroupName: 'Voer een groepsnaam in', + }, + modal: { + editGroup: 'Groep bewerken', + createGroup: 'Groep maken', + cancel: 'Annuleren', + saving: 'Opslaan...', + creating: 'Maken...', + saveChanges: 'Wijzigingen opslaan', + }, + form: { + groupName: 'Groepsnaam', + groupNamePlaceholder: 'Voer groepsnaam in', + systemGroupWarning: 'Namen van systeemgroepen kunnen niet worden gewijzigd', + description: 'Beschrijving', + descriptionPlaceholder: 'Voer beschrijving in (optioneel)', + permissions: 'Machtigingen ({{count}} geselecteerd)', + }, + deleteModal: { + title: 'Groep verwijderen', + message: 'Weet je zeker dat je deze groep wilt verwijderen? Gebruikers in deze groep verliezen deze machtigingen.', + confirm: 'Groep verwijderen', + }, + editor: { + title: 'Groep bewerken', + createTitle: 'Groep maken', + search: 'Machtigingen zoeken...', + selectAll: 'Alles selecteren', + clearAll: 'Alles wissen', + permissionsSelected: '{{count}} geselecteerd', + noResults: 'Geen machtigingen komen overeen met je zoekopdracht', + websocketHint: 'Vereist voor live-updates. Zonder dit valt de interface terug op periodieke polling.', + }, + }, + + // Users management + users: { + title: 'Gebruikersbeheer', + subtitle: 'Gebruikers en hun toegang tot je Bambuddy-instantie beheren', + backToSettings: 'Terug naar Instellingen', + createUser: 'Gebruiker maken', + noPermission: 'Je hebt geen toestemming om deze pagina te openen.', + admin: 'Beheerder', + noGroups: 'Geen groepen', + active: 'Actief', + inactive: 'Inactief', + edit: 'Bewerken', + delete: 'Verwijderen', + system: 'Systeem', + noGroupsAvailable: 'Geen groepen beschikbaar', + table: { + username: 'Gebruikersnaam', + groups: 'Groepen', + status: 'Status', + actions: 'Acties', + }, + toast: { + created: 'Gebruiker succesvol gemaakt', + updated: 'Gebruiker succesvol bijgewerkt', + deleted: 'Gebruiker succesvol verwijderd', + fillRequired: 'Vul alle verplichte velden in', + passwordsDoNotMatch: 'Wachtwoorden komen niet overeen', + passwordTooShort: 'Wachtwoord moet minstens 6 tekens bevatten', + ldapProvisioned: 'LDAP-gebruiker "{{username}}" ingericht', + }, + modal: { + createUser: 'Gebruiker maken', + editUser: 'Gebruiker bewerken', + cancel: 'Annuleren', + creating: 'Maken...', + saving: 'Opslaan...', + saveChanges: 'Wijzigingen opslaan', + advancedAuthSubtitle: 'met Geavanceerde authenticatie', + // LDAP manual provisioning (#1298) + tabsAriaLabel: 'Gebruikersbron', + localTab: 'Lokaal', + ldapTab: 'LDAP', + ldapSearchLabel: 'Directory zoeken', + ldapSearchPlaceholder: 'Typ een gebruikersnaam, naam of e-mailadres...', + ldapMinChars: 'Typ minstens 2 tekens om te zoeken', + ldapTypeToSearch: 'Begin te typen om in de LDAP-directory te zoeken', + ldapSearching: 'Directory doorzoeken...', + ldapNoResults: 'Geen overeenkomende gebruikers in de directory', + ldapSearchError: 'Zoeken in directory mislukt. Controleer de status van de LDAP-server.', + ldapAlreadyProvisioned: 'Al ingericht', + ldapSelectedLabel: 'Geselecteerd', + ldapProvision: 'Gebruiker inrichten', + ldapProvisioning: 'Inrichten...', + ldapErrorProvision: 'Inrichten mislukt. Controleer de status van de LDAP-server en probeer opnieuw.', + }, + form: { + username: 'Gebruikersnaam', + usernamePlaceholder: 'Voer gebruikersnaam in', + email: 'E-mail', + emailPlaceholder: 'user@example.com', + password: 'Wachtwoord', + passwordPlaceholder: 'Voer wachtwoord in', + confirmPassword: 'Wachtwoord bevestigen', + confirmPasswordPlaceholder: 'Bevestig wachtwoord', + newPasswordPlaceholder: 'Voer nieuw wachtwoord in', + confirmNewPasswordPlaceholder: 'Bevestig nieuw wachtwoord', + leaveBlankToKeep: 'laat leeg om huidige waarde te behouden', + groups: 'Groepen', + optional: 'optioneel', + autoGeneratedPassword: 'Een veilig wachtwoord wordt automatisch gegenereerd en per e-mail naar de gebruiker gestuurd.', + passwordManagedByAdvancedAuth: 'Wachtwoord wordt beheerd door Geavanceerde authenticatie. Gebruik "Wachtwoord resetten" om via e-mail een nieuw wachtwoord naar de gebruiker te sturen.', + resetPassword: 'Wachtwoord resetten', + resettingPassword: 'Wachtwoord resetten...', + }, + deleteModal: { + title: 'Gebruiker verwijderen', + message: 'Weet je zeker dat je deze gebruiker wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', + confirm: 'Gebruiker verwijderen', + }, + }, + + // Stream overlay + streamOverlay: { + title: 'Streamoverlay', + invalidPrinterId: 'Ongeldige printer-ID', + cameraStream: 'Camerastream', + progress: 'Voortgang', + eta: 'ETA', + printerIdle: 'Printer is inactief', + printerOffline: 'Printer offline', + builder: { + title: 'Streamingoverlay', + description: 'Bouw de URL voor een streamingoverlay — een camerabeeld op volledig scherm met live afdrukgegevens eroverheen, voor OBS, een wanddisplay of elke browserbron. Kies de velden die je wilt en kopieer de URL.', + printer: 'Printer', + size: 'Tekstgrootte', + sizeSmall: 'Klein', + sizeMedium: 'Middelgroot', + sizeLarge: 'Groot', + fps: 'Framesnelheid', + fpsHint: 'A1- en P1-camera\'s halen maximaal ongeveer 5 fps, ongeacht wat je instelt.', + token: 'Token voor streamingoverlay (optioneel)', + tokenHint: 'Alleen nodig wanneer login is ingeschakeld: OBS heeft geen eigen sessie. Maak hierboven een token met het bereik Streamingoverlay.', + tokenWarning: 'Deze URL bevat een token — iedereen die hem kan lezen kan de stream bekijken en de bestandsnaam zien. Trek het token in om de toegang te stoppen.', + fields: 'Velden om te tonen', + fieldPrinter: 'Printernaam', + fieldFilename: 'Bestandsnaam', + fieldStatus: 'Status', + fieldProgress: 'Voortgangsbalk', + fieldLayers: 'Aantal lagen', + fieldEta: 'Resterende tijd en ETA', + fieldCamera: 'Camerabeeld', + chamberHint: 'Kamertemperatuur verschijnt alleen op modellen met een echte kamersensor — P1- en A1-printers melden een betekenisloze waarde, daarom wordt die daar weggelaten.', + urlTitle: 'Overlay-URL', + open: 'Open', + showPreview: 'Voorbeeld tonen', + hidePreview: 'Voorbeeld verbergen', + previewTitle: 'Overlayvoorbeeld', + }, + status: { + printing: 'Bezig met afdrukken', + paused: 'Gepauzeerd', + finished: 'Voltooid', + failed: 'Mislukt', + idle: 'Inactief', + unknown: 'Onbekend', + }, + }, + + // Profiles + profiles: { + title: 'Profielen', + subtitle: 'Beheer je slicerpresets en pressure-advance-kalibraties', + tabs: { + bambuCloud: 'Bambu Cloud', + orcaCloud: 'Orca Cloud', + local: 'Lokale profielen', + kprofiles: 'K-profielen', + }, + orcaCloud: { + connectedAs: 'Verbonden als', + connectedShort: 'Verbonden met Orca Cloud', + logout: 'Verbinding verbreken', + noLogoutPermission: 'Je hebt geen toestemming om de verbinding te verbreken', + noConnectPermission: 'Je hebt geen toestemming om verbinding te maken met Orca Cloud', + retry: 'Opnieuw proberen', + connectButton: 'Orca Cloud verbinden', + connect: { + title: 'Verbinden met Orca Cloud', + description: 'Log in op je Orca Cloud-account om je slicerprofielen met Bambuddy te synchroniseren.', + }, + device: { + title: 'Bambuddy goedkeuren in Orca Cloud', + instruction: 'Open Orca Cloud en keur deze code goed. Bambuddy maakt automatisch verbinding zodra je goedkeurt.', + codeLabel: 'Je koppelcode', + openButton: 'Orca Cloud-goedkeuringspagina openen', + manualHint: 'Of ga naar {{url}} en voer bovenstaande code in.', + waiting: 'Wachten op je goedkeuring…', + cancel: 'Annuleren', + }, + profiles: { + title: 'Je Orca Cloud-profielen ({{count}})', + refresh: 'Vernieuwen', + empty: 'Nog geen profielen gevonden in je Orca Cloud-account.', + }, + toast: { + disconnected: 'Verbinding met Orca Cloud verbroken', + }, + errors: { + startFailed: 'Koppelen met Orca Cloud kon niet worden gestart.', + denied: 'De koppeling is geweigerd in Orca Cloud.', + expired: 'De koppelcode is verlopen. Klik op Verbinden om opnieuw te proberen.', + pollFailed: 'De verbinding ging verloren tijdens het wachten op goedkeuring. Probeer het opnieuw.', + }, + }, + localProfiles: { + title: 'Lokale profielen', + subtitle: 'Slicepresets importeren en beheren vanuit OrcaSlicer', + import: 'Profielen importeren', + importDesc: 'Sleep .bbscfg-, .bbsflmt-, .orca_filament-, .zip- of .json-bestanden hierheen', + importing: 'Importeren...', + search: 'Lokale presets zoeken...', + noPresets: 'Nog geen lokale presets', + noSearchResults: 'Geen presets komen overeen met je zoekopdracht', + badge: 'Lokaal', + edit: 'Bewerken', + delete: 'Verwijderen', + cancel: 'Annuleren', + deleteConfirmTitle: 'Preset verwijderen', + deleteConfirm: 'Weet je zeker dat je deze preset wilt verwijderen? Dit kan niet ongedaan worden gemaakt.', + source: 'Bron', + inheritsFrom: 'Erft van', + filamentType: 'Type', + vendor: 'Leverancier', + compatiblePrinters: 'Printers', + nozzleTemp: 'Nozzletemp.', + cost: 'Kosten', + density: 'Dichtheid', + pressureAdvance: 'Pressure Advance', + filament: 'Filament', + process: 'Proces', + printer: 'Printer', + toast: { + importSuccess: '{{count}} preset(s) geïmporteerd', + importSkipped: '{{count}} preset(s) overgeslagen (duplicaten)', + importError: '{{count}} fout(en) tijdens importeren', + deleted: 'Preset verwijderd', + updated: 'Preset bijgewerkt', + }, + }, + connectedAs: 'Verbonden als', + signInExpiredTitle: 'Bambu Cloud-login verlopen', + signInExpiredBody: 'Bambu Lab accepteert het opgeslagen token niet meer. Log opnieuw in om cloudprofielen, MakerWorld-imports en firmwarecontroles te herstellen.', + logout: 'Uitloggen', + noLogoutPermission: 'Je hebt geen toestemming om uit te loggen', + failedToLoad: 'Profielen laden mislukt', + retry: 'Opnieuw proberen', + time: { + justNow: 'Zojuist', + minsAgo: '{{count}}m geleden', + hoursAgo: '{{count}}u geleden', + daysAgo: '{{count}}d geleden', + }, + toast: { + loggedOut: 'Uitgelogd', + }, + login: { + title: 'Verbinden met Bambu Cloud', + subtitle: 'Synchroniseer je slicerpresets tussen apparaten', + email: 'E-mail', + password: 'Wachtwoord', + region: 'Regio', + regionGlobal: 'Wereldwijd', + regionChina: 'China', + verificationCode: 'Verificatiecode', + totpCode: 'Authenticatorcode', + checkEmail: 'Controleer je e-mail ({{email}}) op een 6-cijferige code', + enterTotpHint: 'Voer de 6-cijferige code uit je authenticator-app in', + accessToken: 'Toegangstoken', + accessTokenHint: 'Plak je Bambu Cloud-toegangstoken. Accounts in de China-regio moeten deze methode gebruiken (telefoongebonden — inloggen via e-mail niet beschikbaar). Zie de wiki voor het ophalen van het token uit MakerWorld-cookies.', + back: 'Terug', + loginButton: 'Inloggen', + verifyButton: 'Verifiëren', + setTokenButton: 'Token instellen', + useToken: 'In plaats daarvan toegangstoken gebruiken', + captchaTitle: 'Bambu Cloud vraagt om een CAPTCHA', + captchaBody: 'Bambu controleert je netwerk voordat inloggen wordt geaccepteerd en deze controle kan niet vanuit Bambuddy worden beantwoord. Je e-mailadres en wachtwoord zijn niet het probleem. De blokkering is gekoppeld aan je openbare IP-adres en verdwijnt normaal vanzelf binnen enkele uren — herhaaldelijk opnieuw proberen laat de blokkering langer duren. Gebruik om nu in te loggen een toegangstoken uit een browsersessie.', + useEmail: 'In plaats daarvan inloggen met e-mail', + toast: { + loggedIn: 'Succesvol ingelogd', + codeSent: 'Verificatiecode naar je e-mail gestuurd', + enterTotp: 'Voer code uit je authenticator-app in', + tokenSet: 'Token succesvol ingesteld', + }, + }, + presets: { + myPreset: 'Mijn preset (bewerkbaar)', + duplicate: 'Dupliceren', + editable: 'Bewerkbaar', + failedToLoadDetails: 'Presetdetails laden mislukt', + deleteConfirm: 'Deze preset verwijderen?', + deleteWarning: 'Hiermee wordt "{{name}}" permanent uit Bambu Cloud verwijderd. Dit kan niet ongedaan worden gemaakt.', + noDuplicatePermission: 'Je hebt geen toestemming om presets te dupliceren', + noEditPermission: 'Je hebt geen toestemming om presets te bewerken', + noDeletePermission: 'Je hebt geen toestemming om presets te verwijderen', + types: { + filament: 'Filamentpreset', + printer: 'Printerpreset', + process: 'Procespreset', + }, + toast: { + deleted: 'Preset verwijderd', + created: 'Preset gemaakt', + updated: 'Preset bijgewerkt', + duplicated: 'Preset gedupliceerd', + fieldAdded: 'Veld "{{key}}" toegevoegd', + exported: 'Preset geëxporteerd', + }, + baseLabel: 'Basis: {{name}}', + currentLabel: 'Huidig: {{name}}', + newPreset: 'Nieuwe preset', + editPreset: 'Preset bewerken', + duplicatePreset: 'Preset dupliceren', + createNewPreset: 'Nieuwe preset maken', + customizeSettings: 'Instellingen voor je nieuwe preset aanpassen', + compareWithBase: 'Vergelijken met basispreset', + compare: 'Vergelijken', + // CreatePresetModal - Basic Info + basePreset: 'Basispreset', + selectBasePreset: 'Basispreset selecteren...', + presetName: 'Presetnaam', + myCustomPreset: 'Mijn aangepaste preset', + inheritsFrom: 'Erft van', + dropJsonToImport: 'Sleep JSON om te importeren', + // CreatePresetModal - Tabs + tabs: { + common: 'Algemeen', + allFields: 'Alle velden', + }, + // CreatePresetModal - All Fields Tab + availableFields: 'Beschikbare velden', + searchFieldsPlaceholder: 'Velden zoeken...', + noMatchingFields: 'Geen overeenkomende velden', + allFieldsAdded: 'Alle velden toegevoegd', + addCustomField: 'Aangepast veld toevoegen', + yourOverrides: 'Je overschrijvingen', + noOverridesYet: 'Nog geen overschrijvingen', + clickFieldsToAdd: 'Klik links op velden om ze toe te voegen', + saveAsTemplate: 'Opslaan als sjabloon', + jsonTip: 'Tip: sleep een .json-bestand ergens in dit venster om instellingen te importeren', + }, + cloudView: { + searchPlaceholder: 'Presets zoeken...', + templates: 'Sjablonen', + refresh: 'Vernieuwen', + newPreset: 'Nieuwe preset', + clearFilters: 'Filters wissen', + // Compare mode + compareMode: 'Vergelijkingsmodus', + selectAnotherPreset: 'Selecteer een andere {{type}}-preset', + clickTwoPresets: 'Klik op twee presets van hetzelfde type om te vergelijken', + selectFirst: '1. Selecteer eerste', + selectSecond: '2. Selecteer tweede', + compareNow: 'Nu vergelijken', + // Status row + lastSynced: 'Laatst gesynchroniseerd:', + showingCount: '{{showing}} van {{total}} presets weergegeven', + noPresetsFound: 'Geen presets gevonden', + // Column headers + columns: { + filament: 'Filament', + process: 'Proces', + printer: 'Printer', + }, + noFilamentPresets: 'Geen filamentpresets', + noProcessPresets: 'Geen procespresets', + noPrinterPresets: 'Geen printerpresets', + // Filters + filters: { + type: 'Type', + owner: 'Eigenaar', + printer: 'Printer', + nozzle: 'Nozzle', + filament: 'Filament', + layer: 'Laag', + all: 'Alle', + myPresets: 'Mijn presets', + builtIn: 'Ingebouwd', + process: 'Proces', + }, + // Permissions + noTemplatesPermission: 'Je hebt geen toestemming om sjablonen te beheren', + noRefreshPermission: 'Je hebt geen toestemming om profielen te vernieuwen', + noCreatePermission: 'Je hebt geen toestemming om presets te maken', + }, + templates: { + title: 'Snelle sjablonen', + noTemplates: 'Nog geen sjablonen', + createFirst: 'Maak sjablonen vanuit de preseteditor', + typeFilter: 'Type:', + deleteTitle: 'Sjabloon verwijderen', + deleteWarning: 'Deze actie kan niet ongedaan worden gemaakt', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen?', + namePlaceholder: 'Sjabloonnaam', + descriptionPlaceholder: 'Beschrijving', + settingsJson: 'Instellingen (JSON)', + fieldsCount: '{{count}} velden', + shownInModals: 'Getoond in vensters', + hiddenInModals: 'Verborgen in vensters', + apply: 'Toepassen', + toast: { + deleted: 'Sjabloon verwijderd', + updated: 'Sjabloon bijgewerkt', + created: 'Sjabloon gemaakt', + applied: 'Sjabloon toegepast', + }, + }, + }, + + // Support/Debug + support: { + debugLoggingActive: 'Debuglogboekregistratie is actief', + manageLogs: 'Beheren', + collectItem7: 'Printerverbinding en firmwareversies', + collectItem8: 'Integratiestatus (Spoolman, MQTT, HA)', + collectItem9: 'Netwerkinterfaces (alleen subnetten)', + collectItem10: 'Python-pakketversies', + collectItem11: 'Databasegezondheidscontroles', + collectItem12: 'Docker-omgevingsdetails', + bundleGenerating: 'Bundel genereren...', + bundleStepConnection: 'Printerverbindingscontroles uitvoeren', + bundleStepVirtualPrinters: 'Installatiecontroles virtuele printer uitvoeren', + bundleStepLogScan: 'Recente logboeken scannen op bekende problemen', + bundleStepBuild: 'Supportbundel-ZIP maken', + }, + + // File manager + fileManager: { + variants: { + badge: '{{count}} versies', + groupAction: 'Als versies groeperen', + groupTooltip: 'Markeer deze bestanden als dezelfde taak, gesliced voor verschillende printers', + grouped: '{{count}} bestanden als versies gegroepeerd', + printAlternatives: 'Afdrukken ({{count}} alternatieven)', + }, + title: 'Bestandsbeheer', + subtitle: 'Organiseer en beheer je afdrukbestanden', + uploadFiles: 'Bestanden uploaden', + newFolder: 'Nieuwe map', + folderName: 'Mapnaam', + folderNamePlaceholder: 'bijv. Functionele onderdelen', + renameFile: 'Bestand hernoemen', + renameFolder: 'Map hernoemen', + invalidFilenameChar: 'Het teken "{{char}}" is niet toegestaan in bestandsnamen voor afdrukken. De SD-kaart van de printer weigert: < > : " / \\ | ? *', + moveFiles: '{{count}} bestand(en) verplaatsen', + rootNoFolder: 'Hoofdmap (geen map)', + current: 'huidig', + linkFolder: 'Map koppelen', + linkFolderDescription: 'Koppel "{{name}}" aan een project of archief voor snelle toegang.', + project: 'Project', + archive: 'Archief', + noProjectsFound: 'Geen projecten gevonden', + noArchivesFound: 'Geen archieven gevonden', + unlink: 'Ontkoppelen', + link: 'Koppelen', + dragDropFiles: 'Sleep bestanden hierheen', + dropFilesHere: 'Zet bestanden hier neer', + releaseToUpload: 'Loslaten om te uploaden', + orClickToBrowse: 'of klik om te bladeren', + allFileTypesSupported: 'Alle bestandstypen worden ondersteund. ZIP-bestanden worden uitgepakt.', + zipFilesDetected: 'ZIP-bestanden gedetecteerd', + zipExtractOptions: 'ZIP-bestanden worden uitgepakt. Kies hoe de mapstructuur moet worden verwerkt:', + preserveZipStructure: 'Mapstructuur uit ZIP behouden', + createFolderFromZip: 'Map maken op basis van ZIP-bestandsnaam', + stlThumbnailGeneration: 'STL-miniaturen genereren', + zipMayContainStl: 'ZIP-bestanden kunnen STL-bestanden bevatten. Miniaturen kunnen tijdens het uitpakken worden gegenereerd.', + thumbnailsCanBeGenerated: 'Voor STL-bestanden kunnen miniaturen worden gegenereerd. Grote modellen kunnen langer duren om te verwerken.', + generateThumbnailsForStl: 'Miniaturen genereren voor STL-bestanden', + threemfDetected: '3MF-bestanden gedetecteerd', + threemfExtractionInfo: 'Printermodel, materiaal, kleur en afdrukinstellingen worden automatisch uit 3MF-bestanden gehaald.', + willBeExtracted: 'Wordt uitgepakt', + filesExtracted: '{{count}} bestanden uitgepakt', + uploadComplete: 'Upload voltooid: {{succeeded}} geslaagd', + uploadFailed: 'Upload mislukt', + zipFilesFailed: '{{count}} bestanden mislukt', + uploading: 'Uploaden...', + changeLink: 'Koppeling wijzigen...', + linkTo: 'Koppelen aan...', + linkToProjectOrArchive: 'Koppelen aan project of archief', + generateThumbnail: 'Miniatuur genereren', + generateThumbnails: 'Miniaturen genereren', + generateThumbnailsForMissing: 'Miniaturen genereren voor STL-bestanden die ze missen', + gridView: 'Rasterweergave', + listView: 'Lijstweergave', + lowDiskSpaceWarning: 'Waarschuwing weinig schijfruimte', + lowDiskSpaceDetails: 'Slechts {{free}} vrij van {{total}} totaal. De drempel is in de instellingen ingesteld op {{threshold}} GB.', + files: 'Bestanden', + folders: 'Mappen', + size: 'Grootte', + free: 'Vrij', + allFiles: 'Alle bestanden', + allExternal: 'Extern', + externalIsEmpty: 'Geen externe bestanden', + externalEmptyDescription: 'Bestanden in je gekoppelde externe mappen verschijnen hier.', + wrap: 'Regelafbreking', + enableTextWrapping: 'Tekstterugloop inschakelen', + disableTextWrapping: 'Tekstterugloop uitschakelen', + collapse: 'Inklappen', + collapseFoldersByDefault: 'Mappen standaard inklappen', + expandFoldersByDefault: 'Mappen standaard uitklappen', + folderSort: 'Mappen sorteren', + folderSortByName: 'Op naam', + folderSortByActivity: 'Op recente activiteit', + dragToResizeTooltip: 'Sleep om grootte te wijzigen, dubbelklik om te resetten', + searchFiles: 'Bestanden zoeken...', + searchSubfoldersHint: 'Inclusief submappen', + readme: { + truncated: 'Afgekapt', + show: 'README tonen', + hide: 'README verbergen', + label: 'README', + }, + tags: { + title: 'Tags', + subtitle: 'Label bestanden voor flexibele filtering — speelgoed, kindveilig, alleen PETG, wat je maar wilt.', + manage: 'Tags', + manageTitle: 'Tagcatalogus beheren', + add: 'Nieuwe tag', + edit: 'Tag hernoemen', + name: 'Naam', + fileCount: 'Bestanden', + empty: 'Nog geen tags. Maak er een om bestanden te gaan labelen.', + noMatches: 'Geen overeenkomende tags.', + createPlaceholder: 'bijv. speelgoed, kindveilig, petg', + createButton: 'Maken', + nameRequired: 'Naam is verplicht.', + searchPlaceholder: 'Tags filteren...', + created: 'Tag gemaakt.', + updated: 'Tag hernoemd.', + deleted: 'Tag verwijderd.', + saveFailed: 'Tag kon niet worden opgeslagen.', + deleteFailed: 'Tag kon niet worden verwijderd.', + applyFailed: 'Tags konden niet worden toegepast.', + applyAdd: 'Tags toevoegen', + applyRemove: 'Tags verwijderen', + applyAddSuccess: '{{count}} tag(s) toegevoegd aan {{files}} bestand(en).', + applyRemoveSuccess: '{{count}} tag(s) verwijderd van {{files}} bestand(en).', + actionAdd: 'Toevoegen aan geselecteerde bestanden', + actionRemove: 'Verwijderen van geselecteerde bestanden', + tagAction: 'Tag', + bulkTitle: '{{count}} geselecteerde bestand(en) taggen', + bulkTooltip: 'Tags toevoegen aan of verwijderen van elk geselecteerd bestand.', + noPermission: 'Je hebt geen toestemming om bestanden te taggen.', + filterLabel: 'Filteren op:', + clearAll: 'Alles wissen', + confirmDelete: 'Tag "{{name}}" verwijderen?', + confirmDeleteMessage: 'Hiermee wordt de tag uit de catalogus verwijderd. Bestanden behouden hun andere tags.', + confirmDeleteInUseMessage: 'Deze tag staat op {{count}} bestand(en). Bij verwijderen verdwijnt het label van al deze bestanden; de bestanden zelf blijven intact.', + editAria: '{{name}} bewerken', + deleteAria: '{{name}} verwijderen', + }, + allTypes: 'Alle typen', + prints: 'Afdrukken', + ascending: 'Oplopend', + descending: 'Aflopend', + showModified: 'Wijzigingsdatums tonen', + hideModified: 'Wijzigingsdatums verbergen', + lastModified: 'Laatst gewijzigd', + lastActivity: 'Laatste activiteit', + resultsCount: '{{showing}} van {{total}} bestanden', + selectAll: 'Alles selecteren', + deselectAll: 'Alles deselecteren', + selected: '{{count}} geselecteerd', + adding: 'Toevoegen...', + loadingFiles: 'Bestanden laden...', + folderIsEmpty: 'Map is leeg', + noFilesYet: 'Nog geen bestanden', + folderEmptyDescription: 'Upload bestanden of verplaats bestanden naar deze map om te beginnen.', + noFilesDescription: 'Upload bestanden om je afdrukgerelateerde bestanden te organiseren.', + noMatchingFiles: 'Geen overeenkomende bestanden', + noMatchingFilesDescription: 'Geen bestanden komen overeen met je huidige zoek- of filtercriteria.', + clearFilters: 'Filters wissen', + printedCount: '{{count}}x afgedrukt', + uploadedBy: 'Geüpload door', + deleteFolder: 'Map verwijderen', + deleteFile: 'Bestand verwijderen', + deleteFilesCount: '{{count}} bestanden verwijderen', + deleteFolderConfirm: 'Weet je zeker dat je deze map wilt verwijderen? Alle bestanden erin worden ook verwijderd.', + deleteFileConfirm: 'Weet je zeker dat je dit bestand wilt verwijderen?', + deleteFilesConfirm: 'Weet je zeker dat je {{count}} geselecteerde bestanden wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', + deleting: 'Verwijderen...', + noPermissionRenameFolder: 'Je hebt geen toestemming om mappen te hernoemen', + noPermissionLinkFolder: 'Je hebt geen toestemming om mappen te koppelen', + noPermissionDeleteFolder: 'Je hebt geen toestemming om mappen te verwijderen', + onlyEmptyFoldersDeletable: 'Je kunt alleen lege mappen verwijderen', + noPermissionPrint: 'Je hebt geen toestemming om af te drukken', + noPermissionAddToQueue: 'Je hebt geen toestemming om aan de wachtrij toe te voegen', + noPermissionSlice: 'Je hebt geen toestemming om bestanden te slicen', + noPermissionDownload: 'Je hebt geen toestemming om bestanden te downloaden', + noPermissionPreview: 'Je hebt geen toestemming om bestanden te bekijken', + preview3d: '3D-voorbeeld', + noPermissionRenameFile: 'Je hebt geen toestemming om dit bestand te hernoemen', + noPermissionGenerateThumbnail: 'Je hebt geen toestemming om miniaturen te genereren', + noPermissionDeleteFile: 'Je hebt geen toestemming om dit bestand te verwijderen', + noPermissionCreateFolder: 'Je hebt geen toestemming om mappen te maken', + noPermissionUpload: 'Je hebt geen toestemming om bestanden te uploaden', + noPermissionMoveFiles: 'Je hebt geen toestemming om bestanden te verplaatsen', + noPermissionDeleteFiles: 'Je hebt geen toestemming om bestanden te verwijderen', + // External folder + linkExternal: 'Extern koppelen', + linkExternalFolder: 'Externe map koppelen', + linkExternalFolderDescription: 'Koppel een hostmap (NAS, USB, netwerkshare) aan Bestandsbeheer. Bestanden worden niet gekopieerd — ze worden rechtstreeks vanaf het oorspronkelijke pad benaderd.', + externalFolderNamePlaceholder: 'bijv. NAS-afdrukken', + externalPath: 'Hostpad', + externalPathHelp: 'Absoluut pad naar de map op de Docker-host. Moet als bind-mount in de container zijn gekoppeld.', + readOnly: 'Alleen-lezen', + readOnlyHelp: 'voorkomt uploads en verwijderingen', + showHiddenFiles: 'Verborgen bestanden tonen (dotfiles)', + externalFolder: 'Externe map', + scanFolder: 'Scannen', + toast: { + folderCreated: 'Map gemaakt', + openInSlicerFailed: 'Kon niet openen in slicer', + folderDeleted: 'Map verwijderd', + fileDeleted: 'Bestand verwijderd', + filesDeleted: '{{count}} bestanden verwijderd', + filesMoved: 'Bestanden verplaatst', + folderLinked: 'Map gekoppeld', + folderUnlinked: 'Map ontkoppeld', + externalFolderLinked: 'Externe map gekoppeld en gescand', + folderScanned: 'Scan voltooid: {{added}} toegevoegd, {{removed}} verwijderd', + addedToQueue: '{{count}} bestand(en) aan wachtrij toegevoegd', + addedToQueuePartial: '{{added}} bestand(en) toegevoegd, {{failed}} mislukt', + failedToAddToQueue: 'Bestanden toevoegen mislukt: {{error}}', + fileRenamed: 'Bestand hernoemd', + folderRenamed: 'Map hernoemd', + thumbnailsGenerated: '{{count}} miniatuur/miniaturen gegenereerd', + thumbnailsGeneratedPartial: '{{succeeded}} miniatuur/miniaturen gegenereerd, {{failed}} mislukt', + noStlMissingThumbnails: 'Geen STL-bestanden zonder miniaturen', + failedToGenerateThumbnails: 'Miniaturen genereren mislukt: {{error}}', + thumbnailGenerated: 'Miniatuur gegenereerd', + failedToGenerateThumbnail: 'Miniatuur genereren mislukt: {{error}}', + }, + }, + + // Projects + projects: { + parentLabel: 'Bovenliggend project', + parentNone: 'Geen (project op hoogste niveau)', + parentHint: 'Plaats dit project onder een ander project zodat de cijfers worden opgeteld in een hoofdproject', + partOf: 'Onderdeel van {{name}}', + subProjectCount: '{{count}} subprojecten', + subProjectsOf: 'Subprojecten van {{name}}', + title: 'Projecten', + subtitle: 'Organiseer en volg je 3D-printprojecten', + newProject: 'Nieuw project', + editProject: 'Project bewerken', + deleteProject: 'Project verwijderen', + projectName: 'Projectnaam', + description: 'Beschrijving', + noProjects: 'Nog geen projecten', + noProjectsFiltered: 'Geen {{status}} projecten', + noProjectsFilteredHelp: 'Je hebt geen {{status}} projecten. Projecten verschijnen hier wanneer hun status verandert.', + createFirst: 'Maak je eerste project om gerelateerde afdrukken te organiseren, voortgang bij te houden en je builds te beheren.', + createFirstButton: 'Maak je eerste project', + create: 'Maken', + files: 'Bestanden', + prints: 'Afdrukken', + plates: 'platen', + parts: 'onderdelen', + lastModified: 'Laatst gewijzigd', + deleteConfirm: 'Weet je zeker dat je dit project wilt verwijderen? Archieven en wachtrij-items worden ontkoppeld maar niet verwijderd.', + addFiles: 'Bestanden toevoegen', + removeFile: 'Bestand verwijderen', + viewDetails: 'Details bekijken', + // Modal fields + namePlaceholder: 'bijv. Voron 2.4 Build', + descriptionPlaceholder: 'Optionele beschrijving...', + urlLabel: 'URL', + urlPlaceholder: 'https://makerworld.com/...', + urlInvalid: 'URL moet beginnen met http:// of https://', + openExternalUrl: 'Project-URL openen', + coverImageLabel: 'Omslagfoto', + coverImageAlt: 'Projectomslagfoto', + coverImageUpload: 'Uploaden', + coverImageReplace: 'Vervangen', + coverImageRemove: 'Verwijderen', + color: 'Kleur', + targetPlates: 'Doelaantal platen', + targetPlatesPlaceholder: 'bijv. 25', + targetPlatesHelp: 'Aantal afdruktaken', + targetParts: 'Doelaantal onderdelen', + targetPartsPlaceholder: 'bijv. 150', + targetPartsHelp: 'Totaal aantal benodigde objecten', + targetSets: 'Kopieën per bestand', + targetSetsPlaceholder: 'bijv. 10', + targetSetsHelp: 'Aantal keren dat elk afdrukbaar bestand moet worden afgedrukt', + tagsLabel: 'Tags (door komma\'s gescheiden)', + tagsPlaceholder: 'bijv. voron, functioneel, cadeau', + dueDate: 'Einddatum', + priority: 'Prioriteit', + priorityLow: 'Laag', + priorityNormal: 'Normaal', + priorityHigh: 'Hoog', + priorityUrgent: 'Urgent', + // Status + statusActive: 'Actief', + statusCompleted: 'Voltooid', + statusArchived: 'Gearchiveerd', + done: 'Klaar', + completed: 'voltooid', + failed: 'mislukt', + inQueue: 'in wachtrij', + noPrintsYet: 'Nog geen afdrukken', + // Footer stats + printJobs: 'Afdruktaken (platen)', + partsPrinted: 'Afgedrukte onderdelen', + failedParts: 'Mislukte onderdelen', + // Actions + import: 'Importeren', + export: 'Exporteren', + importProject: 'Project importeren', + exportAll: 'Alle projecten exporteren', + loading: 'Projecten laden...', + // Permissions + noEditPermission: 'Je hebt geen toestemming om projecten te bewerken', + noDeletePermission: 'Je hebt geen toestemming om projecten te verwijderen', + noCreatePermission: 'Je hebt geen toestemming om projecten te maken', + noImportPermission: 'Je hebt geen toestemming om projecten te importeren', + noExportPermission: 'Je hebt geen toestemming om projecten te exporteren', + // Toast + toast: { + created: 'Project gemaakt', + updated: 'Project bijgewerkt', + deleted: 'Project verwijderd', + imported: 'Project geïmporteerd', + multipleImported: '{{count}} projecten geïmporteerd', + importFailed: 'Importeren mislukt', + exported: 'Projecten geëxporteerd (alleen metadata)', + }, + }, + + // Project detail page + projectDetail: { + notFound: 'Project niet gevonden', + backToProjects: 'Terug naar Projecten', + export: 'Exporteren', + exportProject: 'Project exporteren', + noExportPermission: 'Je hebt geen toestemming om projecten te exporteren', + noEditPermission: 'Je hebt geen toestemming om projecten te bewerken', + partOf: 'Onderdeel van:', + priorityLabel: 'Prioriteit:', + noPrints: 'Nog geen afdrukken in dit project', + status: { + active: 'Actief', + completed: 'Voltooid', + archived: 'Gearchiveerd', + }, + priority: { + low: 'Laag', + normal: 'Normaal', + high: 'Hoog', + urgent: 'Urgent', + }, + dueDate: { + overdue: 'Te laat', + today: 'Vandaag te doen', + daysLeft: '{{count}} dagen resterend', + }, + progress: { + platesProgress: 'Voortgang platen', + partsProgress: 'Voortgang onderdelen', + setsProgress: 'Volledige sets', + sets: 'sets', + setsHint: 'Een set is compleet zodra elk afdrukbaar bestand dit aantal heeft bereikt', + printJobs: 'afdruktaken', + parts: 'onderdelen', + percentComplete: '{{percent}}% voltooid', + remaining: '{{count}} resterend', + }, + stats: { + printJobs: 'Afdruktaken', + total: 'totaal', + failed: '{{count}} mislukt', + partsPrinted: '{{count}} onderdelen afgedrukt', + printTime: 'Afdruktijd', + filamentUsed: 'Filament gebruikt', + }, + cost: { + title: 'Kostentracking', + filamentCost: 'Filamentkosten', + energy: 'Energie', + totalCost: 'Geschatte kosten', + total: 'Totaal', + includesBom: 'incl. materiaallijst', + budget: 'Budget', + remaining: 'Resterend', + }, + subProjects: { + title: 'Subprojecten ({{count}})', + jobs: '{{count}} taken', + }, + rollup: { + title: 'Inclusief {{count}} subprojecten', + progress: 'Totale voortgang', + percentComplete: '{{percent}}% voltooid', + }, + notes: { + title: 'Notities', + noEditPermission: 'Je hebt geen toestemming om notities te bewerken', + placeholder: 'Voeg notities over dit project toe...', + empty: 'Nog geen notities. Klik op Bewerken om notities toe te voegen.', + }, + files: { + title: 'Bestanden', + linkFolders: 'Koppel mappen vanuit Bestandsbeheer', + forQuickAccess: 'aan dit project voor snelle toegang.', + fileCount: '{{count}} bestand(en)', + empty: 'Geen mappen gekoppeld. Ga naar Bestandsbeheer en koppel een map aan dit project.', + printedCount: '{{count}} keer afgedrukt', + progressTooltip: '{{done}} van {{target}} voltooide afdrukken', + noFiles: 'Geen bestanden in deze map.', + }, + bom: { + title: 'Materiaallijst', + acquired: '{{completed}}/{{total}} aangeschaft', + showAll: 'Alles tonen', + hideDone: 'Voltooide verbergen', + addPart: 'Onderdeel toevoegen', + noAddPermission: 'Je hebt geen toestemming om onderdelen toe te voegen', + partNamePlaceholder: 'Onderdeelnaam (bijv. M3x8-schroeven)', + partName: 'Onderdeelnaam', + qty: 'Aantal', + price: 'Prijs ({{currency}})', + sourcingUrlPlaceholder: 'Inkoop-URL (optioneel)', + remarksPlaceholder: 'Opmerkingen (optioneel)', + deletePart: 'Onderdeel verwijderen', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen?', + noUpdatePermission: 'Je hebt geen toestemming om onderdelen bij te werken', + noEditPermission: 'Je hebt geen toestemming om onderdelen te bewerken', + noDeletePermission: 'Je hebt geen toestemming om onderdelen te verwijderen', + totalCost: 'Totale kosten:', + empty: 'Geen onderdelen in de materiaallijst. Voeg hardware, elektronica of andere componenten toe om bij te houden wat nog moet worden ingekocht.', + }, + timeline: { + title: 'Activiteitentijdlijn', + empty: 'Nog geen activiteit.', + }, + template: { + saveAsTemplate: 'Opslaan als sjabloon', + noCreatePermission: 'Je hebt geen toestemming om sjablonen te maken', + }, + queue: { + title: 'Wachtrij', + viewAll: 'Alles bekijken', + printing: '{{count}} bezig met afdrukken', + queued: '{{count}} in wachtrij', + }, + prints: { + title: 'Afdrukken ({{count}})', + }, + toast: { + projectUpdated: 'Project bijgewerkt', + partAdded: 'Onderdeel toegevoegd', + partRemoved: 'Onderdeel verwijderd', + exportFailed: 'Export mislukt', + projectExported: 'Project geëxporteerd', + templateCreated: 'Sjabloon gemaakt', + }, + }, + + // System info + system: { + title: 'Systeeminformatie', + version: 'Versie', + uptime: 'Uptime', + cpuUsage: 'CPU-gebruik', + memoryUsage: 'Geheugengebruik', + diskUsage: 'Schijfgebruik', + networkInfo: 'Netwerkinformatie', + logs: 'Logboeken', + debugMode: 'Debugmodus', + enableDebug: 'Debuglogboekregistratie inschakelen', + disableDebug: 'Debuglogboekregistratie uitschakelen', + downloadLogs: 'Logboeken downloaden', + clearLogs: 'Logboeken wissen', + dockerInfo: 'Docker-informatie', + containerName: 'Containernaam', + imageName: 'Imagenaam', + platform: 'Platform', + architecture: 'Architectuur', + }, + + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Onafhankelijk en door de community gefinancierd', + tagline: 'Bambuddy is gratis en blijft dat omdat mensen ervoor kiezen het te ondersteunen. Geen durfkapitaal, geen cloud-lock-in.', + viewSupporters: 'Supporters bekijken', + toastPrints: 'Je hebt {{count}} afdrukken voltooid met Bambuddy. Bambuddy blijft gratis dankzij zijn supporters.', + toastCost: 'Je hebt {{total}} aan filament bijgehouden met Bambuddy. Bekijk wie het project onafhankelijk houdt.', + toastArchives: '{{count}} afdrukken gearchiveerd met Bambuddy. Bekijk wie het onafhankelijk houdt.', + toastAnniversary: 'Eén jaar met Bambuddy! Bekijk wie het project onafhankelijk houdt.', + toastVersionUpdate: 'Bijgewerkt naar v{{version}}. Bambuddy blijft gratis dankzij zijn supporters.', + toastBusiness: 'Gebruik je Bambuddy met {{count}} printers? Er is een supportplan voor teams — prioriteitsoplossingen, facturering en direct contact met de beheerder.', + businessCta: 'Bambuddy voor bedrijven', + businessTitle: 'Bambuddy voor bedrijven', + businessTagline: 'Je gebruikt {{count}} printers. Prioriteitssupport, commerciële licenties en facturering zijn beschikbaar voor teams en printfarms.', + }, + + // Library (K Profiles) + library: { + title: 'Filamentbibliotheek', + addFilament: 'Filament toevoegen', + editFilament: 'Filament bewerken', + deleteFilament: 'Filament verwijderen', + vendor: 'Leverancier', + material: 'Materiaal', + color: 'Kleur', + kFactor: 'K-factor', + temperature: 'Temperatuur', + noFilaments: 'Geen filamenten in bibliotheek', + deleteConfirm: 'Weet je zeker dat je dit filament wilt verwijderen?', + importFromPrinter: 'Importeren vanaf printer', + exportToFile: 'Exporteren naar bestand', + // Slicer Pipelines run from the File Manager (#1425 PR B). The Run-with-pipeline + // modal is a two-step dialog: pick a pipeline, then either fire (eligibility ok) + // or confirm-and-fire (eligibility report shown). Lives in components/RunWithPipelineModal.tsx. + runWithPipeline: { + actionLabel: 'Uitvoeren met pipeline', + noPermission: 'Je hebt geen toestemming om pipelines uit te voeren', + modalTitle: 'Uitvoeren met pipeline', + confirmTitle: 'Run bevestigen', + confirmIntro: 'Pre-flight heeft problemen met deze run gevonden', + sourceHint: 'Bron', + pipelineHint: 'Pipeline', + targetHint: 'Doel', + pipelineListAria: 'Beschikbare pipelines', + runAnyway: 'Toch uitvoeren', + loading: 'Laden…', + empty: 'Nog geen pipelines opgeslagen. Open het Slice-dialoogvenster en klik op "Opslaan als pipeline" om er een te maken.', + noTarget: 'Geen doelprinter ingesteld', + noTargetMessage: 'Deze pipeline heeft geen doelprinter ingesteld. Open hem in Instellingen om er een te kiezen.', + // PR C — copies input + class-targeted pipelines. + copies: 'Kopieën', + copiesHint: 'max. {{n}}', + classTarget: 'Elke {{model}}', + toast: { + started: 'Pipeline-run gestart', + failed: 'Run starten mislukt', + }, + issue: { + printerNotSet: 'Geen doelprinter ingesteld voor deze pipeline.', + printerNotFound: 'Doelprinter bestaat niet meer.', + printerDisabled: 'Doelprinter is uitgeschakeld.', + printerOffline: 'Doelprinter is offline.', + filamentType: 'Filamentsleuf {{slot}}: verwacht {{expected}}, AMS heeft {{actual}}', + filamentColor: 'Filamentsleuf {{slot}}: kleur wijkt af (verwacht {{expected}}, AMS heeft {{actual}})', + amsSlotMissing: 'AMS-sleuf {{slot}} is niet beschikbaar op deze printer', + filamentUnverified: 'Filamentsleuf {{slot}} komt uit een cloud-/standaardpreset en kon niet statisch worden geverifieerd.', + // PR C — class targeting + noClassMatches: 'Geen printers in deze installatie komen overeen met de doelmodelklasse van de pipeline ({{expected}}).', + classNotSet: 'Pipelinedoel is ingesteld op een printerklasse, maar er is geen model gekozen.', + }, + }, + }, + + // Slice (slicer-API integration via SliceModal) + slicerSettings: { + presetValuesOutdatedSidecar: 'Slicerstandaarden weergegeven: je slicer-sidecar is ouder dan deze functie en kan de waarden van een preset niet rapporteren. Werk de sidecar-image bij om ze te zien. Alles wat je niet wijzigt blijft de preset gebruiken.', + presetValuesNotConfigured: 'Slicerstandaarden weergegeven: er is geen slicer-sidecar geconfigureerd, dus de waarden van een preset kunnen niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.', + presetValuesSidecarUnavailable: 'Slicerstandaarden weergegeven: de slicer-sidecar antwoordde niet, dus de waarden van een preset kunnen niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.', + presetValuesUnavailable: 'Slicerstandaarden weergegeven: de eigen waarden van de gekozen preset konden niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.', + filamentDefault: 'Standaard', + fromFile: 'uit bestand', + fromFileHint: 'De ontwerper heeft dit in het bronbestand gewijzigd. De waarde is {{value}}.', + fromFilePrinterCoupled: 'printer van ontwerper', + fromFilePrinterCoupledHint: 'Afgestemd op de printer waarvoor dit bestand is ontworpen -- kan op jouw printer verkeerd of buiten bereik zijn.', + fromFileOverridesPreset: 'overschrijft preset', + fromFileOverridesPresetHint: + 'Het bestand stelt dit in op {{value}}, terwijl de gekozen preset {{preset}} gebruikt. Vink dit alleen aan als het bestand voorrang moet krijgen.', + useFromFile: 'Waarde uit het bronbestand gebruiken voor {{option}}', + otherFromFile: 'Andere instellingen uit dit bestand', + fromFileSummary: 'De ontwerper heeft {{count}} procesinstellingen in dit bestand gewijzigd. Alleen de instellingen die je aanvinkt worden gebruikt.', + fromFileUseAll: 'Instellingen van de ontwerper gebruiken', + fromFileUseAllHint: 'Vinkt de instellingen aan die tussen printers overdraagbaar zijn. Instellingen die zijn afgestemd op de eigen printer van de ontwerper en instellingen die de gekozen preset definiëren blijven uitgeschakeld.', + fromFileClear: '{{count}} wissen', + loading: 'Slicerinstellingen laden…', + mode: { + simple: 'Eenvoudig', + advanced: 'Geavanceerd', + expert: 'Expert', + }, + searchPlaceholder: 'Instellingen zoeken', + resetAll: '{{count}} resetten', + resetOption: 'Terugzetten naar standaard', + noMatches: 'Geen instellingen komen overeen met deze zoekopdracht.', + }, + slice: { + filamentSlotUnset: 'niet ingesteld', + processSettingsEmbedded: 'Niet gebruikt zolang "Ingebouwde instellingen van het bestand gebruiken" is ingeschakeld -- de eigen instellingen van het bestand sturen deze slice aan.', + processSettingsInactive: 'Inactief', + presetsHidden: '{{count}} verborgen', + showAllPresets: 'Alles tonen', + showFewerPresets: 'Minder tonen', + processSettings: 'Procesinstellingen', + processSettingsHint: 'Pas de gekozen preset aan voor deze slice. Alles wat je niet aanraakt blijft zoals de preset het definieert.', + processSettingsChanged: '{{count}} gewijzigd', + processSettingsUnchanged: 'Presetstandaarden', + title: 'Model slicen', + action: 'Slicen', + actionAll: 'Alle {{count}} platen slicen', + actionAllTitle: 'Slice elke plaat naar één uitvoer met meerdere platen (één archief). Filamentselectie omvat elke sleuf die het project definieert.', + allPlatesToggle: 'Alle {{count}} platen slicen', + slicing: 'Slicen…', + printer: 'Printerprofiel', + process: 'Procesprofiel', + filament: 'Filamentprofiel', + filamentSlot: 'Filament {{index}} ({{type}})', + selectPreset: '— Selecteer een preset —', + loadingPresets: 'Presets laden…', + analyzingPlateFilaments: 'Filamenten op plaat analyseren…', + analyzingPlateFilamentsHint: 'Een voorbeeldslice uitvoeren om te ontdekken welke AMS-sleuven deze plaat gebruikt. Daarna gecachet — opnieuw openen is direct.', + previewToast: '{{name}} analyseren — {{elapsed}}', + previewWithProgress: '{{name}} analyseren — {{stage}} ({{percent}}%) — {{elapsed}}', + notUsedByPlate: '— niet gebruikt door deze plaat', + noPresetsForSlot: 'Geen presets beschikbaar', + otherPrinters: 'Andere printers', + presetsLoadFailed: 'Presets laden mislukt. Open eerst Instellingen → Profielen om ze te importeren.', + refreshPresets: 'Vernieuwen', + refreshPresetsTitle: 'Presets vernieuwen — haal de nieuwste cloud- en meegeleverde lijsten op (gebruik na het verwijderen van een preset in Bambu Studio of Bambu Handy)', + allPresetsRequired: 'Alle presets moeten worden geselecteerd', + useEmbedded: 'Ingebouwde instellingen van het bestand gebruiken', + useEmbeddedHint: 'Slice zoals de ontwerper het heeft ingesteld (wanden, infill, filament) in plaats van met bovenstaande profielen. Beschikbaar omdat je printer overeenkomt met die van het bestand.', + autoOrient: 'Objecten automatisch oriënteren', + autoOrientHint: 'Laat de slicer elk object eerst naar de beste afdrukzijde draaien. Overschrijft de oriëntatie uit het bestand.', + autoArrange: 'Automatisch op de plaat rangschikken', + autoArrangeHint: 'Laat de slicer de objecten positioneren zodat ze niet meer overlappen. Vervangt de indeling uit het bestand.', + enqueuing: 'Slicetaak indienen…', + queued: 'In wachtrij…', + failed: 'Slicen mislukt. Controleer de logboeken van de slicer-sidecar.', + startedToast: '{{name}} op de achtergrond slicen…', + queuedToast: 'In wachtrij: {{name}} — {{elapsed}}', + runningToast: '{{name}} slicen — {{elapsed}}', + runningWithProgress: '{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}', + runningWithProgressMultiPlate: 'Plaat {{plateIndex}} van {{plateCount}} • {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}', + completedToast: '{{name}} gesliced', + externalWriteFallbackToast: 'Opgeslagen in de interne bibliotheek: er kon niet naar de externe map worden geschreven', + failedTitle: 'Slicen mislukt', + failedToast: 'Slicen van {{name}} mislukt: {{detail}}', + tier: { + local: 'Geïmporteerd', + cloud: 'Bambu Cloud', + orcaCloud: 'Orca Cloud', + standard: 'Standaard', + }, + cloud: { + notAuthenticated: 'Log in op Bambu Cloud (Instellingen → Profielen → Bambu Cloud) om je cloudpresets te zien.', + expired: 'Bambu Cloud-sessie verlopen — log opnieuw in om je cloudpresets te vernieuwen.', + unreachable: 'Bambu Cloud is momenteel niet bereikbaar. Lokale en standaardpresets blijven werken.', + }, + orcaCloud: { + notAuthenticated: 'Log in op Orca Cloud (Profielen → Orca Cloud) om je Orca-presets te zien.', + expired: 'Orca Cloud-sessie verlopen — log opnieuw in om je Orca-presets te vernieuwen.', + unreachable: 'Orca Cloud is momenteel niet bereikbaar. Andere presets blijven werken.', + }, + bedType: { + label: 'Bouwplaat', + auto: 'Auto (procespreset gebruiken)', + coolPlate: 'Cool Plate', + coolPlateSuperTack: 'Cool Plate SuperTack', + engineering: 'Engineering Plate', + highTemp: 'High Temp Plate', + texturedPEI: 'Textured PEI Plate', + smoothPEI: 'Smooth PEI Plate', + }, + // Slicer Pipelines (#1425) — apply a saved bundle or save the current pick. + pipelines: { + label: 'Pipeline', + applyAria: 'Pipeline toepassen', + applyPrompt: 'Pipeline toepassen…', + empty: 'Geen opgeslagen pipelines', + saveButton: 'Opslaan als pipeline', + saveTitle: 'Sla de huidige selectie van vier sleuven op als herbruikbare pipeline', + namePlaceholder: 'Pipelinenaam', + nameAria: 'Nieuwe pipelinenaam', + toast: { + applied: '"{{name}}" toegepast', + saved: 'Pipeline opgeslagen', + saveFailed: 'Opslaan mislukt', + }, + }, + }, + + // Spoolman + spoolman: { + title: 'Spoolman-integratie', + enabled: 'Spoolman ingeschakeld', + url: 'Spoolman-URL', + connected: 'Verbonden', + disconnected: 'Niet verbonden', + testConnection: 'Verbinding testen', + sync: 'Synchroniseren', + syncing: 'Synchroniseren...', + lastSync: 'Laatste synchronisatie', + linkToSpoolman: 'Koppelen aan Spoolman', + openInSpoolman: 'Openen in Spoolman', + unlinkSpool: 'Spoel ontkoppelen', + unlinkConfirmTitle: 'Spoeltoewijzing verwijderen?', + unlinkConfirmMessage: 'Hiermee wordt de spoel uit deze sleuf verwijderd. De spoelgegevens zelf blijven ongewijzigd.', + selectSpool: 'Spoel selecteren', + noUnlinkedSpools: 'Geen niet-toegewezen spoelen beschikbaar', + linkSuccess: 'Spoel succesvol toegewezen', + linkFailed: 'Spoel toewijzen mislukt', + unlinkSuccess: 'Spoeltoewijzing succesvol verwijderd', + unlinkFailed: 'Spoeltoewijzing verwijderen mislukt', + linkedSpool: 'Toegewezen spoel', + spoolId: 'Spoel-ID', + fillSourceLabel: '(Spoolman)', + weight: 'Gewicht', + remaining: 'Resterend', + disableWeightSync: 'Synchronisatie van geschat AMS-gewicht uitschakelen', + disableWeightSyncDesc: 'Werk de resterende capaciteit niet bij op basis van AMS-schattingen. Gebruik dit als je de verbruikstracking van Spoolman verkiest boven AMS-schattingen op basis van percentages. Nieuwe spoelen gebruiken nog steeds de AMS-schatting als startgewicht.', + reportPartialUsage: 'Gedeeltelijk verbruik rapporteren voor mislukte afdrukken', + reportPartialUsageDesc: 'Wanneer een afdruk mislukt of wordt geannuleerd, rapporteer dan het geschatte filamentverbruik tot dat moment op basis van de laagvoortgang.', + }, + + locations: { + title: 'Opslaglocaties', + subtitle: 'Beheer planken, laden en andere fysieke opslagplekken voor je spoelen', + add: 'Locatie toevoegen', + addShort: 'Toevoegen', + edit: 'Locatie bewerken', + name: 'Naam', + spools: 'Spoelen', + sensors: 'Sensoren', + empty: 'Nog geen opslaglocaties. Maak je eerste plank of lade.', + manage: 'Locaties', + createPlaceholder: 'bijv. Plank A, Lade 1', + nameRequired: 'Locatienaam is verplicht', + created: 'Locatie gemaakt', + updated: 'Locatie bijgewerkt', + deleted: 'Locatie verwijderd', + saveFailed: 'Locatie opslaan mislukt', + deleteFailed: 'Locatie verwijderen mislukt', + deleteBlocked: 'Verwijder alle spoelen uit deze locatie voordat je deze verwijdert', + confirmDelete: '"{{name}}" verwijderen?', + confirmDeleteMessage: 'Deze locatie wordt uit de catalogus verwijderd. Spoelen moeten eerst worden verplaatst.', + confirmDeleteMessageWithSensors: + 'Deze locatie wordt uit de catalogus verwijderd. Spoelen moeten eerst worden verplaatst. Gekoppelde sensoren worden ook verwijderd.', + }, + + // Inventory + inventory: { + title: 'Spoelvoorraad', + subtitle: 'Beheer je spoelen', + addToInventory: 'Aan voorraad toevoegen', + addToInventoryPending: 'Toevoegen...', + addToInventorySuccess: 'Spoel aan voorraad toegevoegd', + addToInventoryFailed: 'Spoel aan voorraad toevoegen mislukt', + unknownSpoolTitle: 'Nieuw filament gedetecteerd', + unknownSpoolMessage: 'Een spoel met een onbekende RFID-tag is gedetecteerd bij {{location}}. Nu aan je voorraad toevoegen?', + unknownSpoolSlot: 'Sleuf', + bulk: { + selectAllVisible: 'Alle zichtbare selecteren', + selectRow: 'Rij selecteren', + selectGroup: 'Groep selecteren', + selectionCount: '{{count}} geselecteerd', + edit: 'Bewerken', + printLabels: 'Labels afdrukken', + resetUsage: 'Verbruik resetten', + restore: 'Herstellen', + archive: 'Archief', + delete: 'Verwijderen', + clearSelection: 'Selectie wissen', + editTitle: 'Spoelen in bulk bewerken', + editSubtitle: 'Van toepassing op {{count}} geselecteerde spoelen. Alleen velden die je aanvinkt worden bijgewerkt.', + editHint: 'Typ in een veld om het voor bijwerken te markeren — alleen aangevinkte rijen worden verzonden. Een leeg veld laat de spoelen ongewijzigd (velden wissen kan alleen per spoel).', + useCustom: '"{{value}}" gebruiken', + toggleField: 'Bijwerken voor dit veld omschakelen', + changeCount: '{{count}} velden worden bijgewerkt.', + applyPending: 'Toepassen...', + applyButton: 'Toepassen op {{count}} spoelen', + deleteTitle: 'Geselecteerde spoelen verwijderen', + archiveTitle: 'Geselecteerde spoelen archiveren', + restoreTitle: 'Geselecteerde spoelen herstellen', + resetUsageTitle: 'Verbruik van geselecteerde spoelen resetten', + deleteMessage: '{{count}} spoelen permanent verwijderen? Dit kan niet ongedaan worden gemaakt.', + archiveMessage: '{{count}} spoelen archiveren? Ze kunnen later worden hersteld.', + restoreMessage: '{{count}} gearchiveerde spoelen herstellen?', + resetUsageMessage: 'De teller "Totaal verbruikt" op {{count}} spoelen resetten? Resterend gewicht blijft behouden.', + updateSuccess: '{{count}} spoelen bijgewerkt', + updateFailed: 'Bulkupdate mislukt', + updatePartial: '{{ok}} spoelen bijgewerkt, {{failed}} mislukt', + updateAllFailed: 'Alle {{count}} spoelupdates zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen', + deleteSuccess: '{{count}} spoelen verwijderd', + deleteFailed: 'Bulkverwijdering mislukt', + deletePartial: '{{ok}} spoelen verwijderd, {{failed}} mislukt', + deleteAllFailed: 'Alle {{count}} spoelverwijderingen zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen', + archiveSuccess: '{{count}} spoelen gearchiveerd', + archiveFailed: 'Bulkarchivering mislukt', + archivePartial: '{{ok}} spoelen gearchiveerd, {{failed}} mislukt', + archiveAllFailed: 'Alle {{count}} spoelarchiveringen zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen', + restoreSuccess: '{{count}} spoelen hersteld', + restoreFailed: 'Bulkherstel mislukt', + restorePartial: '{{ok}} spoelen hersteld, {{failed}} mislukt', + restoreAllFailed: 'Alle {{count}} spoelherstelacties zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen', + invalidHex: 'Voer 6 hextekens (RRGGBB) of 8 (RRGGBBAA) in. Anders wordt het veld niet toegepast.', + }, + spoolmanMixedContentTitle: 'Spoolman kan niet via HTTPS laden — mixed content wordt door je browser geblokkeerd', + spoolmanMixedContentBody: 'Bambuddy wordt via HTTPS aangeboden (via je reverse proxy), maar je Spoolman-URL gebruikt nog gewone HTTP. Browsers blokkeren mixed content om veiligheidsredenen, waardoor de ingebedde Spoolman-interface niet kan worden weergegeven. Spoolman moet via HTTPS bereikbaar zijn om dit te laten werken.', + spoolmanMixedContentFixReverseProxy: 'Plaats Spoolman achter dezelfde reverse proxy als Bambuddy (Traefik / Nginx / Caddy) met HTTPS en werk daarna de Spoolman-URL in Instellingen bij naar het nieuwe HTTPS-adres.', + spoolmanMixedContentFixOpenNewTab: 'Als tijdelijke oplossing kun je Spoolman in een nieuw browsertabblad via HTTP openen — mixed-contentregels gelden alleen voor ingebedde frames, dus een zelfstandig tabblad werkt wel.', + spoolmanOpenInNewTab: 'Spoolman in nieuw tabblad openen', + labels: { + title: 'Spoellabels afdrukken', + selectedCount: '{{count}} geselecteerd', + pickSpools: 'Kies voor welke spoelen je labels wilt afdrukken:', + monochrome: 'Monochroom (zwart-witprinter)', + monochromeHint: 'Verwijdert het kleurvlak en maakt de tekst breder', + startingPosition: 'Startpositie van etiket', + startingPositionRange: 'Alleen vellensjablonen: L7160 ondersteunt 1–21; 5160 ondersteunt 1–30.', + startingPositionInvalid: 'Voer een heel getal van 1 tot {{capacity}} in.', + startingPositionFirst: 'Het afdrukken begint op positie 1.', + startingPositionSkipped: 'Posities 1 tot en met {{lastPosition}} blijven leeg op het eerste vel.', + startingPositionRangeError: 'De startpositie moet voor dit vel tussen 1 en {{capacity}} liggen.', + searchPlaceholder: 'Zoek op naam, merk of #ID', + filterByMaterial: 'Materiaal:', + allMaterials: 'Alle', + selectVisible: 'Alle zichtbare selecteren ({{count}})', + deselectVisible: 'Zichtbare deselecteren', + clearAll: 'Alles wissen', + noSpoolsToShow: 'Geen spoelen om te tonen. Pas je filter aan en probeer opnieuw.', + noMatches: 'Geen spoelen komen overeen met de huidige zoekopdracht of het filter.', + printOne: 'Label voor deze spoel afdrukken', + printLabels: 'Labels afdrukken…', + bulkTitle: 'Kies spoelen voor labels uit de {{count}} die momenteel worden weergegeven', + noSpoolsTitle: 'Geen spoelen om te labelen', + error: 'Labels genereren mislukt: {{msg}}', + sortBy: { + label: 'Sorteren:', + id: 'Op ID', + color: 'Op kleur', + }, + templates: { + amsHolderSmall: { + label: 'AMS-houder — klein (74 × 33 mm)', + hint: 'Eén label per pagina; past bij het printbare label van MakerWorld-model 752566 (AMS Filament Label Holder).', + }, + amsHolderLarge: { + label: 'AMS-houder — groot (75 × 55 mm)', + hint: 'Eén label per pagina; past bij de kartonnen insteekvariant van de AMS Filament Label Holder. Ruim genoeg voor kleurvlak, merk, materiaal, ID en QR-code.', + }, + box40x30: { + label: 'Dooslabel (40 × 30 mm)', + hint: 'Eén label per pagina; veelgebruikt DK/Brother-rolformaat, geschikt voor filamentzakken en opslagbakken.', + }, + box: { + label: 'Dooslabel (62 × 29 mm)', + hint: 'Eén label per pagina; formaat voor kleine labels van Brother PT/QL en Dymo.', + }, + averyL7160: { + label: 'Avery L7160 — A4-vel (38,1 × 63,5 mm × 21)', + hint: 'EU-vellen; 21 labels per A4-pagina.', + }, + avery5160: { + label: 'Avery 5160 — US Letter-vel (25,4 × 66,7 mm × 30)', + hint: 'Amerikaanse vellen; 30 labels per Letter-pagina.', + }, + }, + }, + csv: { + importButton: 'CSV importeren', + exportButton: 'CSV exporteren', + modalTitle: 'Spoelen importeren uit CSV', + selectFile: 'Kies een CSV-bestand of sleep het hierheen', + dragHint: 'Koptekst: material (verplicht), brand, subtype, color_name, rgba, …', + parsing: 'Bestand lezen…', + previewError: 'CSV-bestand kon niet worden gelezen', + validCount: '{{count}} geldig', + errorCount: '{{count}} fout', + skippedCount: '{{count}} overgeslagen', + colRow: 'Rij', + colStatus: 'Status', + colColor: 'Kleur', + colorResolved: 'Kleur ingevuld vanuit catalogus', + colorCrossMaterial: 'Kleur overgenomen van ander materiaal — geen exacte overeenkomst in catalogus', + duplicateExisting: 'Er bestaat al een spoel met dit materiaal, merk en deze kleur — deze wordt toch als nieuwe spoel geïmporteerd', + spoolmanHint: 'Gebruik in Spoolman-modus de ingebouwde CSV-import/-export van Spoolman.', + importValidRows: '{{count}} geldige rijen importeren', + noValidRows: 'Geen geldige rijen', + importing: 'Importeren…', + importSuccess: '{{count}} spoelen geïmporteerd', + importError: 'Importeren mislukt', + exportError: 'Export mislukt', + }, + addSpool: 'Spoel toevoegen', + editSpool: 'Spoel bewerken', + copySpool: 'Spoel kopiëren', + material: 'Materiaal', + selectMaterial: 'Materiaal selecteren...', + subtype: 'Subtype', + brand: 'Merk', + searchBrand: 'Merk zoeken...', + useCustomBrand: '"{{brand}}" gebruiken', + useCustomMaterial: 'Aangepast materiaal gebruiken: {{material}}', + suggestedOptions: 'Voorgesteld', + allOptions: 'Alle', + colorName: 'Kleurnaam', + colorNamePlaceholder: 'Jade White, Fire Red...', + color: 'Kleur', + hexColor: 'Hexkleur', + pickColor: 'Aangepaste kleur kiezen', + labelWeight: 'Labelgewicht', + coreWeight: 'Leeg spoelgewicht', + searchSpoolWeight: 'Spoelgewicht zoeken...', + weightUsed: 'Gebruikt', + currentWeight: 'Resterend gewicht', + measuredWeight: 'Gemeten gewicht', + spoolName: 'Spoel', + costPerKg: 'Kosten per kg', + storageLocation: 'Opslaglocatie', + temperature: 'Temperatuur', + humidity: 'Luchtvochtigheid', + battery: 'Batterij', + storageLocationPlaceholder: 'bijv. Plank A, Lade 1', + openInInventory: 'Openen in Voorraad', + measuredWeightError: 'Gemeten gewicht moet tussen {{min}}g en {{max}}g liggen.', + slicerFilament: 'Slicerfilament', + slicerFilamentName: 'Naam slicerpreset', + slicerPreset: 'Slicer-preset', + searchPresets: 'Filamentpresets zoeken...', + selectedPreset: 'Geselecteerd', + noPresetsFound: 'Geen presets gevonden', + tempOverrides: 'Temperatuuroverschrijvingen', + note: 'Notitie', + notePlaceholder: 'Eventuele extra notities over deze spoel...', + // Per-spool category + low-stock threshold override (#729) + category: 'Categorie', + categoryPlaceholder: 'bijv. Productie, Prototype, Klant A', + categoryNone: 'Niet gecategoriseerd', + // #1400: storage-location filter chip — `storageLocation` label is + // already defined above for the spool-edit field, reused here for the + // dropdown header. `storageLocationNone` is new (the "no location set" + // group, mirrors `categoryNone`). + storageLocationNone: 'Geen locatie ingesteld', + lowStockThresholdOverride: 'Drempel lage voorraad (deze spoel)', + lowStockThresholdOverrideHelp: 'Laat leeg om de globale drempel ({{global}}%) te gebruiken.', + // RFID button rename (was "Delete Tag" — confusing because it sounds like a + // taxonomy delete; this clears the RFID tag/UUID off the spool record) + clearRfid: 'RFID-tag wissen', + rfidCleared: 'RFID-tag gewist', + archive: 'Archief', + restore: 'Herstellen', + noSpools: 'Nog geen spoelen. Voeg je eerste spoel toe om te beginnen.', + noAvailableSpools: 'Geen spoelen beschikbaar. Voeg eerst een spoel toe aan je voorraad of maak de toewijzing van een andere sleuf ongedaan.', + kProfiles: 'K-profielen', + addKProfile: 'K-profiel toevoegen', + assignSpool: 'Spoel toewijzen', + unassignSpool: 'Toewijzing opheffen', + assignSuccess: 'Spoel toegewezen en AMS-sleuf geconfigureerd', + assignPendingInsert: 'Toegewezen. Sleuf wordt geconfigureerd zodra je de spoel plaatst.', + assignFailed: 'Spoel toewijzen mislukt', + selectSpool: 'Selecteer een spoel om aan deze sleuf toe te wijzen', + assigned: 'Toegewezen', + assigning: 'Toewijzen...', + searchSpools: 'Spoelen zoeken...', + showAllSpools: 'Alle spoelen tonen', + spoolmanSpools: 'Spoolman-spoelen', + allMaterials: 'Alle materialen', + filterByBrand: 'Filteren op merk...', + showArchived: 'Gearchiveerde tonen', + quickAdd: 'Snel toevoegen (voorraad)', + quantity: 'Aantal', + stock: 'Voorraad', + configured: 'Geconfigureerd', + spoolsCreated: '{{count}} spoelen gemaakt', + spoolsPartiallyCreated: '{{created}} van {{total}} spoelen gemaakt (sommige mislukt)', + spoolCreated: 'Spoel gemaakt', + spoolUpdated: 'Spoel bijgewerkt', + spoolDeleted: 'Spoel verwijderd', + deepLinkSpoolNotFound: 'Spoel niet gevonden', + deepLinkFetchFailed: 'Spoel kon niet worden geladen — probeer opnieuw', + spoolArchived: 'Spoel gearchiveerd', + spoolRestored: 'Spoel hersteld', + kProfileSaveFailed: 'K-profielinstellingen konden niet worden opgeslagen', + syncWeightSpoolNotFound: 'Spoel niet gevonden — mogelijk verwijderd', + syncWeightSpoolmanUnreachable: 'Spoolman is niet bereikbaar — probeer het later opnieuw', + syncWeightFailed: 'Gewicht synchroniseren mislukt', + spoolmanUnreachable: 'Spoolman is niet bereikbaar — probeer het later opnieuw', + deleteSpoolNotFound: 'Spoel niet gevonden — mogelijk al verwijderd', + deleteFailed: 'Spoel verwijderen mislukt', + archiveSpoolNotFound: 'Spoel niet gevonden — mogelijk al verwijderd', + archiveFailed: 'Spoel archiveren mislukt', + restoreSpoolNotFound: 'Spoel niet gevonden — mogelijk al verwijderd', + restoreFailed: 'Spoel herstellen mislukt', + saveFailed: 'Wijzigingen opslaan mislukt', + tagClearFailed: 'Tag wissen mislukt', + deleteConfirm: 'Weet je zeker dat je deze spoel wilt verwijderen? Dit kan niet ongedaan worden gemaakt.', + archiveConfirm: 'Weet je zeker dat je deze spoel wilt archiveren?', + advancedSettings: 'Geavanceerde instellingen', + // Tabs + filamentInfoTab: 'Filamentinformatie', + paProfileTab: 'PA-profiel', + filamentInfo: 'Filament', + additional: 'Aanvullend', + // Cloud + loadingPresets: 'Cloudpresets laden...', + cloudConnected: 'Cloud verbonden', + cloudNotConnected: 'Cloud niet verbonden (standaardwaarden worden gebruikt)', + // Colors + recentColors: 'Recent', + searchColors: 'Kleuren zoeken...', + searchResults: 'Zoekresultaten', + allColors: 'Alle kleuren', + commonColors: 'Veelgebruikte kleuren', + showLess: 'Minder tonen', + showAll: 'Alles tonen', + noColorsFound: 'Geen kleuren komen overeen met je zoekopdracht', + noResults: 'Geen overeenkomsten gevonden', + // Multi-color gradient + visual effect (#1154) + extraColorsLabel: 'Extra kleuren', + extraColorsPlaceholder: 'EC984C,#6CD4BC,A66EB9,D87694', + extraColorsHint: 'Plak 2 tot 8 hexwaarden, gescheiden door komma\'s. Wordt als verloop weergegeven.', + extraColorsInvalid: 'Ongeldige hex genegeerd: {{tokens}}', + colorEffectLabel: 'Effect', + colorEffect: { + none: 'Geen', + // Surface effects + sparkle: 'Sprankelend', + wood: 'Hout', + marble: 'Marmer', + glow: 'Gloed', + matte: 'Mat', + // Sheen / finish variants + silk: 'Zijde', + galaxy: 'Galaxy', + rainbow: 'Regenboog', + metal: 'Metaal', + translucent: 'Transparant', + // Multi-color structural variants + gradient: 'Verloop', + dualColor: 'Tweekleurig', + triColor: 'Driekleurig', + multicolor: 'Meerkleurig', + }, + // PA Profiles + selectMaterialFirst: 'Selecteer eerst een materiaal op het tabblad Filamentinformatie.', + noPrintersConfigured: 'Geen printers geconfigureerd. Voeg printers toe om PA-profielen te gebruiken.', + matchingFilter: 'Overeenkomend', + anyBrand: 'Elk merk', + anyVariant: 'Elke variant', + autoSelect: 'Automatisch selecteren', + matches: 'overeenkomsten', + match: 'overeenkomst', + noMatches: 'Geen overeenkomsten', + connected: 'Verbonden', + offline: 'Offline', + printerOffline: 'Printer is offline. Maak verbinding om kalibratieprofielen te bekijken.', + noKProfilesMatch: 'Geen K-profielen komen overeen met het geselecteerde filament.', + leftNozzle: 'Linker nozzle', + rightNozzle: 'Rechter nozzle', + profilesSelected: 'kalibratieprofiel(en) geselecteerd', + // Stats & enhanced table + totalInventory: 'Totale voorraad', + totalConsumed: 'Totaal verbruikt', + byMaterial: 'Per materiaal', + inPrinter: 'In printer', + lowStock: 'Lage voorraad', + sinceTracking: 'Sinds tracking is gestart', + resetConsumedCounter: 'Teller resetten', + resetConsumedCounterTooltip: 'Zet de teller voor verbruikte grammen van deze spoel op nul. Resterend gewicht verandert niet.', + resetConsumedCounterConfirm: 'Teller voor verbruikte grammen van deze spoel resetten naar 0? Toekomstige afdrukken tellen dan weer vanaf nul. De spoel zelf, de berekening van resterend gewicht en je instellingen veranderen niet.', + resetAllConsumedCounters: 'Alle tellers resetten', + resetAllConsumedCountersTooltip: 'Zet de teller voor verbruikte grammen op elke spoel op nul. Resterende gewichten veranderen niet.', + resetAllConsumedCountersConfirm: 'De teller voor verbruikte grammen op alle {{count}} spoelen (inclusief gearchiveerde) resetten naar 0? Hiermee wordt de statistiek "Totaal verbruikt" gewist zodat toekomstige afdrukken weer vanaf nul tellen. Spoelen en resterende gewichten veranderen niet.', + consumedCounterReset: 'Teller gereset', + allConsumedCountersReset: 'Teller gereset voor {{count}} spoel(en)', + resetConsumedCounterFailed: 'Teller resetten mislukt', + loadedInAms: 'Geladen in AMS/Ext', + remaining: 'Resterend', + weightCheck: 'Gewichtscontrole', + lastWeighed: 'Laatst gewogen', + neverWeighed: 'Nooit gewogen', + search: 'Spoelen zoeken...', + showing: 'Weergegeven', + to: 'tot', + of: 'van', + show: 'Tonen', + spools: 'spoelen', + spool: 'spoel', + page: 'Pagina', + noSpoolsMatch: 'Geen resultaten gevonden', + noSpoolsMatchDesc: 'Pas je zoekopdracht of filters aan om te vinden wat je zoekt.', + active: 'Actief', + archived: 'Gearchiveerd', + all: 'Alle', + used: 'Gebruikt', + new: 'Nieuw', + clearFilters: 'Filters wissen', + table: 'Tabel', + cards: 'Kaarten', + net: 'Netto', + // Grouping + groupSimilar: 'Groeperen', + groupedSpools: '{{count}} identieke spoelen', + groupedRows: 'rijen', + // Column config + columns: 'Kolommen', + configureColumns: 'Kolommen configureren', + configureColumnsDesc: 'Sleep om kolommen te herschikken of gebruik de pijlen. Schakel zichtbaarheid met het oogpictogram.', + visible: 'zichtbaar', + reset: 'Resetten', + cancel: 'Annuleren', + applyChanges: 'Wijzigingen toepassen', + moveUp: 'Omhoog verplaatsen', + moveDown: 'Omlaag verplaatsen', + hideColumn: 'Kolom verbergen', + showColumn: 'Kolom tonen', + // Tag linking + linkToSpool: 'Koppelen aan spoel', + tagLinked: 'Tag aan spoel gekoppeld', + tagLinkFailed: 'Tag koppelen mislukt', + tagAlreadyLinked: 'Tag is al aan een andere spoel gekoppeld', + unknownTag: 'Onbekende RFID-tag gedetecteerd', + // Usage history + usageHistory: 'Verbruiksgeschiedenis', + noUsageHistory: 'Nog geen verbruik geregistreerd', + printName: 'Afdruknaam', + weightConsumed: 'Verbruikt gewicht', + clearHistory: 'Wissen', + historyCleared: 'Verbruiksgeschiedenis gewist', + fillSourceLabel: '(Voorraad)', + lowStockThresholdError: 'Drempel moet tussen 0,1 en 99,9 liggen', + assignMismatchTitle: 'Materiaal komt niet overeen', + assignMismatchMessage: 'Het materiaal van de geselecteerde spoel "{{spoolMaterial}}" komt niet overeen met het materiaal van de tray "{{trayMaterial}}" voor {{location}}. Toch toewijzen?', + assignMismatchConfirm: 'Toch toewijzen', + assignPartialMismatchMessage: 'Het spoelmateriaal "{{spoolMaterial}}" lijkt op maar komt niet exact overeen met "{{trayMaterial}}" in {{location}}. Wil je doorgaan?', + assignProfileMismatchMessage: 'Het spoelprofiel "{{spoolProfile}}" komt niet overeen met het trayprofiel "{{trayProfile}}" in {{location}}. Wil je doorgaan?', + assignReconfigureNote: 'De AMS-sleuf wordt opnieuw geconfigureerd om het profiel van de spoel te gebruiken.', + // Spoolman filament catalog picker + spoolmanFilamentCatalog: 'Spoolman-filamentcatalogus', + pickFromSpoolmanCatalog: 'Kies uit Spoolman-catalogus…', + spoolmanFilamentSelected: 'Filament geselecteerd uit Spoolman-catalogus', + spoolmanFilamentUnlinked: 'Koppeling met filamentcatalogus gewist', + noSpoolmanFilaments: 'Geen filamenten gevonden in Spoolman-catalogus', + spoolmanFilamentColorSwatch: 'Filamentkleur', + spoolWeightManagedBySpoolman: 'Leeg spoelgewicht wordt per filamenttype beheerd in Spoolman', + spoolmanCatalogLoadFailed: 'Spoolman-filamentcatalogus laden mislukt', + }, + + // Timelapse + timelapse: { + title: 'Timelapse', + create: 'Timelapse maken', + download: 'Downloaden', + delete: 'Verwijderen', + preview: 'Voorbeeld', + frameRate: 'Framesnelheid', + quality: 'Kwaliteit', + processing: 'Verwerken...', + noTimelapses: 'Geen timelapses beschikbaar', + }, + + // AMS + ams: { + title: 'AMS', + slot: 'Sleuf', + empty: 'Leeg', + emptySlot: 'Lege sleuf', + slotEmpty: 'Leeg', + slotUnconfigured: '?', + emptySlotReset: 'Geen filament toegewezen', + unknown: 'Onbekend', + humidity: 'Luchtvochtigheid', + temperature: 'Temperatuur', + filamentType: 'Filamenttype', + filamentColor: 'Kleur', + remaining: 'Resterend', + history: 'AMS-geschiedenis', + noHistory: 'Geen geschiedenis beschikbaar', + configureSlot: 'Sleuf configureren', + externalSpool: 'Externe spoel', + profile: 'Profiel', + kFactor: 'K-factor', + kFactorShort: 'K', + fill: 'Vullen', + configure: 'Configureren', + used: 'gebruikt', + remainingUnit: 'resterend', + }, + + // Print modal + printModal: { + variants: { + editNote: 'Deze alternatieven zijn ingesteld toen de taak in de wachtrij werd geplaatst. Annuleer en plaats opnieuw in de wachtrij om ze te wijzigen.', + title: 'Printeralternatieven', + help: 'Eén taak, één wachtrijpositie. De eerste passende printer die vrijkomt voert zijn bestand uit.', + unknownModel: 'Onbekend model', + plateFor: 'Plaat voor {{filename}}', + moveUp: 'Omhoog verplaatsen', + moveDown: 'Omlaag verplaatsen', + queued: 'In wachtrij met {{count}} alternatieven', + }, + selectPrinter: 'Printer selecteren', + selectPlate: 'Plaat selecteren', + filamentMapping: 'Filamenttoewijzing', + useArchiveMapping: 'Toewijzing', + useArchiveMappingTooltip: 'Selecteer elke sleuf uit de AMS-toewijzing die met dit archief is opgeslagen (vanuit de slicer), in plaats van te matchen op type/kleur.', + clickToChangeSlot: 'Klik om sleuftoewijzing te wijzigen', + reRead: 'Opnieuw uitlezen', + plateN: 'Plaat {{n}}', + plateFilamentsUnreadable: 'De filamenten van een geselecteerde plaat konden niet worden gelezen en kunnen daarom niet worden toegewezen. Deselecteer deze plaat om de andere in de wachtrij te plaatsen.', + totalCost: 'Totale kosten:', + slotRemainingShort: ' - {{grams}}g resterend', + printSettings: 'Afdrukinstellingen', + bedLeveling: 'Bednivellering', + flowCalibration: 'Flowkalibratie', + vibrationCalibration: 'Trillingskalibratie', + layerInspection: 'Inspectie eerste laag', + timelapse: 'Timelapse', + cancel: 'Annuleren', + noPrintersAvailable: 'Geen printers beschikbaar', + printerBusy: 'Printer is bezig', + printerOffline: 'Printer is offline', + sameTypeDifferentColor: 'Zelfde type, andere kleur', + filamentTypeNotLoaded: 'Filamenttype niet geladen', + statusReady: 'Gereed', + statusColorMismatch: 'Kleur komt niet overeen', + statusTypeNotFound: 'Type niet gevonden', + requiredTooltip: 'Vereist: {{name}} - {{color}}', + manuallySelected: 'Handmatig geselecteerd', + autoMatched: 'Automatisch gekoppeld', + selectSlot: 'Sleuf selecteren', + sameTypeDifferentColorDetail: 'Zelfde type, andere kleur: vereist {{required}}, sleuf bevat {{loaded}}', + requiredTypeNotInPrinter: 'Vereist filamenttype niet gevonden in printer.', + whenToPrint: 'Wanneer afdrukken', + asap: 'Zo snel mogelijk', + queue: 'Wachtrij', + schedule: 'Plannen', + dateTime: 'Datum en tijd', + invalidDateTime: 'Voer een geldige datum en tijd in', + openCalendar: 'Kalender openen', + requireManualStart: 'Handmatige start vereisen', + requirePreviousSuccess: 'Alleen starten als vorige afdruk is geslaagd', + autoOffAfter: 'Printer uitschakelen wanneer klaar', + helpAsap: 'Afdruk wordt bovenaan de wachtrij geplaatst en start zodra een geschikte printer inactief is.', + helpSchedule: 'Afdruk start op het geplande tijdstip als de printer inactief is. Als deze bezig is, wacht de taak tot de printer beschikbaar is.', + helpQueue: 'Afdruk wordt achteraan de wachtrij geplaatst.', + leftNozzle: 'L', + rightNozzle: 'R', + leftNozzleTooltip: 'Linker nozzle', + rightNozzleTooltip: 'Rechter nozzle', + ftsSameInletHint: 'Alle filamenten voor deze afdruk zitten op Filament Track Switch IN-{{inlet}}. Wisselen tussen filamenten op dezelfde ingang is langzamer — verplaats er één naar een AMS op de andere ingang om dit te versnellen.', + rackPosition: 'Rekpositie', + rackPositionTooltip: 'Welke nozzle op het rek dit filament afdrukt. Posities zijn genummerd zoals op de printer.', + rackEmptyPosition: 'Deze rekpositie is leeg', + rackWrongNozzle: 'Bevat een {{has}}-nozzle; dit filament vereist {{needs}}', + filamentOverride: 'Filament overschrijven', + filamentOverrideHint: 'Overschrijf filamenten optioneel voor modelgebaseerde toewijzing. De scheduler matcht op je geselecteerde filamenten in plaats van de oorspronkelijke 3MF-waarden.', + originalFilament: 'Origineel', + overrideWith: 'Overschrijven met', + resetToOriginal: 'Terugzetten naar origineel', + insufficientFilamentTitle: 'Niet genoeg filament', + waitingForAmsStatus: 'Wachten op AMS-status van {{printer}}…', + insufficientFilamentMessage: 'Sommige toegewezen spoelen bevatten minder filament dan deze afdruk nodig heeft:', + insufficientFilamentLine: '{{printer}} - {{slot}}: vereist {{required}}g, {{remaining}}g resterend', + insufficientFilamentLinePooled: '{{printer}} - {{slot}}: vereist {{required}}g, {{remaining}}g beschikbaar over overeenkomende spoelen (AMS Filament Backup)', + printAnyway: 'Toch afdrukken', + forceColorMatch: 'Kleurmatch afdwingen', + staggerPrinterStarts: 'Printerstarts spreiden', + staggerGroupSize: 'Groepsgrootte', + staggerInterval: 'Interval (min)', + staggerPreview: '{{printers}} printers → {{groups}} groepen van {{size}}, starten elke {{interval}} min', + staggerLastGroup: 'laatste groep: {{count}}', + staggerTotal: 'totaal: {{minutes}} min', + staggerToPrinters: 'Spreiden over {{count}} printers', + gcodeInjection: 'Auto-print-G-code injecteren', + insufficientBudget: 'Onvoldoende budget', + unlimitedNoBudget: 'Onbeperkt – er is geen budgetlimiet ingesteld.', + noPrintableCostCenters: 'Er is geen actieve kostenplaats beschikbaar voor afdrukken. Vraag een beheerder om je afdruktoegang te geven.', + }, + + // Backup + backup: { + includesEncryptionKey: 'Lokale back-ups bevatten het MFA-versleutelingssleutelbestand (DATA_DIR/.mfa_encryption_key), zodat een back-up-ZIP op zichzelf compleet is. Behandel de ZIP als gevoelig — iedereen met het bestand kan de opgeslagen OIDC-clientgeheimen en TOTP-geheimen ontsleutelen.', + title: 'Back-up en herstel', + createBackup: 'Back-up maken', + restoreBackup: 'Back-up herstellen', + restoreDescription: 'Alle gegevens vervangen vanuit een back-upbestand', + downloadBackup: 'Back-up downloaden', + uploadBackup: 'Back-up uploaden', + lastBackup: 'Laatste back-up', + autoBackup: 'Automatische back-up', + backupNow: 'Nu back-up maken', + restoreWarning: 'Waarschuwing: het herstellen van een back-up overschrijft alle huidige gegevens.', + includeArchives: 'Archieven opnemen', + includeSettings: 'Instellingen opnemen', + includeProfiles: 'Profielen opnemen', + backupSuccess: 'Back-up succesvol gemaakt', + restoreSuccess: 'Back-up succesvol hersteld', + backupFailed: 'Back-up mislukt', + restoreFailed: 'Herstellen mislukt', + restoreNote: 'Virtuele printer wordt tijdens het herstellen gestopt', + + // GitHub Backup + githubBackup: 'Git-back-up', + enabled: 'Ingeschakeld', + cloudLoginRequired: 'Bambu Cloud-login vereist. Log in onder Profielen → Cloudprofielen om GitHub-back-up in te schakelen.', + cloudLoginRequiredShort: 'Cloudlogin vereist', + githubDescription: 'Synchroniseer je profielen automatisch met een privé-GitHub-repository voor back-up en versiegeschiedenis.', + repoIsPrivate: 'Repository is privé — veilig voor back-up.', + repoIsPublicWarning: 'Repository is OPENBAAR. Bambuddy-back-ups bevatten MQTT-inloggegevens, Home Assistant-tokens, Prometheus-tokens, je Bambu Cloud-e-mailadres en printertoegangscodes via K-profielen. Opslaan is geblokkeerd totdat je de repository privé maakt in de instellingen van je provider.', + repoVisibilityUnknown: 'De zichtbaarheid van de repository kon niet worden bepaald. Bambuddy weigert een back-up naar iets dat niet als privé is bevestigd; opslaan wordt geblokkeerd.', + repositoryUrl: 'Repository-URL', + repoUrlPlaceholderGitHub: 'https://github.com/username/repo-name', + repoUrlPlaceholderGitea: 'https://gitea.example.com/username/repo-name', + repoUrlPlaceholderForgejo: 'https://forgejo.example.com/username/repo-name', + repoUrlPlaceholderGitLab: 'https://gitlab.com/username/repo-name', + allowInsecureHttp: 'Onveilige HTTP toestaan', + allowInsecureHttpHint: 'Inschakelen voor zelfgehoste instanties op privénetwerken zonder TLS', + personalAccessToken: 'Personal Access Token', + tokenSaved: '(opgeslagen)', + enterNewToken: 'Voer nieuw token in om bij te werken', + tokenHintGitHub: 'Fine-grained token met lees- en schrijftoegang tot Contents, of een klassiek token met de repo-scope.', + tokenHintGitLab: 'Token met de api-scope, of read_repository en write_repository samen.', + tokenHintGitea: 'Token met de write:repository-scope.', + tokenHintForgejo: 'Token met de write:repository-scope. Een token beperkt tot alleen deze repository is voldoende.', + branch: 'Branch', + provider: 'Git-provider', + providerGitHub: 'GitHub', + providerGitLab: 'GitLab', + providerGitea: 'Gitea', + providerForgejo: 'Forgejo', + manualOnly: 'Alleen handmatig', + hourly: 'Elk uur', + daily: 'Dagelijks', + weekly: 'Wekelijks', + includeInBackup: 'Opnemen in back-up', + kProfiles: 'K-profielen', + kProfilesDescription: 'Pressure-advance-kalibratie van verbonden printers', + noPrintersConnected: 'Geen printers verbonden', + printersConnected: '{{connected}}/{{total}} verbonden', + cloudProfiles: 'Cloudprofielen', + cloudProfilesDescription: 'Filament-, printer- en procespresets uit Bambu Cloud en Orca Cloud', + cloudProfilesAccounts: 'Verbonden accounts — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}', + appSettings: 'App-instellingen', + appSettingsDescription: 'Bambuddy-configuratie (volledige database)', + spoolInventory: 'Spoelvoorraad', + spoolInventoryDescription: 'Filamentspoelen, verbruiksgeschiedenis en kostentracking', + printArchives: 'Afdrukarchieven', + printArchivesDescription: 'Metadata van afdrukgeschiedenis (geen gcode/3MF-bestanden)', + lastBackupAt: 'Laatste back-up:', + noBackupsYet: 'Nog geen back-ups', + next: 'Volgende:', + startingBackup: 'Back-up starten...', + test: 'Testen', + enableBackup: 'Back-up inschakelen', + testConnection: 'Verbinding testen', + enterRepoUrl: 'Voer repository-URL in', + enterRepoAndToken: 'Voer repository-URL en toegangstoken in', + repoRequired: 'Repository-URL is verplicht', + tokenRequired: 'Toegangstoken is verplicht', + githubBackupEnabled: 'GitHub-back-up ingeschakeld', + tokenUpdated: 'Token bijgewerkt', + settingsSaved: 'Instellingen opgeslagen', + failedToSave: 'Opslaan mislukt: {{message}}', + backupCompleteFiles: 'Back-up voltooid - {{count}} bestanden bijgewerkt', + backupSkippedNoChanges: 'Back-up overgeslagen - geen wijzigingen', + backupFailed2: 'Back-up mislukt: {{message}}', + clearedLogs: '{{count}} logboeken gewist', + failedToClearLogs: 'Logboeken wissen mislukt: {{message}}', + + // Restore from Git backup (#2656) + restoreFromGit: { + button: 'Herstellen vanuit Git', + title: 'Herstellen vanuit Git-back-up', + subtitle: 'Kies een commit en wat je wilt herstellen', + commitLabel: 'Back-upcommit', + latestCommit: 'Nieuwste back-up (top van branch)', + categoriesLabel: 'Wat herstellen', + inspecting: 'Inhoud van back-up lezen...', + itemCount: '{{count}} in back-up', + overwriteLabel: 'Bestaande items overschrijven', + overwriteOn: 'Bestaande items worden bijgewerkt vanuit de back-up.', + overwriteOff: 'Alleen ontbrekende items worden toegevoegd; bestaande blijven ongewijzigd.', + selectedCount: '{{count}} geselecteerd', + restoring: 'Herstellen...', + confirmTitle: 'Herstellen vanuit back-up?', + confirmMessage: 'De geselecteerde categorieën worden uit deze commit hersteld. Ontbrekende items worden toegevoegd; bestaande blijven zoals ze zijn.', + confirmMessageOverwrite: 'De geselecteerde categorieën worden uit deze commit hersteld en bestaande lokale items worden overschreven. Dit kan niet ongedaan worden gemaakt.', + kprofilesOverwriteCaveat: 'K-profielen zijn de uitzondering: het schrijven van een sleuf vervangt altijd de kalibratie op de printer.', + tally: '{{restored}} hersteld, {{skipped}} overgeslagen, {{failed}} mislukt', + reloadHint: 'Herlaad Bambuddy zodat de herstelde gegevens overal verschijnen.', + partialHint: 'De hierboven vermelde categorieën zijn voltooid en staan op schijf. Ontbrekende categorieën zijn niet uitgevoerd.', + failed: 'Herstellen mislukt.', + loadFailed: 'Back-uprepository kon niet worden gelezen.', + // Preview caveats. The server sends detail_code + detail_params and the + // English detail as defaultValue, same contract as backup.pathCheck. + details: { + notPresent: 'Niet aanwezig in deze back-upcommit', + unreadableJson: 'Onleesbare JSON: {{paths}}', + settingsNoPayload: 'Geen instellingen in payload', + settingsCredentialsWillSkip: '{{count}} sleutel(s) die op inloggegevens lijken worden overgeslagen', + settingsCompanionWillSkip: '{{count}} sleutel(s) die op inloggegevens lijken worden overgeslagen, en {{companion}} schakelaar(s) die daarvan afhankelijk zijn blijven uitgeschakeld', + settingsCompanionOnlyWillSkip: '{{companion}} schakelaar(s) blijven uitgeschakeld - de benodigde inloggegevens kunnen niet uit een back-up worden hersteld', + spoolsUsageCount: 'inclusief {{count}} verbruiksrecord(s)', + archivesMetadataOnly: 'Alleen metadata - 3MF-bestanden en miniaturen zitten niet in een Git-back-up', + kprofilesPrinterCount: 'over {{count}} printer(s)', + }, + // Tally notes, same contract. noData is shared by all four categories: + // the category heading renders beside it, so naming the category again + // would be redundant. + notes: { + noData: 'Geen gegevens van dit type in deze back-up', + archivesPrinterMissing: 'Sommige archieven verwezen naar printers die niet meer bestaan - koppeling gewist', + archivesProjectMissing: 'Sommige archieven verwezen naar projecten die niet meer bestaan - koppeling gewist', + archivesOwnerCleared: 'Sommige archieven verwezen naar gebruikers die niet meer bestaan - eigenaar gewist, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst', + archivesOwnerUnmatched: 'Sommige archieven noemen een eigenaar die deze instantie niet heeft - eigenaar gewist in plaats van te gokken op basis van het gebruikers-ID uit de back-up, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst', + archivesOwnerUnknown: 'Sommige archieven zijn zonder eigenaar hersteld - deze back-up registreert er geen, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst', + archivesUndeleted: 'Archief/archieven die sinds de back-up waren verwijderd zijn weer zichtbaar - overschrijven stond aan', + archivesMetadataOnly: 'Herstelde archieven bevatten alleen metadata - de 3MF- en miniatuurbestanden zitten niet in een Git-back-up', + spoolUsageUnresolved: '{{count}} verbruiksrecord(s) overgeslagen - hun spoel staat niet in de spoellijst van deze back-up, dus er is niets om ze aan te koppelen.', + spoolUsageUnlinked: '{{count}} verbruiksrecord(s) hersteld zonder koppeling met afdrukgeschiedenis - selecteer Afdrukarchieven samen met Spoelvoorraad om deze te behouden.', + spoolTagKept: '{{count}} spoeltag(s) gelaten zoals ze zijn - de back-up zou een tag hebben gewist die sindsdien is gescand, of een tag naar een tweede spoel hebben verplaatst.', + settingsCredentialsSkipped: '{{count}} sleutel(s) die op inloggegevens lijken overgeslagen - voer geheimen handmatig opnieuw in', + settingsAuthSkipped: '{{count}} authenticatie-instelling(en) overgeslagen - wijzig deze onder Instellingen > Authenticatie zodat vergrendelingscontroles blijven werken', + settingsCompanionSkipped: '{{keys}} blijven uitgeschakeld - de benodigde inloggegevens kunnen niet uit een back-up worden hersteld en deze instantie heeft er geen opgeslagen, dus inschakelen zou de integratie zonder authenticatie achterlaten', + settingsMqttRelayFailed: 'MQTT-instellingen hersteld, maar de relay kon niet opnieuw verbinden - start Bambuddy opnieuw', + kprofilesAlwaysOverwrite: 'K-profielen overschrijven altijd de overeenkomende sleuf op de printer', + kprofilesAckUnreliable: 'Een printer die niet antwoordt telt nog steeds als hersteld - controleer de profielen op de printer', + kprofilesPrinterMissing: 'Geen printer met serienummer {{serial}} - overgeslagen', + kprofilesPrinterOffline: '{{printer}} ({{serial}}) is niet verbonden - overgeslagen', + kprofilesUnknownNozzle: 'Onverwachte nozzlediameter {{nozzle}} voor {{serial}} - ongewijzigd verzonden', + kprofilesUnmatched: '{{count}} profiel(en) voor {{nozzle}} hadden geen tegenhanger op {{printer}} - als nieuwe profielen toegevoegd', + kprofilesSendFailed: 'Verzenden van {{nozzle}}-profielen naar {{printer}} ({{serial}}) mislukt', + kprofilesRefused: '{{printer}} ({{serial}}) weigerde de {{nozzle}}-profielen: {{reason}}', + kprofilesStepFailed: 'De K-profielstap kon niet worden voltooid - {{reason}}. Alles wat daarvoor is hersteld blijft opgeslagen.', + }, + }, + + // History + history: 'Geschiedenis', + clear: 'Wissen', + date: 'Datum', + status: 'Status', + trigger: 'Type', + triggers: { + manual: 'Back-up (handmatig)', + scheduled: 'Back-up (gepland)', + restore: 'Herstellen', + }, + commit: 'Commit', + + // Local Backup + localBackup: 'Lokale back-up', + localBackupDescription: 'Maak een volledige back-up van je Bambuddy-gegevens inclusief database, archieven, uploads en alle bestanden.', + downloadBackupLabel: 'Back-up downloaden', + completeBackupZip: 'Volledige back-up: database + alle bestanden (ZIP)', + download: 'Downloaden', + preparingBackup: 'Back-up voorbereiden...', + creatingArchive: 'Back-uparchief maken... Dit kan even duren bij grote archieven.', + downloadingFile: 'Back-upbestand downloaden...', + backupDownloaded: 'Back-up succesvol gedownload', + failedToCreateBackup: 'Back-up maken mislukt: {{message}}', + restore: 'Herstellen', + restoreReplacesAll: 'Herstellen vervangt alle gegevens.', + restoreReplacesAllDetail: 'Je huidige database en bestanden worden volledig vervangen. Na herstel is een herstart vereist.', + restoreConfirmTitle: 'Back-up herstellen', + restoreConfirmMessage: 'Weet je zeker dat je wilt herstellen vanuit "{{filename}}"? Hiermee worden je huidige database en alle bestanden volledig vervangen. De applicatie moet daarna opnieuw worden gestart.', + restoreConfirmButton: 'Back-up herstellen', + uploadingFile: 'Back-upbestand uploaden...', + backupRestoredRestart: 'Back-up hersteld. Start Bambuddy opnieuw.', + failedToRestore: 'Back-up herstellen mislukt. Controleer het bestandsformaat.', + reloadNow: 'Nu herladen', + creatingBackup: 'Back-up maken', + restoringBackup: 'Back-up herstellen', + preparing: 'Voorbereiden...', + processing: 'Verwerken...', + doNotClosePage: 'Sluit deze pagina niet en navigeer niet weg. Deze bewerking kan bij grote back-ups enkele minuten duren.', + + // RestoreModal + restoring: 'Herstellen...', + restoreComplete: 'Herstel voltooid', + restoreFailed2: 'Herstel mislukt', + importSettings: 'Instellingen importeren uit een back-upbestand', + pleaseWaitRestoring: 'Wacht terwijl je gegevens worden hersteld', + selectBackupFile: 'Klik om een back-upbestand te selecteren (.json of .zip)', + duplicateHandling: 'Zo werkt afhandeling van duplicaten:', + matchPrinters: 'Printers', + matchPrintersBy: 'gekoppeld op serienummer', + matchSmartPlugs: 'Slimme stekkers', + matchSmartPlugsBy: 'gekoppeld op IP-adres', + matchNotificationProviders: 'Meldingsproviders', + matchNotificationProvidersBy: 'gekoppeld op naam', + matchFilaments: 'Filamenten', + matchFilamentsBy: 'gekoppeld op naam + type + merk', + matchArchives: 'Archieven', + matchArchivesBy: 'gekoppeld op inhoudshash (altijd overgeslagen)', + matchPendingUploads: 'Openstaande uploads', + matchPendingUploadsBy: 'gekoppeld op bestandsnaam', + matchSettingsTemplates: 'Instellingen en sjablonen', + matchSettingsTemplatesBy: 'altijd overschreven', + replaceExisting: 'Bestaande gegevens vervangen', + keepExisting: 'Bestaande gegevens behouden', + overwriteDescription: 'Items die al bestaan overschrijven met gegevens uit de back-up', + keepDescription: 'Alleen items herstellen die nog niet bestaan', + overwriteCaution: 'Let op:', + overwriteWarning: 'Overschrijven vervangt je huidige configuraties met gegevens uit de back-up. Printertoegangscodes worden om veiligheidsredenen nooit overschreven.', + cancel: 'Annuleren', + processingBackup: 'Back-upbestand verwerken...', + itemsRestored: 'Items hersteld', + itemsSkipped: 'Items overgeslagen', + restored: 'Hersteld', + skippedAlreadyExist: 'Overgeslagen (bestaan al)', + filesCategory: 'Bestanden (3MF, miniaturen, enz.)', + andMore: '...en {{count}} meer', + newApiKeysGenerated: 'Nieuwe API-sleutels gegenereerd', + keysShownOnce: 'Deze sleutels worden maar één keer getoond. Kopieer ze nu!', + copy: 'Kopiëren', + noDataFound: 'Er zijn geen gegevens gevonden om uit het back-upbestand te herstellen.', + close: 'Sluiten', + + // Scheduled local backups (#884) + scheduledBackup: 'Geplande back-ups', + scheduledBackupDescription: 'Maak automatisch back-upsnapshots volgens een schema. De uitvoermap kan aan een NAS of externe opslag worden gekoppeld.', + frequency: 'Frequentie', + backupTime: 'Tijd', + retention: 'Bewaartermijn', + retentionDescription: 'Aantal back-ups om te bewaren', + outputPath: 'Uitvoerpad', + outputPathPlaceholder: 'Standaard: {{path}}', + outputPathDescription: 'Laat leeg voor standaardlocatie', + runNow: 'Nu uitvoeren', + backupFiles: 'Back-upbestanden', + noScheduledBackups: 'Nog geen back-ups', + deleteBackup: 'Verwijderen', + deleteBackupConfirm: 'Dit back-upbestand verwijderen?', + backupRunning: 'Back-up bezig...', + scheduledBackupComplete: 'Back-up succesvol voltooid', + scheduledBackupFailed: 'Back-up mislukt', + nextBackup: 'Volgende back-up', + backupSize: 'Grootte', + localTimeHint: 'Lokale tijd ({{tz}})', + defaultPathLabel: 'Standaard:', + // Backup output-path probe (#2544) + pathCheck: { + title: 'Bambuddy kan niet naar deze map schrijven', + howToFix: 'Oplossing:', + sandboxed: 'De Bambuddy-service kan niet naar {{path}} schrijven. De systemd-unit draait met ProtectSystem=strict, waardoor elke map buiten de installatie-, data- en logmappen alleen-lezen is voor de service - zelfs als je er vanuit je eigen shell wel naar kunt schrijven.', + read_only: '{{path}} staat op een alleen-lezen bestandssysteem.', + permission_denied: 'Bambuddy mag niet schrijven naar {{path}}. Controleer de eigenaar en machtigingen van de map.', + no_space: 'Het bestandssysteem waarop {{path}} staat is vol.', + not_a_directory: '{{path}} bestaat, maar is geen map.', + missing: '{{path}} bestaat niet en kon niet worden aangemaakt.', + error: 'Bambuddy kan niet schrijven naar {{path}}.', + ephemeralTitle: 'Deze back-ups blijven niet behouden na een herstart van de container', + container_ephemeral: '{{path}} bevindt zich in de Bambuddy-container, niet op de host. Back-ups die daar worden opgeslagen gaan verloren wanneer de container opnieuw wordt aangemaakt. Koppel de map vanaf de host:', + }, + + // Category labels + categories: { + settings: 'Instellingen', + notification_providers: 'Meldingsproviders', + notification_templates: 'Meldingssjablonen', + smart_plugs: 'Slimme stekkers', + printers: 'Printers', + filaments: 'Filamenten', + maintenance_types: 'Onderhoudstypen', + archives: 'Archieven', + projects: 'Projecten', + pending_uploads: 'Openstaande uploads', + external_links: 'Externe links', + api_keys: 'API-sleutels', + }, + }, + + // Tags + tags: { + title: 'Tags', + addTag: 'Tag toevoegen', + editTag: 'Tag bewerken', + deleteTag: 'Tag verwijderen', + tagName: 'Tagnaam', + tagColor: 'Tagkleur', + noTags: 'Geen tags', + deleteConfirm: 'Weet je zeker dat je deze tag wilt verwijderen?', + manageTags: 'Tags beheren', + }, + + // Upload modal (archives) + uploadModal: { + title: '3MF-bestanden uploaden', + dragDrop: 'Sleep .3mf-bestanden hierheen', + or: 'of', + browseFiles: 'Bestanden bladeren', + extractionInfo: 'Het printermodel wordt automatisch uit de metadata van het 3MF-bestand gehaald.', + uploaded: 'geüpload', + failed: 'mislukt', + uploading: 'Uploaden...', + upload: 'Uploaden', + uploadFailed: 'Upload mislukt', + }, + + // Edit archive modal + // Edit Archive Modal + editArchive: { + title: 'Archief bewerken', + name: 'Naam', + namePlaceholder: 'Afdruknaam', + printer: 'Printer', + noPrinter: 'Geen printer', + project: 'Project', + noProject: 'Geen project', + itemsPrinted: 'Afgedrukte items', + itemsPrintedHelp: 'Aantal items dat met deze afdruktaak is geproduceerd', + filamentUsed: 'Gebruikt filament (g)', + filamentUsedPlaceholder: 'bijv. 46.16', + filamentUsedHelp: 'Stel dit handmatig in wanneer een afdruk zonder 3MF is gearchiveerd, zodat deze toch meetelt in de filamenttotalen. Bij het opnieuw scannen van een archief met een 3MF wordt de waarde weer uit het bestand gelezen.', + notes: 'Notities', + notesPlaceholder: 'Voeg notities over deze afdruk toe...', + externalLink: 'Externe link', + externalLinkPlaceholder: 'https://printables.com/model/...', + externalLinkHelp: 'Link naar Printables, Thingiverse of een andere bron', + tags: 'Tags', + tagsPlaceholder: 'Tags toevoegen...', + addMoreTags: 'Meer tags toevoegen...', + matchingTags: 'Komt overeen met "{{query}}"', + existingTags: 'Bestaande tags', + clickToAdd: '(klik om toe te voegen)', + status: 'Status', + failureReason: 'Reden van mislukking', + selectReason: 'Selecteer reden...', + photos: 'Foto\'s van het afdrukresultaat', + photosHelp: 'Klik op + om foto\'s van je afdrukresultaat toe te voegen', + printResult: 'Afdrukresultaat', + saving: 'Opslaan...', + // Failure reasons + failureReasons: { + adhesionFailure: 'Hechtingsprobleem', + spaghettiDetached: 'Spaghetti / losgeraakt', + layerShift: 'Laagverschuiving', + cloggedNozzle: 'Verstopte nozzle', + filamentRunout: 'Filament op', + warping: 'Kromtrekken', + stringing: 'Draadvorming', + underExtrusion: 'Onderextrusie', + powerFailure: 'Stroomuitval', + userCancelled: 'Door gebruiker geannuleerd', + other: 'Overig', + }, + // Archive statuses + statuses: { + completed: 'Voltooid', + failed: 'Mislukt', + aborted: 'Geannuleerd', + printing: 'Bezig met afdrukken', + }, + }, + + // K-Profiles + kProfiles: { + title: 'K-profielen', + noPrintersConfigured: 'Geen printers geconfigureerd', + addPrinterInSettings: 'Voeg in Instellingen een printer toe om K-profielen te beheren', + noActivePrinters: 'Geen actieve printers', + enablePrinterConnection: 'Schakel een printerverbinding in om de K-profielen te bekijken', + loadingProfiles: 'K-profielen laden...', + printerOffline: 'Printer offline', + printerOfflineDesc: 'De geselecteerde printer is niet verbonden. Schakel hem in om de K-profielen te bekijken.', + noMatchingProfiles: 'Geen overeenkomende profielen', + noMatchingProfilesDesc: 'Geen profielen komen overeen met je zoekcriteria', + noKProfiles: 'Geen K-profielen', + noKProfilesDesc: 'Geen pressure-advance-profielen gevonden voor een nozzle van {{diameter}} mm', + createFirstProfile: 'Eerste profiel aanmaken', + // Controls + printer: 'Printer', + nozzle: 'Nozzle', + refresh: 'Vernieuwen', + addProfile: 'Profiel toevoegen', + export: 'Exporteren', + import: 'Importeren', + select: 'Selecteren', + selectAll: 'Alles selecteren', + delete: 'Verwijderen', + // Filters + searchPlaceholder: 'Zoeken op naam of filament...', + allExtruders: 'Alle extruders', + leftOnly: 'Alleen links', + rightOnly: 'Alleen rechts', + allFlow: 'Alle flowtypen', + hfOnly: 'Alleen HF', + sOnly: 'Alleen S', + sortName: 'Sorteren: naam', + sortKValue: 'Sorteren: K-waarde', + sortFilament: 'Sorteren: filament', + // Dual extruder labels + leftExtruder: 'Linker extruder', + rightExtruder: 'Rechter extruder', + // Modal + modal: { + addTitle: 'K-profiel toevoegen', + editTitle: 'K-profiel bewerken', + profileName: 'Profielnaam', + profileNamePlaceholder: 'Mijn PLA-profiel', + kValue: 'K-waarde', + kValuePlaceholder: '0.020', + kValueHelp: 'Typisch bereik: 0.01 - 0.06 voor PLA, 0.02 - 0.10 voor PETG', + filament: 'Filament', + selectFilament: 'Selecteer filament...', + source: { + local: 'Geïmporteerd', + orcaCloud: 'Orca Cloud', + bambuCloud: 'Bambu Cloud', + builtin: 'Ingebouwd', + }, + noFilamentsHelp: 'Geen filamenten beschikbaar. Meld je aan bij Bambu Cloud of importeer presets via Profielen → Lokale profielen.', + searchFilaments: 'Filamenten zoeken...', + noFilamentMatches: 'Geen filament komt overeen met die zoekopdracht', + flowType: 'Flowtype', + highFlow: 'Hoge flow', + standard: 'Standaard', + nozzleSize: 'Nozzlegrootte', + extruder: 'Extruder', + extruders: 'Extruders', + left: 'Links', + right: 'Rechts', + notes: 'Notities (lokaal opgeslagen)', + notesPlaceholder: 'Voeg notities over dit profiel toe...', + notesHelp: 'Notities worden opgeslagen in Bambuddy, niet op de printer', + syncing: 'Synchroniseren met printer...', + savingExtruder: 'Opslaan naar extruder {{current}}/{{total}}...', + pleaseWait: 'Even geduld', + }, + // Delete confirmation + deleteConfirm: { + title: 'Profiel verwijderen', + cannotUndo: 'Dit kan niet ongedaan worden gemaakt', + message: 'Weet je zeker dat je "{{name}}" van de printer wilt verwijderen?', + }, + // Bulk delete + bulkDelete: { + title: 'Profielen verwijderen', + cannotUndo: 'Dit kan niet ongedaan worden gemaakt', + message: 'Weet je zeker dat je {{count}} geselecteerde profielen van de printer wilt verwijderen?', + }, + // Toast + toast: { + profileSaved: 'K-profiel opgeslagen', + profilesSaved: 'K-profiel opgeslagen naar {{count}} extruders', + selectAtLeastOneExtruder: 'Selecteer ten minste één extruder', + selectFilament: 'Selecteer eerst een filament', + filamentNotResolvable: 'Geen Bambu-filament-ID voor {{name}} — de printer kan hiervoor geen profiel opslaan', + profileDeleted: 'K-profiel verwijderd', + profilesDeleted: '{{count}} profielen verwijderd', + exportedProfiles: '{{count}} profielen geëxporteerd', + importedProfiles: '{{count}} van {{total}} profielen geïmporteerd', + noProfilesToExport: 'Geen profielen om te exporteren', + invalidFileFormat: 'Ongeldig bestandsformaat', + failedToParseImport: 'Importbestand kon niet worden verwerkt', + failedToSaveBatch: 'K-profielen opslaan mislukt', + noteSaved: 'Notitie opgeslagen', + failedToSaveNote: 'Notitie opslaan mislukt', + }, + // Permissions + permission: { + noRead: 'Je hebt geen toestemming om profielen te vernieuwen', + noCreate: 'Je hebt geen machtiging om profielen toe te voegen', + noUpdate: 'Je hebt geen machtiging om K-profielen bij te werken', + noDelete: 'Je hebt geen machtiging om K-profielen te verwijderen', + noExport: 'Je hebt geen machtiging om profielen te exporteren', + noImport: 'Je hebt geen machtiging om profielen te importeren', + }, + }, + + // Virtual Printer + virtualPrinter: { + title: 'Virtuele printer', + running: 'Actief', + stopped: 'Gestopt', + description: { + default: 'Schakel een virtuele printer in die zichtbaar wordt in Bambu Studio en OrcaSlicer. Bestanden die naar deze printer worden gestuurd, worden direct gearchiveerd zonder te worden afgedrukt.', + proxy: 'Schakel een proxy in die slicerverkeer doorstuurt naar een echte printer, zodat je via elk netwerk op afstand kunt afdrukken.', + }, + enable: { + title: 'Virtuele printer inschakelen', + visibleInSlicer: 'Zichtbaar als "Bambuddy" in slicerdetectie', + proxyingTo: 'Proxy naar {{name}}', + notActive: 'Niet actief', + }, + model: { + title: 'Printermodel', + description: 'Selecteer welk printermodel moet worden geëmuleerd.', + restartWarning: 'Als je het model wijzigt, wordt de virtuele printer opnieuw gestart', + }, + accessCode: { + title: 'Toegangscode', + isSet: 'Toegangscode is ingesteld', + notSet: 'Geen toegangscode ingesteld - vereist om in te schakelen', + placeholder: 'Voer een code van 8 tekens in', + placeholderChange: 'Voer een nieuwe code in om te wijzigen', + hint: 'Moet precies 8 tekens zijn. Wordt door slicers gebruikt voor authenticatie.', + charCount: '({{count}}/8)', + inheritedFromTarget: 'Overgenomen van doelprinter', + derivedFromTargetHint: 'Gebruikt de toegangscode van de doelprinter. De bridge stuurt de slicerauthenticatie door naar de echte printer, dus de codes moeten overeenkomen — bewerk de toegangscode van de printer om deze waarde te wijzigen.', + reveal: 'Toegangscode tonen', + hide: 'Toegangscode verbergen', + }, + targetPrinter: { + title: 'Doelprinter', + configured: 'Proxydoel geconfigureerd', + notConfigured: 'Geen doelprinter geselecteerd - vereist voor proxymodus', + placeholder: 'Selecteer een printer...', + hint: 'Selecteer de printer waarnaar slicerverkeer via de proxy moet worden doorgestuurd. De printer moet in LAN-modus staan.', + noPrinters: 'Geen printers geconfigureerd. Voeg eerst een printer toe om de proxymodus te gebruiken.', + }, + remoteInterface: { + title: 'Overschrijving netwerkinterface', + configured: 'Interface-overschrijving actief', + optional: 'Optioneel - gebruik dit als het automatisch gedetecteerde IP-adres onjuist is (bijv. meerdere NIC\'s, Docker, VPN)', + placeholder: 'Automatisch detecteren (standaard)...', + hint: 'Overschrijf het IP-adres dat via SSDP wordt geadverteerd en in het TLS-certificaat wordt gebruikt. Handig wanneer Bambuddy meerdere netwerkinterfaces heeft.', + }, + mode: { + title: 'Modus', + archive: 'Archief', + archiveDesc: 'Bestanden direct archiveren', + review: 'Beoordelen', + reviewDesc: 'Beoordelen vóór archiveren', + queue: 'Wachtrij', + queueDesc: 'Archiveren en aan wachtrij toevoegen', + proxy: 'Proxy', + proxyDesc: 'Doorsturen naar echte printer', + }, + autoDispatch: { + title: 'Automatisch verzenden', + description: 'Start afdrukken automatisch wanneer ze aan de wachtrij worden toegevoegd. Als dit uitstaat, wachten afdrukken op handmatige verzending.', + }, + queueForceColorMatch: { + title: 'Kleurmatch afdwingen', + description: 'Weiger een taak te verzenden naar een printer waarop niet exact het juiste filamenttype en de juiste kleur zijn geladen. Standaard uit — zonder dit gebruikt de wachtrij alleen modelmatching en kan een printer worden gekozen waarop de verkeerde kleur is geladen.', + }, + saveAmsMapping: { + title: 'AMS-toewijzing opslaan', + description: 'Sla de AMS-slotkeuze van de slicer zelf (uit de MQTT-opdracht project_file) op in het archief, zodat bij later opnieuw afdrukken exact dezelfde fysieke spoel wordt gebruikt in plaats van opnieuw een keuze af te leiden uit type/kleur van het bestand. Standaard uit.', + }, + gcodeInjection: { + title: 'G-code-injectie', + description: 'Pas de per model ingestelde G-codefragmenten uit Instellingen toe op taken van deze VP. Standaard uit.', + }, + tailscaleDisabled: { + title: 'Tailscale-integratie', + description: 'Schakel dit in om deze VP als via Tailscale beschikbaar te markeren. Toont het Tailscale-adres van de host, zodat je weet welk IP-adres je in de slicer moet invoeren. De stap voor het importeren van de CA blijft hetzelfde — deze schakelaar heeft geen invloed op certificaten.', + }, + setupRequired: { + title: 'Installatie vereist', + description: 'Voor de functie virtuele printer is aanvullende systeemconfiguratie nodig voordat deze werkt. Dit omvat port forwarding, firewallregels en platformspecifieke instellingen.', + readGuide: 'Lees de installatiehandleiding voordat je dit inschakelt', + }, + archiveNameSource: { + title: 'Bron voor archiefnaam', + description: 'Kies hoe nieuwe archieven worden genoemd wanneer bestanden via de virtuele printer binnenkomen. "Metadata" gebruikt de in de slicer opgenomen Titel uit de 3MF (standaard). "Bestandsnaam" gebruikt de bestandsnaam die Bambu Studio via FTP heeft verzonden. Let op: Bambu Studio overschrijft de naam die je in het dialoogvenster "naar printer verzenden" invoert met het Titel-veld van de 3MF wanneer dat aanwezig is, waardoor beide modi vaak dezelfde tekst opleveren.', + metadata: 'Metadata', + filename: 'Bestandsnaam', + }, + caCert: { + title: 'Slicercertificaat', + description: 'Virtuele printers gebruiken een TLS-certificaat dat is ondertekend door de Bambuddy-CA. Importeer dit CA-certificaat eenmalig in de trust store van je slicer zodat de verbinding wordt geaccepteerd — je hoeft het niet via de opdrachtregel te kopiëren.', + copy: 'Kopiëren', + copied: 'Gekopieerd', + download: 'Downloaden', + fingerprint: 'SHA-256', + }, + howItWorks: { + title: 'Hoe het werkt', + step1: 'Op hetzelfde LAN verschijnen virtuele printers automatisch in je slicer (Bambu Studio / OrcaSlicer) via detectie. Vanaf andere netwerken voeg je ze handmatig toe met IP-adres en toegangscode.', + step2: 'Gebruik in de modi Archief, Beoordelen en Wachtrij de knop "Verzenden" in je slicer om 3MF-bestanden naar Bambuddy te uploaden. De slicer toont "Afdruk geslaagd" — het bestand wordt opgeslagen, niet afgedrukt.', + step3: 'In proxymodus stuurt de virtuele printer al het verkeer door naar een echte printer — afdrukken starten direct alsof je rechtstreeks verbonden bent.', + }, + status: { + title: 'Statusdetails', + printerName: 'Printernaam', + model: 'Model', + serialNumber: 'Serienummer', + mode: 'Modus', + pendingFiles: 'Bestanden in behandeling', + targetPrinter: 'Doelprinter', + ftpPort: 'FTP-poort', + mqttPort: 'MQTT-poort', + ftpConnections: 'FTP-verbindingen', + mqttConnections: 'MQTT-verbindingen', + }, + toast: { + updated: 'Instellingen virtuele printer bijgewerkt', + failedToUpdate: 'Instellingen bijwerken mislukt', + copyFailed: 'Kopiëren mislukt — probeer de tekst handmatig te selecteren', + accessCodeRequired: 'Stel eerst een toegangscode in', + targetPrinterRequired: 'Selecteer eerst een doelprinter', + bindIpRequired: 'Stel eerst een bind-IP in', + accessCodeEmpty: 'Toegangscode mag niet leeg zijn', + accessCodeLength: 'Toegangscode moet precies 8 tekens zijn', + targetCodeChangedRebind: 'De toegangscode komt nu overeen met de nieuwe doelprinter. Voeg dit apparaat opnieuw toe in je slicer om de nieuwe code te gebruiken.', + created: 'Virtuele printer aangemaakt', + failedToCreate: 'Virtuele printer aanmaken mislukt', + deleted: 'Virtuele printer verwijderd', + failedToDelete: 'Virtuele printer verwijderen mislukt', + }, + list: { + title: 'Virtuele printers', + add: 'Toevoegen', + addFirst: 'Virtuele printer toevoegen', + empty: 'Geen virtuele printers geconfigureerd. Voeg er een toe om te beginnen.', + }, + bindIp: { + title: 'Bind-interface', + placeholder: 'Selecteer interface...', + hint: 'Netwerkinterface waaraan deze virtuele printer wordt gekoppeld. Moet uniek zijn per printer.', + }, + proxy: { + accessCodeHint: 'Gebruik in proxymodus de toegangscode van je doelprinter in de slicer. De verbinding wordt transparant doorgestuurd naar de echte printer.', + }, + addDialog: { + title: 'Virtuele printer toevoegen', + name: 'Naam', + hint: 'Je kunt de toegangscode, doelprinter en andere instellingen na het aanmaken configureren.', + create: 'Maken', + }, + deleteConfirm: { + title: 'Virtuele printer verwijderen', + message: 'Weet je zeker dat je "{{name}}" wilt verwijderen? Hiermee worden alle services voor deze printer gestopt.', + }, + }, + + // Model Viewer + modelViewer: { + openInSlicer: 'Openen in slicer', + openInSlicerWith: 'Openen in {{slicer}}', + moreSlicerOptions: 'Meer sliceropties', + openInSlicerFailed: 'Kon niet openen in slicer', + tabs: { + model: '3D-model', + }, + notAvailable: 'niet beschikbaar', + plates: 'Platen', + allPlates: 'Alle platen', + plateNumber: 'Plaat {{number}}', + plateCount: '{{count}} plaat', + plateCount_other: '{{count}} platen', + objectCount: '{{count}} object', + objectCount_other: '{{count}} objecten', + filamentCount: '{{count}} filament', + filamentCount_other: '{{count}} filamenten', + eta: 'ETA {{minutes}} min', + noPreview: 'Geen voorbeeld beschikbaar voor dit bestand', + pagination: { + pageOf: 'Pagina {{current}} van {{total}}', + prev: 'Vorige', + next: 'Volgende', + }, + errors: { + failedToLoad: 'Bestand laden mislukt', + noMeshes: 'Geen meshes gevonden in 3MF-bestand', + unsupportedFormat: 'Niet-ondersteund bestandsformaat', + }, + }, + + // Maintenance type descriptions (built-in) + maintenanceDescriptions: { + lubricateCarbonRods: 'Breng smeermiddel aan op de carbonstangen voor soepele beweging', + lubricateRails: 'Breng smeermiddel aan op de lineaire rails voor soepele beweging', + cleanNozzle: 'Reinig hotend en nozzle om verstoppingen te voorkomen', + checkBelts: 'Controleer de riemspanning voor nauwkeurige afdrukken', + cleanBuildPlate: 'Reinig de bouwplaat voor betere hechting', + checkExtruder: 'Controleer de extrudertandwielen op slijtage', + checkCooling: 'Controleer of de koelventilatoren goed werken', + generalInspection: 'Algemene printerinspectie', + cleanCarbonRods: 'Reinig de carbonstangen om wrijving te verminderen', + lubricateSteelRods: 'Breng smeermiddel aan op de stalen stangen voor soepele beweging', + cleanSteelRods: 'Reinig de stalen stangen om wrijving te verminderen', + cleanLinearRails: 'Veeg de lineaire rails schoon om stof en vuil te verwijderen', + checkPtfeTube: 'Controleer de PTFE-buis op slijtage of beschadiging', + replaceHepaFilter: 'Vervang het HEPA-filter voor een goede luchtkwaliteit', + replaceCarbonFilter: 'Vervang het actieve-koolfilter', + lubricateLeftNozzleRail: 'Smeer de linker nozzlerail (H2-serie)', + }, + + // Smart Plugs + haSensors: { + label: 'Sensoren', + unavailable: 'Niet beschikbaar', + blocksPrints: '{{entity}} — houdt afdrukken tegen en geeft een melding', + states: { + open: 'Open', + closed: 'Gesloten', + unlocked: 'Ontgrendeld', + locked: 'Vergrendeld', + detected: 'Gedetecteerd', + clear: 'Wissen', + wet: 'Nat', + dry: 'Droog', + problem: 'Probleem', + ok: 'OK', + running: 'Actief', + stopped: 'Gestopt', + on: 'Aan', + off: 'Uit', + }, + sectionTitle: 'Home Assistant-sensoren', + add: 'Sensor toevoegen', + addTitle: 'Home Assistant-sensor toevoegen', + editTitle: 'Home Assistant-sensor bewerken', + empty: 'Nog geen sensoren. Koppel een deurcontact of thermometer uit Home Assistant om deze op een printerkaart te tonen.', + unknownPrinter: 'Onbekende printer', + badgeBlocks: 'Houdt afdrukken tegen', + badgeNotifies: 'Meldt', + badgeHidden: 'Verborgen op kaart', + printer: 'Printer', + entity: 'Entiteit', + searchPlaceholder: 'Entiteiten zoeken...', + noEntities: 'Geen overeenkomende entiteiten', + name: 'Weergavenaam', + alertWhen: 'Waarschuwen wanneer', + alertNever: 'Nooit — alleen weergeven', + alertAbove: 'Boven', + alertBelow: 'Onder', + alertHint: 'De alarmstatus markeert de sensor op de printerkaart en schakelt de onderstaande opties in.', + showOnCard: 'Tonen op printerkaart', + notifyOnAlert: 'Stuur een melding wanneer een alarm begint', + blockPrint: 'Houd afdrukken in de wachtrij tegen zolang er een alarm is', + blockPrintHint: 'Taken blijven in de wachtrij en starten vanzelf zodra de sensor weer normaal is. Wordt genegeerd als Home Assistant niet bereikbaar is.', + toast: { + created: 'Sensor toegevoegd', + updated: 'Sensor opgeslagen', + deleted: 'Sensor verwijderd', + }, + error: { + pickEntity: 'Kies een Home Assistant-entiteit', + nameRequired: 'Voer een weergavenaam in', + printerRequired: 'Kies een printer', + alertRequired: 'Stel eerst een alarmvoorwaarde in', + }, + }, + locationHaSensors: { + sectionTitle: 'Home Assistant-sensoren (opslaglocaties)', + sectionDescription: + 'Koppel temperatuur-, luchtvochtigheids- of batterijsensoren uit Home Assistant aan je opslaglocaties om live waarden te tonen op de filamentkaart en in de tabel. Per locatie is één sensor per categorie toegestaan.', + add: 'Sensor toevoegen', + addTitle: 'Home Assistant-sensor toevoegen', + editTitle: 'Home Assistant-sensor bewerken', + empty: 'Nog geen sensoren. Koppel een temperatuur- of luchtvochtigheidssensor uit Home Assistant om deze op de filamentkaart te tonen.', + unknownLocation: 'Onbekende locatie', + location: 'Opslaglocatie', + showOnCard: 'Tonen op filamentkaart', + overwriteConfirm: { + title: 'Bestaande sensor vervangen?', + messageTemperature: '"{{location}}" heeft al een temperatuursensor gekoppeld: {{name}}. Doorgaan vervangt deze.', + messageHumidity: '"{{location}}" heeft al een luchtvochtigheidssensor gekoppeld: {{name}}. Doorgaan vervangt deze.', + messageBattery: '"{{location}}" heeft al een batterijsensor gekoppeld: {{name}}. Doorgaan vervangt deze.', + }, + autoAdd: { + confirmTitle: 'De andere sensoren ook toevoegen?', + confirmMessage: 'Bambuddy heeft ook andere sensoren voor deze locatie gevonden. Kies welke je ook wilt toevoegen.', + added: 'Ook toegevoegd: {{names}}', + noneFound: 'Geen bijpassende temperatuur-, luchtvochtigheids- of batterijsensoren gevonden voor deze locatie.', + onlyThisOne: 'Alleen deze', + }, + options: { + buttonLabel: 'Sensoropties', + title: 'Opties voor locatiesensoren', + description: 'Deze waarden worden gebruikt wanneer een temperatuur-, luchtvochtigheids- of batterijsensor automatisch wordt gekoppeld naast de eerste sensor van een locatie.', + generalSettings: 'Algemene instellingen', + pollInterval: 'Bijwerkinterval (seconden)', + pollIntervalHint: 'Hoe vaak Bambuddy Home Assistant raadpleegt en sensorwaarden op het scherm ververst. Minimaal 60 seconden.', + colorizeValues: 'Sensorwaarden inkleuren op basis van hun alarmdrempels', + aboveColor: 'Kleur boven drempel', + belowColor: 'Kleur onder drempel', + optimalColor: 'Kleur bij optimale waarde', + colors: { + red: 'Rood', + orange: 'Oranje', + yellow: 'Geel', + green: 'Groen', + blue: 'Blauw', + purple: 'Paars', + pink: 'Roze', + }, + saved: 'Opties opgeslagen', + saveFailed: 'Opslaan van opties mislukt', + reset: 'Herstellen', + resetConfirm: { + title: 'Alle bestaande locatiesensoren herstellen?', + message: + 'Dit overschrijft de alarmdrempels, meldingen en kaartzichtbaarheid van elke bestaande temperatuur-, luchtvochtigheids- en batterijsensor van opslaglocaties met de hierboven ingestelde waarden, en herstelt de naam van elke sensor naar de vriendelijke naam uit Home Assistant — printersensoren blijven ongewijzigd. Dit kan niet ongedaan worden gemaakt. Afhankelijk van het aantal sensoren kan dit even duren.', + }, + resetDone: 'Toegepast op {{count}} locatiesensoren', + resetFailed: 'Herstellen van locatiesensoren mislukt', + }, + deleteAllConfirm: { + title: 'Alle sensoren verwijderen?', + message: 'Hiermee worden alle {{count}} sensoren verwijderd die aan "{{location}}" zijn gekoppeld. Dit kan niet ongedaan worden gemaakt.', + }, + currentlyBound: 'Momenteel gekoppeld: {{entity}}', + error: { + locationRequired: 'Kies een opslaglocatie', + }, + toast: { + created: 'Sensor toegevoegd', + updated: 'Sensor opgeslagen', + deleted: 'Sensor verwijderd', + }, + }, + smartPlugs: { + offline: 'Offline', + admin: 'Beheerder', + openPlugAdminPage: 'Beheerpagina van stekker openen', + deleteSmartPlug: 'Slimme stekker verwijderen', + turnOnSmartPlug: 'Slimme stekker inschakelen', + turnOffSmartPlug: 'Slimme stekker uitschakelen', + turnOn: 'Inschakelen', + turnOff: 'Uitschakelen', + addSmartPlug: { + scanningNetwork: 'Netwerk scannen...', + chooseEntity: 'Kies een entiteit...', + connectionFailed: 'Verbinding mislukt', + searchEntities: 'Entiteiten zoeken...', + searchPowerSensors: 'Vermogenssensoren zoeken...', + searchEnergySensors: 'Energiesensoren zoeken...', + placeholders: { + plugName: 'Woonkamerstekker', + mqttStateOnValue: 'AAN, true, 1', + mqttSameAsPower: 'Hetzelfde als vermogensonderwerp, of anders', + }, + }, + // SmartPlugCard + linkedTo: 'Gekoppeld aan:', + monitorOnly: 'Alleen bewaken', + alerts: 'Waarschuwingen', + scheduleOn: 'Aan {{time}}', + scheduleOff: 'Uit {{time}}', + on: 'Aan', + off: 'Uit', + power: 'Vermogen', + kwhToday: 'kWh vandaag', + settings: 'Instellingen', + automationSettings: 'Automatiseringsinstellingen', + showInSwitchbar: 'Tonen in schakelbalk', + quickAccessSidebar: 'Snelle toegang vanuit de zijbalk', + enabled: 'Ingeschakeld', + enableAutomation: 'Automatisering voor deze stekker inschakelen', + autoOn: 'Automatisch aan', + autoOnDescription: 'Inschakelen wanneer afdruk start', + autoOff: 'Automatisch uit', + autoOffDescription: 'Uitschakelen wanneer afdruk is voltooid (eenmalig)', + autoOffPersistent: 'Ingeschakeld houden', + autoOffPersistentDescription: 'Ingeschakeld blijven tussen afdrukken in plaats van eenmalig', + controlsPrinterPower: 'Voedt de printer', + controlsPrinterPowerDescription: 'Schakel dit uit als deze stekker alleen een accessoire voedt (filterventilator, verlichting). Anders wordt de printer als offline gemarkeerd wanneer je hem uitschakelt.', + autoOffAfterDrying: 'Automatisch uitschakelen na drogen', + autoOffAfterDryingDescription: 'Uitschakelen wanneer AMS-drogen is voltooid', + delayAfterDryingMinutes: 'Droogvertraging (minuten)', + turnOffDelayMode: 'Modus uitschakelvertraging', + time: 'Tijd', + temp: 'Temp', + delayMinutes: 'Vertraging (minuten)', + tempThreshold: 'Temperatuurdrempel (°C)', + tempThresholdDescription: 'Schakelt uit wanneer de nozzle onder deze temperatuur is afgekoeld', + edit: 'Bewerken', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.', + turnOnConfirm: 'Weet je zeker dat je "{{name}}" wilt inschakelen?', + turnOffConfirm: 'Weet je zeker dat je "{{name}}" wilt uitschakelen? Hierdoor wordt de stroom naar het aangesloten apparaat onderbroken.', + failedToTurn: '"{{name}}" {{action}} schakelen mislukt', + unknown: 'Onbekend', + // AddSmartPlugModal + addTitle: 'Slimme stekker toevoegen', + editTitle: 'Slimme stekker bewerken', + stopScanning: 'Scannen stoppen', + discoverTasmota: 'Tasmota-apparaten zoeken', + foundDevices: '{{count}} apparaat/apparaten gevonden - klik om te selecteren:', + noDevicesFound: 'Geen Tasmota-apparaten gevonden op je netwerk', + haNotConfigured: 'Home Assistant is niet geconfigureerd. Stel dit in via', + haSettingsPath: 'Instellingen → Netwerk → Home Assistant', + selectEntity: 'Selecteer entiteit *', + ipAddress: 'IP-adres *', + nameLabel: 'Naam *', + username: 'Gebruikersnaam', + password: 'Wachtwoord', + authHint: 'Laat leeg als je Tasmota-apparaat geen authenticatie vereist', + linkToPrinter: 'Koppelen aan printer', + noPrinter: 'Geen printer (alleen handmatige bediening)', + linkingDescription: 'Koppelen maakt automatisch in-/uitschakelen mogelijk wanneer afdrukken starten/voltooien', + powerAlerts: 'Vermogenswaarschuwingen', + alertAbove: 'Waarschuwen indien boven (W)', + alertBelow: 'Waarschuwen indien onder (W)', + alertDescription: 'Ontvang een melding wanneer het stroomverbruik deze drempels overschrijdt. Laat leeg om die richting uit te schakelen.', + dailySchedule: 'Dagelijks schema', + turnOnAt: 'Inschakelen om', + turnOffAt: 'Uitschakelen om', + scheduleDescription: 'Schakel de stekker dagelijks automatisch op deze tijden in/uit. Laat leeg om die actie over te slaan.', + showOnPrinterCard: 'Tonen op printerkaart', + displayOnPrinterCard: 'Knop op printerkaart weergeven', + connectedResult: 'Verbonden!', + deviceLabel: 'Apparaat: {{name}} - ', + stateLabel: 'Status: {{state}}', + test: 'Testen', + delete: 'Verwijderen', + save: 'Opslaan', + add: 'Toevoegen', + cancel: 'Annuleren', + failedToStartScan: 'Scan starten mislukt', + nameRequired: 'Naam is verplicht', + entityRequired: 'Entiteit is verplicht voor Home Assistant-stekkers', + mqttTopicRequired: 'Ten minste één MQTT-topic moet zijn geconfigureerd voor bewaking van vermogen, energie of status', + loadingEntities: 'Entiteiten laden...', + loading: 'Laden...', + failedToLoadEntities: 'Entiteiten laden mislukt: {{error}}', + noEntitiesMatching: 'Geen entiteiten gevonden die overeenkomen met "{{search}}"', + noEntitiesAvailable: 'Geen entiteiten beschikbaar', + searchingEntities: 'Alle entiteiten doorzoeken ({{count}} gevonden)', + showingEntities: 'Toont switch, light, input_boolean ({{count}} beschikbaar)', + energyMonitoringOptional: 'Energiemonitoring (optioneel)', + energyMonitoringHint: 'Zoek en selecteer sensoren die vermogens-/energiegegevens leveren.', + powerSensorW: 'Vermogenssensor (W)', + energyTodayKwh: 'Energie vandaag (kWh)', + totalEnergyKwh: 'Totale energie (kWh)', + noMatchingSensors: 'Geen overeenkomende sensoren', + none: 'Geen', + mqttNotConfigured: 'MQTT-broker niet geconfigureerd. Stel het brokeradres in via', + mqttSettingsPath: 'Instellingen → Netwerk → MQTT-publicatie', + mqttNotConfiguredSuffix: '(je hoeft publicatie niet in te schakelen; vul alleen de brokergegevens in).', + mqttMonitorOnlyDescription: 'MQTT-stekkers ontvangen vermogens-/energiegegevens via een MQTT-abonnement. In-/uitschakelen is niet beschikbaar - gebruik je MQTT-broker of domoticasysteem.', + powerMonitoring: 'Vermogensbewaking', + energyMonitoring: 'Energiemonitoring', + stateMonitoring: 'Statusbewaking', + optional: 'optioneel', + topic: 'Topic', + jsonPath: 'JSON-pad', + multiplier: 'Vermenigvuldigingsfactor', + onValue: 'AAN-waarde', + mqttPowerHint: 'JSON-pad haalt de waarde uit een JSON-payload (bijv. "power_l1"). Laat leeg als het topic ruwe numerieke waarden publiceert.\nGebruik vermenigvuldigingsfactor 0.001 voor mW→W, 1000 voor kW→W.', + mqttEnergyHint: 'JSON-pad haalt de waarde uit een JSON-payload. Laat leeg voor ruwe waarden.\nGebruik vermenigvuldigingsfactor 0.001 voor Wh→kWh, 1000 voor MWh→kWh.', + mqttStateHint: 'JSON-pad haalt de waarde uit een JSON-payload. Laat leeg voor ruwe waarden.\nAAN-waarde: de exacte tekenreeks die "AAN" betekent. Laat leeg voor automatische detectie (ON, true, 1).', + // REST smart plug + restControl: 'Bedienen', + restOnUrl: 'URL voor AAN', + restOffUrl: 'URL voor UIT', + restOnBody: 'Requestbody AAN', + restOffBody: 'Requestbody UIT', + restMethod: 'HTTP-methode', + restHeaders: 'Aangepaste headers (JSON)', + restStatusUrl: 'Status-URL', + restStatusPath: 'JSON-pad status', + restStatusOnValue: 'AAN-waarde', + restPowerUrl: 'Vermogens-URL', + restPowerPath: 'JSON-pad vermogen', + restPowerMultiplier: 'Vermenigvuldigingsfactor vermogen', + restEnergyUrl: 'Energie-URL', + restEnergyPath: 'JSON-pad energie (vandaag)', + restEnergyTotalPath: 'JSON-pad energie (totaal)', + restEnergyTotalMultiplier: 'Vermenigvuldigingsfactor totaal', + restEnergyTotalPathHint: 'bijv. aenergy.total', + restEnergyTotalHint: + 'Veel stekkers — waaronder alle Shelly\'s — rapporteren alleen een totale teller die nooit wordt gereset. Die hoort hier en niet in het veld hierboven: als je hem als verbruik van vandaag leest, wordt hij om middernacht niet gereset en blijven Gisteren en Totaal leeg. Bambuddy berekent Vandaag en Gisteren hieruit; het duurt één of twee dagen aan metingen voordat die gevuld zijn. Een Shelly rapporteert wattuur, dus gebruik een vermenigvuldigingsfactor van 0.001.', + restEnergyMultiplier: 'Vermenigvuldigingsfactor energie', + restUrlRequired: 'Ten minste één URL (AAN of UIT) is vereist voor REST-stekkers', + restHeadersHint: 'bijv. {"Authorization": "Bearer your-token"}', + restBodyHint: 'bijv. ON, {"state": "on"}', + restStatusHint: 'URL om de huidige status op te vragen', + restPathHint: 'bijv. state of data.power.status', + restPowerUrlHint: 'Afzonderlijke URL voor vermogensgegevens (gebruikt Status-URL als deze leeg is)', + restEnergyUrlHint: 'Afzonderlijke URL voor energiegegevens (gebruikt Status-URL als deze leeg is)', + restEnergyHint: 'Elke waarde kan een eigen URL gebruiken of terugvallen op de Status-URL. Gebruik vermenigvuldigingsfactoren voor eenheidsconversie (bijv. 0.001 om Wh naar kWh om te rekenen).', + testConnection: 'Verbinding testen', + connectionSuccess: 'Verbinding geslaagd', + noSwitchesInSwitchbar: 'Geen schakelaars in de schakelbalk', + enableSwitchbarHint: 'Schakel "Tonen in schakelbalk" in via Instellingen > Slimme stekkers', + }, + + // Notifications + notifications: { + // Provider types + providerTypes: { + callmebot: 'CallMeBot/WhatsApp', + ntfy: 'ntfy', + pushover: 'Pushover', + telegram: 'Telegram', + email: 'E-mail', + discord: 'Discord', + webhook: 'Webhook', + homeassistant: 'Home Assistant', + bark: 'Bark', + }, + // Provider descriptions + providerDescriptions: { + email: 'SMTP-e-mailmeldingen', + telegram: 'Meldingen via Telegram-bot', + discord: 'Versturen naar Discord-kanaal via webhook', + ntfy: 'Gratis, zelf te hosten pushmeldingen', + pushover: 'Eenvoudige, betrouwbare pushmeldingen', + callmebot: 'Gratis WhatsApp-meldingen via CallMeBot', + webhook: 'Algemene HTTP POST naar elke URL', + homeassistant: 'Blijvende meldingen in het Home Assistant-dashboard', + bark: 'iOS-pushmeldingen via Bark (zelf te hosten)', + }, + // NotificationProviderCard + lastSuccess: 'Laatste: {{date}}', + error: 'Fout', + printer: 'Printer:', + allPrinters: 'Alle printers', + sendTestNotification: 'Testmelding verzenden', + eventSettings: 'Gebeurtenisinstellingen', + enabled: 'Ingeschakeld', + sendFromProvider: 'Meldingen via deze provider verzenden', + // Event categories + printEvents: 'Afdrukgebeurtenissen', + printerStatus: 'Printerstatus', + amsAlarms: 'AMS-alarmen', + amsHtAlarms: 'AMS-HT-alarmen', + printQueue: 'Afdrukwachtrij', + // Event tags (badges) + start: 'Start', + plateCheck: 'Plaatcontrole', + complete: 'Voltooid', + failed: 'Mislukt', + stopped: 'Gestopt', + progress: 'Voortgang', + offline: 'Offline', + lowFilament: 'Weinig filament', + maintenance: 'Onderhoud', + amsHumidity: 'AMS-luchtvochtigheid', + amsTemp: 'AMS-temp', + amsDryingSuspended: 'Drogen onderbroken', + amsHtHumidity: 'AMS-HT-luchtvochtigheid', + amsHtTemp: 'AMS-HT-temp', + bedCooled: 'Bed afgekoeld', + firstLayer: 'Eerste laag', + quiet: 'Stil', + digest: 'Samenvatting {{time}}', + // Event labels (expanded settings) + printStarted: 'Afdruk gestart', + plateNotEmpty: 'Plaat niet leeg', + plateNotEmptyDescription: 'Objecten gedetecteerd vóór afdrukken', + plateClearRequired: 'Bevestiging lege plaat vereist', + plateClearRequiredDescription: 'Afdruk voltooid, wachtrij wacht op bevestiging van de plaat', + plateClear: 'Plaat leeg', + printCompleted: 'Afdruk voltooid', + bedCooledLabel: 'Bed afgekoeld', + bedCooledDescription: 'Bed na afdruk afgekoeld tot onder drempel', + firstLayerCompleteLabel: 'Eerste laag voltooid', + firstLayerCompleteDescription: 'Melden met momentopname wanneer de eerste laag is voltooid', + missingSpoolAssignmentLabel: 'Ontbrekende spoeltoewijzing', + billingChargeFailedLabel: 'Kostenregistratie mislukt', + billingChargeFailedDescription: 'Melden wanneer afdrukkosten niet konden worden geregistreerd', + missingSpoolAssignmentDescription: 'Melden wanneer een afdruk start en vereiste trays geen toegewezen spoel hebben', + printFailed: 'Afdruk mislukt', + printStopped: 'Afdruk gestopt', + progressMilestones: 'Voortgangsmijlpalen', + progressMilestonesDescription: 'Melden bij 25%, 50%, 75%', + printerOffline: 'Printer offline', + printerError: 'Printerfout', + aiFailureDetection: 'AI-foutdetectie', + aiFailureDetectionDescription: 'Melden wanneer Obico AI een mogelijke afdrukfout detecteert', + lowFilamentLabel: 'Weinig filament', + maintenanceDue: 'Onderhoud nodig', + maintenanceDueDescription: 'Melden wanneer onderhoud nodig is', + amsHumidityHigh: 'AMS-luchtvochtigheid hoog', + amsHumidityHighDescription: 'Luchtvochtigheid van normale AMS overschrijdt drempel', + amsTemperatureHigh: 'AMS-temperatuur hoog', + amsTemperatureHighDescription: 'Temperatuur van normale AMS overschrijdt drempel', + amsDryingSuspendedTitle: 'Automatisch drogen gestopt', + amsDryingSuspendedDescription: 'Automatisch drogen heeft een AMS-eenheid opgegeven omdat de luchtvochtigheid niet onder de drempel kwam', + amsHtHumidityHigh: 'AMS-HT-luchtvochtigheid hoog', + amsHtHumidityHighDescription: 'AMS-HT-luchtvochtigheid overschrijdt drempel', + amsHtTemperatureHigh: 'AMS-HT-temperatuur hoog', + amsHtTemperatureHighDescription: 'AMS-HT-temperatuur overschrijdt drempel', + // Inventory stock alert events + inventoryAlerts: 'Voorraadwaarschuwingen', + stockReorderAlert: 'Bestelwaarschuwing', + stockReorderAlertDescription: 'SKU heeft het bestelpunt bereikt', + stockBreakAlert: 'Voorraadtekortwaarschuwing', + stockBreakAlertDescription: 'Voorraad raakt op voordat aanvulling arriveert', + // Queue events + jobAdded: 'Taak toegevoegd', + jobAddedDescription: 'Taak toegevoegd aan wachtrij', + jobAssigned: 'Taak toegewezen', + jobAssignedDescription: 'Modelgebaseerde taak toegewezen aan printer', + jobStarted: 'Taak gestart', + jobStartedDescription: 'Wachtrijtaak begonnen met afdrukken', + jobWaiting: 'Taak wacht', + jobWaitingDescription: 'Taak wacht op filament of printer', + jobSkipped: 'Taak overgeslagen', + jobSkippedDescription: 'Taak overgeslagen (vorige mislukt)', + jobFailed: 'Taak mislukt', + jobFailedDescription: 'Taak kon niet starten', + queueComplete: 'Wachtrij voltooid', + queueCompleteDescription: 'Alle wachtrijtaken voltooid', + // Quiet hours + quietHours: 'Stille uren', + noNotificationsDuring: 'Geen meldingen tijdens deze uren', + editProviderToChangeQuietHours: 'Bewerk provider om stille uren te wijzigen', + // Daily digest + dailyDigest: 'Dagelijkse samenvatting', + batchNotifications: 'Bundel meldingen in één dagelijkse samenvatting', + sendAt: 'Verzenden om {{time}}', + editProviderToChangeDigestTime: 'Bewerk provider om tijdstip van samenvatting te wijzigen', + // Actions + edit: 'Bewerken', + deleteProvider: 'Meldingsprovider verwijderen', + deleteConfirm: 'Weet je zeker dat je "{{name}}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.', + delete: 'Verwijderen', + // AddNotificationModal + addTitle: 'Meldingsprovider toevoegen', + editTitle: 'Meldingsprovider bewerken', + nameLabel: 'Naam *', + namePlaceholder: 'Mijn meldingen', + providerTypeLabel: 'Providertype *', + configuration: 'Configuratie', + testConfiguration: 'Configuratie testen', + printerFilter: 'Printerfilter', + onlyFromPrinter: 'Alleen meldingen verzenden voor gebeurtenissen van deze printer', + quietHoursDnd: 'Stille uren (Niet storen)', + quietStart: 'Start', + quietEnd: 'Einde', + dailyDigestLabel: 'Dagelijkse samenvatting', + sendDigestAt: 'Samenvatting verzenden om', + digestCollected: 'Gebeurtenissen worden verzameld en op dit tijdstip als één samenvatting verzonden', + notificationEvents: 'Meldingsgebeurtenissen', + progressPercent: '(25%, 50%, 75%)', + bedCooledAfterPrint: '(nadat de afdruk is voltooid)', + haSensorAlert: 'Sensorwaarschuwing', + haSensorAlertDescription: '(een gekoppelde Home Assistant-sensor vereist aandacht)', + locationHaSensorAlert: 'Sensoralarm opslaglocatie', + locationHaSensorAlertDescription: '(een Home Assistant-sensor die aan een opslaglocatie is gekoppeld vereist aandacht)', + // Per-event ntfy priority (#990) + eventPriority: { + sectionTitle: 'ntfy-prioriteit', + helpNtfy: 'Kies een prioriteit voor elke ingeschakelde gebeurtenis. ntfy gebruikt deze om waarschuwingen op te schalen (geluid, zichtbaarheid, pushgedrag). Niveaus die hier niet zijn ingesteld gebruiken de standaardwaarde van de ntfy-server.', + min: 'Min', + low: 'Laag', + default: 'Standaard', + high: 'Hoog', + urgent: 'Urgent', + }, + cancel: 'Annuleren', + save: 'Opslaan', + add: 'Toevoegen', + nameRequired: 'Naam is verplicht', + fieldRequired: '{{field}} is verplicht', + haDataInvalid: 'Het veld Data moet een geldig JSON-object zijn, bijv. {"priority": "high", "ttl": 0}', + // Config field labels + phoneNumber: 'Telefoonnummer', + apiKey: 'API-sleutel', + serverUrl: 'Server-URL', + topic: 'Topic', + authToken: 'Authenticatietoken', + userKey: 'Gebruikerssleutel', + appToken: 'App-token', + priority: 'Prioriteit', + pushoverRetry: 'Noodherhaling (s)', + pushoverExpire: 'Noodverval (s)', + botToken: 'Bottoken', + chatId: 'Chat-ID', + telegramThreadId: 'Forumtopic-ID', + telegramThreadIdHelp: 'Optioneel. Plaatst in één specifiek topic van een forumgroep — het laatste nummer in de topiclink (t.me/c/.../25). Laat leeg voor het algemene topic.', + telegramThreadIdInvalid: 'Forumtopic-ID moet een getal zijn.', + smtpServer: 'SMTP-server', + smtpPort: 'SMTP-poort', + security: 'Beveiliging', + authentication: 'Authenticatie', + username: 'Gebruikersnaam', + password: 'Wachtwoord', + fromEmail: 'Afzender-e-mail', + toEmail: 'Naar e-mailadres', + webhookUrl: 'Webhook-URL', + payloadFormat: 'Payloadformaat', + authorization: 'Autorisatie', + titleFieldName: 'Naam titelveld', + messageFieldName: 'Naam berichtveld', + // NotificationTemplateEditor + editTemplate: 'Sjabloon bewerken: {{name}}', + titleLabel: 'Titel', + bodyLabel: 'Inhoud', + titlePlaceholder: 'Meldingstitel...', + bodyPlaceholder: 'Meldingsinhoud...', + availableVariables: 'Beschikbare variabelen', + clickToInsert: 'Klik om op de cursorpositie in de inhoud in te voegen', + livePreview: 'Livevoorbeeld', + hide: 'Verbergen', + show: 'Tonen', + loadingPreview: 'Voorbeeld laden...', + enterTemplateContent: 'Voer sjablooninhoud in om een voorbeeld te zien', + titlePreview: 'Titel:', + bodyPreview: 'Inhoud:', + resetToDefault: 'Terugzetten naar standaard', + titleRequired: 'Titel is verplicht', + bodyRequired: 'Inhoud is verplicht', + // NotificationLogViewer + notificationLog: 'Meldingslogboek', + showFailedOnly: 'Alleen mislukt', + last24Hours: 'Laatste 24 uur', + last7Days: 'Laatste 7 dagen', + last30Days: 'Laatste 30 dagen', + last90Days: 'Laatste 90 dagen', + justNow: 'Zojuist', + noFailedNotifications: 'Geen mislukte meldingen', + noNotificationsLogged: 'Geen meldingen geregistreerd', + unknownProvider: 'Onbekende provider', + logTitle: 'Titel', + logMessage: 'Bericht', + logError: 'Fout', + logProvider: 'Provider: {{type}}', + logTime: 'Tijd: {{time}}', + refresh: 'Vernieuwen', + clearOld: 'Oude wissen', + statsSummary: 'Laatste {{days}} dagen:', + statsNotifications: 'meldingen', + statsSent: '{{count}} verzonden', + statsFailed: '{{count}} mislukt', + // Event type labels (for log viewer) + eventTypes: { + print_start: 'Afdruk gestart', + print_complete: 'Afdruk voltooid', + print_failed: 'Afdruk mislukt', + print_stopped: 'Afdruk gestopt', + print_progress: 'Voortgang', + printer_offline: 'Printer offline', + printer_error: 'Printerfout', + filament_low: 'Weinig filament', + maintenance_due: 'Onderhoud nodig', + test: 'Testen', + }, + // User email notification preferences + userEmail: { + title: 'Meldingen', + emailNotifications: 'E-mailmeldingen', + emailNotificationsDesc: 'Ontvang e-mailmeldingen voor je eigen afdruktaken. E-mails worden verzonden via de SMTP-instellingen van het systeem die zijn geconfigureerd onder Geavanceerde authenticatie.', + sendingTo: 'Meldingen worden verzonden naar', + noEmailWarning: 'Je account heeft geen e-mailadres. Neem contact op met een beheerder om er een toe te voegen.', + printJobNotifications: 'Meldingen voor afdruktaken', + printJobNotificationsDesc: 'Kies welke gebeurtenissen e-mailmeldingen activeren voor afdruktaken die je indient.', + printJobStarts: 'Afdruktaak start', + printJobStartsDesc: 'Ontvang een melding wanneer je afdruktaak begint.', + printJobFinishes: 'Afdruktaak voltooid', + printJobFinishesDesc: 'Ontvang een melding wanneer je afdruktaak succesvol is voltooid.', + printErrors: 'Afdrukfouten', + printErrorsDesc: 'Ontvang een melding wanneer je afdruktaak mislukt of een fout tegenkomt.', + printJobStops: 'Afdruktaak gestopt', + printJobStopsDesc: 'Ontvang een melding wanneer je afdruktaak wordt geannuleerd of gestopt.', + saveSuccess: 'Meldingsvoorkeuren opgeslagen.', + saveError: 'Meldingsvoorkeuren opslaan mislukt.', + }, + }, + + // Rich Text Editor + richTextEditor: { + bold: 'Vet', + italic: 'Cursief', + underline: 'Onderstrepen', + bulletList: 'Opsomming', + numberedList: 'Genummerde lijst', + alignLeft: 'Links uitlijnen', + alignCenter: 'Centreren', + alignRight: 'Rechts uitlijnen', + addLink: 'Link toevoegen', + removeLink: 'Link verwijderen', + }, + + // External Links + externalLinks: { + title: 'Zijbalklinks', + sidebarLayout: 'Zijbalk', + sidebarLayoutDescription: 'Toon of verberg ingebouwde pagina\'s, voeg externe links toe en sleep items om de navigatie in de zijbalk te herschikken.', + systemPages: 'Bambuddy-pagina\'s', + externalLinks: 'Externe links', + visibleInSidebar: 'Zichtbaar in zijbalk', + hiddenFromSidebar: 'Verborgen in zijbalk', + requiredInSidebar: 'Verplicht in zijbalk', + hidePage: 'Pagina verbergen', + showPage: 'Pagina tonen', + settingsCannotBeHidden: 'Instellingen kunnen niet worden verborgen', + noLinksConfigured: 'Geen externe links geconfigureerd', + deleteLink: 'Link verwijderen', + removeCustomIcon: 'Aangepast pictogram verwijderen', + openInNewTab: 'Openen in nieuw tabblad', + placeholders: { + linkName: 'Mijn link', + }, + }, + + // Keyboard Shortcuts Modal + keyboardShortcuts: { + title: 'Sneltoetsen', + navigation: 'Navigatie', + archivesSection: 'Archieven', + kProfilesSection: 'K-profielen', + generalSection: 'Algemeen', + shortcuts: { + goToPrinters: 'Ga naar Printers', + goToArchives: 'Ga naar Archieven', + goToQueue: 'Ga naar Wachtrij', + goToStats: 'Ga naar Statistieken', + goToProfiles: 'Ga naar Cloudprofielen', + goToSettings: 'Ga naar Instellingen', + focusSearch: 'Zoeken activeren', + openUploadModal: 'Uploadvenster openen', + clearSelection: 'Selectie wissen / invoerveld verlaten', + contextMenu: 'Contextmenu op kaarten', + refreshProfiles: 'Profielen vernieuwen', + newProfile: 'Nieuw profiel', + exitSelectionMode: 'Selectiemodus afsluiten', + showHelp: 'Deze hulp tonen', + }, + footer: 'Druk op Esc of klik buiten het venster om te sluiten', + }, + + // Notification Log + notificationLog: { + title: 'Meldingslogboek', + events: { + printStarted: 'Afdruk gestart', + printComplete: 'Afdruk voltooid', + printFailed: 'Afdruk mislukt', + printStopped: 'Afdruk gestopt', + progress: 'Voortgang', + printerOffline: 'Printer offline', + printerError: 'Printerfout', + lowFilament: 'Weinig filament', + maintenanceDue: 'Onderhoud nodig', + test: 'Testen', + }, + timeAgo: { + justNow: 'Zojuist', + minutesAgo: '{{minutes}}m geleden', + hoursAgo: '{{hours}}u geleden', + }, + }, + + // Restore/Backup Modal + restoreBackup: { + title: 'Back-up herstellen', + restoring: 'Herstellen...', + restoreComplete: 'Herstel voltooid', + restoreFailed: 'Herstel mislukt', + importSettings: 'Instellingen importeren uit een back-upbestand', + pleaseWait: 'Wacht terwijl je gegevens worden hersteld', + clickToSelect: 'Klik om een back-upbestand te selecteren (.json of .zip)', + howDuplicateHandling: 'Zo werkt afhandeling van duplicaten:', + categories: { + printers: 'Printers', + smartPlugs: 'Slimme stekkers', + notificationProviders: 'Meldingsproviders', + filaments: 'Filamenten', + archives: 'Archieven', + pendingUploads: 'Openstaande uploads', + settingsTemplates: 'Instellingen en sjablonen', + }, + matchingInfo: { + printers: 'gekoppeld op serienummer', + smartPlugs: 'gekoppeld op IP-adres', + notificationProviders: 'gekoppeld op naam', + filaments: 'gekoppeld op naam + type + merk', + archives: 'overeenkomst op inhoudshash', + pendingUploads: 'gekoppeld op bestandsnaam', + settingsTemplates: 'altijd overschreven', + }, + replaceExisting: 'Bestaande gegevens vervangen', + keepExisting: 'Bestaande gegevens behouden', + replaceDescription: 'Items die al bestaan overschrijven met gegevens uit de back-up', + keepDescription: 'Alleen items herstellen die nog niet bestaan', + caution: 'Let op:', + cautionText: 'Overschrijven vervangt je huidige configuraties door de back-upgegevens. Toegangscodes van printers worden om veiligheidsredenen nooit overschreven.', + itemsRestored: 'Items hersteld', + itemsSkipped: 'Items overgeslagen', + restored: 'Hersteld', + skipped: 'Overgeslagen (bestaan al)', + filesLabel: 'Bestanden (3MF, miniaturen, enz.)', + newApiKeysGenerated: 'Nieuwe API-sleutels gegenereerd', + newApiKeysWarning: 'Deze sleutels worden maar één keer getoond. Kopieer ze nu!', + processingBackup: 'Back-upbestand verwerken...', + noDataFound: 'Er zijn geen gegevens gevonden om uit het back-upbestand te herstellen.', + failedToRestore: 'Back-up herstellen mislukt. Controleer het bestandsformaat.', + }, + + // Backup Export Modal + backupExport: { + title: 'Back-up exporteren', + selectData: 'Selecteer gegevens om op te nemen', + selectAll: 'Alles selecteren', + selectNone: 'Niets selecteren', + categoryDescriptions: { + settings: 'Taal, thema, updatevoorkeuren', + notifications: 'ntfy, Pushover, Discord, enz.', + templates: 'Aangepaste berichtsjablonen', + smartPlugs: 'Tasmota-stekkerconfiguraties', + externalLinks: 'Zijbalklinks naar externe services', + printers: 'Printerinformatie (toegangscodes uitgesloten)', + plateDetection: 'Referentieafbeeldingen van lege plaat', + filaments: 'Filamenttypen en kosten', + maintenance: 'Aangepaste onderhoudsschema\'s', + archives: 'Alle afdrukgegevens + bestanden (3MF, miniaturen, foto\'s)', + projects: 'Projecten, BOM-items en bijlagen', + pendingUploads: 'Uploads van virtuele printer die op beoordeling wachten', + apiKeys: 'Webhook-API-sleutels (nieuwe sleutels worden gegenereerd bij import)', + }, + requiresPrinters: 'Vereist dat Printers is geselecteerd', + zipFileWarning: 'Er wordt een ZIP-bestand aangemaakt.', + zipFileDescription: 'Bevat alle 3MF-bestanden, miniaturen, timelapses en foto\'s. Dit kan enige tijd duren en een groot bestand opleveren.', + includeAccessCodes: 'Toegangscodes opnemen', + includeAccessCodesDescription: 'Voor overdracht naar een andere machine', + includeAccessCodesWarning: 'Toegangscodes worden als platte tekst opgenomen. Bewaar dit back-upbestand veilig!', + categoriesSelected: '{{selectedCount}} categorieën geselecteerd', + }, + + // Pending Uploads Panel + pendingUploads: { + placeholders: { + notes: 'Voeg notities over deze afdruk toe...', + }, + discardUpload: 'Upload verwijderen', + archiveAllUploads: 'Alle uploads archiveren', + discardAllUploads: 'Alle uploads verwijderen', + archive: 'Archief', + timeAgo: { + justNow: 'Zojuist', + minutesAgo: '{{minutes}}m geleden', + hoursAgo: '{{hours}}u geleden', + daysAgo: '{{days}}d geleden', + }, + }, + + // API Browser + apiBrowser: { + placeholders: { + requestBody: 'JSON-requestbody...', + searchEndpoints: 'Endpoints zoeken...', + }, + }, + + // Configure AMS Slot Modal + configureAmsSlot: { + title: 'AMS-slot configureren', + slotConfigured: 'Slot geconfigureerd!', + configuringSlot: 'Slot configureren:', + slotLabel: '{{ams}} Slot {{slot}}', + searchPresets: 'Presets zoeken...', + colorPlaceholder: 'Kleurnaam of hex (bijv. brown, FF8800)', + clearCustomColor: 'Aangepaste kleur wissen', + noCloudPresets: 'Geen cloudpresets. Meld je aan bij Bambu Cloud om te synchroniseren.', + noPresetsAvailable: 'Geen presets beschikbaar. Meld je aan bij Bambu Cloud of importeer lokale profielen.', + noMatchingPresets: 'Geen overeenkomende presets gevonden.', + custom: 'Aangepast', + builtin: 'Ingebouwd', + orcaCloud: 'Orca Cloud', + bambuCloud: 'Bambu Cloud', + settingsSentToPrinter: 'Instellingen naar printer verzonden', + filamentProfile: 'Filamentprofiel', + kProfileLabel: 'K-profiel (Pressure Advance)', + filteringFor: 'Filteren op: {{material}}', + noKProfile: 'Geen K-profiel (gebruik standaard 0.020)', + noMatchingKProfiles: 'Geen overeenkomende K-profielen gevonden. Standaard K=0.020 wordt gebruikt.', + otherKProfiles: 'Andere K-profielen op deze printer', + selectFilamentFirst: 'Selecteer eerst een filamentprofiel', + kFromCalibration: 'K={{value}} uit printerkalibratie', + customColorLabel: 'Aangepaste kleur (optioneel)', + presetColors: '{{name}} kleuren:', + showLessColors: 'Minder kleuren tonen', + showMoreColors: 'Meer kleuren tonen', + clear: 'Wissen', + hexLabel: 'Hex: #{{hex}}', + resetting: 'Resetten...', + resetSlot: 'Slot resetten', + cancel: 'Annuleren', + configuring: 'Configureren...', + configureSlot: 'Sleuf configureren', + }, + + // Git Backup Settings + githubBackup: { + title: 'Git-back-up', + history: 'Geschiedenis', + downloadBackup: 'Back-up downloaden', + restoreBackup: 'Back-up herstellen', + noBackupsYet: 'Nog geen back-ups', + }, + + // Email Settings + emailSettings: { + placeholders: { + fromName: 'BamBuddy', + }, + }, + + // Tag Management Modal + tagManagement: { + searchTags: 'Tags zoeken...', + renameTag: 'Tag hernoemen', + deleteTag: 'Tag verwijderen', + }, + + // Notification Template Editor + notificationTemplates: { + placeholders: { + title: 'Meldingstitel...', + body: 'Meldingsinhoud...', + }, + }, + + // Batch Tag Modal + batchTag: { + placeholders: { + newTag: 'Nieuwe tag invoeren...', + }, + }, + + // Photo Gallery Modal + photoGallery: { + deletePhoto: 'Foto verwijderen', + }, + + // Filament Hover Card + filamentHoverCard: { + copySpoolUuid: 'Spoel-UUID kopiëren', + }, + + // K Profiles View + kProfilesView: { + hasNote: 'Heeft notitie', + copyProfile: 'Profiel kopiëren', + }, + + // Layout/Navigation + layout: { + openMenu: 'Menu openen', + noPermissionSystemInfo: 'Je hebt geen machtiging om systeeminformatie te bekijken', + }, + + // Dashboard + dashboard: { + dragToReorder: 'Sleep om te herschikken', + hideWidget: 'Widget verbergen', + }, + + // Notification Provider Card + notificationProviderCard: { + deleteNotificationProvider: 'Meldingsprovider verwijderen', + }, + + // File Manager Modal + fileManagerModal: { + closeFileManager: 'Bestandsbeheer sluiten', + sortFiles: 'Bestanden sorteren', + goToParentFolder: 'Ga naar bovenliggende map', + threeView: '3D-weergave', + }, + + // Embedded Camera Viewer + embeddedCameraViewer: { + refreshStream: 'Stream vernieuwen', + close: 'Sluiten', + zoomOut: 'Uitzoomen', + resetZoom: 'Zoom resetten', + zoomIn: 'Inzoomen', + dragToResize: 'Sleep om formaat te wijzigen', + }, + + // Timelapse Viewer + timelapseViewer: { + skipBack5s: '5 sec terug', + skipForward5s: '5 sec vooruit', + }, + + // Notification Providers + notificationProviders: { + descriptions: { + email: 'SMTP-e-mailmeldingen', + telegram: 'Meldingen via Telegram-bot', + discord: 'Versturen naar Discord-kanaal via webhook', + ntfy: 'Gratis, zelf te hosten pushmeldingen', + pushover: 'Eenvoudige, betrouwbare pushmeldingen', + callmebot: 'Gratis WhatsApp-meldingen via CallMeBot', + webhook: 'Algemene HTTP POST naar elke URL', + }, + }, + + // Log Viewer + logViewer: { + searchPlaceholder: 'Zoek bericht of loggernaam...', + noLogEntries: 'Geen logboekitems gevonden', + }, + + // Switchbar Popover + switchbarPopover: { + noSwitchesInSwitchbar: 'Geen schakelaars in de schakelbalk', + }, + + // Project Page Modal + projectPageModal: { + placeholders: { + title: 'Titel', + designer: 'Ontwerper', + license: 'Licentie', + description: 'Voer beschrijving in...', + profileTitle: 'Profieltitel', + profileDescription: 'Profielbeschrijving...', + }, + }, + + // Spoolman Settings + spoolmanSettings: {}, + + // Time + time: { + unknown: '-', + waiting: 'Wachten', + justNow: 'Zojuist', + now: 'Nu', + minsAgo: '{{count}}m geleden', + inMins: 'over {{count}}m', + hoursAgo: '{{count}}u geleden', + inHours: 'over {{count}}u', + daysAgo: '{{count}}d geleden', + inDays: 'over {{count}}d', + }, + + // SpoolBuddy Kiosk + spoolbuddy: { + nav: { + dashboard: 'Dashboard', + ams: 'AMS', + inventory: 'Voorraad', + writeTag: 'Schrijven', + settings: 'Instellingen', + }, + status: { + nfcReady: 'NFC gereed', + nfcOff: 'NFC uit', + offline: 'Offline', + online: 'Online', + noPrinters: 'Geen printers', + deviceOffline: 'Apparaat offline', + waitingConnection: 'Wachten op apparaatverbinding...', + systemReady: 'Systeem gereed', + status: 'Status', + }, + dashboard: { + readyToScan: 'Gereed om te scannen', + idleMessage: 'Plaats een spoel op de weegschaal om deze te identificeren', + nfcHint: 'NFC-tag wordt automatisch gelezen', + device: 'Apparaat', + syncWeight: 'Gewicht synchroniseren', + weightSynced: 'Gesynchroniseerd!', + unknownTag: 'Onbekende tag', + newTag: 'Nieuwe tag gedetecteerd', + onScale: 'op weegschaal', + linkSpool: 'Koppelen aan spoel', + linkTagTitle: 'Tag aan spoel koppelen', + linkTag: 'Tag koppelen', + selectSpool: 'Selecteer een spoel om deze tag aan te koppelen:', + noUntagged: 'Geen spoelen zonder tags gevonden', + tagDetected: 'Tag gedetecteerd', + noTag: 'Geen tag', + tagId: 'Tag', + grossWeight: 'Brutogewicht', + spoolSize: 'Spoelgrootte', + close: 'Sluiten', + currentSpool: 'Huidige spoel', + plateReady: 'Plaat gereed: {{name}}', + plateReadyLabel: 'Platen gereed om vrij te geven', + plateClearAction: 'Wissen', + plateClearedToast: 'Plaat gemarkeerd als vrij', + plateClearFailed: 'Plaat kon niet als vrij worden gemarkeerd', + }, + modal: { + spoolDetected: 'Spoel gedetecteerd', + assignToAms: 'Aan AMS toewijzen', + syncWeight: 'Gewicht synchroniseren', + weightSynced: 'Gesynchroniseerd!', + syncing: 'Synchroniseren...', + newTagDetected: 'Nieuwe tag gedetecteerd', + addToInventory: 'Aan voorraad toevoegen', + assignToAmsTitle: 'Aan AMS toewijzen', + selectSlot: 'Selecteer een slot', + assign: 'Toewijzen', + assigning: 'Toewijzen...', + assignSuccess: 'Toegewezen!', + assignPendingInsert: 'Toegewezen. Sleuf wordt geconfigureerd zodra je de spoel plaatst.', + assignError: 'Spoel toewijzen mislukt. Probeer het opnieuw.', + noPrinterSelected: 'Selecteer een printer...', + noAmsDetected: 'Geen AMS gedetecteerd op deze printer', + slot: 'Sleuf', + }, + weight: { + noReading: 'Geen meting', + stable: 'Stabiel', + measuring: 'Meten...', + tare: 'Tarreren', + calibrate: 'Kalibreren', + }, + spool: { + remaining: 'Resterend', + material: 'Materiaal', + brand: 'Merk', + color: 'Kleur', + coreWeight: 'Kern', + labelWeight: 'Label', + scaleWeight: 'Weegschaal', + netWeight: 'Netto', + lastUsed: 'Laatst gebruikt', + }, + ams: { + noData: 'Geen AMS gedetecteerd', + connectAms: 'Sluit een AMS aan om filamentslots te zien', + noPrinter: 'Geen printer geselecteerd', + selectPrinter: 'Selecteer een printer in de bovenste balk', + printerDisconnected: 'Printer niet verbonden', + humidity: 'Luchtvochtigheid', + level: 'Niveau', + active: 'Actief', + slot: 'Sleuf', + empty: 'Leeg', + }, + inventory: { + search: 'Spoelen zoeken...', + empty: 'Geen spoelen in voorraad', + noResults: 'Geen overeenkomende spoelen', + spools: 'spoelen', + addSpool: 'Spoel toevoegen', + }, + settings: { + // Tabs + tabDevice: 'Apparaat', + tabDisplay: 'Weergave', + tabScale: 'Weegschaal', + tabUpdates: 'Updates', + // Device tab + nfcReader: 'NFC-lezer', + type: 'Type', + connection: 'Verbinding', + notConnected: 'N.v.t.', + deviceInfo: 'Apparaatinformatie', + hostname: 'Host', + uptime: 'Uptime', + systemConfig: 'Backend & authenticatie', + backendUrl: 'Bambuddy-backend-URL', + apiToken: 'API-token', + apiTokenPlaceholder: 'Voer API-token in', + saveConfig: 'Configuratie opslaan', + systemQueued: 'Configuratie in wachtrij geplaatst.', + nfcDiagnostic: 'NFC-diagnose', + scaleDiagnostic: 'Weegschaaldiagnose', + readTagDiagnostic: 'Tagleesdiagnose', + testNfc: 'Lezer testen', + testScale: 'Nauwkeurigheid testen', + testReadTag: 'Tag lezen', + systemFieldsRequired: 'Backend-URL is verplicht.', + // Display tab + brightness: 'Helderheid', + saved: 'Opgeslagen', + noBacklight: 'Geen DSI-achtergrondverlichting gedetecteerd. Helderheidsregeling vereist een DSI-display.', + screenBlank: 'Time-out schermuitschakeling', + screenBlankDesc: 'Scherm schakelt uit na inactiviteit. Raak aan om te activeren.', + displayNote: 'Helderheid wordt toegepast als softwarefilter.', + // Scale tab + scaleCalibration: 'Weegschaalkalibratie', + currentWeight: 'Huidig gewicht', + tareOffset: 'Tarreren', + calFactor: 'Factor', + knownWeight: 'Bekend gewicht', + calStep1: 'Verwijder alle items van de weegschaal en druk op Nulpunt instellen.', + calStep2: 'Plaats een bekend gewicht op de weegschaal.', + setZero: 'Nulpunt instellen', + calibrateNow: 'Kalibreren', + calibrated: 'Gekalibreerd', + tareSet: 'Tareeropdracht verzonden. Wachten op apparaat...', + tareComplete: 'Tarreren voltooid!', + tareTimedOut: 'Time-out bij tarreren — draait de SpoolBuddy-daemon?', + tareFailed: 'Tareeropdracht verzenden mislukt', + zeroSet: 'Nulpunt ingesteld. Plaats een bekend gewicht op de weegschaal.', + calibrationDone: 'Kalibratie voltooid!', + calibrationFailed: 'Kalibratie mislukt', + lastCalibrated: 'Laatst gekalibreerd', + stable: 'Stabiel', + settling: 'Stabiliseren...', + firmware: 'Firmware', + scale: 'Weegschaal', + noDevice: 'Geen SpoolBuddy-apparaat gevonden', + // Updates tab + daemonVersion: 'Daemonversie', + currentVersion: 'Huidig', + versionPending: 'Wachten op daemon...', + checking: 'Controleren...', + checkUpdates: 'Controleren op updates', + updateAvailable: 'Update beschikbaar', + updateInstructions: 'Bijwerken via SSH: voer het SpoolBuddy-installatiescript uit om te upgraden.', + upToDate: 'Up-to-date', + includeBeta: 'Bètaversies opnemen', + }, + writeTag: { + tabExisting: 'Bestaande spoel', + tabNew: 'Nieuwe spoel', + tabReplace: 'Tag vervangen', + searchPlaceholder: 'Zoeken op materiaal, kleur, merk...', + noUntaggedSpools: 'Geen spoelen zonder tags', + noTaggedSpools: 'Geen spoelen met tags', + selectSpool: 'Selecteer een spoel en plaats daarna een lege NTAG op de lezer', + placeTag: 'Plaats een NTAG op de lezer', + tagReady: 'Tag gedetecteerd — gereed om te schrijven', + writeTag: 'Tag schrijven', + replaceTag: 'Tag vervangen', + writing: 'Tag schrijven...', + waiting: 'Wachten op SpoolBuddy...', + writeSuccess: 'Tag succesvol geschreven!', + writeFailed: 'Schrijven mislukt', + queueFailed: 'Schrijfopdracht in wachtrij plaatsen mislukt', + tryAgain: 'Opnieuw proberen', + cancel: 'Annuleren', + replaceWarning: 'Oude tag wordt ontkoppeld. Nieuwe tag vervangt deze.', + deviceOffline: 'SpoolBuddy is offline', + material: 'Materiaal', + colorName: 'Kleurnaam', + color: 'Kleur', + brand: 'Merk', + weight: 'Gewicht (g)', + createSpool: 'Spoel aanmaken', + creating: 'Maken...', + spoolCreated: 'Spoel aangemaakt! Gereed om te schrijven.', + createFailed: 'Spoel aanmaken mislukt', + incompleteDataWarning: 'Tag geschreven met onvolledige Spoolman-gegevens', + }, + quickMenu: { + printerPower: 'Printervoeding', + systemControls: 'Systeem', + restartDaemon: 'Daemon herstarten', + restartBrowser: 'Browser herstarten', + reboot: 'Opnieuw opstarten', + shutdown: 'Afsluiten', + swipeToClose: 'Veeg omlaag om te sluiten', + confirmTitle: 'Bevestigen', + confirmShutdown: 'Weet je zeker dat je SpoolBuddy wilt uitschakelen? Je hebt fysieke toegang nodig om hem weer in te schakelen.', + confirmReboot: 'Weet je zeker dat je SpoolBuddy opnieuw wilt opstarten?', + confirmRestartDaemon: 'SpoolBuddy-daemon opnieuw starten? NFC en de weegschaal zijn tijdelijk niet beschikbaar.', + confirmRestartBrowser: 'Kioskbrowser opnieuw starten? Het scherm wordt kort zwart.', + confirm: 'Bevestigen', + confirmPlugOn: '{{name}} inschakelen?', + confirmPlugOff: '{{name}} uitschakelen?', + turnOn: 'Inschakelen', + turnOff: 'Uitschakelen', + }, + }, + + diagnostic: { + modalTitle: 'Verbindingsdiagnose — {{name}}', + running: 'Diagnose uitvoeren...', + runningElapsed: 'Diagnose uitvoeren... ({{elapsed}}s)', + waitingForReportHint: 'Wachten totdat de printer een statusrapport publiceert — dit kan maximaal {{max}} seconden duren.', + runFailed: 'Diagnose kon niet worden uitgevoerd: {{error}}', + retry: 'Opnieuw uitvoeren', + runButton: 'Diagnose uitvoeren', + sectionTitle: 'Verbindingsdiagnose', + sectionDescription: 'Controleer waarom een printer geen verbinding maakt of niet afdrukt — bereikbaarheid van poorten, LAN Developer Mode, Docker-netwerkmodus en inloggegevens.', + noPrinters: 'Geen printers geconfigureerd.', + overall: { + ok: 'Geen problemen gevonden — de printerverbinding ziet er gezond uit.', + warnings: 'De printer zou moeten werken, maar sommige punten vereisen aandacht.', + problems: 'Problemen gevonden die verklaren waarom de printer geen verbinding maakt of niet afdrukt.', + }, + check: { + port_mqtt: { + title: 'Besturingspoort (MQTT 8883)', + pass: 'Bereikbaar — de printer accepteert besturingsverbindingen.', + fail: 'Poort 8883 is niet bereikbaar. De printer is uitgeschakeld, heeft een ander IP-adres of een firewall blokkeert de poort. Controleer het IP-adres van de printer en of niets poort 8883 blokkeert.', + }, + port_ftps: { + title: 'Bestandsoverdrachtpoort (FTPS 990)', + pass: 'Bereikbaar — het verzenden van afdrukbestanden werkt.', + warn: 'Poort 990 is niet bereikbaar. Monitoring kan nog werken, maar het verzenden van afdrukken naar de printer mislukt. Zorg dat poort 990 niet wordt geblokkeerd.', + warn_no_tls: 'Poort 990 is open, maar de bestandsservice van de printer voltooit geen TLS-handshake. Afdrukbestanden, covers en timelapses kunnen niet worden opgehaald, waardoor archieven leeg blijven. Start de printer opnieuw — alleen de poort vrijgeven helpt niet.', + }, + external_storage: { + title: 'Verzonden bestanden op externe opslag bewaren (installatiestap 4)', + pass: 'De printer meldt dat deze optie aanstaat — verzonden bestanden worden op de SD-kaart opgeslagen en archieven bevatten miniaturen en slicermetadata.', + fail: 'De printer meldt dat deze optie uitstaat. Schakel "Verzonden bestanden op externe opslag bewaren" in — op nieuwere firmware (P2S 01.02 / Bambu Studio 2.6+) staat de schakelaar in de Afdrukinstellingen van de printer; op oudere versies in het tabblad Apparaat van Bambu Studio / OrcaSlicer. Zonder deze optie mist elke gearchiveerde afdruk zijn miniatuur en slicermetadata.', + skip: 'Niet gecontroleerd — hiervoor is een actieve MQTT-verbinding nodig. Bij oudere slicers, waar deze instelling alleen in de slicer staat, rapporteert de printer hem nooit. Daardoor kan deze controle slagen terwijl de optie uitstaat — controleer installatiestap 4 handmatig.', + skip_unsupported_model: 'Dit model heeft een SD-slot maar geen manier om de optie in te schakelen — de huidige P1-seriefirmware toont de schakelaar niet in Bambu Studio en de printer heeft geen scherm. Hier is niets te herstellen; gearchiveerde afdrukken kunnen miniaturen en slicermetadata missen totdat Bambu Lab firmwareondersteuning toevoegt.', + fail_no_media: 'De optie staat aan, maar de printer meldt dat er geen kaart of stick in het slot zit, waardoor verzonden bestanden nergens kunnen worden opgeslagen. Plaats er een en druk opnieuw af — tot die tijd mist elke gearchiveerde afdruk zijn miniatuur en slicermetadata.', + warn_internal_storage: 'De optie staat aan en opslag is aanwezig, maar de laatste afdruk ging toch naar de interne opslag van de printer, die Bambuddy niet kan lezen. Bij H2-serie en P2S stuurt de knop Afdrukken van Bambu Studio altijd daarheen, ongeacht deze instelling. Afdrukken worden gearchiveerd met naam en timing, maar zonder miniatuur of slicermetadata. Voor volledige archieven start je afdrukken vanuit Bambuddy of slice je in OrcaSlicer — of gebruik in Bambu Studio Verzenden met Extern geselecteerd en start daarna de afdruk.', + warn_internal_history: 'De optie staat aan en er is opslag aanwezig, maar de laatste print liep vanaf een bestand dat al op de printer stond — opnieuw afdrukken via het scherm, starten vanuit Handy, of een eerder verstuurd bestand. Die bibliotheek staat op interne opslag die Bambuddy niet kan lezen, en geen enkele instelling verandert dat, omdat er voor die print niets is verstuurd. Hij wordt nog steeds gearchiveerd met naam en tijden, maar zonder thumbnail of slicer-metadata. Start prints vanuit Bambuddy of verstuur ze vanuit de slicer voor volledige archieven.', + }, + port_rtsps: { + title: 'Camerapoort ({{protocol}} {{port}})', + pass: 'Bereikbaar — de camerastream werkt.', + warn: 'Poort {{port}} is niet bereikbaar. De livecamera werkt niet. Dit heeft geen invloed op afdrukken.', + }, + network_mode: { + title: 'Docker-netwerkmodus', + pass: 'Draait in host-netwerkmodus.', + warn: 'Bambuddy draait met Docker bridge-netwerken. Printerdetectie en de Virtuele printer vereisen host-netwerkmodus — maak de container opnieuw aan met "network_mode: host".', + skip: 'Niet actief in Docker — niet van toepassing.', + }, + subnet: { + title: 'Netwerksubnet', + pass: 'De printer en Bambuddy bevinden zich op hetzelfde subnet.', + warn: 'De printer ({{printer_ip}}) en Bambuddy ({{host_ip}}) bevinden zich op verschillende subnetten. Ze kunnen elkaar mogelijk niet bereiken tenzij routing tussen de subnetten is geconfigureerd.', + skip: 'Subnet kon niet worden bepaald — overgeslagen.', + }, + mqtt_auth: { + title: 'Printerinloggegevens', + pass: 'De printer heeft de verbinding geaccepteerd.', + fail: 'De printer is bereikbaar, maar Bambuddy is er niet mee verbonden. De toegangscode of het serienummer is waarschijnlijk onjuist — de toegangscode verandert telkens wanneer LAN Only of Developer Mode wordt omgeschakeld, dus kopieer hem opnieuw vanaf het printerscherm. Een printer die opnieuw opstart of het maximumaantal gelijktijdige verbindingen heeft bereikt, kan hetzelfde gedrag vertonen.', + fail_auth_rejected: 'De printer heeft de inloggegevens van Bambuddy geweigerd. De toegangscode of het serienummer is onjuist — de toegangscode verandert telkens wanneer LAN Only of Developer Mode wordt omgeschakeld, dus kopieer hem opnieuw vanaf het printerscherm en sla hem op in de printerinstellingen.', + skip: 'Niet gecontroleerd — de printer kon niet worden bereikt.', + }, + developer_mode: { + title: 'LAN Developer Mode', + pass: 'Developer Mode is ingeschakeld.', + fail: 'Developer Mode staat UIT op de printer. Schakel deze in bij de LAN-instellingen van de printer — en bevestig met OK. Zonder deze modus starten afdrukken niet.', + skip: 'Kon niet worden gecontroleerd — vereist een actieve verbinding met de printer.', + }, + printer_publishing: { + title: 'Printer publiceert status', + pass: 'De printer publiceert statusupdates — AMS, filamenten en K-profielen worden correct naar de slicer gespiegeld.', + fail: 'De MQTT-broker heeft de verbinding geaccepteerd, maar de printer heeft geen statusrapporten gepubliceerd. Dit wordt bijna altijd veroorzaakt door een verkeerd of anders geschreven serienummer — het topic device//report is hoofdlettergevoelig. Controleer het serienummer in de printerinstellingen opnieuw aan de hand van het printerscherm.', + skip: 'Kon niet worden gecontroleerd — vereist een actieve verbinding met de printer.', + }, + }, + }, + + systemHealth: { + sectionTitle: 'Systeemgezondheid', + sectionDescription: 'Scant recente logs op bekende problemen die je meestal zelf kunt oplossen voordat ze een supportticket worden.', + rescan: 'Opnieuw scannen', + clean: 'Geen bekende problemen gevonden in de laatste {{times}} logboekitems.', + logUnavailable: 'Bestandslogging is uitgeschakeld, waardoor logs niet kunnen worden gescand. Schakel bestandslogging in om deze controle te gebruiken.', + learnMore: 'Hoe op te lossen', + fixLabel: 'Oplossing:', + occurrences: '{{times}}× gezien — laatst om {{lastSeen}}', + category: { + layer8: 'Dit kun je zelf oplossen', + environment: 'Omgeving', + bug: 'Meld dit probleem', + }, + signature: { + 'ftp-auth-rejected': { + name: 'Printer heeft toegangscode geweigerd', + cause: 'De printer heeft de login voor bestandsoverdracht geweigerd. De toegangscode is onjuist of gewijzigd nadat Developer Mode werd omgeschakeld.', + fix: 'Kopieer de toegangscode opnieuw vanaf het printerscherm (LAN-instellingen) en werk deze bij in de printerinstellingen van Bambuddy.', + }, + 'ftp-connection-timeout': { + name: 'Time-out bij bestandsoverdrachtverbinding', + cause: 'Bambuddy kon de bestandsoverdrachtpoort van de printer (FTPS 990) niet bereiken. De poort is geblokkeerd, de printer staat uit of bevindt zich op een ander subnet.', + fix: 'Zorg dat niets poort 990 tussen Bambuddy en de printer blokkeert en dat beide zich op hetzelfde netwerk bevinden.', + }, + 'ftp-ssl-error': { + name: 'Beveiligde bestandsoverdracht-handshake mislukt', + cause: 'De bestandsservice van de printer reageerde op poort 990 zonder TLS. De bestandsserver is vastgelopen — een printerprobleem, geen firewall- of firmwareprobleem.', + fix: 'Start de printer opnieuw. Tot die tijd kunnen afdrukbestanden, covers en timelapses niet worden opgehaald; afdrukken zelf wordt niet beïnvloed.', + }, + 'bambu-cloud-captcha': { + name: 'Bambu Cloud vraagt om een CAPTCHA', + cause: 'De anti-misbruiklaag van Bambu geeft dit netwerk een challenge, waardoor aanmelden bij Bambu Cloud niet kan worden voltooid. Dit is gekoppeld aan het openbare IP-adres, niet aan je account of deze installatie.', + fix: 'Wacht — dit verdwijnt normaal binnen enkele uren en herhaald aanmelden verlengt het probleem. Om ondertussen verbinding te maken kun je aanmelden met een toegangstoken uit een browsersessie.', + }, + 'mqtt-connection-flapping': { + name: 'Printerverbinding blijft wegvallen', + cause: 'De besturingsverbinding (MQTT 8883) verbreekt en herstelt herhaaldelijk — meestal door een zwakke netwerkverbinding of een gedeeltelijk geblokkeerde poort.', + fix: 'Controleer het wifi-signaal bij de printer, gebruik bij voorkeur een bekabelde verbinding en zorg dat poort 8883 betrouwbaar bereikbaar is.', + }, + 'camera-connection-refused': { + name: 'Camerastream niet bereikbaar', + cause: 'De livecamera kon niet worden bereikt op RTSPS-poort 322. De poort is geblokkeerd of de camera/LAN-liveweergave staat uit op de printer.', + fix: 'Schakel de camera en LAN-liveweergave op de printer in en zorg dat poort 322 niet wordt geblokkeerd. Dit heeft geen invloed op afdrukken.', + }, + 'database-locked': { + name: 'Database-schrijfconflict', + cause: 'De SQLite-database krijgt onder belasting fouten met "database is locked" — dit komt vaak voor wanneer meerdere printers tegelijk worden gebruikt.', + fix: 'Schakel Bambuddy over naar een externe PostgreSQL-database. Zie de PostgreSQL-handleiding in de documentatie.', + }, + }, + }, + + vpDiagnostic: { + title: 'Installatiecontrole — {{name}}', + runButton: 'Installatiecontrole uitvoeren', + running: 'Installatiecontrole uitvoeren...', + runFailed: 'Installatiecontrole kon niet worden uitgevoerd: {{error}}', + retry: 'Opnieuw uitvoeren', + overall: { + ok: 'Alle controles geslaagd — deze virtuele printer is correct ingesteld.', + warnings: 'De virtuele printer zou moeten werken, maar sommige punten vereisen aandacht.', + problems: 'Problemen gevonden die verklaren waarom de slicer deze virtuele printer niet kan zien of gebruiken.', + }, + check: { + enabled: { + title: 'Virtuele printer ingeschakeld', + fail: 'Deze virtuele printer is uitgeschakeld. Zet hem aan om hem detecteerbaar te maken.', + }, + running: { + title: 'Services actief', + fail: 'De virtuele printer is ingeschakeld, maar de services draaien niet. Controleer het Bambuddy-logboek — een bind-IP-conflict of machtigingsfout voorkomt meestal dat ze starten.', + }, + bind_interface: { + title: 'Netwerkinterface koppelen', + fail: 'De bind-interface is niet ingesteld of bestaat niet meer op deze host. Kies een huidige interface in de keuzelijst Bind-interface.', + }, + access_code: { + title: 'Toegangscode ingesteld', + fail: 'Er is geen toegangscode ingesteld. De slicer moet dezelfde toegangscode van 8 tekens krijgen die je hier instelt.', + }, + target_printer: { + title: 'Doelprinter', + fail: 'Er is geen doelprinter geselecteerd. Proxymodus heeft een echte printer nodig om naar door te sturen.', + warn: 'De doelprinter is momenteel offline — proxyverkeer wordt hervat zodra hij opnieuw verbinding maakt.', + }, + port_ftps: { + title: 'Bestandsuploadservice (poort {{port}})', + fail: 'Niets luistert op poort {{port}} van het bind-IP, waardoor de slicer geen bestanden kan uploaden. Een poortconflict op deze interface is de gebruikelijke oorzaak.', + }, + port_mqtt: { + title: 'Besturingsservice (poort {{port}})', + fail: 'Niets luistert op poort {{port}} van het bind-IP, waardoor de slicer geen verbinding kan maken of status kan tonen.', + }, + port_bind: { + title: 'Detectieservice (poort {{port}})', + fail: 'Niets luistert op poort {{port}} van het bind-IP, waardoor de detectiehandshake van de slicer mislukt.', + }, + privileged_ports: { + title: 'Binden aan bevoorrechte poort', + fail: 'Poort {{port}} is lager dan 1024 en deze service mag deze niet binden — daarom luistert hierboven niets. Voeg AmbientCapabilities=CAP_NET_BIND_SERVICE toe aan /etc/systemd/system/bambuddy.service en herstart, of voer "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))" uit. Voeg bij Docker cap_add: [NET_BIND_SERVICE] toe.', + }, + certificate: { + title: 'TLS-certificaat', + pass: 'Certificaat gereed. Zorg dat het Bambuddy-CA-certificaat (hierboven) is geïmporteerd in de trust store van je slicer.', + fail: 'Het TLS-certificaat voor deze virtuele printer ontbreekt. Controleer of de Bambuddy-datamap beschrijfbaar is.', + }, + }, + }, + + bugReport: { + title: 'Bug melden', + description: 'Beschrijving', + descriptionPlaceholder: 'Wat ging er mis? Beschrijf het probleem...', + email: 'E-mail (optioneel)', + emailPlaceholder: 'your@email.com', + emailPrivacy: 'Als je dit invult, wordt je e-mailadres opgenomen in een ingeklapte sectie van het GitHub-issue zodat de beheerder contact kan opnemen.', + screenshot: 'Schermafbeelding', + uploadOrPaste: 'Upload, plak of sleep een afbeelding', + dataCollectedSummary: 'Welke gegevens worden in het rapport opgenomen?', + dataIncluded: 'Opgenomen:', + dataIncludedList: 'Appversie, besturingssysteem, architectuur, Python-versie, databasestatistieken (alleen aantallen), printermodellen, aantallen nozzles, firmwareversies, verbindingsstatus, integratiestatus (Spoolman, MQTT, HA), niet-gevoelige instellingen, aantal netwerkinterfaces, Docker-details, dependencyversies.', + dataNeverIncluded: 'Nooit opgenomen:', + dataNeverIncludedList: 'Printernamen, serienummers, toegangscodes, wachtwoorden, IP-adressen, e-mailadressen, API-sleutels, tokens, webhook-URL\'s, hostnamen of gebruikersnamen.', + submit: 'Verzenden', + startLogging: 'Debuglogging starten', + stepEnableLogging: 'Debuglogging ingeschakeld', + stepReproduce: 'Reproduceer het probleem nu', + stepStopLogging: 'Stoppen en rapport verzenden', + stopAndSubmit: 'Stoppen en verzenden', + maxDuration: 'Stopt automatisch na {{minutes}} min', + stoppingLogs: 'Logs verzamelen en verzenden...', + submitting: 'Bugrapport verzenden...', + submittingStepConnection: 'Printerverbindingscontroles uitvoeren', + submittingStepVirtualPrinters: 'Installatiecontroles virtuele printer uitvoeren', + submittingStepLogScan: 'Recente logboeken scannen op bekende problemen', + submittingStepSubmit: 'Rapport naar GitHub verzenden', + submitSuccess: 'Bugrapport succesvol verzonden!', + submitFailed: 'Bugrapport verzenden mislukt', + diagnosticChecking: 'Printerverbindingen controleren...', + diagnosticHealthy: 'Verbindingscontrole geslaagd — geen problemen gevonden met je printers.', + diagnosticSummary: '{{problems}} van {{total}} printers hebben verbindingsproblemen', + diagnosticIntro: 'Een of meer printers hebben een verbindingsprobleem dat je probleem kan veroorzaken. Klap hieronder een printer open om de oplossing te zien — dit oplossen kan het probleem verhelpen zonder bugrapport. Je kunt hieronder nog steeds een rapport verzenden.', + logHealthSummary: 'Bekende problemen gevonden in je logs', + logHealthIntro: 'Recente logs komen overeen met bekende problemen. Bekijk de oplossingen hieronder — dit oplossen kan het probleem verhelpen zonder bugrapport. Je kunt hieronder nog steeds een rapport verzenden.', + thankYou: 'Bedankt!', + submitted: 'Je bugrapport is verzonden.', + viewIssue: 'Issue bekijken', + closeKeepsRecording: 'Je kunt dit paneel sluiten terwijl je het probleem reproduceert — de opname blijft actief en bij opnieuw openen kom je hier terug.', + resumeRecording: 'Bugrapportopname — {{elapsed}}. Klik om af te ronden.', + resumeReport: 'Rapport hervatten', + unexpectedError: 'Er is een onverwachte fout opgetreden', + }, + failureDetection: { + title: 'AI-foutdetectie', + description: 'Bewaak afdrukken met een zelf-gehoste Obico ML API en voer automatisch acties uit bij gedetecteerde fouten.', + mlUrl: 'Obico ML API-URL', + mlUrlHint: 'Basis-URL van je zelf-gehoste Obico ml_api-container (bijv. http://192.168.1.10:3333).', + mlToken: 'ML API-token (optioneel)', + mlTokenPlaceholder: 'Laat leeg als de server zonder ML_API_TOKEN draait', + mlTokenHint: 'Moet overeenkomen met de omgevingsvariabele ML_API_TOKEN van je Obico ml_api-container. Laat leeg wanneer de container zonder token draait.', + test: 'Testen', + testSuccess: 'ML API bereikbaar en gezond.', + testSuccessTokenUnknown: 'ML API bereikbaar en gezond. Het token kon niet worden gecontroleerd.', + testFailed: 'ML API kon niet worden bereikt.', + sensitivity: 'Gevoeligheid', + sensitivityLow: 'Laag (minder fout-positieven)', + sensitivityMedium: 'Gemiddeld (gebalanceerd)', + sensitivityHigh: 'Hoog (vroeg detecteren, meer fout-positieven)', + sensitivityHint: 'Past de betrouwbaarheidsdrempels aan die waarschuwingen en fouten activeren.', + action: 'Actie bij gedetecteerde fout', + actionNotify: 'Alleen melden', + actionPause: 'Afdruk pauzeren', + actionPauseOff: 'Pauzeren en stroom uitschakelen', + pollInterval: 'Controle-interval (seconden)', + pollIntervalHint: 'Hoe vaak elke printer tijdens het afdrukken wordt gecontroleerd. Minimaal 5s, maximaal 120s.', + externalUrlMissing: 'Externe URL is niet ingesteld.', + externalUrlHint: 'De ML API haalt de cameramomentopname via een URL op. Stel de Externe URL in bij Algemene instellingen zodat de ML API-container Bambuddy kan bereiken.', + perPrinterTitle: 'Bewaakte printers', + perPrinterHint: 'Kies welke printers door de detectieservice worden bewaakt.', + monitorAll: 'Alle verbonden printers bewaken', + statusTitle: 'Status', + serviceRunning: 'Service actief', + thresholds: 'Lage / hoge drempels', + activePrinters: 'Actieve afdrukken', + noActivePrints: 'Er worden momenteel geen afdrukken uitgevoerd.', + historyTitle: 'Recente detecties', + noHistory: 'Nog geen detecties.', + }, + + makerworld: { + title: 'MakerWorld', + description: 'Plak een MakerWorld-model-URL om het rechtstreeks vanuit Bambuddy te importeren en af te drukken — zonder naar de Bambu Handy-app te gaan.', + pasteUrlHeader: 'Importeren vanuit MakerWorld', + pasteUrlPlaceholder: 'https://makerworld.com/en/models/… of plak een MakerWorld-link', + resolveButton: 'Ophalen', + signInRequiredTitle: 'Aanmelden bij Bambu Cloud vereist om te downloaden', + signInRequiredBody: 'Je kunt modeldetails anoniem bekijken, maar MakerWorld vereist een Bambu Cloud-account om 3MF-bestanden te downloaden.', + signInExpiredTitle: 'Bambu Cloud-login verlopen', + signInExpiredBody: 'Je bent nog aangemeld bij Bambuddy, maar Bambu Lab accepteert het opgeslagen token niet meer, waardoor downloads mislukken. Meld je opnieuw aan bij Bambu Cloud.', + openCloudSettings: 'Cloudinstellingen openen', + untitledModel: 'Naamloos model', + byCreator: 'door {{name}}', + downloadsCount: '{{count}} downloads', + licensePrefix: 'Licentie', + alreadyImported: 'Al in bibliotheek', + openOnMakerworld: 'Openen op MakerWorld', + alreadyInLibrary: 'Dit model staat al in je bibliotheek — je vindt het in Bestandsbeheer → MakerWorld', + importSuccess: '{{filename}} geïmporteerd — opgeslagen in Bestandsbeheer → MakerWorld', + platesHeader: 'Platen ({{count}})', + plateDefaultName: 'Plaat {{n}}', + materialCount: '{{count}} filamenten', + amsRequired: 'AMS vereist', + slicedFor: 'Gesliced voor {{printer}}', + alsoCompatible: 'Ook als compatibel gemarkeerd: {{printers}}', + importToLibrary: 'Opslaan', + sliceIn: 'Opslaan en slicen in {{slicer}}', + disclaimer: 'De MakerWorld-integratie gebruikt door de community gedocumenteerde API-endpoints. Bambuddy is niet verbonden met of goedgekeurd door MakerWorld of Bambu Lab.', + lastImportSuccess: 'Geïmporteerd in je bibliotheek', + lastImportAlreadyInLibrary: 'Al in je bibliotheek', + viewInLibrary: 'Bekijken in Bestandsbeheer', + openInBambuStudio: 'Openen in Bambu Studio', + openInOrcaSlicer: 'Openen in OrcaSlicer', + importTo: 'Importeren in bestandsbeheer', + recentImportsHeader: 'Recente imports', + phaseResolving: 'Ophalen', + phaseDownloading: 'Downloaden', + folderAuto: 'MakerWorld (standaard)', + importAll: 'Alles importeren', + importAllProgress: 'Importeren {{current}}/{{total}}', + openGallery: 'Afbeeldingengalerij openen', + galleryPrev: 'Vorige afbeelding', + galleryNext: 'Volgende afbeelding', + deleteImport: 'Uit bibliotheek verwijderen', + importDeleting: 'Verwijderen…', + importDeleted: 'Uit bibliotheek verwijderd', + confirmDelete: '{{filename}} uit de bibliotheek verwijderen? Hiermee wordt het lokale bestand verwijderd, maar de plaat kan opnieuw vanuit MakerWorld worden geïmporteerd.', + errors: { + resolveFailed: 'Die MakerWorld-URL kon niet worden opgehaald.', + downloadFailed: 'Download mislukt. Probeer het opnieuw.', + deleteFailed: 'Bestand kon niet uit de bibliotheek worden verwijderd.', + }, + }, + gcodeViewer: { + filamentSlot: 'Filament {{n}}', + loading: 'Toolpath lezen…', + loadFailed: 'G-code voor dit bestand kon niet worden geladen.', + showTravel: 'Verplaatsingen', + topLayer: 'Bovenste laag', + bottomLayer: 'Onderste laag', + noSource: 'Er is geen bestand opgegeven om te bekijken.', + view: { + filament: 'Filament', + feature: 'Kenmerk', + height: 'Hoogte', + width: 'Breedte', + }, + feature: { + wall: 'Wanden', + sparseInfill: 'Schaars infill', + solidInfill: 'Volledig infill', + bridge: 'Brug / overhang', + support: 'Support', + skirt: 'Skirt / brim', + gapFill: 'Gap fill', + ironing: 'Ironing', + primeTower: 'Prime tower', + }, + back: 'Terug', + backToArchives: 'Terug naar Afdrukarchieven', + backToFiles: 'Terug naar Bestandsbeheer', + plates: 'Platen', + plateN: 'Plaat {{n}}', + }, + libraryTrash: { + title: 'Prullenbak', + headerButton: 'Prullenbak', + headerTooltip: 'Bekijk bestanden die naar de prullenbak zijn verplaatst', + backToFiles: 'Terug naar Bestandsbeheer', + subtitleAdmin: 'Verwijderde bestanden blijven hier {{days}} dagen en worden daarna automatisch verwijderd. Deze weergave toont verwijderde bestanden van alle gebruikers.', + subtitleUser: 'Verwijderde bestanden blijven hier {{days}} dagen en worden daarna automatisch verwijderd.', + loading: 'Prullenbak laden…', + loadError: 'Prullenbak kon niet worden geladen.', + empty: 'De prullenbak is leeg.', + summary: '{{count}} bestanden · {{size}}', + emptyTrash: 'Prullenbak legen', + restore: 'Herstellen', + purgeNow: 'Nu verwijderen', + autoPurgeIn: 'Automatische verwijdering over {{when}}', + days: 'dagen', + retentionLabel: 'Automatisch verwijderen na', + selectAll: 'Alles selecteren', + selectOne: '{{filename}} selecteren', + selectionCount: '{{count}} geselecteerd', + bulkRestore: 'Geselecteerde herstellen', + bulkPurge: 'Geselecteerde verwijderen', + col: { + filename: 'Bestand', + folder: 'Map', + size: 'Grootte', + deleted: 'Naar prullenbak verplaatst', + autoPurge: 'Automatisch verwijderen', + owner: 'Eigenaar', + actions: 'Acties', + }, + confirm: { + purgeTitle: 'Definitief verwijderen?', + purgeBody: '{{filename}} wordt van de schijf verwijderd en kan niet worden hersteld.', + emptyTitle: 'Prullenbak legen?', + emptyBody: 'Alle {{count}} bestanden worden van de schijf verwijderd. Dit kan niet ongedaan worden gemaakt.', + bulkPurgeTitle: 'Geselecteerde bestanden definitief verwijderen?', + bulkPurgeBody: 'De {{count}} geselecteerde bestanden worden van de schijf verwijderd en kunnen niet worden hersteld.', + cta: 'Definitief verwijderen', + }, + toast: { + restored: 'Bestand hersteld.', + restoreFailed: 'Bestand kon niet worden hersteld.', + purged: 'Bestand definitief verwijderd.', + purgeFailed: 'Bestand kon niet worden verwijderd.', + emptied: '{{count}} bestand(en) uit prullenbak verwijderd.', + emptyFailed: 'Prullenbak kon niet worden geleegd.', + retentionSaved: 'Automatisch verwijderen ingesteld op {{days}} dagen.', + retentionFailed: 'Bewaarinstelling kon niet worden opgeslagen.', + bulkRestored: '{{count}} bestand(en) hersteld.', + bulkPurged: '{{count}} bestand(en) verwijderd.', + }, + }, + libraryPurge: { + title: 'Oude bestanden opschonen', + headerButton: 'Oude opschonen', + headerTooltip: 'Oude bestanden in bulk naar prullenbak verplaatsen', + description: 'Ruim oude bestanden in je bibliotheek in één keer op. Bestanden met afdrukgeschiedenis worden beoordeeld op de datum waarop ze voor het laatst zijn afgedrukt; nooit afgedrukte bestanden op hun uploaddatum.', + ageLabel: 'Bestanden ouder dan verplaatsen', + days: 'dagen', + includeNeverPrinted: 'Bestanden opnemen die nooit zijn afgedrukt', + effectsTitle: 'Wat gebeurt er wanneer je op Opschonen klikt', + effect1: 'Overeenkomende bestanden worden naar de Prullenbak verplaatst — ze worden nog niet van de schijf verwijderd.', + effect2: 'Je kunt ze vanuit de Prullenbak herstellen totdat de bewaartermijn is verstreken.', + effect3: 'Na de bewaartermijn verwijdert de prullenbakopruimer ze definitief van de schijf.', + effect4: 'Bestanden in externe (gekoppelde) mappen worden overgeslagen — Bambuddy verwijdert nooit bytes waarvan het geen eigenaar is.', + previewLoading: 'Controleren hoeveel bestanden overeenkomen…', + previewFailed: 'Voorbeeld van opschoning kon niet worden gemaakt.', + previewSummary: '{{count}} bestanden · {{size}} zouden naar de prullenbak worden verplaatst', + andMore: '…en nog {{count}}', + warning: 'Bestanden in de prullenbak tellen nog mee voor opslagruimte totdat de bewaartermijn verloopt. Leeg daarna de Prullenbak om direct schijfruimte vrij te maken.', + confirmCta: '{{count}} naar prullenbak verplaatsen', + purging: 'Naar prullenbak verplaatsen…', + toast: { + success: '{{count}} bestand(en) naar prullenbak verplaatst.', + failed: 'Bestanden opschonen mislukt.', + }, + }, + libraryAutoPurge: { + enableLabel: 'Oude bestanden automatisch opschonen', + enableDescription: 'Voert de beheeropschoning eenmaal per dag uit. Bestanden gaan eerst naar de Prullenbak — ze worden niet direct verwijderd.', + ageLabel: 'Bestanden automatisch opschonen ouder dan', + ageDescription: 'Minimaal 7 dagen, maximaal 10 jaar. Gebruikt dezelfde leeftijdsregel als de handmatige knop Opschonen.', + days: 'dagen', + includeNeverPrinted: 'Bestanden opnemen die nooit zijn afgedrukt', + saveFailed: 'Instellingen voor automatisch opschonen konden niet worden opgeslagen.', + }, + archivePurge: { + headerButton: 'Oude opschonen', + headerTooltip: 'Oude archieven in bulk verwijderen', + title: 'Oude archieven opschonen', + description: 'Ruim oude afdrukgeschiedenis op. Elk archief wordt beoordeeld op de meest recente voltooiingsdatum van een afdruk — opnieuw afdrukken vernieuwt de leeftijd, zodat actief werk nooit wordt opgeschoond.', + ageLabel: 'Archieven verwijderen die niet zijn afgedrukt in de laatste', + days: 'dagen', + effectsTitle: 'Wat gebeurt er wanneer je op Opschonen klikt', + effect1: 'Elk overeenkomend archief wordt verborgen uit de lijsten en de bestanden worden van de schijf verwijderd (3MF, miniatuur, timelapse, bron-3MF, F3D-ontwerpbestand, foto\'s).', + effect2: 'De archiefrij blijft in de database zodat Snelle statistieken de bijdragen voor filament, tijd, kosten en energie behoudt — hetzelfde als de standaard bij het verwijderen van één archief.', + effect3: 'Vink hieronder "Ook uit statistieken verwijderen" aan om ook de bijdrage aan Snelle statistieken te verwijderen (zelfde als de optie bij het verwijderen van één archief). Dit is onomkeerbaar.', + effect4: 'Opnieuw afdrukken vernieuwt de leeftijdsklok van een archief, zodat archieven die je nog gebruikt veilig blijven.', + purgeStatsLabel: 'Ook uit statistieken verwijderen', + purgeStatsHint: 'Verwijdert de overeenkomende archieven uit Snelle statistieken (filament, tijd, kosten, energie). Zonder dit behoudt Snelle statistieken elke bijdrage en verdwijnen alleen de bestanden van de schijf.', + previewLoading: 'Controleren hoeveel archieven overeenkomen…', + previewFailed: 'Voorbeeld van opschoning kon niet worden gemaakt.', + previewSummary: '{{count}} archieven · {{size}} zouden worden verwijderd', + andMore: '…en nog {{count}}', + warning: 'Bestanden worden van de schijf verwijderd en kunnen niet worden hersteld. Download of markeer als favoriet wat je wilt bewaren voordat je doorgaat.', + confirmCta: '{{count}} archief/archieven verwijderen', + purging: 'Verwijderen…', + toast: { + success: '{{count}} archief/archieven verwijderd.', + failed: 'Archieven opschonen mislukt.', + }, + }, + archiveAutoPurge: { + enableLabel: 'Oude archieven automatisch opschonen', + enableDescription: 'Verbergt eenmaal per dag archieven uit de lijsten en verwijdert hun bestanden van de schijf als ze niet binnen de ingestelde termijn zijn afgedrukt. Opnieuw afdrukken reset de klok.', + ageLabel: 'Archieven automatisch verwijderen die niet zijn afgedrukt in de laatste', + ageDescription: 'Minimaal 7 dagen, maximaal 10 jaar. Gebaseerd op de meest recente voltooiing van een afdruk — opnieuw afdrukken vernieuwt de leeftijd. Verwijdert de 3MF, miniatuur, timelapse, bron-3MF, F3D en foto\'s.', + days: 'dagen', + purgeStatsLabel: 'Ook uit statistieken verwijderen', + purgeStatsDescription: 'Wanneer ingeschakeld verwijdert de dagelijkse opruimer elk opgeschoond archief ook uit Snelle statistieken (filament, tijd, kosten, energie). Standaard uit — Snelle statistieken behoudt de bijdrage; alleen de bestanden verdwijnen van de schijf.', + runNow: 'Archieven nu opschonen', + saveFailed: 'Instellingen voor automatisch opschonen konden niet worden opgeslagen.', + }, + cameraTokens: { + scope: { + camera_stream: 'Camerastream', + camwall: 'Cameramuur', + overlay: 'Streamingoverlay', + }, + title: 'Camera-API-tokens', + navTitle: 'Camera-API-tokens', + description: + 'Langlevende tokens om de camerastream in Home Assistant, Frigate, kiosks of andere tools met een stabiele URL in te sluiten. Kies het bereik wanneer je er een maakt; een token kan op elk moment worden ingetrokken.', + loading: 'Laden…', + confirmRevoke: { + title: 'Dit token intrekken?', + body: 'Elk apparaat dat "{{name}}" gebruikt verliest direct toegang. Dit kan niet ongedaan worden gemaakt.', + cancel: 'Annuleren', + confirm: 'Intrekken', + }, + create: { + scopeLabel: 'Bereik', + hintCameraStream: + 'Een camerastreamtoken kan alleen camerastreams en momentopnamen ophalen. Gebruik dit voor Home Assistant, Frigate of iets dat één camera insluit.', + hintCamWall: + 'Een Cameramuur-token opent /camwall op een scherm zonder login. Het kan de naam en status van elke printer en hun camerastreams zien. Het kan geen bestandsnamen, adressen of toegangscodes zien.', + hintOverlay: + 'Een Streaming Overlay-token opent /overlay/{printerId} op een scherm zonder login — voor OBS of een livestream. Het kan de camerastream van één printer plus de live afdrukstatus zien, inclusief de bestandsnaam op het scherm. Het kan geen adressen of toegangscodes zien.', + title: 'Nieuw token aanmaken', + nameLabel: 'Tokennaam', + namePlaceholder: 'bijv. Home Assistant', + daysLabel: 'Dagen tot vervaldatum', + submit: 'Maken', + hint: + 'Maximale geldigheidsduur is 365 dagen. De tokenwaarde wordt slechts één keer getoond bij het aanmaken — kopieer deze nu.', + }, + created: { + camWallUrlTitle: 'Cameramuur-URL voor dit scherm', + camWallUrlHint: + 'Open dit op het scherm. Iedereen die de URL kan lezen kan de muur bekijken, dus behandel hem als een sleutel — trek het token in om de toegang van het scherm te stoppen.', + overlayUrlTitle: 'Overlay-URL voor OBS', + overlayUrlHint: + 'Voeg dit toe als Browser Source in OBS. Wijzig het nummer /overlay/1 in het nummer van je printer (uit de URL op de pagina Printers). Iedereen die de URL kan lezen kan de stream bekijken, dus behandel hem als een sleutel — trek het token in om de toegang te stoppen.', + title: 'Token aangemaakt — kopieer het nu', + warning: + 'Dit is de enige keer dat dit token zichtbaar is. Nadat je dit venster sluit kun je het nooit meer bekijken.', + copy: 'Kopiëren', + dismiss: 'Ik heb het opgeslagen', + }, + list: { + scope: 'Bereik', + myTitle: 'Mijn tokens', + allTitle: 'Alle gebruikers (beheerweergave)', + empty: 'Nog geen tokens.', + name: 'Naam', + owner: 'Eigenaar', + prefix: 'Voorvoegsel', + created: 'Aangemaakt', + expires: 'Verloopt', + lastUsed: 'Laatst gebruikt', + revoke: 'Intrekken', + expired: 'Verlopen', + }, + toast: { + created: 'Token aangemaakt', + createFailed: 'Token aanmaken mislukt', + revoked: 'Token ingetrokken', + revokeFailed: 'Token intrekken mislukt', + loadFailed: 'Tokens laden mislukt', + copied: 'Naar klembord gekopieerd', + copyFailed: 'Kopiëren mislukt — selecteer en kopieer handmatig', + }, + }, + // Forecast & Inventory Intelligence + forecast: { + title: 'Prognose', + noSpools: 'Geen actieve spoelen gevonden. Voeg spoelen toe aan je voorraad om prognosegegevens te zien.', + noUsageData: 'Geen verbruiksgegevens beschikbaar — voorraadverloop kan niet worden voorspeld.', + // Table headers + sku: 'SKU', + material: 'Materiaal', + stock: 'Voorraad', + dailyRate: 'Tempo', + daysLeft: 'Dagen resterend', + emptyBy: 'Leeg op', + reorderBy: 'Bestellen vóór', + actions: 'Acties', + // Rate tier badges + trend: 'Trend', + estimated: 'Geschat', + noData: 'Geen gegevens', + // Timeframe + timeframe: 'Periode', + // Chart + chartTitle: 'Verwachte voorraad — top 5 materialen', + dashedLinesROP: 'Stippellijnen = bestelpunten', + stockLevel: 'Voorraadniveau', + reorderPoint: 'Bestelpunt', + safetyMargin: 'Veiligheidsmarge', + // Legend labels + trendLegend: 'Trend (op historie gebaseerd, serviceniveau 95%)', + estimatedLegend: 'Geschat (gewichtsverschil)', + noDataLegend: 'Geen gegevens', + ropLabel: 'ROP', + ssLabel: 'SS', + safetyStockLegend: 'Veiligheidsvoorraad', + stockArrivalLegend: 'Voorraadontvangst', + stockoutLegend: 'Voorraad op', + // Alerts toolbar + alertCount_one: '{{count}} waarschuwing', + alertCount_other: '{{count}} waarschuwingen', + order: 'Bestellen', + // Settings + save: 'Opslaan', + cancel: 'Annuleren', + settingsSaved: 'Instellingen opgeslagen', + failedSaveSettings: 'Instellingen opslaan mislukt', + globalLeadTimeSaved: 'Globale levertijd opgeslagen', + globalLeadTime: 'Globale levertijd', + globalLeadTimeHint: 'Ondergrens voor globale levertijd — gebruikt bij de berekening van het bestelpunt voor alle SKU\'s', + skuLeadTimeOverride: 'Overschrijving levertijd', + skuLeadTimeHint: '0 = globale levertijd gebruiken. Stel >0 in om voor deze SKU te overschrijven.', + safetyMarginLabel: 'Veiligheidsmarge', + effectiveLeadTime: 'Effectieve levertijd', + effectiveLeadTimeHint: 'max(globaal {{global}}d, SKU {{sku}}d)', + reorderPointHint: 'd̄ × LT + veiligheidsmarge — bestellen wanneer voorraad dit niveau bereikt', + safetyMarginHint: 'Statistische veiligheidsvoorraad (z=1.65 × σ × √LT) + door gebruiker ingestelde buffer', + safetyMarginHintDays: 'Buffer bovenop de statistische veiligheidsvoorraad.{{approx}}', + safetyMarginHintDaysApprox: ' ≈ {{g}}g bij huidig verbruik.', + safetyMarginHintG: 'Vaste gewichtsbuffer bovenop de statistische veiligheidsvoorraad.{{approx}}', + safetyMarginHintGApprox: ' ≈ {{days}}d bij huidig verbruik.', + individualSpools: 'Afzonderlijke spoelen', + labelWeight: 'Label', + spoolCount_one: '{{count}} spoel', + spoolCount_other: '{{count}} spoelen', + // Alerts + stockBreakRisk: 'Risico op voorraadtekort', + stockBreakDetail: 'Nog {{days}}d, levertijd {{lt}}d.', + stockBreakBefore: 'Voorraadtekort vóór aanvulling', + reorderNow: 'Nu bestellen', + reorderTriggerPassed: 'Activeringsdatum {{date}} is verstreken.', + // Shopping list + shoppingList: 'Boodschappenlijst', + shoppingListItems_one: '({{count}} item)', + shoppingListItems_other: '({{count}} items)', + shoppingListEmpty: 'Boodschappenlijst is leeg. Klik op het winkelwagenpictogram van een rij om items toe te voegen.', + addToCart: 'Aan boodschappenlijst toevoegen', + alertsSnoozed: 'Waarschuwingen voor deze SKU dempen', + alertsEnabled: 'Waarschuwingen voor deze SKU weer inschakelen', + addedToCart: 'Toegevoegd aan boodschappenlijst', + failedAddItem: 'Item toevoegen mislukt', + listView: 'Lijst', + logisticsView: 'Logistiek', + qty: 'Aantal', + weight: 'Gewicht', + leadTime: 'Levertijd', + expectedRestock: 'Verwachte aanvulling', + status: 'Status', + note: 'Notitie', + pending: 'In afwachting', + purchased: 'Gekocht', + received: 'Ontvangen', + markPurchased: 'Markeren als gekocht', + markReceived: 'Markeren als ontvangen — voegt spoelen toe aan Voorraad', + resetToPending: 'Terugzetten naar in behandeling', + remove: 'Verwijderen', + clearAll: 'Alles wissen', + downloadCsv: 'CSV', + // Add to cart modal + addToCartTitle: 'Aan boodschappenlijst toevoegen', + byQuantity: 'Op aantal', + byDuration: 'Op duur', + numberOfSpools: 'Aantal spoelen', + lastHowManyDays: 'Hoeveel dagen moet dit meegaan?', + noUsageQty: 'Geen verbruiksgegevens — aantal ingesteld op 1.', + noteOptional: 'Notitie (optioneel)', + notePlaceholder: 'bijv. voor project X, dringend…', + addNSpools_one: '{{count}} spoel toevoegen', + addNSpools_other: '{{count}} spoelen toevoegen', + // Cart logistics + onArrival: 'Bij aankomst', + stockBreakIn: 'Voorraadtekort over {{days}}d.', + stockRunsOutBefore: 'Voorraad raakt op voordat de levertijd van {{lt}}d is verstreken.', + atRate: 'Bij {{rate}}g/dag heb je nodig', + moreSpools_one: 'nog {{count}} spoel', + moreSpools_other: 'nog {{count}} spoelen', + bridgeGap: 'om het tekort te overbruggen.', + // Permissions + noReadAccess: 'Je hebt geen machtiging om voorraadprognoses te bekijken.', + noWriteAccess: 'Je hebt geen machtiging om prognose-instellingen te wijzigen.', + }, +}; diff --git a/static/assets/index-DL1B9Y3L.js b/static/assets/index-DFcvtgAy.js similarity index 94% rename from static/assets/index-DL1B9Y3L.js rename to static/assets/index-DFcvtgAy.js index ae6edc340..d6e520dc8 100644 --- a/static/assets/index-DL1B9Y3L.js +++ b/static/assets/index-DFcvtgAy.js @@ -24,7 +24,10 @@ Valeur ON : la chaîne exacte signifiant "ON". Laisser vide pour la détection a ON値: "ON"を意味する正確な文字列。自動検出(ON、true、1)の場合は空のままにしてください。`,restControl:`コントロール`,restOnUrl:`オンURL`,restOffUrl:`オフURL`,restOnBody:`ONリクエスト本文`,restOffBody:`OFFリクエスト本文`,restMethod:`HTTPメソッド`,restHeaders:`Custom Headers (JSON)`,restStatusUrl:`ステータスURL`,restStatusPath:`状態JSONパス`,restStatusOnValue:`ON値`,restPowerUrl:`電力URL`,restPowerPath:`電力JSONパス`,restPowerMultiplier:`電力乗数`,restEnergyUrl:`エネルギーURL`,restEnergyPath:`エネルギーの JSON パス (今日)`,restEnergyTotalPath:`エネルギーの JSON パス (積算値)`,restEnergyTotalMultiplier:`積算値の乗数`,restEnergyTotalPathHint:`例: aenergy.total`,restEnergyTotalHint:`多くのスマートプラグ (Shelly はすべて) は、リセットされない積算カウンターしか返しません。その値は上の欄ではなく、ここに入力してください。今日の使用量として読むと深夜にリセットされず、昨日と合計は空のままになります。Bambuddy は積算値から今日と昨日を算出しますが、そのためには 1〜2 日分の測定値が必要です。Shelly はワット時で返すため、乗数には 0.001 を指定してください。`,restEnergyMultiplier:`エネルギー乗数`,restUrlRequired:`RESTプラグには少なくとも1つのURL(ONまたはOFF)が必要`,restHeadersHint:`例: {"Authorization": "Bearer your-token"}`,restBodyHint:`例:ON, {"state": "on"}`,restStatusHint:`現在の状態を取得するURL`,restPathHint:`例: state または data.power.status`,restPowerUrlHint:`電力データ用の個別URL(空欄の場合はステータスURLを使用)`,restEnergyUrlHint:`エネルギーデータ用の個別URL(空欄の場合はステータスURLを使用)`,restEnergyHint:`各値は個別のURLを使用するか、ステータスURLにフォールバックできます。乗数で単位変換が可能です(例:WhからkWhへの変換は0.001)。`,testConnection:`接続テスト`,connectionSuccess:`接続成功`,noSwitchesInSwitchbar:`スイッチバーにスイッチがありません`,enableSwitchbarHint:`設定 > スマートプラグで「スイッチバーに表示」を有効にしてください`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`メール`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`SMTPメール通知`,telegram:`Telegramボット経由の通知`,discord:`Webhook経由でDiscordチャンネルに送信`,ntfy:`無料のセルフホスト可能なプッシュ通知`,pushover:`シンプルで信頼性の高いプッシュ通知`,callmebot:`CallMeBot経由の無料WhatsApp通知`,webhook:`任意のURLへの汎用HTTP POST`,homeassistant:`Home Assistantダッシュボードの永続通知`,bark:`Bark経由のiOSプッシュ通知(セルフホスト可能)`},lastSuccess:`最終: {{date}}`,error:`エラー`,printer:`プリンター:`,allPrinters:`すべてのプリンター`,sendTestNotification:`テスト通知を送信`,eventSettings:`イベント設定`,enabled:`有効`,sendFromProvider:`このプロバイダーから通知を送信`,printEvents:`印刷イベント`,printerStatus:`プリンターステータス`,amsAlarms:`AMSアラーム`,amsHtAlarms:`AMS-HTアラーム`,printQueue:`印刷キュー`,start:`開始`,plateCheck:`プレートチェック`,complete:`完了`,failed:`失敗`,stopped:`停止`,progress:`進捗`,offline:`オフライン`,lowFilament:`フィラメント残量低下`,maintenance:`メンテナンス`,amsHumidity:`AMS湿度`,amsTemp:`AMS温度`,amsDryingSuspended:`乾燥を停止`,amsHtHumidity:`AMS-HT湿度`,amsHtTemp:`AMS-HT温度`,bedCooled:`ベッド冷却済み`,firstLayer:`第1層完了`,quiet:`静音`,digest:`ダイジェスト {{time}}`,printStarted:`印刷開始`,plateNotEmpty:`プレートが空でない`,plateNotEmptyDescription:`印刷前にオブジェクトが検出されました`,plateClearRequired:`プレート確認が必要`,plateClearRequiredDescription:`印刷完了、キューはプレート確認を待機中`,plateClear:`プレート確認`,printCompleted:`印刷完了`,bedCooledLabel:`ベッド冷却済み`,bedCooledDescription:`印刷後にベッドがしきい値以下に冷却`,firstLayerCompleteLabel:`第1層完了`,firstLayerCompleteDescription:`第1層完了時にスナップショット付きで通知`,missingSpoolAssignmentLabel:`スプール割り当て不足`,billingChargeFailedLabel:`請求処理エラー`,billingChargeFailedDescription:`印刷コストを記録できなかった場合に通知します`,missingSpoolAssignmentDescription:`印刷開始時に必要トレイへスプールが未割り当ての場合に通知`,printFailed:`印刷失敗`,printStopped:`印刷停止`,progressMilestones:`進捗マイルストーン`,progressMilestonesDescription:`25%、50%、75%で通知`,printerOffline:`プリンターオフライン`,printerError:`プリンターエラー`,aiFailureDetection:`AI 故障検出`,aiFailureDetectionDescription:`Obico AI が印刷の不具合の可能性を検出したときに通知`,lowFilamentLabel:`フィラメント残量低下`,maintenanceDue:`メンテナンス期限`,maintenanceDueDescription:`メンテナンスが必要な場合に通知`,amsHumidityHigh:`AMS湿度高`,amsHumidityHighDescription:`通常AMSの湿度がしきい値を超過`,amsTemperatureHigh:`AMS温度高`,amsTemperatureHighDescription:`通常AMSの温度がしきい値を超過`,amsDryingSuspendedTitle:`自動乾燥の停止`,amsDryingSuspendedDescription:`湿度がしきい値を下回らなかったため、AMS ユニットの自動乾燥を中止しました`,amsHtHumidityHigh:`AMS-HT湿度高`,amsHtHumidityHighDescription:`AMS-HTの湿度がしきい値を超過`,amsHtTemperatureHigh:`AMS-HT温度高`,amsHtTemperatureHighDescription:`AMS-HTの温度がしきい値を超過`,inventoryAlerts:`在庫アラート`,stockReorderAlert:`発注アラート`,stockReorderAlertDescription:`SKUが発注点に達しました`,stockBreakAlert:`在庫切れアラート`,stockBreakAlertDescription:`入荷前に在庫が枯渇する見込みです`,jobAdded:`ジョブ追加`,jobAddedDescription:`キューにジョブが追加されました`,jobAssigned:`ジョブ割り当て`,jobAssignedDescription:`モデルベースのジョブがプリンターに割り当てられました`,jobStarted:`ジョブ開始`,jobStartedDescription:`キュージョブの印刷が開始されました`,jobWaiting:`ジョブ待機中`,jobWaitingDescription:`フィラメントまたはプリンター待ちのジョブ`,jobSkipped:`ジョブスキップ`,jobSkippedDescription:`ジョブがスキップされました(前のジョブが失敗)`,jobFailed:`ジョブ失敗`,jobFailedDescription:`ジョブの開始に失敗しました`,queueComplete:`キュー完了`,queueCompleteDescription:`すべてのキュージョブが完了しました`,quietHours:`静音時間`,noNotificationsDuring:`この時間帯は通知を送信しません`,editProviderToChangeQuietHours:`プロバイダーを編集して静音時間を変更`,dailyDigest:`デイリーダイジェスト`,batchNotifications:`通知をまとめて1日のサマリーとして送信`,sendAt:`{{time}}に送信`,editProviderToChangeDigestTime:`プロバイダーを編集してダイジェスト時刻を変更`,edit:`編集`,deleteProvider:`通知プロバイダーを削除`,deleteConfirm:`"{{name}}"を削除してもよろしいですか?この操作は取り消せません。`,delete:`削除`,addTitle:`通知プロバイダーを追加`,editTitle:`通知プロバイダーを編集`,nameLabel:`名前 *`,namePlaceholder:`マイ通知`,providerTypeLabel:`プロバイダータイプ *`,configuration:`設定`,testConfiguration:`設定をテスト`,printerFilter:`プリンターフィルター`,onlyFromPrinter:`このプリンターからのイベントのみ通知を送信`,quietHoursDnd:`静音時間(おやすみモード)`,quietStart:`開始`,quietEnd:`終了`,dailyDigestLabel:`デイリーダイジェスト`,sendDigestAt:`ダイジェスト送信時刻`,digestCollected:`イベントが収集され、この時刻にまとめて送信されます`,notificationEvents:`通知イベント`,progressPercent:`(25%、50%、75%)`,bedCooledAfterPrint:`(印刷完了後)`,haSensorAlert:`プリンターセンサーアラート`,haSensorAlertDescription:`(連携した Home Assistant センサーに注意が必要です)`,locationHaSensorAlert:`保管場所センサーアラート`,locationHaSensorAlertDescription:`(保管場所に連携した Home Assistant センサーに注意が必要です)`,eventPriority:{sectionTitle:`ntfy 優先度`,helpNtfy:`有効な各イベントに優先度を選択してください。ntfy はこれを使って通知の挙動(音、表示、プッシュ動作)を切り替えます。ここで設定していないレベルは ntfy サーバーのデフォルトを使用します。`,min:`最小`,low:`低`,default:`デフォルト`,high:`高`,urgent:`緊急`},cancel:`キャンセル`,save:`保存`,add:`追加`,nameRequired:`名前は必須です`,fieldRequired:`{{field}}は必須です`,haDataInvalid:`Dataフィールドは有効なJSONオブジェクトである必要があります(例: {"priority": "high", "ttl": 0})`,phoneNumber:`電話番号`,apiKey:`APIキー`,serverUrl:`サーバーURL`,topic:`トピック`,authToken:`認証トークン`,userKey:`ユーザーキー`,appToken:`アプリトークン`,priority:`優先度`,pushoverRetry:`緊急再通知 (秒)`,pushoverExpire:`緊急有効期限 (秒)`,botToken:`ボットトークン`,chatId:`チャットID`,telegramThreadId:`フォーラムトピック ID`,telegramThreadIdHelp:`任意。フォーラムグループ内の特定のトピックに送信します。トピックリンクの末尾の数字です (t.me/c/.../25)。空欄の場合は General トピックに送信されます。`,telegramThreadIdInvalid:`フォーラムトピック ID は数値で入力してください。`,smtpServer:`SMTPサーバー`,smtpPort:`SMTPポート`,security:`セキュリティ`,authentication:`認証`,username:`ユーザー名`,password:`パスワード`,fromEmail:`送信元メール`,toEmail:`宛先メール`,webhookUrl:`WebhookのURL`,payloadFormat:`ペイロード形式`,authorization:`認可`,titleFieldName:`タイトルフィールド名`,messageFieldName:`メッセージフィールド名`,editTemplate:`テンプレートを編集: {{name}}`,titleLabel:`タイトル`,bodyLabel:`本文`,titlePlaceholder:`通知タイトル...`,bodyPlaceholder:`通知本文...`,availableVariables:`利用可能な変数`,clickToInsert:`クリックして本文のカーソル位置に挿入`,livePreview:`ライブプレビュー`,hide:`非表示`,show:`表示`,loadingPreview:`プレビューを読み込み中...`,enterTemplateContent:`テンプレートの内容を入力するとプレビューが表示されます`,titlePreview:`タイトル:`,bodyPreview:`本文:`,resetToDefault:`デフォルトにリセット`,titleRequired:`タイトルは必須です`,bodyRequired:`本文は必須です`,notificationLog:`通知ログ`,showFailedOnly:`失敗のみ`,last24Hours:`過去24時間`,last7Days:`過去7日間`,last30Days:`過去30日間`,last90Days:`過去90日間`,justNow:`たった今`,noFailedNotifications:`失敗した通知はありません`,noNotificationsLogged:`記録された通知はありません`,unknownProvider:`不明なプロバイダー`,logTitle:`タイトル`,logMessage:`メッセージ`,logError:`エラー`,logProvider:`プロバイダー: {{type}}`,logTime:`時刻: {{time}}`,refresh:`更新`,clearOld:`古いものを削除`,statsSummary:`過去{{days}}日間:`,statsNotifications:`通知`,statsSent:`{{count}}件送信`,statsFailed:`{{count}}件失敗`,eventTypes:{print_start:`印刷開始`,print_complete:`印刷完了`,print_failed:`印刷失敗`,print_stopped:`印刷停止`,print_progress:`進捗`,printer_offline:`プリンターオフライン`,printer_error:`プリンターエラー`,filament_low:`フィラメント残量低下`,maintenance_due:`メンテナンス期限`,test:`テスト`},userEmail:{title:`通知`,emailNotifications:`メール通知`,emailNotificationsDesc:`自分の印刷ジョブに対してメール通知を受け取ります。メールは高度な認証で設定されたSMTP設定を使用して送信されます。`,sendingTo:`通知の送信先`,noEmailWarning:`アカウントにメールアドレスが設定されていません。管理者に連絡して追加してもらってください。`,printJobNotifications:`印刷ジョブ通知`,printJobNotificationsDesc:`送信した印刷ジョブのどのイベントでメール通知を送るかを選択します。`,printJobStarts:`印刷ジョブ開始`,printJobStartsDesc:`印刷ジョブが開始されたときに通知を受け取る。`,printJobFinishes:`印刷ジョブ完了`,printJobFinishesDesc:`印刷ジョブが正常に完了したときに通知を受け取る。`,printErrors:`印刷エラー`,printErrorsDesc:`印刷ジョブが失敗またはエラーが発生したときに通知を受け取る。`,printJobStops:`印刷ジョブ停止`,printJobStopsDesc:`印刷ジョブがキャンセルまたは停止されたときに通知を受け取る。`,saveSuccess:`通知設定を保存しました。`,saveError:`通知設定の保存に失敗しました。`}},richTextEditor:{bold:`太字`,italic:`斜体`,underline:`下線`,bulletList:`箇条書きリスト`,numberedList:`番号付きリスト`,alignLeft:`左揃え`,alignCenter:`中央揃え`,alignRight:`右揃え`,addLink:`リンクを追加`,removeLink:`リンクを削除`},externalLinks:{title:`サイドバーリンク`,sidebarLayout:`サイドバー`,sidebarLayoutDescription:`組み込みページの表示/非表示を切り替え、外部リンクを追加し、項目をドラッグしてサイドバーナビゲーションを並べ替えます。`,systemPages:`Bambuddyページ`,externalLinks:`外部リンク`,visibleInSidebar:`サイドバーに表示`,hiddenFromSidebar:`サイドバーで非表示`,requiredInSidebar:`サイドバーで必須`,hidePage:`ページを非表示`,showPage:`ページを表示`,settingsCannotBeHidden:`設定は非表示にできません`,noLinksConfigured:`外部リンクが設定されていません`,deleteLink:`リンクを削除`,removeCustomIcon:`カスタムアイコンを削除`,openInNewTab:`新しいタブで開く`,placeholders:{linkName:`マイリンク`}},keyboardShortcuts:{title:`キーボードショートカット`,navigation:`ナビゲーション`,archivesSection:`アーカイブ`,kProfilesSection:`Kプロファイル`,generalSection:`全般`,shortcuts:{goToPrinters:`プリンターへ移動`,goToArchives:`アーカイブへ移動`,goToQueue:`キューへ移動`,goToStats:`統計へ移動`,goToProfiles:`クラウドプロファイルへ移動`,goToSettings:`設定へ移動`,focusSearch:`検索にフォーカス`,openUploadModal:`アップロードモーダルを開く`,clearSelection:`選択をクリア / 入力をぼかす`,contextMenu:`カードのコンテキストメニュー`,refreshProfiles:`プロファイルを更新`,newProfile:`新しいプロファイル`,exitSelectionMode:`選択モードを終了`,showHelp:`このヘルプを表示`},footer:`Escキーを押すか外側をクリックして閉じます`},notificationLog:{title:`通知ログ`,events:{printStarted:`印刷開始`,printComplete:`印刷完了`,printFailed:`印刷失敗`,printStopped:`印刷停止`,progress:`進捗`,printerOffline:`プリンターオフライン`,printerError:`プリンターエラー`,lowFilament:`フィラメント残量低下`,maintenanceDue:`メンテナンス期限`,test:`テスト`},timeAgo:{justNow:`たった今`,minutesAgo:`{{minutes}}分前`,hoursAgo:`{{hours}}時間前`}},restoreBackup:{title:`バックアップを復元`,restoring:`復元中...`,restoreComplete:`復元完了`,restoreFailed:`復元失敗`,importSettings:`バックアップファイルから設定をインポート`,pleaseWait:`データの復元中です。しばらくお待ちください`,clickToSelect:`クリックしてバックアップファイルを選択(.jsonまたは.zip)`,howDuplicateHandling:`重複の処理方法:`,categories:{printers:`プリンター`,smartPlugs:`スマートプラグ`,notificationProviders:`通知プロバイダー`,filaments:`フィラメント`,archives:`アーカイブ`,pendingUploads:`保留中のアップロード`,settingsTemplates:`設定とテンプレート`},matchingInfo:{printers:`シリアル番号で照合`,smartPlugs:`IPアドレスで照合`,notificationProviders:`名前で照合`,filaments:`名前+タイプ+ブランドで照合`,archives:`コンテンツハッシュで照合`,pendingUploads:`ファイル名で照合`,settingsTemplates:`常に上書き`},replaceExisting:`既存データを置き換え`,keepExisting:`既存データを保持`,replaceDescription:`既に存在するアイテムをバックアップデータで上書き`,keepDescription:`まだ存在しないアイテムのみを復元`,caution:`注意:`,cautionText:`上書きすると現在の構成がバックアップデータに置き換えられます。セキュリティ上の理由から、プリンターのアクセスコードは上書きされません。`,itemsRestored:`復元されたアイテム`,itemsSkipped:`スキップされたアイテム`,restored:`復元済み`,skipped:`スキップ(既に存在)`,filesLabel:`ファイル(3MF、サムネイルなど)`,newApiKeysGenerated:`新しいAPIキーが生成されました`,newApiKeysWarning:`これらのキーは一度だけ表示されます。今すぐコピーしてください!`,processingBackup:`バックアップファイルを処理中...`,noDataFound:`バックアップファイルに復元するデータが見つかりませんでした。`,failedToRestore:`バックアップの復元に失敗しました。ファイル形式を確認してください。`},backupExport:{title:`バックアップをエクスポート`,selectData:`含めるデータを選択`,selectAll:`すべて選択`,selectNone:`なし`,categoryDescriptions:{settings:`言語、テーマ、更新設定`,notifications:`ntfy、Pushover、Discordなど`,templates:`カスタムメッセージテンプレート`,smartPlugs:`Tasmotaプラグ設定`,externalLinks:`サイドバーの外部サービスへのリンク`,printers:`プリンター情報(アクセスコード除外)`,plateDetection:`空プレート参照画像`,filaments:`フィラメントの種類とコスト`,maintenance:`カスタムメンテナンススケジュール`,archives:`すべての印刷データ+ファイル(3MF、サムネイル、写真)`,projects:`プロジェクト、BOMアイテム、添付ファイル`,pendingUploads:`仮想プリンターアップロード待機中`,apiKeys:`Webhook APIキー(インポート時に新しいキーが生成されます)`},requiresPrinters:`プリンターを選択する必要があります`,zipFileWarning:`ZIPファイルが作成されます。`,zipFileDescription:`すべての3MFファイル、サムネイル、タイムラプス、写真が含まれます。これには時間がかかり、大きなファイルになる可能性があります。`,includeAccessCodes:`アクセスコードを含める`,includeAccessCodesDescription:`別のマシンへの転送用`,includeAccessCodesWarning:`アクセスコードはプレーンテキストで含まれます。このバックアップファイルを安全に保管してください!`,categoriesSelected:`{{selectedCount}}カテゴリー選択済み`},pendingUploads:{placeholders:{notes:`この印刷に関するメモを追加...`},discardUpload:`アップロードを破棄`,archiveAllUploads:`すべてのアップロードをアーカイブ`,discardAllUploads:`すべてのアップロードを破棄`,archive:`アーカイブ`,timeAgo:{justNow:`たった今`,minutesAgo:`{{minutes}}分前`,hoursAgo:`{{hours}}時間前`,daysAgo:`{{days}}日前`}},apiBrowser:{placeholders:{requestBody:`JSONリクエストボディ...`,searchEndpoints:`エンドポイントを検索...`}},configureAmsSlot:{title:`AMSスロットの設定`,slotConfigured:`スロットを設定しました!`,configuringSlot:`スロットを設定中:`,slotLabel:`{{ams}} スロット {{slot}}`,searchPresets:`プリセットを検索...`,colorPlaceholder:`色名またはHex(例: 茶色、FF8800)`,clearCustomColor:`カスタム色をクリア`,noCloudPresets:`クラウドプリセットがありません。Bambu Cloudにログインして同期してください。`,noPresetsAvailable:`プリセットがありません。Bambu Cloudにログインするか、ローカルプロファイルをインポートしてください。`,noMatchingPresets:`一致するプリセットが見つかりません。`,custom:`カスタム`,builtin:`内蔵`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`設定をプリンターに送信しました`,filamentProfile:`フィラメントプロファイル`,kProfileLabel:`Kプロファイル(Pressure Advance)`,filteringFor:`フィルター中: {{material}}`,noKProfile:`Kプロファイルなし(デフォルト0.020を使用)`,noMatchingKProfiles:`一致するKプロファイルが見つかりません。デフォルトK=0.020が使用されます。`,otherKProfiles:`このプリンターの他のKプロファイル`,selectFilamentFirst:`まずフィラメントプロファイルを選択してください`,kFromCalibration:`K={{value}}(プリンターキャリブレーションから)`,customColorLabel:`カスタム色(オプション)`,presetColors:`{{name}}の色:`,showLessColors:`色を減らす`,showMoreColors:`色をもっと表示`,clear:`クリア`,hexLabel:`16進: #{{hex}}`,resetting:`リセット中...`,resetSlot:`スロットをリセット`,cancel:`キャンセル`,configuring:`設定中...`,configureSlot:`スロットを設定`},githubBackup:{title:`Gitバックアップ`,history:`履歴`,downloadBackup:`バックアップをダウンロード`,restoreBackup:`バックアップを復元`,noBackupsYet:`バックアップはまだありません`},emailSettings:{placeholders:{fromName:`Bambuddy`}},tagManagement:{searchTags:`タグを検索...`,renameTag:`タグ名を変更`,deleteTag:`タグを削除`},notificationTemplates:{placeholders:{title:`通知タイトル...`,body:`通知本文...`}},batchTag:{placeholders:{newTag:`新しいタグを入力...`}},photoGallery:{deletePhoto:`写真を削除`},filamentHoverCard:{copySpoolUuid:`スプールUUIDをコピー`},kProfilesView:{hasNote:`メモあり`,copyProfile:`プロファイルをコピー`},layout:{openMenu:`メニューを開く`,noPermissionSystemInfo:`システム情報を表示する権限がありません`},dashboard:{dragToReorder:`ドラッグして並べ替え`,hideWidget:`ウィジェットを非表示`},notificationProviderCard:{deleteNotificationProvider:`通知プロバイダーを削除`},fileManagerModal:{closeFileManager:`ファイルマネージャーを閉じる`,sortFiles:`ファイルを並べ替え`,goToParentFolder:`親フォルダーへ移動`,threeView:`3Dビュー`},embeddedCameraViewer:{refreshStream:`ストリームを更新`,close:`閉じる`,zoomOut:`ズームアウト`,resetZoom:`ズームをリセット`,zoomIn:`ズームイン`,dragToResize:`ドラッグしてサイズ変更`},timelapseViewer:{skipBack5s:`5秒戻る`,skipForward5s:`5秒進む`},notificationProviders:{descriptions:{email:`SMTP電子メール通知`,telegram:`Telegramボット経由の通知`,discord:`Webhookを介してDiscordチャンネルに送信`,ntfy:`無料でセルフホスト可能なプッシュ通知`,pushover:`シンプルで信頼性の高いプッシュ通知`,callmebot:`CallMeBot経由の無料WhatsApp通知`,webhook:`任意のURLへのジェネリックHTTP POST`}},logViewer:{searchPlaceholder:`メッセージまたはロガー名を検索...`,noLogEntries:`ログエントリが見つかりません`},switchbarPopover:{noSwitchesInSwitchbar:`スイッチバーにスイッチがありません`},projectPageModal:{placeholders:{title:`タイトル`,designer:`デザイナー`,license:`ライセンス`,description:`説明を入力...`,profileTitle:`プロファイルタイトル`,profileDescription:`プロファイルの説明...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`待機中`,justNow:`たった今`,now:`今すぐ`,minsAgo:`{{count}}分前`,inMins:`あと{{count}}分`,hoursAgo:`{{count}}時間前`,inHours:`あと{{count}}時間`,daysAgo:`{{count}}日前`,inDays:`あと{{count}}日`},spoolbuddy:{nav:{dashboard:`ダッシュボード`,ams:`AMS`,inventory:`インベントリ`,writeTag:`書込み`,settings:`設定`},status:{nfcReady:`NFC準備完了`,nfcOff:`NFCオフ`,offline:`オフライン`,online:`オンライン`,noPrinters:`プリンターなし`,deviceOffline:`デバイスオフライン`,waitingConnection:`デバイス接続を待っています...`,systemReady:`システム準備完了`,status:`ステータス`},dashboard:{readyToScan:`スキャン準備完了`,idleMessage:`スプールを計量台に置いて識別します`,nfcHint:`NFCタグは自動的に読み取られます`,device:`デバイス`,syncWeight:`重量同期`,weightSynced:`同期完了!`,unknownTag:`不明なタグ`,newTag:`新しいタグを検出`,onScale:`計量中`,linkSpool:`スプールにリンク`,linkTagTitle:`タグをスプールにリンク`,linkTag:`タグをリンク`,selectSpool:`このタグにリンクするスプールを選択:`,noUntagged:`タグなしのスプールが見つかりません`,tagDetected:`タグ検出`,noTag:`タグなし`,tagId:`タグ`,grossWeight:`総重量`,spoolSize:`スプールサイズ`,close:`閉じる`,currentSpool:`現在のスプール`,plateReady:`プレート準備完了: {{name}}`,plateReadyLabel:`片付け待ちプレート`,plateClearAction:`片付け`,plateClearedToast:`プレートを片付け済みにしました`,plateClearFailed:`プレートを片付け済みにできませんでした`},modal:{spoolDetected:`スプール検出`,assignToAms:`AMSに割り当て`,syncWeight:`重量同期`,weightSynced:`同期完了!`,syncing:`同期中...`,newTagDetected:`新しいタグを検出`,addToInventory:`インベントリに追加`,assignToAmsTitle:`AMSに割り当て`,selectSlot:`スロットを選択`,assign:`割り当て`,assigning:`割り当て中...`,assignSuccess:`割り当て完了!`,assignPendingInsert:`割り当てました。スプールを挿入したときにスロットが設定されます。`,assignError:`スプールの割り当てに失敗しました。再試行してください。`,noPrinterSelected:`プリンターを選択...`,noAmsDetected:`このプリンターにAMSが検出されません`,slot:`スロット`},weight:{noReading:`読み取りなし`,stable:`安定`,measuring:`計測中...`,tare:`風袋引き`,calibrate:`キャリブレーション`},spool:{remaining:`残量`,material:`素材`,brand:`ブランド`,color:`色`,coreWeight:`コア`,labelWeight:`ラベル`,scaleWeight:`計量`,netWeight:`正味`,lastUsed:`最終使用`},ams:{noData:`AMSが検出されません`,connectAms:`AMSを接続してスロットを表示`,noPrinter:`プリンター未選択`,selectPrinter:`上部バーからプリンターを選択`,printerDisconnected:`プリンター切断`,humidity:`湿度`,level:`レベル`,active:`アクティブ`,slot:`スロット`,empty:`空`},inventory:{search:`スプールを検索...`,empty:`インベントリにスプールがありません`,noResults:`一致するスプールがありません`,spools:`スプール`,addSpool:`スプール追加`},settings:{tabDevice:`デバイス`,tabDisplay:`ディスプレイ`,tabScale:`計量`,tabUpdates:`アップデート`,nfcReader:`NFCリーダー`,type:`タイプ`,connection:`接続`,notConnected:`該当なし`,deviceInfo:`デバイス情報`,hostname:`ホスト`,uptime:`稼働時間`,brightness:`明るさ`,saved:`保存済み`,noBacklight:`DSIバックライトが検出されませんでした。明るさ制御にはDSIディスプレイが必要です。`,screenBlank:`画面オフタイムアウト`,screenBlankDesc:`操作がないと画面がオフになります。タッチで復帰。`,displayNote:`明るさはソフトウェアフィルターとして適用されます。`,scaleCalibration:`計量キャリブレーション`,currentWeight:`現在の重量`,tareOffset:`風袋`,calFactor:`係数`,knownWeight:`既知の重量`,calStep1:`計量台からすべてのアイテムを取り除き、ゼロ設定を押してください。`,calStep2:`既知の重量を計量台に置いてください。`,setZero:`ゼロ設定`,calibrateNow:`キャリブレーション`,calibrated:`キャリブレーション済み`,tareSet:`風袋コマンドを送信しました。デバイスを待っています...`,tareComplete:`風袋が完了しました!`,tareTimedOut:`風袋がタイムアウトしました — SpoolBuddy デーモンは起動していますか?`,tareFailed:`風袋コマンドの送信に失敗しました`,zeroSet:`ゼロ点を設定しました。既知の重量を計量台に置いてください。`,calibrationDone:`キャリブレーション完了!`,calibrationFailed:`キャリブレーションに失敗しました`,lastCalibrated:`最終キャリブレーション`,stable:`安定`,settling:`安定化中...`,firmware:`ファームウェア`,scale:`計量`,noDevice:`SpoolBuddyデバイスが見つかりません`,daemonVersion:`デーモンバージョン`,currentVersion:`現在`,versionPending:`デーモンを待っています...`,checking:`確認中...`,checkUpdates:`アップデートを確認`,updateAvailable:`アップデートあり`,updateInstructions:`SSH経由で更新:SpoolBuddyインストールスクリプトを実行してください。`,upToDate:`最新です`,includeBeta:`ベータ版を含む`,systemConfig:`バックエンドと認証`,backendUrl:`BambuddyバックエンドURL`,apiToken:`APIトークン`,apiTokenPlaceholder:`APIトークンを入力`,saveConfig:`設定を保存`,systemQueued:`設定をキューに追加しました。`,systemFieldsRequired:`バックエンドURLは必須です。`,nfcDiagnostic:`NFC診断`,scaleDiagnostic:`スケール診断`,readTagDiagnostic:`タグ読み取り診断`,testNfc:`リーダーをテスト`,testScale:`精度をテスト`,testReadTag:`タグを読み取り`},writeTag:{tabExisting:`既存のスプール`,tabNew:`新規スプール`,tabReplace:`タグ交換`,searchPlaceholder:`素材、色、ブランドで検索...`,noUntaggedSpools:`タグなしのスプールがありません`,noTaggedSpools:`タグ付きのスプールがありません`,selectSpool:`スプールを選択し、NTAGをリーダーに置いてください`,placeTag:`NTAGをリーダーに置いてください`,tagReady:`タグ検出 — 書込み準備完了`,writeTag:`タグ書込み`,replaceTag:`タグ交換`,writing:`タグ書込み中...`,waiting:`SpoolBuddyを待機中...`,writeSuccess:`タグの書込みが完了しました!`,writeFailed:`書込み失敗`,queueFailed:`書込みコマンドのキューに失敗しました`,tryAgain:`再試行`,cancel:`キャンセル`,replaceWarning:`古いタグのリンクが解除され、新しいタグに置き換わります。`,deviceOffline:`SpoolBuddyはオフラインです`,material:`素材`,colorName:`色名`,color:`色`,brand:`ブランド`,weight:`重量 (g)`,createSpool:`スプール作成`,creating:`作成中...`,spoolCreated:`スプール作成完了!書込み準備ができました。`,createFailed:`スプールの作成に失敗しました`,incompleteDataWarning:`不完全なSpoolmanデータでタグを書き込みました`},quickMenu:{printerPower:`プリンター電源`,systemControls:`システム`,restartDaemon:`デーモン再起動`,restartBrowser:`ブラウザ再起動`,reboot:`再起動`,shutdown:`シャットダウン`,swipeToClose:`下にスワイプして閉じる`,confirmTitle:`確認`,confirmShutdown:`SpoolBuddyをシャットダウンしますか?再起動するには物理的なアクセスが必要です。`,confirmReboot:`SpoolBuddyを再起動しますか?`,confirmRestartDaemon:`SpoolBuddyデーモンを再起動しますか?NFCとスケールが一時的に使用できなくなります。`,confirmRestartBrowser:`キオスクブラウザを再起動しますか?画面が一時的に暗くなります。`,confirm:`確認`,confirmPlugOn:`{{name}}をオンにしますか?`,confirmPlugOff:`{{name}}をオフにしますか?`,turnOn:`オン`,turnOff:`オフ`}},diagnostic:{modalTitle:`接続診断 — {{name}}`,running:`診断を実行中...`,runningElapsed:`診断を実行中... ({{elapsed}}秒)`,waitingForReportHint:`プリンターがステータスレポートを送信するのを待っています — 最大 {{max}} 秒かかる場合があります。`,runFailed:`診断を実行できませんでした: {{error}}`,retry:`再実行`,runButton:`診断を実行`,sectionTitle:`接続診断`,sectionDescription:`プリンターが接続できない、または印刷できない原因を確認します — ポートの到達性、LAN開発者モード、Dockerネットワークモード、認証情報。`,noPrinters:`プリンターが設定されていません。`,overall:{ok:`問題は見つかりませんでした — プリンター接続は正常のようです。`,warnings:`プリンターは動作するはずですが、いくつかの点に注意が必要です。`,problems:`プリンターが接続できない、または印刷できない原因となる問題が見つかりました。`},check:{port_mqtt:{title:`制御ポート (MQTT 8883)`,pass:`到達可能 — プリンターは制御接続を受け付けています。`,fail:`ポート8883に到達できません。プリンターの電源が切れている、IPアドレスが異なる、またはファイアウォールがブロックしています。プリンターのIPと、ポート8883が何にもブロックされていないことを確認してください。`},port_ftps:{title:`ファイル転送ポート (FTPS 990)`,pass:`到達可能 — 印刷ファイルの送信は機能します。`,warn:`ポート990に到達できません。監視は引き続き機能する場合がありますが、プリンターへの印刷送信は失敗します。ポート990がブロックされていないことを確認してください。`,warn_no_tls:`ポート990は開いていますが、プリンターのファイルサービスがTLSハンドシェイクを完了しません。印刷ファイル、サムネイル、タイムラプスを取得できないため、アーカイブは空のままになります。プリンターを再起動してください — ポートのブロックを解除しても解決しません。`},external_storage:{title:`送信ファイルを外部ストレージに保存 (インストール手順4)`,pass:`プリンターはこのオプションが有効と報告しています — 送信されたファイルはSDカードに保存され、アーカイブにはサムネイルとスライサーメタデータが含まれます。`,fail:`プリンターはこのオプションが無効と報告しています。「送信ファイルを外部ストレージに保存」を有効にしてください — 新しいファームウェア (P2S 01.02 / Bambu Studio 2.6以降) ではプリンター本体の印刷設定にトグルがあります。古いバージョンでは Bambu Studio / OrcaSlicer のデバイスタブにあります。この設定がないと、アーカイブされた印刷にはサムネイルもスライサーメタデータも残りません。`,skip:`未確認 — アクティブなMQTT接続が必要です。古いスライサーでこの設定がスライサー側のみに存在する場合、プリンターはそれを報告しないため、オプションが無効でもこのチェックは通過します — インストール手順4を手動で確認してください。`,skip_unsupported_model:`このモデルにはSDスロットがありますが、オプションを有効にする方法がありません — 現在のP1シリーズのファームウェアはBambu Studioにトグルを表示せず、プリンターに画面もありません。ここで修正すべきことはありません。Bambu Labがファームウェアで対応するまで、アーカイブされた印刷にはサムネイルやスライサーのメタデータが欠ける場合があります。`,fail_no_media:`オプションは有効ですが、プリンターのスロットにカードもUSBメモリも検出されないため、送信ファイルの保存先がありません。挿入して再度印刷してください。それまでアーカイブされる印刷にはサムネイルとスライサーメタデータがありません。`,warn_internal_storage:`オプションは有効でストレージも装着されていますが、直近の印刷は Bambuddy が読み取れないプリンターの内部ストレージに保存されました。H2 シリーズと P2S では、この設定に関係なく Bambu Studio の「印刷」ボタンは常にそちらへ送信します。印刷は名前と時間付きでアーカイブされますが、サムネイルとスライサーのメタデータはありません。完全なアーカイブを残すには、Bambuddy から印刷を開始するか、OrcaSlicer でスライスするか、Bambu Studio で「送信」から「外部ストレージ」を選んだあとに印刷を開始してください。`,warn_internal_history:`オプションは有効でストレージもありますが、直近の印刷はすでにプリンター内にあったファイルから実行されました — 画面からの再印刷、Handy からの開始、または以前に送信したファイルです。そのライブラリは Bambuddy が読めない内部ストレージにあり、この印刷では何も送信されていないため、どの設定を変えても解決しません。名前と時間付きでアーカイブはされますが、サムネイルとスライサーのメタデータはありません。完全なアーカイブにするには、Bambuddy から印刷を開始するか、スライサーから送信してください。`},port_rtsps:{title:`カメラポート ({{protocol}} {{port}})`,pass:`到達可能 — カメラストリームは機能します。`,warn:`ポート{{port}}に到達できません。ライブカメラ表示は機能しません。これは印刷には影響しません。`},network_mode:{title:`Dockerネットワークモード`,pass:`ホストネットワークモードで実行中です。`,warn:`BambuddyはDockerブリッジネットワークで実行されています。プリンター検出と仮想プリンターにはホストネットワークモードが必要です — "network_mode: host" でコンテナを再作成してください。`,skip:`Dockerで実行されていません — 該当しません。`},subnet:{title:`ネットワークサブネット`,pass:`プリンターとBambuddyは同じサブネットにあります。`,warn:`プリンター ({{printer_ip}}) とBambuddy ({{host_ip}}) は異なるサブネットにあります。サブネット間のルーティングが設定されていない限り、互いに到達できない可能性があります。`,skip:`サブネットを判定できませんでした — スキップしました。`},mqtt_auth:{title:`プリンター認証情報`,pass:`プリンターが接続を受け入れました。`,fail:`プリンターには到達できますが、Bambuddy は接続されていません。アクセスコードまたはシリアル番号が間違っている可能性が高いです — アクセスコードは LAN のみモードや開発者モードを切り替えるたびに変わるため、プリンター画面から再度コピーしてください。再起動中のプリンターや、同時接続数の上限に達しているプリンターでも同じ表示になります。`,fail_auth_rejected:`プリンターが Bambuddy の認証情報を拒否しました。アクセスコードまたはシリアル番号が間違っています — アクセスコードは LAN のみモードや開発者モードを切り替えるたびに変わります。プリンター画面から再度コピーし、プリンター設定に保存してください。`,skip:`未確認 — プリンターに到達できませんでした。`},developer_mode:{title:`LAN開発者モード`,pass:`開発者モードは有効です。`,fail:`プリンターの開発者モードがオフです。プリンターのLAN設定で有効にし、OKで確定してください。これがないと印刷は開始されません。`,skip:`確認できませんでした — プリンターへのアクティブな接続が必要です。`},printer_publishing:{title:`プリンターがステータスを送信中`,pass:`プリンターはステータス更新を送信しています — AMS、フィラメント、Kプロファイルがスライサーに正しくミラーされます。`,fail:`MQTTブローカーは接続を受け付けましたが、プリンターはステータスレポートを一切送信していません。ほぼ常にシリアル番号の誤りまたは大文字小文字の不一致が原因です — device//report トピックは大文字小文字を区別します。プリンター設定のシリアル番号をプリンター本体の画面表示と照合してください。`,skip:`確認できませんでした — プリンターへのアクティブな接続が必要です。`}}},systemHealth:{sectionTitle:`システムの状態`,sectionDescription:`最近のログから既知の問題を検出します。サポートに問い合わせる前に、多くは自分で解決できます。`,rescan:`再スキャン`,clean:`直近 {{times}} 件のログに既知の問題は見つかりませんでした。`,logUnavailable:`ファイルへのログ記録が無効になっているため、ログをスキャンできません。このチェックを使うにはファイルログを有効にしてください。`,learnMore:`対処方法`,fixLabel:`対処:`,occurrences:`{{times}} 回発生 — 最終 {{lastSeen}}`,category:{layer8:`自分で解決できます`,environment:`環境`,bug:`報告してください`},signature:{"ftp-auth-rejected":{name:`プリンターがアクセスコードを拒否しました`,cause:`プリンターがファイル転送のログインを拒否しました。アクセスコードが間違っているか、開発者モードの切り替え後に変更されています。`,fix:`プリンター画面(LAN設定)からアクセスコードをコピーし直し、Bambuddy のプリンター設定で更新してください。`},"ftp-connection-timeout":{name:`ファイル転送の接続がタイムアウトしました`,cause:`Bambuddy がプリンターのファイル転送ポート(FTPS 990)に到達できませんでした。ポートがブロックされているか、プリンターの電源が切れているか、別のサブネットにあります。`,fix:`Bambuddy とプリンターの間でポート 990 がブロックされていないこと、両者が同じネットワークにあることを確認してください。`},"ftp-ssl-error":{name:`セキュアなファイル転送のハンドシェイクに失敗しました`,cause:`プリンターのファイルサービスがポート 990 で TLS を使わずに応答しました。プリンター側のファイルサーバーがハングした状態で、ファイアウォールやファームウェアの問題ではありません。`,fix:`プリンターを再起動してください。それまで印刷ファイル・サムネイル・タイムラプスは取得できませんが、印刷自体には影響ありません。`},"bambu-cloud-captcha":{name:`Bambu Cloud が CAPTCHA を要求しています`,cause:`Bambu の不正利用対策がこのネットワークを検証しているため、Bambu Cloud へのサインインを完了できません。アカウントやこのインストール環境ではなく、グローバル IP アドレスに紐づいた制限です。`,fix:`待つのが基本です。通常は数時間で解除され、サインインを繰り返すと長引きます。それまでは、ブラウザーのセッションから取得したアクセストークンでサインインしてください。`},"mqtt-connection-flapping":{name:`プリンター接続が繰り返し切断されます`,cause:`制御接続(MQTT 8883)が切断と再接続を繰り返しています。通常はネットワークが弱いか、ポートが部分的にブロックされていることが原因です。`,fix:`プリンター付近の Wi-Fi 信号を確認し、できれば有線接続を使用し、ポート 8883 が安定して到達できることを確認してください。`},"camera-connection-refused":{name:`カメラ映像に接続できません`,cause:`ポート RTSPS 322 でライブカメラに到達できませんでした。ポートがブロックされているか、プリンターのカメラまたは LAN ライブビューが無効になっています。`,fix:`プリンターのカメラと LAN ライブビューを有効にし、ポート 322 がブロックされていないか確認してください。これは印刷には影響しません。`},"database-locked":{name:`データベースの書き込み競合`,cause:`負荷時に SQLite データベースで "database is locked" エラーが発生しています。複数のプリンターを同時に使用する場合によく起こります。`,fix:`Bambuddy を外部の PostgreSQL データベースに切り替えてください。ドキュメントの PostgreSQL ガイドを参照してください。`}}},vpDiagnostic:{title:`セットアップチェック — {{name}}`,runButton:`セットアップチェックを実行`,running:`セットアップチェックを実行中...`,runFailed:`セットアップチェックを実行できませんでした: {{error}}`,retry:`再実行`,overall:{ok:`すべてのチェックに合格しました — この仮想プリンターは正しく設定されています。`,warnings:`仮想プリンターは動作するはずですが、いくつかの点に注意が必要です。`,problems:`スライサーがこの仮想プリンターを認識または使用できない理由となる問題が見つかりました。`},check:{enabled:{title:`仮想プリンターが有効`,fail:`この仮想プリンターはオフです。検出可能にするにはオンに切り替えてください。`},running:{title:`サービスが稼働中`,fail:`仮想プリンターは有効ですが、サービスが稼働していません。Bambuddy のログを確認してください — 通常はバインド IP の競合または権限エラーが原因で停止します。`},bind_interface:{title:`バインドネットワークインターフェース`,fail:`バインドインターフェースが設定されていないか、このホストに存在しなくなっています。「バインドインターフェース」のドロップダウンから現在のインターフェースを選択してください。`},access_code:{title:`アクセスコードが設定済み`,fail:`アクセスコードが設定されていません。ここで設定したものと同じ 8 文字のアクセスコードをスライサーに入力する必要があります。`},target_printer:{title:`ターゲットプリンター`,fail:`ターゲットプリンターが選択されていません。プロキシモードには転送先となる実際のプリンターが必要です。`,warn:`ターゲットプリンターは現在オフラインです — 再接続されると転送が再開されます。`},port_ftps:{title:`ファイルアップロードサービス(ポート {{port}})`,fail:`バインド IP のポート {{port}} で待ち受けているものがないため、スライサーはファイルをアップロードできません。通常はこのインターフェースでのポート競合が原因です。`},port_mqtt:{title:`制御サービス(ポート {{port}})`,fail:`バインド IP のポート {{port}} で待ち受けているものがないため、スライサーは接続もステータス表示もできません。`},port_bind:{title:`検出サービス(ポート {{port}})`,fail:`バインド IP のポート {{port}} で待ち受けているものがないため、スライサーの検出ハンドシェイクが失敗します。`},privileged_ports:{title:`特権ポートへのバインド`,fail:`ポート {{port}} は 1024 未満で、このサービスにはバインドする権限がありません。上で何も待ち受けていないのはこのためです。/etc/systemd/system/bambuddy.service に AmbientCapabilities=CAP_NET_BIND_SERVICE を追加して再起動するか、"sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))" を実行してください。Docker の場合は cap_add: [NET_BIND_SERVICE] を追加します。`},certificate:{title:`TLS 証明書`,pass:`証明書の準備ができています。Bambuddy CA 証明書(上記)がスライサーの信頼ストアにインポートされていることを確認してください。`,fail:`この仮想プリンターの TLS 証明書がありません。Bambuddy のデータディレクトリが書き込み可能か確認してください。`}}},bugReport:{logHealthSummary:`ログから既知の問題が見つかりました`,logHealthIntro:`最近のログが既知の問題と一致しています。下記の対処方法をご確認ください。解決すればバグ報告なしで問題が解消する可能性があります。下からバグ報告を送ることもできます。`,title:`バグを報告`,description:`説明`,descriptionPlaceholder:`何が問題でしたか?問題を説明してください...`,email:`メールアドレス(任意)`,emailPlaceholder:`your@email.com`,emailPrivacy:`入力された場合、メールアドレスはGitHub Issueの折りたたみセクションに含まれ、メンテナーがフォローアップできるようになります。`,screenshot:`スクリーンショット`,uploadOrPaste:`画像をアップロード、貼り付け、またはドラッグ`,dataCollectedSummary:`レポートに含まれるデータは?`,dataIncluded:`含まれるもの:`,dataIncludedList:`アプリバージョン、OS、アーキテクチャ、Pythonバージョン、データベース統計(件数のみ)、プリンターモデル、ノズル数、ファームウェアバージョン、接続状態、統合状態(Spoolman、MQTT、HA)、非機密設定、ネットワークインターフェース数、Docker詳細、依存関係バージョン。`,dataNeverIncluded:`含まれないもの:`,dataNeverIncludedList:`プリンター名、シリアル番号、アクセスコード、パスワード、IPアドレス、メールアドレス、APIキー、トークン、Webhook URL、ホスト名、ユーザー名。`,submit:`送信`,startLogging:`デバッグログ開始`,stepEnableLogging:`デバッグログ有効`,stepReproduce:`問題を再現してください`,stepStopLogging:`停止してレポート送信`,stopAndSubmit:`停止して送信`,maxDuration:`{{minutes}}分後に自動停止`,stoppingLogs:`ログ収集・送信中...`,submitting:`バグレポートを送信中...`,submittingStepConnection:`プリンターの接続確認を実行中`,submittingStepVirtualPrinters:`仮想プリンターのセットアップ確認を実行中`,submittingStepLogScan:`最近のログから既知の問題をスキャン中`,submittingStepSubmit:`GitHub にレポートを送信中`,submitSuccess:`バグレポートが正常に送信されました!`,submitFailed:`バグレポートの送信に失敗しました`,diagnosticChecking:`プリンター接続を確認中...`,diagnosticHealthy:`接続チェックに合格しました — プリンターに問題は見つかりませんでした。`,diagnosticSummary:`{{total}} 台中 {{problems}} 台のプリンターに接続の問題があります`,diagnosticIntro:`1 台以上のプリンターに接続の問題があり、それが今回の問題の原因である可能性があります。下記のプリンターを展開して対処法を確認してください — それを解決すれば、バグ報告なしで問題が解決するかもしれません。下記から報告を送信することもできます。`,thankYou:`ありがとうございます!`,submitted:`バグレポートが送信されました。`,viewIssue:`Issueを表示`,closeKeepsRecording:`問題を再現している間、このパネルを閉じても構いません。記録は続行され、再度開くとここに戻ります。`,resumeRecording:`バグレポートを記録中 — {{elapsed}}。クリックして完了します。`,resumeReport:`レポートを再開`,unexpectedError:`予期しないエラーが発生しました`},failureDetection:{title:`AI 失敗検出`,description:`セルフホストされた Obico ML API で印刷を監視し、検出された失敗に自動的に対応します。`,mlUrl:`Obico ML API の URL`,mlUrlHint:`セルフホストした Obico ml_api コンテナのベース URL (例: http://192.168.1.10:3333)。`,mlToken:`ML API トークン(任意)`,mlTokenPlaceholder:`サーバーが ML_API_TOKEN なしで動作している場合は空のままにします`,mlTokenHint:`Obico ml_api コンテナの環境変数 ML_API_TOKEN と一致させる必要があります。コンテナがトークンなしで動作している場合は空のままにしてください。`,test:`テスト`,testSuccess:`ML API に接続でき、正常です。`,testSuccessTokenUnknown:`ML API に接続でき、正常です。トークンは確認できませんでした。`,testFailed:`ML API に接続できませんでした。`,sensitivity:`感度`,sensitivityLow:`低(誤検出が少ない)`,sensitivityMedium:`中(バランス型)`,sensitivityHigh:`高(早期検出、誤検出が増加)`,sensitivityHint:`警告と失敗をトリガーする信頼度のしきい値を調整します。`,action:`失敗検出時の動作`,actionNotify:`通知のみ`,actionPause:`印刷を一時停止`,actionPauseOff:`一時停止して電源を切る`,pollInterval:`ポーリング間隔(秒)`,pollIntervalHint:`印刷中に各プリンターをチェックする頻度。最小 5 秒、最大 120 秒。`,externalUrlMissing:`外部URLが設定されていません。`,externalUrlHint:`ML APIはURLでカメラスナップショットを取得します。MLAPIコンテナがBambuddyに到達できるよう、一般設定で外部URLを設定してください。`,perPrinterTitle:`監視対象プリンター`,perPrinterHint:`検出サービスが監視するプリンターを選択します。`,monitorAll:`接続されているすべてのプリンターを監視`,statusTitle:`ステータス`,serviceRunning:`サービス稼働中`,thresholds:`低 / 高しきい値`,activePrinters:`アクティブな印刷`,noActivePrints:`現在、実行中の印刷はありません。`,historyTitle:`最近の検出`,noHistory:`まだ検出はありません。`},makerworld:{title:`MakerWorld`,description:`MakerWorld モデルの URL を貼り付けると、Bambu Handy アプリを開かなくても Bambuddy から直接インポート・印刷できます。`,pasteUrlHeader:`MakerWorld からインポート`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… または任意の MakerWorld リンク`,resolveButton:`読み込む`,signInRequiredTitle:`ダウンロードには Bambu Cloud へのサインインが必要です`,signInRequiredBody:`モデルの詳細は匿名で閲覧できますが、3MF ファイルをダウンロードするには Bambu Cloud アカウントが必要です。`,signInExpiredTitle:`Bambu Cloud のサインインの有効期限が切れました`,signInExpiredBody:`Bambuddy にはサインインしたままですが、Bambu Lab が保存されたトークンを受け付けなくなったため、ダウンロードは失敗します。Bambu Cloud に再度サインインしてください。`,openCloudSettings:`Cloud 設定を開く`,untitledModel:`無題のモデル`,byCreator:`作成者: {{name}}`,downloadsCount:`ダウンロード数: {{count}}`,licensePrefix:`ライセンス`,alreadyImported:`ライブラリに登録済み`,openOnMakerworld:`MakerWorld で開く`,alreadyInLibrary:`このモデルはすでにライブラリにあります — ファイルマネージャー → MakerWorld で確認できます`,importSuccess:`{{filename}} をインポートしました — ファイルマネージャー → MakerWorld に保存済み`,platesHeader:`プレート ({{count}})`,plateDefaultName:`プレート {{n}}`,materialCount:`フィラメント {{count}} 本`,amsRequired:`AMS が必要`,slicedFor:`{{printer}}用にスライス済み`,alsoCompatible:`互換性ありとも記録: {{printers}}`,importToLibrary:`保存`,sliceIn:`保存して {{slicer}} でスライス`,disclaimer:`MakerWorld 連携はコミュニティで文書化された API エンドポイントを使用しています。Bambuddy は MakerWorld または Bambu Lab との提携・承認関係はありません。`,lastImportSuccess:`ライブラリにインポートしました`,lastImportAlreadyInLibrary:`既にライブラリに存在します`,viewInLibrary:`ファイルマネージャーで表示`,openInBambuStudio:`Bambu Studio で開く`,openInOrcaSlicer:`OrcaSlicer で開く`,importTo:`ファイルマネージャーへのインポート先`,recentImportsHeader:`最近のインポート`,phaseResolving:`解決中`,phaseDownloading:`ダウンロード中`,folderAuto:`MakerWorld (デフォルト)`,importAll:`すべてインポート`,importAllProgress:`インポート中 {{current}}/{{total}}`,openGallery:`画像ギャラリーを開く`,galleryPrev:`前の画像`,galleryNext:`次の画像`,deleteImport:`ライブラリから削除`,importDeleting:`削除中…`,importDeleted:`ライブラリから削除しました`,confirmDelete:`{{filename}} をライブラリから削除しますか?ローカルファイルは削除されますが、MakerWorld から再インポートできます。`,errors:{resolveFailed:`この MakerWorld URL を解決できませんでした。`,downloadFailed:`ダウンロードに失敗しました。もう一度お試しください。`,deleteFailed:`ライブラリからファイルを削除できませんでした。`}},gcodeViewer:{filamentSlot:`フィラメント {{n}}`,loading:`ツールパスを読み込んでいます…`,loadFailed:`このファイルの G コードを読み込めませんでした。`,showTravel:`移動(非押出)`,topLayer:`上端レイヤー`,bottomLayer:`下端レイヤー`,noSource:`プレビューするファイルが指定されていません。`,view:{filament:`フィラメント`,feature:`種別`,height:`高さ`,width:`幅`},feature:{wall:`壁`,sparseInfill:`疎インフィル`,solidInfill:`ソリッドインフィル`,bridge:`ブリッジ/オーバーハング`,support:`サポート`,skirt:`スカート/ブリム`,gapFill:`ギャップ充填`,ironing:`アイロン`,primeTower:`プライムタワー`},back:`戻る`,backToArchives:`印刷アーカイブに戻る`,backToFiles:`ファイル管理に戻る`,plates:`プレート`,plateN:`プレート {{n}}`},libraryTrash:{title:`ゴミ箱`,headerButton:`ゴミ箱`,headerTooltip:`ゴミ箱に移動したファイルを表示`,backToFiles:`ファイルマネージャーに戻る`,subtitleAdmin:`削除されたファイルは {{days}} 日間ゴミ箱に残り、その後自動的に削除されます。このビューには全ユーザーのゴミ箱が表示されます。`,subtitleUser:`削除されたファイルは {{days}} 日間ゴミ箱に残り、その後自動的に削除されます。`,loading:`ゴミ箱を読み込み中…`,loadError:`ゴミ箱を読み込めませんでした。`,empty:`ゴミ箱は空です。`,summary:`{{count}} 件 · {{size}}`,emptyTrash:`ゴミ箱を空にする`,restore:`復元`,purgeNow:`今すぐ削除`,autoPurgeIn:`{{when}} に自動削除`,days:`日`,retentionLabel:`自動削除までの期間`,selectAll:`すべて選択`,selectOne:`{{filename}} を選択`,selectionCount:`{{count}} 件選択中`,bulkRestore:`選択したものを復元`,bulkPurge:`選択したものを削除`,col:{filename:`ファイル`,folder:`フォルダ`,size:`サイズ`,deleted:`ゴミ箱に移動`,autoPurge:`自動削除`,owner:`所有者`,actions:`操作`},confirm:{purgeTitle:`完全に削除しますか?`,purgeBody:`{{filename}} はディスクから削除され、復元できません。`,emptyTitle:`ゴミ箱を空にしますか?`,emptyBody:`{{count}} 件のファイルすべてがディスクから削除されます。この操作は取り消せません。`,bulkPurgeTitle:`選択したファイルを完全に削除しますか?`,bulkPurgeBody:`選択した {{count}} 件のファイルがディスクから削除され、復元できません。`,cta:`完全に削除`},toast:{restored:`ファイルを復元しました。`,restoreFailed:`ファイルを復元できませんでした。`,purged:`ファイルを完全に削除しました。`,purgeFailed:`ファイルを削除できませんでした。`,emptied:`ゴミ箱から {{count}} 件のファイルを削除しました。`,emptyFailed:`ゴミ箱を空にできませんでした。`,retentionSaved:`自動削除を {{days}} 日に設定しました。`,retentionFailed:`保持期間の設定を保存できませんでした。`,bulkRestored:`{{count}} 件のファイルを復元しました。`,bulkPurged:`{{count}} 件のファイルを削除しました。`}},libraryPurge:{title:`古いファイルを一括削除`,headerButton:`古いファイル削除`,headerTooltip:`古いファイルをまとめてゴミ箱に移動`,description:`指定した期間より古いファイルはゴミ箱に移動されます。外部フォルダはスキップされます。自動削除までの間、ゴミ箱から復元できます。`,ageLabel:`次より古いファイルを移動`,days:`日`,includeNeverPrinted:`一度も印刷していないファイルも含める`,effectsTitle:`「削除」をクリックすると何が起こるか`,effect1:`一致するファイルはゴミ箱に移動されます。ディスクからはまだ削除されません。`,effect2:`保持期間が過ぎるまで、いつでもゴミ箱から復元できます。`,effect3:`保持期間が過ぎると、ゴミ箱クリーナーがディスクから完全に削除します。`,effect4:`外部(リンク済み)フォルダー内のファイルはスキップされます — Bambuddyは所有していないバイトを削除しません。`,previewLoading:`対象ファイル数を確認中…`,previewFailed:`プレビューを取得できませんでした。`,previewSummary:`{{count}} 件 · {{size}} がゴミ箱に移動されます`,andMore:`…ほか {{count}} 件`,warning:`ファイルはソフト削除されます — 保持期間が終了するまでゴミ箱から復元できます。`,confirmCta:`{{count}} 件をゴミ箱へ移動`,purging:`ゴミ箱へ移動中…`,toast:{success:`{{count}} 件のファイルをゴミ箱に移動しました。`,failed:`ファイルを削除できませんでした。`}},libraryAutoPurge:{enableLabel:`古いファイルを自動で一括削除`,enableDescription:`管理者の一括削除を 1 日 1 回実行します。ファイルはまずゴミ箱に移動され、すぐには削除されません。`,ageLabel:`次より古いファイルを自動削除`,ageDescription:`最短 7 日、最長 10 年。手動の「古いファイル削除」ボタンと同じ期間ルールを使用します。`,days:`日`,includeNeverPrinted:`一度も印刷していないファイルも含める`,saveFailed:`自動削除の設定を保存できませんでした。`},archivePurge:{headerButton:`古いものを削除`,headerTooltip:`古いアーカイブを一括削除`,title:`古いアーカイブを削除`,description:`古い印刷履歴をクリア。各アーカイブは最新の印刷完了に基づいてエイジングされます — アーカイブを再印刷するとエイジがリセットされるため、現在使用中の作業が削除されることはありません。`,ageLabel:`印刷されていないアーカイブを削除(過去`,days:`日`,effectsTitle:`「削除」をクリックすると何が起こるか`,effect1:`一致するアーカイブはリストから非表示になり、ファイル(3MF、サムネイル、タイムラプス、ソース3MF、F3D、写真)はディスクから削除されます。`,effect2:`アーカイブのレコードはデータベースに残るため、Quick Stats のフィラメント/時間/コスト/エネルギーの寄与は保持されます — 個別アーカイブ削除の既定動作と同じです。`,effect3:`下の「統計からも削除」を有効にすると、Quick Stats の寄与も破棄されます(個別アーカイブ削除のオプションと同等)。この操作は取り消せません。`,effect4:`アーカイブを再印刷するとエイジクロックがリセットされるため、まだ使用中のアーカイブは安全です。`,purgeStatsLabel:`統計からも削除`,purgeStatsHint:`一致するアーカイブを Quick Stats(フィラメント、時間、コスト、エネルギー)からも削除します。チェックしない場合、Quick Stats は寄与を保持し、ファイルのみがディスクから消えます。`,previewLoading:`一致するアーカイブの数を確認中…`,previewFailed:`削除のプレビューを表示できませんでした。`,previewSummary:`{{count}}件のアーカイブ · {{size}}が削除されます`,andMore:`…他に{{count}}件`,warning:`ファイルはディスクから削除され、元に戻せません。続行する前に、保持したいものをダウンロードまたはお気に入りに追加してください。`,confirmCta:`{{count}}件のアーカイブを削除`,purging:`削除中…`,toast:{success:`{{count}}件のアーカイブを削除しました。`,failed:`アーカイブを削除できませんでした。`}},archiveAutoPurge:{enableLabel:`古いアーカイブを自動削除`,enableDescription:`1日1回、しきい値内に印刷されていないアーカイブをリストから非表示にし、ファイルをディスクから削除します。再印刷するとタイマーがリセットされます。`,ageLabel:`印刷されていないアーカイブを自動削除(過去`,ageDescription:`最小7日、最大10年。最新の印刷完了に基づきます — 再印刷するとエイジがリセットされます。3MF、サムネイル、タイムラプス、ソース3MF、F3D、写真を削除します。`,days:`日`,purgeStatsLabel:`統計からも削除`,purgeStatsDescription:`有効にすると、毎日のスイーパーが削除した各アーカイブを Quick Stats(フィラメント、時間、コスト、エネルギー)からも除外します。既定はオフ — Quick Stats は寄与を保持し、ファイルのみがディスクから消えます。`,runNow:`アーカイブを今すぐ削除`,saveFailed:`自動削除設定を保存できませんでした。`},cameraTokens:{scope:{camera_stream:`カメラストリーム`,camwall:`カメラウォール`,overlay:`配信オーバーレイ`},title:`カメラAPIトークン`,navTitle:`カメラAPIトークン`,description:`Home Assistant、Frigate、キオスク画面など、安定した URL を必要とするツールにカメラ映像を埋め込むための長期トークンです。スコープは作成時に選択し、トークンはいつでも取り消せます。`,loading:`読み込み中…`,confirmRevoke:{title:`このトークンを取り消しますか?`,body:`「{{name}}」を使用しているデバイスは直ちにアクセスできなくなります。元に戻せません。`,cancel:`キャンセル`,confirm:`取り消し`},create:{scopeLabel:`スコープ`,hintCameraStream:`カメラストリームトークンで取得できるのは、カメラの映像とスナップショットだけです。Home Assistant や Frigate など、単一のカメラを埋め込む用途に使用してください。`,hintCamWall:`カメラウォールトークンは、ログインなしの画面で /camwall を開きます。各プリンターの名前と状態、そしてカメラ映像を見ることができます。ファイル名、アドレス、アクセスコードは見えません。`,hintOverlay:`配信オーバーレイトークンは、ログインなしの画面で /overlay/{printerId} を開きます — OBS やライブ配信向けです。1台のプリンターのカメラ映像に加え、画面に表示されるファイル名を含むライブの印刷状況を見ることができます。アドレスやアクセスコードは見えません。`,title:`新しいトークンを作成`,nameLabel:`トークン名`,namePlaceholder:`例:Home Assistant`,daysLabel:`有効期限までの日数`,submit:`作成`,hint:`最大有効期間は365日。トークン値は作成時に一度だけ表示されます — 今すぐコピーしてください。`},created:{camWallUrlTitle:`この画面用のカメラウォール URL`,camWallUrlHint:`この URL を画面で開いてください。URL を読める人は誰でもウォールを見られるため、鍵と同じように扱ってください。トークンを取り消すと、その画面は遮断されます。`,overlayUrlTitle:`OBS 用のオーバーレイ URL`,overlayUrlHint:`これを OBS の「ブラウザ」ソース(Browser Source)として追加してください。/overlay/1 の番号を、お使いのプリンターの番号(プリンターページの URL に表示)に変更します。URL を読める人は誰でも配信を見られるため、鍵と同じように扱い、遮断するにはトークンを取り消してください。`,title:`トークンを作成しました – 今すぐコピー`,warning:`このトークンが表示されるのは今回限りです。このダイアログを閉じると二度と表示できません。`,copy:`コピー`,dismiss:`保存しました`},list:{scope:`スコープ`,myTitle:`マイトークン`,allTitle:`全ユーザー(管理者ビュー)`,empty:`トークンはまだありません。`,name:`名前`,owner:`所有者`,prefix:`プレフィックス`,created:`作成`,expires:`有効期限`,lastUsed:`最終使用`,revoke:`取り消し`,expired:`期限切れ`},toast:{created:`トークンを作成しました`,createFailed:`トークンの作成に失敗`,revoked:`トークンを取り消しました`,revokeFailed:`トークンの取り消しに失敗`,loadFailed:`トークンの読み込みに失敗`,copied:`クリップボードにコピー`,copyFailed:`コピーに失敗 – 手動で選択してコピー`}},forecast:{title:`在庫予測`,noSpools:`アクティブなスプールが見つかりません。予測データを表示するには、在庫にスプールを追加してください。`,noUsageData:`使用データがありません — 在庫のタイムラインを予測できません。`,sku:`SKU`,material:`素材`,stock:`在庫`,dailyRate:`レート`,daysLeft:`残り日数`,emptyBy:`在庫切れ予定日`,reorderBy:`発注期限`,actions:`操作`,trend:`トレンド`,estimated:`推定`,noData:`データなし`,timeframe:`期間`,chartTitle:`在庫予測 — 上位5素材`,dashedLinesROP:`破線 = 発注点`,stockLevel:`在庫量`,reorderPoint:`発注点`,safetyMargin:`安全余裕`,trendLegend:`トレンド(履歴ベース、95%サービスレベル)`,estimatedLegend:`推定(重量差分)`,noDataLegend:`データなし`,ropLabel:`発注点`,ssLabel:`安全在庫`,safetyStockLegend:`安全在庫`,stockArrivalLegend:`入荷`,stockoutLegend:`品切れ`,alertCount_one:`{{count}}件の警告`,alertCount_other:`{{count}}件の警告`,order:`注文`,globalLeadTime:`グローバルリードタイム`,globalLeadTimeHint:`グローバルリードタイムの下限 — 全SKUの発注点計算に使用`,save:`保存`,cancel:`キャンセル`,settingsSaved:`設定を保存しました`,failedSaveSettings:`設定の保存に失敗しました`,globalLeadTimeSaved:`グローバルリードタイムを保存しました`,skuLeadTimeOverride:`SKUリードタイム上書き`,skuLeadTimeHint:`0 = グローバルリードタイムを使用。このSKUを上書きするには0より大きい値を設定。`,safetyMarginLabel:`安全余裕`,effectiveLeadTime:`実効リードタイム`,effectiveLeadTimeHint:`max(グローバル {{global}}日, SKU {{sku}}日)`,reorderPointHint:`d̄ × LT + safety margin — 在庫がこのレベルに達したら発注`,safetyMarginHint:`統計的安全在庫 (z=1.65 × σ × √LT) + ユーザー定義バッファ`,safetyMarginHintDays:`統計的安全在庫に加算されるバッファ。{{approx}}`,safetyMarginHintDaysApprox:` ≈ 現在のペースで{{g}}g。`,safetyMarginHintG:`統計的安全在庫に加算される固定重量バッファ。{{approx}}`,safetyMarginHintGApprox:` ≈ 現在のペースで{{days}}日。`,individualSpools:`個別スプール`,labelWeight:`ラベル`,spoolCount_one:`{{count}}個のスプール`,spoolCount_other:`{{count}}個のスプール`,stockBreakRisk:`在庫切れリスク`,stockBreakBefore:`補充前の在庫切れ`,stockBreakDetail:`残り{{days}}日、リードタイム{{lt}}日。`,reorderNow:`今すぐ発注`,reorderTriggerPassed:`発注トリガー日 {{date}} が経過しました。`,shoppingList:`購入リスト`,shoppingListItems_one:`({{count}}件)`,shoppingListItems_other:`({{count}}件)`,shoppingListEmpty:`購入リストは空です。行のカートアイコンをクリックしてアイテムを追加してください。`,addToCart:`購入リストに追加`,alertsSnoozed:`このSKUのアラートをミュート`,alertsEnabled:`このSKUのアラートを有効にする`,addedToCart:`買い物リストに追加しました`,failedAddItem:`アイテムの追加に失敗しました`,listView:`リスト`,logisticsView:`ロジスティクス`,qty:`数量`,weight:`重量`,leadTime:`リードタイム`,expectedRestock:`入荷予定日`,status:`ステータス`,note:`メモ`,pending:`保留中`,purchased:`発注済み`,received:`受領済み`,markPurchased:`発注済みとしてマーク`,markReceived:`受領済みとしてマーク — スプールを在庫に追加`,resetToPending:`保留中にリセット`,remove:`削除`,clearAll:`すべてクリア`,downloadCsv:`CSV`,addToCartTitle:`買い物リストに追加`,byQuantity:`数量で`,byDuration:`期間で`,numberOfSpools:`スプール数`,lastHowManyDays:`何日間持つべきですか?`,noUsageQty:`使用データなし — 数量を1に設定しました。`,noteOptional:`メモ(任意)`,notePlaceholder:`例:プロジェクトX用、緊急…`,addNSpools_one:`{{count}}個のスプールを追加`,addNSpools_other:`{{count}}個のスプールを追加`,onArrival:`入荷時`,stockBreakIn:`{{days}}日後に在庫切れ。`,stockRunsOutBefore:`リードタイム{{lt}}日が経過する前に在庫が枯渇します。`,atRate:`{{rate}}g/日のペースでは`,moreSpools_one:`あと{{count}}個のスプール`,moreSpools_other:`あと{{count}}個のスプール`,bridgeGap:`が不足を補うために必要です。`,noReadAccess:`在庫予測を閲覧する権限がありません。`,noWriteAccess:`予測設定を変更する権限がありません。`}}},it:{translation:{nav:{printers:`Stampanti`,archives:`Archivi`,queue:`Coda di stampa`,stats:`Statistiche`,profiles:`Profili`,maintenance:`Manutenzione`,projects:`Progetti`,inventory:`Filamento`,finance:`Finanze`,files:`File`,makerworld:`MakerWorld`,notifications:`Notifiche`,settings:`Impostazioni`,system:`Sistema`,collapseSidebar:`Comprimi barra laterale`,expandSidebar:`Espandi barra laterale`,update:`Aggiorna`,updateAvailable:`Aggiornamento disponibile: v{{version}}`,updateAvailableBanner:`Versione {{version}} disponibile!`,viewUpdate:`Vedi aggiornamento`,viewOnGithub:`Vedi su GitHub`,keyboardShortcuts:`Scorciatoie da tastiera (?)`,switchToLight:`Passa a tema chiaro`,switchToDark:`Passa a tema scuro`,switchToSystem:`Passa a tema di sistema`,smartSwitches:`Interruttori Smart`,logout:`Esci`,installApp:`Installa app`,installAppSuccess:`Bambuddy è stato installato`},common:{plusNMore:`+{{count}} altri`,save:`Salva`,saving:`Salvataggio...`,cancel:`Annulla`,delete:`Elimina`,edit:`Modifica`,add:`Aggiungi`,close:`Chiudi`,confirm:`Conferma`,loading:`Caricamento...`,error:`Errore`,errorLoading:`Errore di caricamento`,retry:`Riprova`,success:`Successo`,warning:`Avviso`,enabled:`Abilitato`,disabled:`Disabilitato`,yes:`Si`,no:`No`,on:`On`,off:`Spento`,all:`Tutti`,none:`Nessuno`,search:`Cerca`,filter:`Filtro`,sort:`Ordina`,refresh:`Aggiorna`,download:`Scarica`,upload:`Carica`,uploading:`Caricamento...`,uploadFailed:`Caricamento fallito`,actions:`Azioni`,status:`Stato`,name:`Nome`,description:`Descrizione`,date:`Data`,time:`Ora`,hours:`ore`,minutes:`minuti`,seconds:`secondi`,days:`giorni`,enable:`Abilita`,disable:`Disabilita`,permissions:`Permessi`,noPrinters:`Nessuna stampante configurata`,noData:`Nessun dato disponibile`,linkNotFound:`Link non trovato`,required:`Obbligatorio`,optional:`Opzionale`,dismiss:`Chiudi`,apply:`Applica`,reset:`Reimposta`,export:`Esporta`,import:`Importa`,clear:`Pulisci`,selectAll:`Seleziona tutto`,deselectAll:`Deseleziona tutto`,noChange:`— Nessun cambio —`,unchanged:`Invariato`,unassigned:`Non assegnato`,unknown:`Sconosciuto`,unknownError:`Errore sconosciuto`,today:`Oggi`,tomorrow:`Domani`,asap:`ASAP`,overdue:`Scaduto`,now:`Ora`,collapse:`Comprimi`,expand:`Espandi`,previous:`Precedente`,next:`Successivo`,viewArchive:`Vedi archivio`,viewInFileManager:`Vedi nel Gestore file`,addedBy:`Aggiunto da {{username}}`,prints:`stampe`,more:`+{{count}} altre`,ascending:`Crescente`,descending:`Decrescente`,back:`Indietro`,copy:`Copia`,copied:`Copiato!`,printer:`Stampante`,remove:`Rimuovi`,type:`Tipo`,print:`Stampa`,rename:`Rinomina`,move:`Sposta`,create:`Crea`,duplicate:`Duplica`,left:`Sinistra`,right:`Destra`,user:`Utente`,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 conto`,unlimited:`Illimitato`,budgetPolicyHint:`I saldi dei conti registrano i costi. La stampa è limitata solo dal budget del centro di costo selezionato; senza budget è illimitata.`,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:{addPreflight:{checking:`Verifica della connessione...`,warning:`Alcuni controlli di connessione non sono riusciti. Questa stampante potrebbe risultare offline. Controlla le verifiche qui sotto, risolvi ciò che puoi oppure salva comunque.`,back:`Indietro`,saveAnyway:`Salva comunque`},title:`Stampanti`,addPrinter:`Aggiungi Stampante`,editPrinter:`Modifica Stampante`,deletePrinter:`Elimina Stampante`,printerName:`Nome Stampante`,serialNumber:`Numero Seriale`,ipAddress:`Indirizzo IP`,accessCode:`Codice di Accesso`,model:`Modello`,nozzleCount:`Numero Ugelli`,autoArchive:`Auto Archiviazione`,status:{available:`Disponibile`,idle:`Inattiva`,printing:`In stampa`,paused:`In pausa`,offline:`Offline`,problem:`Problema`,error:`Errore`,finished:`Finita`,unknown:`Sconosciuto`},temperatures:{nozzle:`Ugello`,bed:`Piatto`,chamber:`Camera`},heaterHistory:{title:`Storico riscaldatori`,openLabel:`Visualizza storico riscaldatori`,nozzle:`Ugello`,nozzle2:`Ugello 2`,bed:`Piatto`,chamber:`Camera`,error:`Caricamento storico fallito`,empty:`Nessun dato registrato`},progress:`{{percent}}% completato`,timeRemaining:`{{time}} rimanente`,deleteConfirm:`Sei sicuro di eliminare "{{name}}"?`,maintenanceOk:`Manutenzione OK`,maintenanceWarning:`{{count}} avviso`,maintenanceWarning_plural:`{{count}} avvisi`,maintenanceDue:`{{count}} in scadenza`,maintenanceDue_plural:`{{count}} in scadenza`,sort:{name:`Nome`,status:`Stato`,model:`Modello`,location:`Posizione`,eta:`Tempo rimanente`,ascending:`Ordina crescente`,descending:`Ordina decrescente`},cardSize:{small:`Schede piccole`,medium:`Schede medie`,large:`Schede grandi`,extraLarge:`Schede extra grandi`},pageView:{openCamWallPage:`Apri il muro telecamere come pagina`,cards:`Schede`,camWall:`Muro telecamere`},camWall:{page:{tokenRejected:`Questo link al muro telecamere non è più valido. Il token potrebbe essere scaduto o essere stato revocato.`,loadFailed:`Impossibile caricare le stampanti.`},noPrinters:`Nessuna stampante da mostrare`,noSignal:`Nessun segnale`,live:`Live`,snap:`Foto`,off:`Spento`,summary:`{{live}} live, {{snap}} foto, {{total}} totali`,layer:`Strato {{cur}}/{{total}}`,timeLeft:`{{time}} rimanenti`,statusMode:{off:`Off`,compact:`Compatto`,full:`Completo`},settings:{title:`Impostazioni muro telecamere`,maxLive:`Max stream live`,maxLiveHint:`Quante tessere trasmettono in live contemporaneamente. Le altre si aggiornano come foto.`,snapshotInterval:`Intervallo foto (secondi)`,snapshotIntervalHint:`Con quale frequenza le tessere non live scaricano una nuova foto.`,statusOverlay:`Overlay di stato`,statusOverlayHint:`Compatto: solo badge di stato. Completo: + avanzamento, strato, tempo residuo.`}},hideOffline:`Nascondi offline`,nextAvailable:`Prossima disponibile`,powerOn:`Accendi`,offlinePrintersWithPlugs:`Stampanti offline con smart plug`,noPrintersConfigured:`Nessuna stampante configurata`,search:`Cerca stampanti...`,noSearchResults:`Nessuna stampante corrisponde alla tua ricerca o ai tuoi filtri`,filter:{allStatuses:`Tutti gli stati`,allLocations:`Tutti i luoghi`},toolbar:{filters:`Filtri`,view:`Vista`,actions:`Azioni`},readyToPrint:`Pronta a stampare`,external:`Esterna`,extL:`Ext-L`,extR:`Ext-R`,deleteArchives:`Elimina archivi stampa`,noLabel:`Nessuna etichetta`,printPreview:`Anteprima stampa`,width:`Larghezza`,height:`Altezza`,noObjectsFound:`Nessun oggetto trovato`,objectsLoadedOnPrintStart:`Gli oggetti sono caricati quando inizia una stampa`,willBeSkipped:`Verra saltato`,name:`Nome`,serialCannotBeChanged:`Il numero seriale non può essere cambiato`,locationHelp:`Usato per raggruppare stampanti e filtrare i lavori in coda`,wifiSignal:{veryWeak:`Molto debole`,weak:`Debole`,fair:`Discreto`,good:`Buono`,excellent:`Eccellente`},maintenanceUpToDate:`Tutta la manutenzione aggiornata - Clicca per vedere`,maintenance:{title:`In manutenzione`,subtitle:`Questa stampante è in pausa — non connessa, non idonea per la coda, nessuna notifica inviata.`,pillLabel:`Manutenzione`,exitButton:`Esci dalla manutenzione`,menuEnter:`Entra in modalità manutenzione`,menuExit:`Esci dalla modalità manutenzione`,toastEntered:`{{name}} è ora in modalità manutenzione`,toastExited:`{{name}} è di nuovo online`,confirmMidPrintTitle:`Entrare in modalità manutenzione durante la stampa?`,confirmMidPrintMessage:`{{name}} sta attualmente stampando. Entrare in modalità manutenzione disconnetterà MQTT e fermerà il tracciamento del progresso e le notifiche di completamento per questo lavoro. Continuare?`,editFieldLabel:`Modalità manutenzione`,editFieldHelp:`Quando attivata, questa stampante è in pausa da MQTT, dispatch della coda e notifiche — utile per riparazioni, installazioni Bambuddy parallele o sospensione temporanea.`},chamberLightOn:`Accendi luce camera`,chamberLightOff:`Spegni luce camera`,files:`File`,browseFiles:`Sfoglia file stampante`,autoOffAfterPrint:`Spegnimento automatico dopo stampa`,autoOffExecuted:`Spegnimento automatico eseguito - accendi la stampante per reimpostare`,hmsErrors:`Errori HMS`,viewHmsErrors:`Vedi {{count}} errore(i) HMS`,resume:`Riprendi`,pause:`Pausa`,stop:`Ferma`,camera:`Telecamera`,skipObject:`Salta Oggetto`,reconnect:`Riconnetti`,forceRefresh:`Forza aggiornamento`,forceRefreshSuccess:`Aggiornamento richiesto`,mqttDebug:`Debug MQTT`,printerInformation:`Informazioni stampante`,copyToClipboard:`Copia`,copied:`Copiato!`,state:`Stato`,wifiSignalLabel:`Segnale WiFi`,developerMode:`Modalità sviluppatore`,enabled:`Attivato`,disabled:`Disattivato`,addedOn:`Aggiunta il`,sdCard:`Scheda SD`,inserted:`Inserita`,notInserted:`Non inserita`,totalPrintHours:`Ore di stampa`,activeNozzle:`Attivo: ugello {{nozzle}}`,amsSwitchInletTooltip:`Filament Track Switch IN-{{inlet}} ({{side}}) — alimenta entrambi gli ugelli`,nozzleRack:`Rack Ugelli`,nozzleDocked:`Agganciato`,nozzleMounted:`Montato`,nozzleActive:`Attivo`,nozzleIdle:`Inattivo`,nozzleDiameter:`Diametro`,nozzleType:`Tipo`,nozzleStatus:`Stato`,nozzleFilament:`Filamento`,nozzleWear:`Usura`,nozzleMaxTemp:`Temp Max`,nozzleSerial:`Seriale`,nozzleHardenedSteel:`Acciaio Temprato`,nozzleStainlessSteel:`Acciaio Inox`,nozzleTungstenCarbide:`Carburo di Tungsteno`,nozzleFlow:`Flusso`,nozzleHighFlow:`Alto Flusso`,nozzleStandardFlow:`Standard`,firmwareUpdate:`Aggiornamento Firmware`,firmwareInstructions:`Sul touchscreen della stampante, vai a`,firmwareNav:`Vai a`,settings:`Impostazioni`,firmware:`Firmware`,discoverPrinters:`Trova Stampanti`,searching:`Ricerca...`,manualEntry:`Inserimento manuale`,addFromCloud:`Aggiungi da Cloud`,toast:{printerDeleted:`Stampante eliminata`,missingSpoolAssignment:`Stampa avviata su {{printer}}. Mancano assegnazioni bobina per: {{slots}}`,killSwitchTriggered:`L’interruttore di sicurezza della fatturazione ha arrestato una stampa non autorizzata su {{printer}}: {{filename}}`,billingChargeFailed:`La fatturazione di {{filename}} su {{printer}} non è riuscita. La prenotazione del budget è stata mantenuta; controlla i log del server.`,assignmentVerified:`Filamento caricato nello slot {{slot}} ({{printer}})`,assignmentVerifiedNoKprofile:`Slot {{slot}} su {{printer}} caricato, ma il profilo di calibrazione del flusso (profilo K) non è stato applicato`,assignmentNotConfirmed:`Impossibile confermare l'assegnazione dello slot {{slot}} su {{printer}} — controlla lo slot AMS`,printerAdded:`Stampante aggiunta`,printerUpdated:`Stampante aggiornata`,failedToDelete:`Impossibile eliminare stampante`,failedToAdd:`Impossibile aggiungere stampante`,connectionFailedNotAdded:`Impossibile connettersi alla stampante. Verifica IP, numero di serie e codice di accesso e conferma che la modalità solo LAN sia attiva. La stampante non è stata aggiunta.`,failedToUpdate:`Impossibile aggiornare stampante`,commandSent:`Comando inviato`,failedToSendCommand:`Impossibile inviare comando`,turnedOn:`{{name}} accesa`,failedToPowerOn:`Impossibile accendere {{name}}`,scriptTriggered:`Script avviato`,printStopped:`Stampa fermata`,printPaused:`Stampa in pausa`,printResumed:`Stampa ripresa`,referenceDeleted:`Riferimento eliminato`,detectionAreaSaved:`Area rilevamento salvata`,failedToRunScript:`Impossibile eseguire script`,failedToStopPrint:`Impossibile fermare stampa`,failedToPausePrint:`Impossibile mettere in pausa stampa`,failedToResumePrint:`Impossibile riprendere stampa`,failedToControlChamberLight:`Impossibile controllare luce camera`,failedToSetSpeed:`Impossibile impostare la velocità di stampa`,failedToUpdateSetting:`Impossibile aggiornare impostazione`,failedToSkipObjects:`Impossibile saltare oggetti`,failedToRereadRfid:`Impossibile rileggere RFID`,failedToCheckPlate:`Impossibile controllare piatto`,failedToUpdateLabel:`Impossibile aggiornare etichetta`,failedToDeleteReference:`Impossibile eliminare riferimento`,failedToSaveDetectionArea:`Impossibile salvare area rilevamento`,plateCheckEnabled:`Controllo piatto abilitato`,plateCheckDisabled:`Controllo piatto disabilitato`,calibrationSaved:`Calibrazione salvata!`,calibrationFailed:`Calibrazione non riuscita`,rfidRereadInitiated:`Rilettura RFID avviata`,loadInitiated:`Caricamento filamento…`,unloadInitiated:`Scaricamento filamento…`,failedToLoad:`Caricamento filamento fallito`,failedToUnload:`Scaricamento filamento fallito`},connection:{connected:`Connesso`,offline:`Offline`},plateStatus:{markCleared:`Segna il piatto come liberato`,cleared:`Piatto libero`,notCleared:`Piatto non libero`,inUse:`Piatto in uso`},queue:{inQueue:`{{count}} stampa in coda`,inQueue_plural:`{{count}} stampe in coda`},controls:`Controlli`,rfid:{reread:`Rileggi RFID`},ams:{load:`Carica`,unload:`Scarica`,feedTitle:`Caricare {{slot}} in quale ugello?`,feedPrompt:`Il Filament Track Switch può instradare questo slot verso entrambi gli hotend. Scegli quale alimentare.`,feedLeft:`Ugello sinistro`,feedRight:`Ugello destro`,feedAlreadyLoaded:`Già caricato`,switchNotReady:`Il Filament Track Switch non è ancora configurato. Assegna ogni AMS a un ingresso sulla stampante, poi riprova.`},bedJog:{limitWarning:`I limiti di corsa non vengono applicati durante i movimenti manuali: un bug del firmware Bambu ignora i finecorsa software per i comandi remoti. Muovi con cautela per evitare collisioni.`,title:`Controlli jog`,bed:`Piano`,step:`Passo (mm)`,up:`Sposta piano su`,down:`Sposta piano giù`,disabledWhilePrinting:`Disabilitato durante la stampa`,notHomedTitle:`Stampante non azzerata`,notHomedMessage:`La stampante non è stata azzerata dall'ultima stampa. Esegui prima l'azzeramento automatico per un posizionamento sicuro (parcheggia la testa di stampa, poi azzera X, Y e Z), oppure muovi comunque — i finecorsa software verranno ignorati.`,homeZ:`Azzeramento automatico`,moveAnyway:`Muovi comunque`,homingStarted:`Azzeramento automatico in corso…`},permission:{noAdd:`Non hai il permesso di aggiungere stampanti`,noEdit:`Non hai il permesso di modificare stampanti`,noDelete:`Non hai il permesso di eliminare stampanti`,noControl:`Non hai il permesso di controllare stampanti`,noFiles:`Non hai il permesso di accedere ai file stampante`,noAmsRfid:`Non hai il permesso di rileggere AMS RFID`,noSmartPlugControl:`Non hai il permesso di controllare smart plug`,noCamera:`Non hai il permesso di visualizzare le telecamere`},modal:{addTitle:`Aggiungi Stampante`,editTitle:`Modifica Stampante`,myPrinter:`La mia Stampante`,selectModel:`Seleziona modello...`,locationGroup:`Posizione / Gruppo (opzionale)`,locationPlaceholder:`es. Officina, Ufficio, Cantina`,autoArchiveLabel:`Archivia automaticamente stampe completate`,fromPrinterSettings:`Dalle impostazioni della stampante`,modelOptional:`Modello (opzionale)`,saveChanges:`Salva modifiche`},skipObjects:{tooltip:`Salta oggetti`,onlyWhilePrinting:`Salta oggetti (solo durante la stampa)`,requiresMultiple:`Salta oggetti (richiede 2+ oggetti)`,title:`Salta Oggetti`,matchIdsInfo:`Abbina gli ID con il display della stampante`,printerShowsIds:`Lo schermo mostra gli ID oggetto sul piatto`,skipSelected:`Salta selezionati`,skipping:`Saltando...`,noObjectsSelected:`Nessun oggetto selezionato`,selectObjectsToSkip:`Seleziona gli oggetti da saltare nella stampa corrente`,skipped:`saltato`,objectsSkipped:`Oggetti saltati`,activeCount:`{{count}} attivi`,waitForLayer:`Attendi il layer 2+ per saltare oggetti (attualmente layer {{layer}})`,skip:`Salta`,confirmTitle:`Saltare oggetto?`,confirmMessage:`Sei sicuro di voler saltare "{{name}}"? Questa azione non può essere annullata.`,confirmAllMessage:`Sono selezionati tutti gli oggetti rimanenti. Questo interromperà il processo di stampa. Continuare?`,confirmMultipleMessage:`Saltare {{count}} oggetti selezionati? Questa azione non può essere annullata.`},confirm:{deleteTitle:`Elimina Stampante`,deleteMessage:`Sei sicuro di eliminare "{{name}}"? Questo rimuoverà tutte le impostazioni di connessione.`,deleteArchivesNote:`Tutta la cronologia di stampa sarà eliminata definitivamente.`,keepArchivesNote:`La cronologia sarà mantenuta ma non più associata a questa stampante.`,stopTitle:`Ferma Stampa`,stopMessage:`Sei sicuro di fermare la stampa corrente su "{{name}}"? Questo annullerà il lavoro di stampa.`,stopButton:`Ferma Stampa`,pauseTitle:`Pausa Stampa`,pauseMessage:`Sei sicuro di mettere in pausa la stampa corrente su "{{name}}"?`,pauseButton:`Pausa Stampa`,resumeTitle:`Riprendi Stampa`,resumeMessage:`Sei sicuro di riprendere la stampa su "{{name}}"?`,resumeButton:`Riprendi Stampa`,powerOnTitle:`Accendi Stampante`,powerOnMessage:`Sei sicuro di accendere "{{name}}"?`,powerOnButton:`Accendi`,powerOffTitle:`Spegni Stampante`,powerOffMessage:`Sei sicuro di spegnere "{{name}}"?`,powerOffWarning:`AVVISO: "{{name}}" sta stampando! Sei sicuro di spegnere? Questo interromperà la stampa e potrebbe danneggiare la stampante.`,powerOffButton:`Spegni`,haToggleTitle:`Commuta "{{name}}"`,haToggleMessage:`Commutare l'entità Home Assistant {{entity}}? Questo potrebbe spegnere l'alimentazione se attualmente è accesa.`,haToggleWarning:`AVVISO: "{{name}}" sta stampando! La commutazione di {{entity}} potrebbe togliere l'alimentazione e interrompere la stampa. Continuare?`,haToggleButton:`Commuta`},bulk:{select:`Seleziona`,selectAll:`Seleziona tutto`,selectByLocation:`Seleziona per posizione`,selected:`{{count}} selezionato/i`,actions:{stop:`Ferma`,pause:`Pausa`,resume:`Riprendi`,clearPlate:`Svuota piano`,clearHMS:`Cancella notifiche`},confirm:{stopTitle:`Ferma {{count}} stampe`,stopMessage:`Questo annullerà le stampe attive su {{count}} stampante/i. Questa azione non può essere annullata.`,stopButton:`Ferma tutte`,pauseTitle:`Pausa {{count}} stampe`,pauseMessage:`Questo metterà in pausa le stampe attive su {{count}} stampante/i.`,pauseButton:`Pausa tutte`,clearPlateTitle:`Svuota {{count}} piani di stampa`,clearPlateMessage:`Questo svuoterà il piano di stampa su {{count}} stampante/i e potrebbe avviare i lavori in coda.`,clearPlateButton:`Svuota tutti`},success:`{{action}} completato su {{count}} stampante/i`,partial:`{{succeeded}} riuscito/i, {{failed}} fallito/i`,noneApplicable:`Nessuna stampante selezionata è nello stato corretto per questa azione`,selectByState:`Seleziona per stato`},discovery:{title:`Trova Stampanti`,searching:`Ricerca...`,scanning:`Scansione...`,scanProgress:`Scansione... {{scanned}}/{{total}}`,foundPrinters:`Trovate {{count}} stampante(i)`,noPrintersFound:`Nessuna stampante trovata`,noPrintersFoundSubnet:`Nessuna stampante trovata nella sottorete specificata.`,noPrintersFoundNetwork:`Nessuna stampante trovata sulla rete.`,allConfigured:`Tutte le stampanti trovate sono già configurate.`,alreadyAdded:`Già aggiunta`,select:`Seleziona`,manualEntry:`Inserimento manuale`,addFromCloud:`Aggiungi da Cloud`,subnetToScan:`Sottorete da scansionare`,dockerNote:`Docker rilevato. Inserisci la sottorete della stampante in notazione CIDR. Richiede network_mode: host in docker-compose.yml.`,scanSubnet:`Scansiona sottorete per stampanti`,discoverNetwork:`Trova stampanti in rete`,scanningSubnet:`Scansione sottorete per stampanti Bambu...`,scanningNetwork:`Scansione rete...`,serialRequired:`Seriale richiesto`,unknown:`Sconosciuto`,failedToStart:`Avvio ricerca non riuscito`,customSubnetOption:`Sottorete personalizzata...`,customSubnetLabel:`Sottorete personalizzata (CIDR)`,customSubnetNote:`Usa una sottorete personalizzata se la tua stampante è su una rete diversa da questo server. Le porte FTP (990) e MQTT (8883) devono essere raggiungibili attraverso il confine di routing.`},drying:{start:`Avvia essiccazione`,stop:`Ferma essiccazione`,temperature:`Temperatura`,duration:`Durata`,hours:`ore`,timeRemaining:`{{time}} rimanente`,active:`Essiccazione`,targetSummary:`{{filament}} @ {{temp}}°C`,notSupported:`Essiccazione non supportata`,powerRequired:`Collegare l'alimentatore AMS per abilitare l'asciugatura`,cannotDryNow:`L'AMS non può avviare l'asciugatura al momento`,startingDrying:`Avvio essiccazione...`,toastCommandSent:`Comando di essiccazione inviato`,toastStopped:`Essiccazione interrotta`,toastNotStarted:`La stampante ha accettato il comando, ma l'AMS non ha avviato l'essiccazione. Verifica che l'alimentatore dell'AMS sia collegato e che la stampante sia inattiva.`,screenOnly:`Su questa stampante l'essiccazione dell'AMS può essere comandata solo dallo schermo della stampante (limitazione di Bambu)`,stoppingDrying:`Arresto essiccazione...`,rotateTray:`Ruota la bobina durante l'essiccazione`,rotateUnavailableReason:`Non disponibile — uno slot di questo AMS è caricato verso la testa di stampa. La bobina è bloccata dal tubo di alimentazione e non può ruotare. Ritrai prima il filamento.`,startMode:`Ora di avvio`,modeNow:`Ora`,modeDelay:`Dopo un ritardo`,modeAtTime:`A un orario`,schedule:`Pianifica`,scheduledFor:`Asciugatura pianificata per {{time}}`,scheduledAsap:`Asciugatura pianificata (in attesa della stampante)`,cancelScheduled:`Annulla asciugatura pianificata`,scheduleFailed:`Pianificazione dell'asciugatura non riuscita`,retractFilament:`Ritrarre il filamento dall'uscita dell'AMS per avviare l'asciugatura`,waitingAmsNotFound:`In attesa del rilevamento dell'AMS`,waitingOffline:`In attesa che la stampante torni online`,waitingPrinterBusy:`In attesa che la stampante sia libera`,waitingAlreadyDrying:`In attesa che termini il ciclo di asciugatura in corso`,waitingInterrupted:`Interrotta, riprenderà quando la stampante sarà libera`,scheduleFailedReason:`Asciugatura pianificata non riuscita: {{reason}}`,scheduleFailedUnknown:`Errore sconosciuto`,dismissFailed:`Ignora`},amsBackup:{titleOn:`AMS Filament Backup è ATTIVO. Clicca per disabilitare.`,titleOff:`AMS Filament Backup è DISATTIVATO. Clicca per abilitare.`,titleUnknown:`Stato di AMS Filament Backup non disponibile su questa stampante.`,toastEnabled:`AMS Filament Backup abilitato`,toastDisabled:`AMS Filament Backup disabilitato`,modalTitle:`AMS Filament Backup`,modalHelp:`Quando lo slot attivo si esaurisce, la stampante passa agli slot con lo stesso preset e colore in quest'ordine.`,modalNoSlots:`Nessun filamento caricato.`,modalNoPairs:`Nessuna coppia di backup — nessuno slot condivide preset e colore.`,extruderRightShort:`D`,extruderLeftShort:`S`,stateOn:`Abilitato`,stateOff:`Disabilitato`,stateUnknown:`Non supportato su questa stampante`},activeJobSlot:{title:`Questo slot è il filamento {{n}} nella stampa attiva`,ariaLabel:`Slot stampa attiva {{n}}`},expectedSlot:{title:`La stampante è in attesa di filamento in questo slot`,ariaLabel:`Slot filamento previsto {{n}}`,label:`{{ams}} · Slot {{slot}}`,external:`Bobina esterna`},filaments:`Filamenti`,externalSpool:{hide:`Nascondi bobina esterna`,show:`Mostra bobina esterna`},openCameraOverlay:`Apri overlay camera`,openCameraWindow:`Apri camera in nuova finestra`,firmwareUpdateAvailable:`Aggiornamento firmware disponibile: {{current}} → {{latest}}`,firmwareUpToDate:`Firmware {{version}} — Aggiornato`,firmwareUpdateButton:`Aggiorna`,plateDetection:{noPermission:`Non hai il permesso di aggiornare le stampanti`,enabledClick:`Controllo piatto abilitato - Clicca per disabilitare`,disabledClick:`Controllo piatto disabilitato - Clicca per abilitare`,manageCalibration:`Gestisci calibrazione rilevamento piatto`,calibrationRequired:`Calibrazione richiesta`,calibrationInstructions:`Assicurati che il piatto sia completamente vuoto, poi clicca Calibra.`,calibrationDescription:`La calibrazione salva un'immagine di riferimento del piatto vuoto. I controlli futuri confronteranno con questo riferimento per rilevare oggetti.`,calibrationTip:`Suggerimento: Puoi salvare fino a 5 calibrazioni per piatti diversi. Il sistema usa automaticamente la migliore corrispondenza durante il controllo.`,plateEmpty:`Il piatto sembra vuoto`,objectsDetected:`Oggetti rilevati sul piatto`,confidence:`Confidenza`,difference:`Differenza`,analysisPreview:`Anteprima analisi:`,analysisLegend:`Riquadro verde = area rilevamento, overlay rosso = differenze dalla calibrazione`,savedReferences:`Riferimenti salvati ({{count}}/{{max}})`,deleteReference:`Elimina riferimento`,labelPlaceholder:`Etichetta...`,clickToEdit:`{{label}} - Clicca per modificare`,clickToAddLabel:`Clicca per aggiungere etichetta`},speed:{title:`Velocità di stampa`,silent:`Silenzioso (50%)`,standard:`Standard (100%)`,sport:`Sport (124%)`,ludicrous:`Ludicrous (166%)`},airduct:{title:`Modalità condotto d'aria`,cooling:`Raffreddamento`,heating:`Riscaldamento`},noSdCard:`Nessuna SD`,door:{open:`Aperta`,closed:`Chiusa`},fans:{partCooling:`Ventola raffreddamento parte`,auxiliary:`Ventola ausiliaria`,leftAuxiliary:`Ventola ausiliaria sinistra`,exhaust:`Estrazione`,chamber:`Ventola camera`},clickToViewHmsErrors:`Clicca per vedere errori HMS`,aiDetection:{safe:`Sicuro`,warning:`Avviso`,failure:`Guasto`,idle:`Inattiva`,error:`Non controlla`,unknown:`Avvio`,tooltipError:`Il rilevamento guasti con IA non sta controllando questa stampa: {{reason}} - clicca per i dettagli`,tooltipUnknown:`Rilevamento guasti con IA: in attesa del primo risultato - clicca per i dettagli`,errorHint:`Questa stampa non viene controllata. Il rilevamento riprenderà automaticamente una volta risolto il problema indicato sotto.`,tooltip:`Rilevamento guasti con IA: {{status}} (punteggio {{score}}) - clicca per i dettagli`,tooltipIdle:`Rilevamento guasti con IA attivo - il monitoraggio inizia con la prossima stampa - clicca per i dettagli`,modalTitle:`Rilevamento guasti con IA - {{name}}`,currentStatus:`Stato`,score:`Punteggio`,framesAnalyzed:`Fotogrammi analizzati`,idleHint:`Al momento nessuna stampa è monitorata. Il monitoraggio inizia automaticamente con la prossima stampa.`,lastError:`Ultimo errore`,openSettings:`Apri impostazioni`},estimatedCompletion:`Tempo completamento stimato`,plateNumber:`Piastra {{number}}`,slotOptions:`Opzioni slot`,amsPopup:{friendlyName:`Nome AMS`,friendlyNamePlaceholder:`es. Nome AMS amichevole`,serialNumber:`Numero di serie`,firmwareVersion:`Firmware`,save:`Salva`,clear:`Cancella`,noEditPermission:`Non hai il permesso di rinominare le unità AMS`},firmwareModal:{title:`Aggiornamento Firmware`,titleUpToDate:`Info Firmware`,currentVersion:`Corrente:`,latestVersion:`Ultima:`,releaseNotes:`Note di rilascio`,checkingPrereqs:`Controllo prerequisiti...`,sdCardReady:`SD pronta. Clicca sotto per caricare firmware.`,uploadedSuccess:`Firmware caricato su SD!`,applyInstructions:`Per applicare l'aggiornamento sulla stampante:`,step1:`Sul touchscreen della stampante, vai a Impostazioni`,step2:`Vai a Firmware`,step3:`Seleziona Aggiorna da SD`,step4:`L'aggiornamento richiede 10-20 minuti`,done:`Fatto`,starting:`Avvio...`,uploadFirmware:`Carica Firmware`,uploadFailed:`Avvio caricamento fallito: {{error}}`,uploadedToast:`Firmware caricato! Avvia aggiornamento dal display.`,availableVersions:`Versioni disponibili`,usable:`Utilizzabile`,unavailable:`Non disponibile`,installed:`Installato`,newerBadge:`più recente`,olderBadge:`più vecchio`,currentBadge:`attuale`},accessCodePlaceholder:`Lascia vuoto per mantenere quello attuale`,roi:{title:`Area di rilevamento (ROI)`,xStart:`X Inizio`,yStart:`Y Inizio`,width:`Larghezza`,height:`Altezza`,instruction:`Regola l'area di rilevamento per focalizzare il piatto. Il riquadro verde mostra l'area corrente.`},developerModeWarning:`La modalità sviluppatore LAN non è attivata su: {{names}}. Alcune funzionalità potrebbero non funzionare.`,howToEnable:`Come attivare`,incompatibleFile:`Questo file è stato preparato per {{slicedFor}}, ma questa stampante è una {{printerModel}}`,dropNotPrintable:`Solo i file .gcode e .gcode.3mf possono essere stampati`,dropToPrint:`Rilascia per stampare`,dropToQueue:`Rilascia per accodare`},archives:{media:{title:`Video della stampa`,download:`Scarica i video della stampa`,searching:`Ricerca dei video sulla stampante…`,searchFailed:`Impossibile cercare i video sulla stampante.`,none:`Non sono stati trovati timelapse o segmenti della videocamera IP per questa stampa.`,attachedTimelapse:`Timelapse allegato`,printerFiles:`File ancora presenti sulla stampante`,downloadSelected:`Scarica selezionati`,printerMissing:`La stampante non è più configurata`,timelapseUnavailable:`Impossibile leggere la cartella dei timelapse`,ipcamUnavailable:`Impossibile leggere la cartella della videocamera IP`},title:`Archivi di stampa`,no3mfBanner:{title:`Alcune stampe recenti non sono state archiviate con la miniatura`,body:`Lo slicer non ha lasciato il file .gcode.3mf sulla scheda SD della stampante, quindi Bambuddy non ha potuto recuperare né la miniatura né i metadati dello slicer. Solitamente accade perché "Memorizza file inviati su archiviazione esterna" è disattivato nello slicer (scheda Dispositivo di Bambu Studio / OrcaSlicer).`,docsLink:`Vedi passo 4 dell'installazione`,docsLinkInternalStorage:`Perché succede`,titleInternalStorage:`Alcune stampe recenti sono rimaste nella memoria interna della stampante`,bodyInternalStorage:`Bambu Studio ha messo il file elaborato nella memoria interna della stampante anziché sulla scheda, quindi Bambuddy non aveva nulla da leggere via FTP. Sulla serie H2 e sulla P2S il pulsante «Stampa» lo fa sempre: solo «Invia» offre una scelta, e anche quella è impostata su «Cache». Quelle stampe restano archiviate con nome e tempi, solo senza miniatura né metadati dello slicer. Per archivi completi, avvia la stampa da Bambuddy oppure elabora in OrcaSlicer, oppure in Bambu Studio usa «Invia» con «Esterna» e avvia la stampa dopo. Tutte richiedono una scheda o una chiavetta nella stampante.`,titleNoExternalStorage:`Alcune stampe recenti non sono state archiviate — nessuna memoria nella stampante`,bodyNoExternalStorage:`La stampante non rileva né scheda né chiavetta nel suo slot, quindi il file elaborato non aveva dove finire e Bambuddy nulla da leggere. Inseriscine una e la prossima stampa verrà archiviata per intero.`,titleInternalHistory:`Alcune stampe recenti sono partite da un file già presente sulla stampante`,bodyInternalHistory:`Quelle stampe sono uscite dalla libreria della stampante stessa: una ristampa dal suo schermo, un avvio da Handy o un file inviato prima e stampato dopo. Bambuddy legge i file di stampa via FTP, che serve solo la scheda o la chiavetta, mentre la stampante tiene quella libreria in un'area che l'FTP non raggiunge, quindi non c'era alcun 3MF da leggere. Nessuna impostazione dello slicer cambia questo, perché per queste stampe non è stato inviato nulla. Restano archiviate con nome e tempi, e «Modifica archivio» consente di inserire a mano il filamento usato. Per un archivio completo, avvia la stampa da Bambuddy o dal tuo slicer.`,dismissLabel:`Chiudi questo avviso`},searchPlaceholder:`Cerca archivi...`,filterByPrinter:`Filtra per stampante`,filterByStatus:`Filtra per stato`,sortBy:`Ordina per`,sortNewest:`Più recenti`,sortOldest:`Meno recenti`,sortName:`Nome`,sortDuration:`Durata`,sortLargest:`Più grandi`,sortSmallest:`Più piccoli`,sortSize:`Dimensione`,noArchives:`Nessun archivio trovato`,noArchivesSearch:`Nessun archivio corrisponde alla ricerca`,originalPrintNotVisible:`Stampa originale non visibile - prova a rimuovere i filtri`,noArchivesYet:`Nessun archivio ancora`,prints:`stampe`,pagination:{showing:`Mostrando`,to:`a`,of:`di`,show:`Mostra`,page:`Pagina`,all:`Tutti`},loadingArchives:`Caricamento archivi...`,releaseToUpload:`Rilascia per caricare`,showAll:`Mostra tutti`,showFavoritesOnly:`Solo preferiti`,gridView:`Vista griglia`,listView:`Vista elenco`,calendarView:`Vista calendario`,logView:`Registro stampe`,manageTags:`Gestisci tag`,showFailedPrints:`Mostra stampe fallite`,hideFailedPrints:`Nascondi stampe fallite`,hideDuplicates:`Nascondi duplicati`,viewOriginalPrint:`Fai clic per visualizzare la stampa originale (#{{id}})`,printTime:`Tempo di stampa`,filamentUsed:`Filamento usato`,cost:`Costo`,preview:`Anteprima`,deleteArchive:`Elimina archivio`,deleteConfirm:`Sei sicuro di eliminare questo archivio?`,favorite:`Preferito`,unfavorite:`Rimuovi dai preferiti`,viewDetails:`Vedi dettagli`,status:{completed:`Completato`,failed:`Fallito`,stopped:`Fermato`},toast:{source3mfAttached:`Sorgente 3MF allegata: {{filename}}`,failedUploadSource3mf:`Caricamento sorgente 3MF non riuscito`,source3mfRemoved:`Sorgente 3MF rimossa`,failedRemoveSource3mf:`Rimozione sorgente 3MF non riuscita`,f3dAttached:`F3D allegato: {{filename}}`,failedUploadF3d:`Caricamento F3D non riuscito`,f3dRemoved:`F3D rimosso`,failedRemoveF3d:`Rimozione F3D non riuscita`,timelapseAttached:`Timelapse allegato: {{filename}}`,timelapseAlreadyAttached:`Timelapse già allegato`,noMatchingTimelapse:`Nessun timelapse corrispondente`,failedScanTimelapse:`Scansione timelapse non riuscita`,failedAttachTimelapse:`Allegato timelapse non riuscito`,timelapseRemoved:`Timelapse rimosso`,failedRemoveTimelapse:`Impossibile rimuovere il timelapse`,timelapseUploaded:`Timelapse caricato: {{filename}}`,failedUploadTimelapse:`Impossibile caricare il timelapse`,archiveDeleted:`Archivio eliminato`,failedDeleteArchive:`Eliminazione archivio non riuscita`,addedToFavorites:`Aggiunto ai preferiti`,removedFromFavorites:`Rimosso dai preferiti`,projectUpdated:`Progetto aggiornato`,failedUpdateProject:`Aggiornamento progetto non riuscito`,linkCopied:`Link copiato negli appunti`,failedCopyLink:`Copia link non riuscita`,photoDeleted:`Foto eliminata`,failedDeletePhoto:`Eliminazione foto non riuscita`,failedDeleteArchives:`Eliminazione archivi non riuscita`,failedUpdateFavorites:`Aggiornamento preferiti non riuscito`,exportDownloaded:`Export scaricato`,exportFailed:`Export non riuscito`},menu:{print:`Stampa`,openInBambuStudio:`Apri nello slicer`,slice:`Slice`,externalLink:`Link esterno`,viewOnMakerWorld:`Vedi su MakerWorld`,preview3d:`Anteprima 3D`,viewTimelapse:`Vedi Timelapse`,scanForTimelapse:`Cerca Timelapse`,uploadTimelapse:`Carica timelapse`,removeTimelapse:`Rimuovi timelapse`,downloadSource3mf:`Scarica Sorgente 3MF`,uploadSource3mf:`Carica Sorgente 3MF`,replaceSource3mf:`Sostituisci Sorgente 3MF`,removeSource3mf:`Rimuovi Sorgente 3MF`,uploadF3d:`Carica F3D`,replaceF3d:`Sostituisci F3D`,downloadF3d:`Scarica F3D`,removeF3d:`Rimuovi F3D`,download:`Scarica`,copyDownloadLink:`Copia link download`,qrCode:`Codice QR`,viewPhotos:`Vedi foto`,viewPhotosCount:`Vedi foto ({{count}})`,projectPage:`Pagina progetto`,addToFavorites:`Aggiungi ai preferiti`,removeFromFavorites:`Rimuovi dai preferiti`,edit:`Modifica`,printLog:`Registro stampe`,goToProject:`Vai al progetto: {{name}}`,addToProject:`Aggiungi al progetto`,removeFromProject:`Rimuovi dal progetto`,loading:`Caricamento...`,noProjectsAvailable:`Nessun progetto disponibile`,searchProjects:`Cerca progetti…`,select:`Seleziona`,deselect:`Deseleziona`,delete:`Elimina`},permission:{noReprint:`Non hai il permesso di ristampare questo archivio`,noAddToQueue:`Non hai il permesso di aggiungere alla coda`,noUpdateArchives:`Non hai il permesso di aggiornare archivi`,noUploadFiles:`Non hai il permesso di caricare file`,noDownload:`Non hai il permesso di scaricare archivi`,noCopyLink:`Non hai il permesso di copiare link download`,noDelete:`Non hai il permesso di eliminare questo archivio`,noEdit:`Non hai il permesso di modificare questa voce`,noCreate:`Non hai il permesso di creare archivi`},platePicker:{title:`Seleziona la piastra da visualizzare`,hint:`Questo archivio contiene più piastre. Scegline una da aprire nel visualizzatore GCode.`,plateLabel:`Piastra {{index}}`,objectCount:`{{count}} oggetto`,objectCount_plural:`{{count}} oggetti`,noGcode:`Questo archivio non contiene G-code generato da visualizzare. Aprilo prima in Bambu Studio per sezionarlo.`},card:{previousPlate:`Piatto precedente`,nextPlate:`Piatto successivo`,plateNumber:`Piatto {{index}}`,moreOptions:`Clic destro per altre opzioni`,addToFavorites:`Aggiungi ai preferiti`,removeFromFavorites:`Rimuovi dai preferiti`,cancelled:`annullato`,failed:`fallito`,duplicate:`duplicato`,duplicateTitle:`Questo modello è stato stampato prima`,openSource3mf:`Apri sorgente 3MF in Bambu Studio (clic destro per altre opzioni)`,downloadF3d:`Scarica file design Fusion 360`,viewTimelapse:`Vedi timelapse`,viewPhoto:`Vedi 1 foto`,viewPhotos:`Vedi {{count}} foto`,openFolder:`Apri cartella: {{name}}`,slicedFile:`File slice - pronto a stampare`,sourceFile:`Solo file sorgente - nessuna mappatura AMS disponibile`,gcode:`GCODE`,source:`SOURCE`,project:`Progetto: {{name}}`,runsBadge:`{{count}} stampe`,runsBadgeTitle:`{{count}} stampe in totale — {{successful}} riuscite, {{failed}} fallite. Fai clic per vedere il registro completo.`,estimated:`Stimato: {{time}}`,actual:`Reale: {{time}}`,accuracy:`Accuratezza: {{percent}}%`,filament:`{{weight}} g`,layer:`{{count}} strato`,layers:`{{count}} strati`,object:`{{count}} oggetto`,objects:`{{count}} oggetti`,slicedFor:`Sliced per {{model}}`,uploadedBy:`Caricato da`,noPermissionReprint:`Non hai il permesso di ristampare`,noFileForReprint:`Nessun file 3MF disponibile — il file non è stato scaricato dalla stampante durante la registrazione`,slicerAmsMapping:`Mappatura AMS salvata ({{printer}})`,slicerAmsMappingTooltip:`La scelta dello slot AMS fatta dallo slicer è stata salvata per {{printer}}. I numeri di slot hanno senso solo su quella stampante, quindi una ristampa li riutilizza solo se torna su {{printer}}.`,noPermissionEdit:`Non hai il permesso di modificare archivi`,noPermissionDelete:`Non hai il permesso di eliminare archivi`,openInBambuStudio:`Apri nello slicer`,openInBambuStudioToSlice:`Apri nello slicer per slicing`,slice:`Slice`,externalLink:`Link esterno`,makerWorld:`MakerWorld – {{designer}}`,viewProject:`Vedi progetto`,noExternalLink:`Nessun link esterno`,preview3d:`Anteprima 3D`,download:`Scarica`,edit:`Modifica`,delete:`Elimina`},runLog:{title:`Registro stampe`,modalTitle:`Registro stampe — {{name}}`,modalTitleFallback:`questo archivio`,empty:`Nessun evento di stampa ancora registrato per questo archivio.`,col:{date:`Data`,status:`Stato`,duration:`Durata`,filament:`Filamento`,cost:`Costo`},status:{completed:`Completata`,failed:`Fallita`,cancelled:`Annullata`,stopped:`Interrotta`,skipped:`Saltata`,printing:`In stampa`}},modal:{deleteArchive:`Elimina Archivio`,deleteConfirm:`Sei sicuro di eliminare "{{name}}"? Questa azione non può essere annullata.`,deleteButton:`Elimina`,deletePurgeStats:`Rimuovi anche questa stampa dalle Quick Stats (filamento, tempo, costo, energia)`,deleteQueueItemsWarning:`{{count}} elemento/i in coda collegato/i a questo archivio verrà/verranno rimosso/i.`,deleteBlockedByPrinting:`Impossibile eliminare — {{count}} elemento/i in coda sono attualmente in stampa. Interrompi la stampa, poi riprova.`,removeSource3mf:`Rimuovi Sorgente 3MF`,removeSource3mfConfirm:`Sei sicuro di rimuovere il file sorgente 3MF da "{{name}}"? Questo eliminerà il progetto slicer originale.`,removeButton:`Rimuovi`,removeF3d:`Rimuovi F3D`,removeF3dConfirm:`Sei sicuro di rimuovere il file Fusion 360 da "{{name}}"?`,removeTimelapse:`Rimuovi timelapse`,removeTimelapseConfirm:`Sei sicuro di voler rimuovere il video timelapse da "{{name}}"?`,timelapse:`{{name}} – Timelapse`,selectTimelapse:`Seleziona Timelapse`,selectTimelapseDesc:`Nessun abbinamento automatico trovato. Seleziona il timelapse per questa stampa:`,deleteArchives:`Elimina Archivi`,deleteArchivesConfirm:`Sei sicuro di eliminare {{count}} archivio(i)? Questa azione non può essere annullata.`,deleteCount:`Elimina {{count}}`},page:{title:`Archivi`,printsCount:`{{filtered}} di {{total}} stampe`,dropFilesHere:`Rilascia file .3mf qui`,releaseToUpload:`Rilascia per caricare`,only3mfSupported:`Solo file .3mf supportati`,close:`Chiudi`,selected:`{{count}} selezionati`,selectAll:`Seleziona tutto`,tags:`Tag`,project:`Progetto`,favorite:`Preferito`,delete:`Elimina`,toggledFavorites:`Preferiti aggiornati per {{count}} archivio(i)`,failedUpdateFavorites:`Aggiornamento preferiti non riuscito`,archivesDeleted:`{{count}} archivio(i) eliminati`,failedDeleteArchives:`Eliminazione archivi non riuscita`,photoDeleted:`Foto eliminata`,failedDeletePhoto:`Eliminazione foto non riuscita`},list:{name:`Nome`,printer:`Stampante`,date:`Data`,size:`Dimensione`,actions:`Azioni`,hasTimelapse:`Ha timelapse`},log:{date:`Data`,printName:`Nome stampa`,printer:`Stampante`,user:`Utente`,status:`Stato`,duration:`Durata`,filament:`Filamento`,filamentUsed:`Filamento usato`,cost:`Costo`,energy:`Energia`,energyCost:`Costo energia`,completedAt:`Completato`,columns:`Colonne`,sortBy:`Ordina per {{column}}`,allPrinters:`Tutte le stampanti`,allUsers:`Tutti gli utenti`,allStatuses:`Tutti gli stati`,cancelled:`Annullato`,skipped:`Saltato`,dateFrom:`Dal`,dateTo:`Al`,noEntries:`Nessuna voce di registro trovata`,showing:`{{count}} di {{total}} voci`,rowsPerPage:`Righe`,page:`Pagina`,prev:`Prec.`,next:`Succ.`,clearLog:`Cancella registro`,clearLogTitle:`Cancella registro stampe`,clearLogConfirm:`Tutte le voci del registro di stampa verranno eliminate permanentemente. Gli archivi e gli elementi della coda non sono interessati. Questa azione non può essere annullata. Sei sicuro?`,clearLogButton:`Cancella tutto`,cleared:`{{count}} voci di registro cancellate`,clearFailed:`Impossibile cancellare il registro stampe`,deleteEntryTitle:`Elimina voce del registro stampe`,deleteEntryConfirm:`Questa voce verrà rimossa dal registro e i suoi contributi di filamento, tempo e costo verranno scartati dalle statistiche rapide. L'archivio corrispondente (se presente) non è interessato. Questa azione non può essere annullata.`,entryDeleted:`Voce del registro stampe eliminata`,entryDeleteFailed:`Impossibile eliminare la voce del registro stampe`,editEntryTitle:`Modifica voce del registro stampe`,editEntryDescription:`Classifica questa stampa. Il widget Analisi guasti raggruppa per questi valori, quindi gli aggiornamenti vengono riflessi immediatamente nelle statistiche.`,entryUpdated:`Voce del registro aggiornata`,entryUpdateFailed:`Impossibile aggiornare la voce del registro`,statuses:{completed:`Completata`,failed:`Fallita`,stopped:`Fermata`,cancelled:`Annullata`,skipped:`Saltata`}}},dispatchToast:{untitled:`Lavoro di stampa`,startingPrints:`Avvio delle stampe`,progressSummary:`{{complete}}/{{total}} completate • In corso: {{processing}}`,expandDetails:`Espandi i dettagli dell'invio`,collapseDetails:`Comprimi i dettagli dell'invio`,awaitingPrinter:`In attesa della stampante…`,status:{processing:`In corso`,completed:`Completata`,failed:`Fallita`},failed:{generic:`Invio fallito`,upload_failed:`Caricamento sulla stampante fallito`,start_command_failed:`La stampante ha rifiutato il comando di avvio`},dismiss:`Chiudi`},pipelineRuns:{title:`Esecuzioni pipeline`,loading:`Caricamento…`,empty:`Nessuna esecuzione di pipeline ancora.`,filter:{pipeline:`Pipeline`,status:`Stato`,target:`Destinazione`,all:`Tutte`,allPipelines:`Tutte le pipeline`,allStatus:`Tutti gli stati`,allTargets:`Tutte le destinazioni`,clear:`Pulisci filtri`,noMatches:`Nessuna esecuzione corrisponde ai filtri attuali.`},totalCount_one:`{{n}} esecuzione`,totalCount_other:`{{n}} esecuzioni`,copies:`{{n}} copie`,failedCount:`{{n}} fallite`,copyN:`Copia {{n}}`,retryFailed:`Riprova fallite`,retryOf:`ritentativo di #{{n}}`,pagination:`{{start}}–{{end}} di {{total}}`,toast:{cancelled:`Esecuzione annullata`,cancelFailed:`Annullamento fallito`,retryStarted:`Ritentativo avviato`,retryFailed:`Ritentativo fallito`,cleared:`{{n}} esecuzioni eliminate`,clearFailed:`Eliminazione fallita`},clearLog:`Cancella cronologia`,clearConfirmTitle:`Cancellare la cronologia?`,clearConfirmBody:`Eliminare tutte le esecuzioni di pipeline completate, fallite, annullate e con fallimento parziale? Le esecuzioni in corso sono conservate. Questa operazione non può essere annullata.`,clearConfirmAction:`Cancella`,jobStatus:{pending:`in attesa`,awaiting_printer:`in attesa stampante`,queued:`in coda`,printing:`stampa`,completed:`completata`,failed:`fallita`,cancelled:`annullata`},cancelledByUser:`Annullato dall'utente`},queue:{filamentShort:{rowBadge:`Filamento insufficiente per la bobina assegnata`,rowTooltip:`Lo scheduler ha segnalato questo elemento. Premi Play per vedere il deficit per slot e decidere se stampare comunque.`,confirmTitle:`Filamento insufficiente`,confirmIntro:`La bobina assegnata non puo coprire almeno uno slot. Stampare comunque?`,lineItem:`Slot {{slot}}: servono {{required}} g, rimangono {{remaining}} g`,unknown:`sconosciuto`,printAnyway:`Stampa comunque`},slicerAmsMapping:{rowBadge:`Slot AMS salvati per questa stampante`,rowTooltip:`Questo archivio conserva gli slot AMS esatti scelti dallo slicer, salvati per la stampante di questo elemento. Una ristampa su di essa può riutilizzare quelle bobine invece di rifare l'abbinamento per tipo e colore.`},title:`Coda di stampa`,subtitle:`Programma e gestisci i tuoi lavori di stampa`,editQueueItem:`Modifica elemento coda`,selectAllPlates:`Seleziona tutte le {{count}} piastre`,deselectAll:`Deseleziona tutto`,printQueued:`Stampa in coda`,printQueuedWillStartWhenIdle:`Si avvierà quando la stampante sarà inattiva`,itemsQueued:`{{count}} elementi in coda`,sending:`Invio...`,sendingProgress:`Invio {{current}}/{{total}}...`,adding:`Aggiunta...`,addingProgress:`Aggiunta {{current}}/{{total}}...`,savingProgress:`Salvataggio {{current}}/{{total}}...`,clearQueue:`Svuota coda`,clearHistory:`Svuota cronologia`,emptyQueue:`La coda è vuota`,position:`Posizione`,scheduledTime:`Ora programmata`,moveUp:`Sposta su`,moveDown:`Sposta giù`,startNow:`Avvia ora`,printingInProgress:`Stampa in corso...`,viewArchive:`Vedi archivio`,viewInFileManager:`Vedi nel Gestore file`,itemCount:`{{count}} elemento`,itemCount_plural:`{{count}} elementi`,dragToReorder:`Trascina per riordinare (solo ASAP)`,reorderHint:`La posizione influisce solo sugli elementi ASAP. Quelli programmati partono all'orario.`,sjf:{label:`SJF`,tooltip:`Lavoro più breve prima — lo scheduler dà priorità alle stampe più brevi`},addedBy:`Aggiunto da {{name}}`,nextInQueue:`Prossimo in coda`,clearPlateSuccess:`Piatto liberato — pronto per la prossima stampa`,plateNumber:`Piatto {{index}}`,quantity:`Quantità`,quantityHint:`Crea {{count}} elementi in coda`,plateQuantityLabel:`Stampe di {{plate}}`,plateQuantityTotal_one:`{{count}} stampa in totale`,plateQuantityTotal_other:`{{count}} stampe in totale`,batchOrders:{title:`Ordini in lotto`,emptyTitle:`Nessun ordine in lotto`,emptyDescription:`Metti in coda un file multi-piatto, o più copie di un piatto, e l'ordine compare qui con il suo avanzamento.`,filter:{active:`Attivi`,completed:`Completati`,cancelled:`Annullati`,all:`Tutti`},status:{active:`Attivo`,completed:`Completato`,cancelled:`Annullato`},noTargets:`Solo raggruppamento`,noTargetsHint:`Creato prima delle quantità per piatto: tiene traccia delle stampe in coda anziché di un obiettivo.`,dispatchRemaining:`Accoda {{count}} rimanenti`,dispatchPlate:`Accoda le rimanenti`,strandedPlate:`Nessuna impostazione da copiare`,strandedNotice:`Impossibile accodare {{runs}} delle {{owed}} stampe ancora dovute: per quella piastra non resta alcuna stampa in coda o completata da cui copiare le impostazioni. Accoda la piastra una volta dal file oppure annulla la commessa.`,dispatched:`Stampe rimanenti accodate per {{name}}`,plateProgress:`{{completed}} di {{target}} fatte`,remaining:`{{count}} ancora dovute`,failed:`{{count}} fallite`,printing:`{{count}} in stampa`,wholeFile:`Intero file`,due:`Scadenza {{date}}`,costSoFar:`{{amount}} finora`,costRemaining:`({{amount}} da spendere)`},activeBatches:`Lotti attivi`,batchProgress:`{{completed}} di {{total}} completati`,cancelBatch:`Annulla rimanenti`,batchCancelled:`Elementi rimanenti del lotto annullati`,cancelBatchConfirmTitle:`Annulla lotto`,cancelBatchConfirmMessage:`Chiudere questa commessa? Le stampe ancora in coda vengono annullate e la commessa smette di richiedere ciò che non ha prodotto.`,batch:{defaultName:`Lotto`,label:`{{count}} elemento`,label_plural:`{{count}} elementi`,pendingCount:`{{count}} in attesa`,pendingCount_plural:`{{count}} in attesa`,expand:`Espandi lotto`,collapse:`Comprimi lotto`,groupAsBatch:`Raggruppa come lotto…`,groupAsBatchDescription:`Combina gli {{count}} elementi selezionati in un unico lotto comprimibile.`,nameLabel:`Nome lotto`,namePlaceholder:`es. Regali del venerdì`,create:`Crea lotto`,ungroup:`Separa`,ungroupConfirmTitle:`Separare il lotto?`,ungroupConfirmMessage:`Gli elementi resteranno in coda ma non saranno più raggruppati.`,dragGroup:`Trascina gruppo`},tabs:{batches:`Lotti`,queue:`Coda`,history:`Cronologia`,timeline:`Linea temporale`,pipelines:`Pipeline`},layout:{flatList:`Elenco`,byPrinter:`Per stampante`,groupByPrinter:`Raggruppa per stampante`},history:{emptyTitle:`Nessuna cronologia`,emptyDescription:`Le stampe completate, annullate e fallite appariranno qui.`,showMore:`Mostra altri`,showingCount:`Visualizzati {{shown}} di {{total}}`},dragGhost:{multiCount:`{{count}} elementi`,batch:`{{name}} ({{count}} copia)`,batch_plural:`{{name}} ({{count}} copie)`},sections:{currentlyPrinting:`In stampa`,queued:`In coda`,history:`Cronologia`},status:{pending:`In attesa`,waiting:`In attesa`,printing:`In stampa`,paused:`In pausa`,completed:`Completato`,failed:`Fallito`,skipped:`Saltato`,cancelled:`Annullato`},summary:{printing:`In stampa`,queued:`In coda`,totalTime:`Tempo totale coda`,totalWeight:`Peso totale della coda`,history:`Cronologia`},filter:{allPrinters:`Tutte le stampanti`,unassigned:`Non assegnato`,allStatus:`Tutti gli stati`,allLocations:`Tutte le posizioni`,any:`Qualsiasi`},sort:{byPosition:`Ordina per posizione`,byName:`Ordina per nome`,byPrinter:`Ordina per stampante`,bySchedule:`Ordina per programma`,byDate:`Ordina per data`,ascendingOldest:`Crescente (più vecchi)`,descendingNewest:`Decrescente (più recenti)`},badges:{staged:`In staging`,requiresPrevious:`Richiede successo precedente`,autoPowerOff:`Spegnimento automatico`,gcodeInjection:`G-code`},empty:{title:`Nessuna stampa programmata`,description:`Programma una stampa dalla pagina Archivi usando l'opzione "Programma" nel menu contestuale, o trascina i file per iniziare.`},time:{etaIfStartedNow:`Orario di completamento se questo lavoro iniziasse ora`,asap:`ASAP`,overdue:`Scaduto`,now:`Ora`,lessThanMinute:`Tra meno di un minuto`,inMinutes:`Tra {{count}} min`,inHours:`Tra {{count}} ore`},actions:{startPrint:`Avvia Stampa`,stopPrint:`Ferma Stampa`,requeue:`Rimetti in coda`},bulkEdit:{title:`Modifica {{count}} elemento`,title_plural:`Modifica {{count}} elementi`,description:`Solo le impostazioni modificate saranno applicate agli elementi selezionati.`,printer:`Stampante`,noChange:`— Nessun cambio —`,queueOptions:`Opzioni coda`,staged:`In staging (avvio manuale)`,autoPowerOff:`Spegnimento automatico dopo stampa`,requirePrevious:`Richiede successo precedente`,printOptions:`Opzioni stampa`,bedLevelling:`Livellamento piatto`,flowCalibration:`Calibrazione flusso`,vibrationCalibration:`Calibrazione vibrazioni`,layerInspection:`Controllo primo layer`,timelapse:`Timelapse`,useAms:`Usa AMS`,nozzleOffsetCali:`Calibrazione offset ugelli`,applyChanges:`Applica modifiche`,selectAll:`Seleziona tutto`,deselectAll:`Deseleziona tutto`,selected:`{{count}} selezionati`,editSelected:`Modifica selezionati`,cancelSelected:`Annulla selezionati`},confirm:{cancelTitle:`Annulla stampa programmata`,cancelMessage:`Sei sicuro di annullare "{{name}}"?`,stopTitle:`Ferma Stampa`,stopMessage:`Sei sicuro di fermare la stampa corrente "{{name}}"? Questo annullerà il lavoro sulla stampante.`,removeTitle:`Rimuovi dalla cronologia`,removeMessage:`Sei sicuro di rimuovere "{{name}}" dalla cronologia coda?`,clearHistoryTitle:`Svuota cronologia`,clearHistoryMessage:`Sei sicuro di rimuovere {{count}} elemento(i) dalla cronologia?`,cancelButton:`Annulla Stampa`,stopButton:`Ferma Stampa`,thisPrint:`questa stampa`,thisItem:`questo elemento`},toast:{cancelled:`Elemento coda annullato`,cancelFailed:`Annullamento non riuscito`,removed:`Elemento coda rimosso`,keptForOrder:`Annullato anziché rimosso: è l'unica stampa da cui la commessa può riaccodare questa piastra`,historyKeptForOrders:`{{kept}} conservate perché servono ancora alle commesse.`,removeFailed:`Rimozione non riuscita`,stopped:`Stampa fermata`,stopFailed:`Impossibile fermare stampa`,released:`Stampa rilasciata in coda`,startFailed:`Avvio stampa non riuscito`,reorderFailed:`Riordino coda non riuscito`,historyCleared:`Cancellati {{count}} elementi cronologia`,clearHistoryFailed:`Svuotamento cronologia non riuscito`,updateFailed:`Aggiornamento elementi non riuscito`,bulkCancelled:`Annullati {{count}} elementi`,bulkCancelFailed:`Annullamento elementi non riuscito`,batchCreated:`Lotto «{{name}}» creato`,batchCreateFailed:`Creazione lotto non riuscita`,batchUngrouped:`{{count}} elemento/i separato/i`,batchUngroupFailed:`Separazione del lotto non riuscita`,resumedAfterFailure:`Coda ripresa — {{restored}} processo/i ripristinato/i come in attesa`,resumeAfterFailureFailed:`Ripresa della coda non riuscita`},resumeAfterFailure:{banner:`{{printer}} è bloccata da un errore di stampa precedente — {{count}} processo/i saltato/i`,bannerHint:`Risolvi il problema della stampante, poi riprendi per ripristinare i processi saltati e rimuovere il blocco.`,button:`Riprendi dopo errore`,confirmTitle:`Riprendere la coda dopo l'errore?`,confirmMessage:`Ripristinare {{count}} processo/i saltato/i su {{printer}} come in attesa e rimuovere il blocco della stampa precedente. Assicurati che la stampante sia pronta prima di continuare.`},timeline:{listView:`Lista`,timelineView:`Cronologia`,unassigned:`Non assegnato`,noData:`Nessuna stampa programmata per questo giorno`,nothingCommitted:`Nessuna pianificazione confermata in questa finestra. Elementi preparati, in attesa e ASAP su stampanti inattive non sono mostrati — imposta un orario pianificato o rilascia un elemento preparato per vederlo qui.`,allDoneBy:`Tutte le stampe completate entro le {{time}}`,staged:`In attesa`,filterAll:`Mostra tutto`,filterPrinting:`In stampa`,filterQueued:`In coda`,time:{anyMoment:`a momenti`,minutesLeft:`{{minutes}}m rimanenti`,hoursLeft:`{{hours}}h rimanenti`,hoursMinutesLeft:`{{hours}}h {{minutes}}m rimanenti`},day:{previous:`Giorno precedente`,next:`Giorno successivo`,today:`Oggi`},window:{back12h:`Indietro di 12 ore`,forward12h:`Avanti di 12 ore`,now:`Adesso`},printerColumnHeader:`Stampante`},permissions:{noStopPrint:`Non hai il permesso di fermare stampe`,noStartPrint:`Non hai il permesso di avviare stampe`,noEdit:`Non hai il permesso di modificare questo elemento coda`,noCancel:`Non hai il permesso di annullare questo elemento coda`,noRequeue:`Non hai il permesso di rimettere in coda elementi`,noRemove:`Non hai il permesso di rimuovere questo elemento coda`,noClearHistory:`Non hai il permesso di svuotare tutta la cronologia`,noEditItems:`Non hai il permesso di modificare elementi coda`,noCancelItems:`Non hai il permesso di annullare elementi coda`}},stats:{title:`Statistiche`,subtitle:`Trascina i widget per riordinare. Clicca l'icona occhio per nascondere.`,overview:`Panoramica`,totalPrints:`Stampe totali`,successRate:`Tasso di successo`,totalPrintTime:`Tempo totale di stampa`,printTime:`Tempo di stampa`,totalFilament:`Filamento totale usato`,filamentUsed:`Filamento usato`,filamentCost:`Costo filamento`,totalCost:`Costo totale`,energyUsed:`Energia usata`,energyCost:`Costo energia`,energyWarmingUpTooltip:`Il tracciamento energia sta ancora raccogliendo snapshot orari. I totali per intervallo diventeranno accurati quando esisterà almeno uno snapshot prima dell’intervallo selezionato. I primi valori potrebbero essere sottostimati.`,averagePrintTime:`Tempo medio di stampa`,printsPerDay:`Stampe al giorno`,byPrinter:`Per stampante`,printsByPrinter:`Stampe per stampante`,byMaterial:`Per materiale`,byMonth:`Per mese`,last7Days:`Ultimi 7 giorni`,last30Days:`Ultimi 30 giorni`,last90Days:`Ultimi 90 giorni`,allTime:`Sempre`,quickStats:`Statistiche rapide`,printActivity:`Attivita di stampa`,filamentTypes:`Tipi di filamento`,filamentTrends:`Trend filamento`,failureAnalysis:`Analisi guasti`,timeAccuracy:`Accuratezza tempo`,successful:`Riuscite:`,failed:`Fallite:`,cancelled:`Annullate:`,perfectEstimate:`100% = stima perfetta`,noTimeAccuracyData:`Nessun dato accuratezza tempo`,noFilamentData:`Nessun dato filamento`,noPrinterData:`Nessun dato stampante`,noPrintData:`Nessun dato stampa`,noPrintDataLast30Days:`Nessun dato stampa negli ultimi 30 giorni`,failureReasons:`Cause guasto`,topFailureReasons:`Cause principali`,failedPrintsCount:`{{failed}} / {{total}} stampe fallite`,lastWeekRate:`Settimana scorsa: {{rate}}%`,resetLayout:`Reimposta layout`,recalculateCosts:`Ricalcola costi`,recalculateCostsHint:`Ricalcola tutti i costi archivi usando i prezzi filamento correnti`,exportStats:`Esporta statistiche`,exportAsCsv:`Esporta come CSV`,exportAsExcel:`Esporta come Excel`,hiddenCount:`{{count}} Nascosti`,exportDownloaded:`Export scaricato`,exportFailed:`Export non riuscito`,layoutReset:`Layout reimpostato`,recalculatedCosts:`Costi ricalcolati per {{count}} archivi`,recalculateFailed:`Ricalcolo costi non riuscito`,loadingStats:`Caricamento statistiche...`,noPermissionResetLayout:`Non hai il permesso di reimpostare il layout`,noPermissionRecalculate:`Non hai il permesso di ricalcolare i costi`,noPrintDataInRange:`Nessun dato nel periodo selezionato`,periodFilament:`Filamento utilizzato`,periodCost:`Costo`,avgPerPrint:`Media per stampa`,usageOverTime:`Utilizzo nel tempo`,energyOverTime:`Energia nel tempo`,filamentByWeight:`Peso`,printDuration:`Durata stampa`,printerUtilization:`Utilizzo stampante`,filamentSuccess:`Successo per materiale`,printHabits:`Abitudini di stampa`,printTimeOfDay:`Ora di stampa`,colorDistribution:`Distribuzione colori`,noColorData:`Nessun dato colore disponibile`,records:`Record`,longestPrint:`Stampa più lunga`,heaviestPrint:`Stampa più pesante`,mostExpensivePrint:`Più costosa`,busiestDay:`Giorno più attivo`,successStreak:`Serie di successi`,streakPrint:`stampa consecutiva`,streakPrints:`{{count}} stampe consecutive`,printerStats:`Statistiche stampante`,hours:`ore`,avgPrints:`Media stampe`,noArchiveData:`Nessun dato di stampa disponibile`,filamentByTime:`Tempo`,avgWeight:`Media peso`,avgTime:`Media tempo`,filamentByPrints:`Stampe`,timeframe:{today:`Oggi`,"this-week":`Questa settimana`,"this-month":`Questo mese`,"last-7":`Ultimi 7 giorni`,"last-30":`Ultimi 30 giorni`,"last-90":`Ultimi 90 giorni`,"this-year":`Quest'anno`,"all-time":`Tutto`,custom:`Personalizzato`,from:`Da`,to:`A`},allUsers:`Tutti gli utenti`,noUser:`Nessun utente (Sistema)`,filterByUser:`Filtra per utente`},maintenance:{title:`Manutenzione`,overview:`Panoramica`,allOk:`Tutta la manutenzione aggiornata`,dueCount:`{{count}} elemento in scadenza`,dueCount_plural:`{{count}} elementi in scadenza`,warningCount:`{{count}} avviso`,warningCount_plural:`{{count}} avvisi`,totalPrintTime:`Tempo totale di stampa`,nextMaintenance:`Prossima manutenzione`,nothingDue:`Niente in scadenza`,tasks:`Attivita`,lastPerformed:`Ultima esecuzione`,interval:`Intervallo`,hoursRemaining:`{{hours}}h rimanenti`,hoursOverdue:`{{hours}}h in ritardo`,markDone:`Segna come fatto`,performMaintenance:`Esegui manutenzione`,history:`Cronologia`,noHistory:`Nessuna cronologia manutenzione`,editPrintHours:`Modifica ore stampa`,currentHours:`Ore attuali`,statusTab:`Stato`,settingsTab:`Impostazioni`,overdueCount:`{{count}} in ritardo`,dueSoonCount:`{{count}} in scadenza`,dueSoon:`In scadenza`,allGood:`Tutto ok`,overdueBy:`In ritardo di {{duration}}`,dueIn:`Scade tra {{duration}}`,timeLeft:`{{duration}} rimanenti`,day:`1 giorno`,days:`{{count}} giorni`,week:`1 settimana`,weeks:`{{count}} settimane`,month:`1 mese`,months:`{{count}} mesi`,year:`1 anno`,maintenanceTypes:`Tipi di manutenzione`,maintenanceTypesDescription:`Tipi di sistema e tue attivita personalizzate`,addCustomType:`Aggiungi tipo personalizzato`,restoreDefaults:`Ripristina attivita predefinite`,intervalType:`Tipo intervallo`,intervalValue:`Intervallo ({{type}})`,icon:`Icona`,documentationLink:`Link documentazione (opzionale)`,assignToPrinters:`Assegna alle stampanti`,selectAtLeastOnePrinter:`Seleziona almeno una stampante`,addType:`Aggiungi tipo`,custom:`Personalizzato`,printHours:`Ore di stampa`,calendarDays:`Giorni calendario`,exampleName:`es. Sostituisci filtro HEPA`,viewDocumentation:`Vedi documentazione`,timeBasedInterval:`Intervallo basato sul tempo`,intervalOverrides:`Override intervallo`,intervalOverridesDescription:`Personalizza intervalli per stampanti specifiche`,assignedToPrinters:`Assegnato alle stampanti:`,noPrintersAssigned:`Nessuna stampante assegnata`,addPrinterShort:`Aggiungi:`,printersAssignedClick:`{{count}} stampante(i) assegnata - clicca per gestire`,removeFromPrinter:`Rimuovi da questa stampante`,types:{lubricateCarbonRods:`Lubrifica aste in carbonio`,lubricateRails:`Lubrifica guide lineari`,cleanNozzle:`Pulisci ugello/Hotend`,checkBelts:`Controlla tensione cinghie`,cleanBuildPlate:`Pulisci piatto`,checkExtruder:`Controlla ingranaggi estrusore`,checkCooling:`Controlla ventole raffreddamento`,generalInspection:`Ispezione generale`,cleanCarbonRods:`Pulisci aste in carbonio`,lubricateSteelRods:`Lubrifica aste in acciaio`,cleanSteelRods:`Pulisci aste in acciaio`,cleanLinearRails:`Pulisci guide lineari`,checkPtfeTube:`Controlla tubo PTFE`,replaceHepaFilter:`Sostituisci filtro HEPA`,replaceCarbonFilter:`Sostituisci filtro carbone`,lubricateLeftNozzleRail:`Lubrifica guida ugello sinistro`},maintenanceComplete:`Manutenzione segnata come completata`,typeUpdated:`Tipo manutenzione aggiornato`,typeDeleted:`Tipo manutenzione eliminato`,defaultsRestored:`Ripristinate {{count}} attivita predefinite`,printHoursUpdated:`Ore di stampa aggiornate`,printerAssigned:`Stampante assegnata`,printerRemoved:`Stampante rimossa`,deleteTypeConfirm:`Eliminare "{{name}}"?`,deleteSystemTypeTitle:`Eliminare attività di manutenzione predefinita?`,deleteSystemTypeMessage:`Sei sicuro di voler eliminare l'attività di manutenzione predefinita "{{name}}"?`,noPermissionUpdate:`Non hai il permesso di aggiornare elementi manutenzione`,noPermissionPerform:`Non hai il permesso di eseguire manutenzione`,noPermissionEditTypes:`Non hai il permesso di modificare tipi manutenzione`,noPermissionDeleteTypes:`Non hai il permesso di eliminare tipi manutenzione`,noPermissionEditHours:`Non hai il permesso di modificare ore stampa`,noPermissionRemovePrinter:`Non hai il permesso di rimuovere assegnazioni stampanti`,noPermissionAssignPrinter:`Non hai il permesso di assegnare stampanti`,noPermissionEditIntervals:`Non hai il permesso di modificare intervalli`,configureSettings:`Configura tipi e intervalli manutenzione`},settings:{sliceEngine:`Motore di slicing`,sliceEngineSidecar:`Sidecar del server`,sliceEngineSidecarHint:`Lo slicing viene eseguito sul server, nel container sidecar dello slicer.`,sliceEngineBrowser:`Nel browser`,sliceEngineBrowserHint:`Lo slicing viene eseguito su questo dispositivo, senza server.`,title:`Impostazioni`,general:`Generale`,tabs:{general:`Generale`,smartPlugs:`Prese smart`,sensors:`Sensori`,notifications:`Notifiche`,queue:`Flusso`,queueDispatch:`Coda e Dispatch`,queuePipelines:`Pipeline`,filament:`Filamento`,network:`Rete`,apiKeys:`Chiavi API`,virtualPrinter:`Stampante virtuale`,failureDetection:`Rilevamento guasti`,users:`Utenti`,backup:`Backup`,emailAuth:`Autenticazione Email`,ldap:`LDAP`,twoFa:`Autenticazione 2FA`,oidc:`SSO / OIDC`,security:`Sicurezza`,spoolbuddy:`SpoolBuddy`},ldap:{title:`Autenticazione LDAP`,enabledDesc:`L'autenticazione LDAP è attiva`,disabledDesc:`L'autenticazione LDAP è disattivata`,disabledHint:`Configura e salva le impostazioni LDAP qui sotto, poi attiva.`,enabled:`Autenticazione LDAP attivata`,disabled:`Autenticazione LDAP disattivata`,feature1:`Gli utenti possono accedere con le credenziali LDAP`,feature2:`L'account amministratore locale rimane come fallback`,feature3:`I gruppi LDAP vengono mappati ai gruppi BamBuddy al login`,serverConfig:`Configurazione server LDAP`,serverUrl:`URL del server`,serverUrlHint:`Usa ldap:// per standard o ldaps:// per connessioni SSL`,security:`Sicurezza`,securityHint:`StartTLS aggiorna una connessione semplice a TLS. LDAPS usa TLS fin dall'inizio.`,bindDn:`Bind DN (account di servizio)`,bindPassword:`Password Bind`,searchBase:`Base DN di ricerca`,userFilter:`Filtro di ricerca utente`,userFilterHint:`{username} viene sostituito con il nome utente. Usa (uid={username}) per OpenLDAP.`,advanced:`Avanzate`,autoProvision:`Provisioning automatico utenti`,autoProvisionHint:`Crea automaticamente un account BamBuddy al primo accesso LDAP`,defaultGroup:`Gruppo predefinito`,defaultGroupNone:`— Nessuno (nessun fallback) —`,defaultGroupHint:`Gruppo di fallback assegnato quando un utente LDAP si autentica ma non è presente in nessun gruppo LDAP mappato. Lascia vuoto per lasciare gli utenti non mappati senza autorizzazioni.`,groupMapping:`Mappatura gruppi (JSON)`,groupMappingHint:`Mappa i DN dei gruppi LDAP ai gruppi BamBuddy. Gruppi disponibili: `,testConnection:`Test connessione`,settingsSaved:`Impostazioni LDAP salvate`,errors:{serverRequired:`L'URL del server LDAP è obbligatorio`,searchBaseRequired:`Il Base DN di ricerca è obbligatorio`,enableAuthFirst:`Attiva prima l'autenticazione`,configureLdapFirst:`Salva prima le impostazioni LDAP`}},email:{smtpSettings:`Configurazione SMTP`,smtpHost:`Server SMTP`,smtpPort:`Porta SMTP`,security:`Sicurezza`,authentication:`Autenticazione`,username:`Nome utente`,password:`Password`,fromEmail:`Email mittente`,fromName:`Nome mittente`,testConnection:`Testa connessione SMTP`,testRecipient:`Email destinatario test`,sendTest:`Invia email di test`,sending:`Invio...`,save:`Salva impostazioni`,saving:`Salvataggio...`,advancedAuth:`Autenticazione avanzata`,advancedAuthEnabled:`L'autenticazione avanzata è abilitata`,advancedAuthEnabledDesc:`Le funzionalità di gestione utenti via email sono attive. I nuovi utenti riceveranno password generate automaticamente via email e potranno reimpostare la password tramite la funzione di recupero.`,advancedAuthDisabled:`L'autenticazione avanzata è disabilitata`,advancedAuthDisabledDesc:`Abilita l'autenticazione avanzata per attivare le funzionalità email per la gestione utenti.`,enable:`Abilita`,disable:`Disabilita`,feature1:`Le password vengono generate automaticamente e inviate via email ai nuovi utenti`,feature2:`Gli utenti possono accedere con nome utente o email`,feature3:`La funzione di recupero password è disponibile`,feature4:`Gli amministratori possono reimpostare le password utente via email`,errors:{requiredFields:`Compilare tutti i campi obbligatori`,usernameRequired:`Il nome utente è obbligatorio quando l'autenticazione è abilitata`,enterTestEmail:`Inserire un indirizzo email di test`,smtpServerAndEmail:`Compilare Server SMTP e Email mittente prima di testare`,usernamePasswordRequired:`Nome utente e password sono obbligatori quando l'autenticazione è abilitata`,configureSmtpFirst:`Configurare e testare le impostazioni SMTP prima`,enableAuthFirst:`Per utilizzare le funzionalità basate sulla posta elettronica, è necessario prima abilitare l'autenticazione.`},success:{settingsSaved:`Impostazioni SMTP salvate con successo`},securityOptions:{starttls:`STARTTLS (Porta 587)`,ssl:`SSL/TLS (Porta 465)`,none:`Nessuna (Porta 25)`},authOptions:{enabled:`Abilitata`,disabled:`Disabilitata`}},appearance:`Aspetto`,notifications:`Notifiche`,smartPlugs:`Prese smart`,spoolman:`Spoolman`,updates:`Aggiornamenti`,language:`Lingua`,languageDescription:`Seleziona la lingua preferita`,theme:`Tema`,themeLight:`Chiaro`,themeDark:`Scuro`,themeSystem:`Sistema`,defaultView:`Vista predefinita`,defaultViewDescription:`Pagina da mostrare all'apertura dell'app`,checkForUpdates:`Controlla aggiornamenti`,autoUpdate:`Aggiornamento automatico`,currentVersion:`Versione attuale`,latestVersion:`Ultima versione`,upToDate:`Sei aggiornato`,updateAvailable:`Aggiornamento disponibile`,notificationLanguage:`Lingua notifiche`,notificationLanguageDescription:`Lingua per notifiche push`,bedCooledThreshold:`Soglia raffreddamento piatto`,bedCooledThresholdDescription:`Temperatura sotto la quale il piatto è considerato raffreddato dopo una stampa`,userNotificationsEnabled:`Notifiche utente`,userNotificationsEnabledDescription:`Abilita il menu notifiche utente e le notifiche e-mail per gli eventi di stampa. Richiede l'autenticazione avanzata.`,userNotificationsDisabledHint:`Abilita l'autenticazione avanzata per usare le notifiche utente.`,notificationProviders:`Provider notifiche`,addProvider:`Aggiungi provider`,editProvider:`Modifica provider`,providerType:`Tipo provider`,testNotification:`Notifica di test`,testSuccess:`Notifica di test inviata`,testFailed:`Invio notifica di test fallito`,quietHours:`Ore silenziose`,quietHoursDescription:`Non disturbare in queste ore`,quietHoursStart:`Inizio`,quietHoursEnd:`Fine`,events:{title:`Eventi notifica`,printStart:`Stampa avviata`,printComplete:`Stampa completata`,printFailed:`Stampa fallita`,printStopped:`Stampa interrotta`,printProgress:`Avanzamento`,printProgressDescription:`Notifica al 25%, 50%, 75%`,printerOffline:`Stampante offline`,printerError:`Errore stampante`,filamentLow:`Filamento in esaurimento`,maintenanceDue:`Manutenzione dovuta`,maintenanceDueDescription:`Notifica quando serve manutenzione`},smartPlug:{title:`Prese smart`,add:`Aggiungi presa smart`,edit:`Modifica presa smart`,name:`Nome`,ipAddress:`Indirizzo IP`,linkedPrinter:`Stampante collegata`,autoOn:`Accensione automatica`,autoOnDescription:`Accendi all'avvio stampa`,autoOff:`Spegnimento automatico`,autoOffDescription:`Spegni dopo il completamento`,offDelay:`Ritardo spegnimento`,offDelayMinutes:`Minuti dopo la stampa`,offDelayTemp:`Quando ugello sotto temperatura`,currentState:`Stato attuale`,turnOn:`Accendi`,turnOff:`Spegni`},filamentTracking:`Tracciamento filamento`,filamentTrackingDesc:`Scegli come tracciare le bobine di filamento. Puoi usare l'inventario integrato o collegare un server Spoolman esterno.`,autoAddUnknownRfid:`Aggiungi automaticamente bobine RFID sconosciute`,autoAddUnknownRfidDesc:`Crea automaticamente una voce di inventario quando viene rilevata una bobina con tag RFID sconosciuto. Disabilita se registri manualmente le nuove bobine in anticipo per evitare duplicati.`,filamentChecks:`Controlli filamento`,disableFilamentWarnings:`Disabilita avvisi filamento`,disableFilamentWarningsDesc:`Non mostrare avvisi per filamento insufficiente durante la stampa o l'accodamento`,preferLowestFilament:`Preferisci il filamento con meno residuo`,preferLowestFilamentDesc:`Quando più bobine corrispondono, usa quella con meno filamento rimanente`,preferLowestFilamentBackupNote:`Ha effetto solo se AMS Filament Backup è abilitato sulla stampante — altrimenti la stampante non può passare a una seconda bobina quando quella scelta finisce.`,trackingModeBuiltIn:`Inventario integrato`,trackingModeBuiltInDesc:`Riconoscimento RFID automatico e tracciamento dell'uso inclusi`,trackingModeSpoolmanDesc:`Server esterno per la gestione del filamento`,builtInFeatureRfid:`Rileva automaticamente le bobine Bambu Lab RFID nell'AMS`,builtInFeatureUsage:`Traccia il consumo di filamento per stampa`,builtInFeatureCatalog:`Gestisci bobine, colori e profili K-factor`,builtInFeatureThirdParty:`Le bobine di terze parti possono essere assegnate alle bobine dell'inventario`,amsSyncButton:`Sincronizza pesi dall'AMS`,amsSyncTitle:`Sincronizza pesi bobine dall'AMS`,amsSyncMessage:`Questo sovrascriverà tutti i pesi delle bobine dell'inventario con i valori attuali di percentuale rimanente dell'AMS dalle stampanti connesse. Usa questa funzione per recuperare dati di peso corrotti. Le stampanti devono essere online.`,amsSyncing:`Sincronizzazione...`,amsSyncSuccess:`{{synced}} bobina/e sincronizzata/e, {{skipped}} saltata/e`,amsSyncError:`Impossibile sincronizzare i pesi dall'AMS`,spoolmanAmsSyncButton:`Sincronizza i pesi Spoolman dall'AMS`,spoolmanAmsSyncTitle:`Sincronizza i pesi delle bobine Spoolman dall'AMS`,spoolmanAmsSyncMessage:`Questo aggiornerà i pesi di tutte le bobine Spoolman in base ai valori di riempimento AMS correnti delle stampanti connesse. Le stampanti devono essere online.`,spoolmanAmsSyncing:`Sincronizzazione...`,spoolmanAmsSyncSuccess:`{{synced}} bobina/e sincronizzata/e, {{skipped}} saltata/e`,spoolmanAmsSyncError:`Impossibile sincronizzare i pesi Spoolman dall'AMS`,spoolmanAmsSyncErrorUnreachable:`Sincronizzazione fallita (Spoolman non raggiungibile)`,spoolmanAmsSyncErrorNotConfigured:`Sincronizzazione fallita (Spoolman non configurato)`,spoolmanNotConfigured:`Spoolman non configurato`,spoolmanFilamentCatalogTitle:`Catalogo filamenti Spoolman`,spoolmanFilamentCatalogDesc:`Nomi dei filamenti e pesi tara dalla tua istanza Spoolman. Nome e peso bobina sono modificabili qui; tutte le altre proprietà sono gestite direttamente in Spoolman.`,spoolmanUrl:`URL Spoolman`,spoolmanUrlHint:`URL del server Spoolman (es. http://localhost:7912)`,spoolmanConnected:`Connesso`,spoolmanDisconnected:`Disconnesso`,status:`Stato`,connect:`Connetti`,disconnect:`Disconnetti`,howSyncWorks:`Come funziona la sincronizzazione`,syncInfoRfidOnly:`Solo le bobine ufficiali Bambu Lab con RFID vengono sincronizzate`,syncInfoAutoCreate:`Le nuove bobine vengono create automaticamente in Spoolman alla prima sincronizzazione`,syncInfoThirdPartySkipped:`Le bobine non Bambu Lab (terze parti, ricaricate) vengono saltate`,linkingExistingSpools:`Collegamento bobine esistenti`,linkingExistingSpoolsDesc:`Per collegare le bobine Spoolman esistenti all'AMS, passa il mouse su uno slot AMS e clicca "Collega a Spoolman".`,syncMode:`Modalità sincronizzazione`,syncModeAuto:`Automatica`,syncModeManual:`Solo manuale`,syncModeAutoDesc:`I dati AMS si sincronizzano automaticamente quando vengono rilevate modifiche`,syncModeManualDesc:`Sincronizzazione solo quando attivata manualmente`,syncAmsData:`Sincronizza dati AMS`,syncAmsDataDesc:`Sincronizza manualmente i dati AMS della stampante su Spoolman`,allPrinters:`Tutte le stampanti`,noDefaultPrinter:`Nessuna predefinita (chiedi ogni volta)`,sidebarOrder:`Ordine barra laterale`,saveThumbnails:`Salva miniature`,captureFinishPhoto:`Acquisisci foto finale`,noPrintersConfigured:`Nessuna stampante configurata`,archiveMode:{always:`Crea sempre voce archivio`,never:`Non creare mai voce archivio`,ask:`Chiedi ogni volta`},checkForUpdatesLabel:`Controlla aggiornamenti`,checkPrinterFirmware:`Controlla firmware stampante`,includeBetaUpdates:`Includi versioni beta`,includeBetaUpdatesDesc:`Notifica versioni beta e prerelease durante il controllo aggiornamenti`,localLogin:{disable:`Disabilita l'accesso locale con nome utente/password`,disableHint:`Quando attivato, solo i provider SSO possono accedere. LDAP non è interessato. Imposta BAMBUDDY_LOCAL_LOGIN=true sul server per mantenere un percorso di ripristino.`},enableRetry:`Abilita retry`,homeAssistantDescription:`Controlla prese smart tramite Home Assistant`,environmentManagedLabel:`(Gestito dall'ambiente)`,autoEnabledViaEnv:`Abilitato automaticamente tramite variabili d'ambiente`,urlFromEnvReadOnly:`Valore impostato dalla variabile d'ambiente HA_URL (sola lettura)`,tokenFromEnvReadOnly:`Valore impostato dalla variabile d'ambiente HA_TOKEN (sola lettura)`,mqttConnectedTo:`Connesso a`,prometheusDescription:`Esponi dati stampante in formato Prometheus`,noSmartPlugsTitle:`Nessuna presa smart configurata`,noSmartPlugsDescription:`Aggiungi una presa smart Tasmota per monitorare energia e automatizzare il controllo.`,noProvidersTitle:`Nessun provider configurato`,noProvidersDescription:`Aggiungi un provider per ricevere avvisi.`,noTemplatesAvailable:`Nessun template disponibile. Riavvia il backend per generare i template predefiniti.`,apiPermissionView:`Visualizza stato stampante e coda`,apiPermissionEdit:`Aggiungi e rimuovi elementi dalla coda di stampa`,apiKeysEmptyTitle:`Nessuna chiave API`,apiKeysEmptyDescription:`Crea una chiave API per integrare servizi esterni.`,noUsersFound:`Nessun utente trovato`,noGroupsFound:`Nessun gruppo trovato`,noGroupsAvailable:`Nessun gruppo disponibile`,passwordsDoNotMatch:`Le password non coincidono`,systemGroupWarning:`I nomi dei gruppi di sistema non possono essere modificati`,authDisabledTitle:`Autenticazione disabilitata`,authDisabledFeature1:`Richiedi accesso per usare il sistema`,authDisabledFeature2:`Crea più utenti con permessi basati sui gruppi`,authDisabledFeature3:`Controlla accesso con 50+ permessi granulari`,userHasCreated:`Questo utente ha creato:`,userItemsQuestion:`Cosa vuoi fare con questi elementi?`,deleteUserConfirm:`Sei sicuro di voler eliminare questo utente?`,actionCannotBeUndone:`Questa azione non può essere annullata.`,addFirstSmartPlug:`Aggiungi la tua prima presa smart`,providers:`Provider`,log:`Registro`,testAll:`Testa tutto`,testResults:`Risultati test`,testPassedCount:`{{count}} riusciti`,testFailedCount:`{{count}} falliti`,messageTemplates:`Template messaggi`,messageTemplatesDescription:`Personalizza i messaggi per ogni evento.`,apiKeys:`Chiavi API`,apiKeysDescription:`Crea chiavi API per integrazioni esterne e webhook.`,createKey:`Crea chiave`,apiKeyCreated:`Chiave API creata con successo`,apiKeyCopyWarning:`Copia questa chiave ora - non verra mostrata di nuovo!`,useInApiBrowser:`Usa nel Browser API`,apiKeyQrButton:`Codice QR`,apiKeyQrTitle:`Scansiona per configurare`,apiKeyQrCaption:`Scansiona con la tua app mobile per aggiungere questo server e la chiave API.`,apiKeyQrWarning:`Contiene la tua chiave API segreta: non condividerla né farne screenshot dove altri possono vederla.`,createNewApiKey:`Crea nuova chiave API`,keyName:`Nome chiave`,keyNamePlaceholder:`es., Home Assistant, OctoPrint`,readStatus:`Leggi stato`,readStatusDescription:`Visualizza stato stampante, coda, libreria, archivi e pipeline dello slicer`,manageQueue:`Gestisci coda`,manageQueueDescription:`Aggiungi e rimuovi elementi dalla coda di stampa. Insieme a "Gestisci libreria", esegui pipeline dello slicer`,controlPrinter:`Controlla stampante`,controlPrinterDescription:`Metti in pausa, riprendi e ferma stampe`,manageLibrary:`Gestisci libreria`,manageLibraryDescription:`Carica, rinomina, elimina ed esegui lo slicing dei file della libreria; importa modelli da MakerWorld. Insieme a "Gestisci coda", esegui pipeline dello slicer`,manageInventory:`Gestisci inventario`,manageInventoryDescription:`Crea, aggiorna ed elimina bobine e voci di inventario. Necessario per i chioschi SpoolBuddy (scansione NFC, letture della bilancia, comandi di sistema del chiosco).`,manageMaintenance:`Gestisci manutenzione`,manageMaintenanceDescription:`Registra le manutenzioni completate, azzera i contatori, modifica gli intervalli e gestisci il catalogo dei tipi di manutenzione. Adatto alle automazioni Home Assistant che registrano "ho pulito l'ugello" senza concedere un controllo più ampio della stampante.`,manageArchives:`Gestisci archivi`,manageArchivesDescription:`Modifica ed elimina gli archivi di stampa, inclusa la rimozione delle vecchie stampe e del loro contributo alle statistiche. Adatto alle automazioni che sfoltiscono la cronologia di stampa.`,manageProjects:`Gestisci progetti`,manageProjectsDescription:`Crea, aggiorna ed elimina progetti e aggiungi archivi ad essi. Adatto alle automazioni che organizzano le stampe in progetti.`,maintenanceBadge:`Manutenzione`,archivesBadge:`Archivi`,projectsBadge:`Progetti`,libraryBadge:`Libreria`,inventoryBadge:`Inventario`,cloudAccess:`Consenti accesso cloud`,cloudAccessDescription:`Legge i preset e i filamenti Bambu Cloud per tuo conto. Richiede l'accesso a Bambu Cloud.`,cloudBadge:`Cloud`,updateEnergyCost:`Aggiorna prezzo elettricità`,updateEnergyCostDescription:`Consenti a questa chiave di inviare in POST un nuovo prezzo elettricità per kWh a /settings/electricity-price. Utile per automazioni Home Assistant a tariffa dinamica (Tibber, Octopus, ecc.). Questo è l'unico campo di impostazioni scrivibile via API key.`,energyCostBadge:`Energia`,legacyKey:`Legacy`,legacyKeyTooltip:`Creato prima della proprietà per utente; ricreare per accesso cloud`,unnamedKey:`Chiave senza nome`,lastUsed:`Ultimo uso`,read:`Lettura`,control:`Controllo`,createFirstKey:`Crea la tua prima chiave`,webhookEndpoints:`Endpoint webhook`,webhookApiKeyHint:`Usa la tua chiave API nell'header X-API-Key.`,webhook:{getAllStatus:`Ottieni stato di tutte le stampanti`,getSpecificStatus:`Ottieni stato di una stampante`,addToQueue:`Aggiungi alla coda di stampa`,pausePrint:`Metti in pausa stampa`,resumePrint:`Riprendi stampa`,stopPrint:`Ferma stampa`},apiBrowser:`Browser API`,apiBrowserDescription:`Esplora e testa tutti gli endpoint API disponibili.`,apiKeyForTesting:`Chiave API per test`,apiKeyPlaceholder:`Incolla qui la tua chiave API per testare gli endpoint autenticati...`,apiKeyHint:`Questa chiave verra inviata come header X-API-Key.`,deleteApiKeyTitle:`Elimina chiave API`,deleteApiKeyMessage:`Sei sicuro di voler eliminare questa chiave API? Le integrazioni che la usano non funzioneranno più.`,deleteKey:`Elimina chiave`,amsDisplayThresholds:`Soglie visualizzazione AMS`,amsThresholdsDescription:`Configura soglie colore per umidità e temperatura AMS.`,humidity:`Umidità`,goodGreen:`Buono (verde)`,fairOrange:`Discreto (arancione)`,aboveFairBad:`Sopra soglia discreta mostra rosso (scarso)`,fairAlsoDryingThreshold:`Questa soglia viene usata anche per attivare l'asciugatura automatica`,fairBelowDryingFloor:`L'asciugatura automatica non può raggiungere questo valore: un AMS segna {{floor}}% o più mentre riscalda, quindi ogni ciclo finirebbe e ripartirebbe subito. Portalo sopra il {{floor}}% se usi l'asciugatura automatica.`,temperature:`Temperatura`,goodBlue:`Buono (blu)`,aboveFairHot:`Sopra soglia discreta mostra rosso (caldo)`,tempAlarmThreshold:`Allarme sopra`,tempAlarmSeparateFromBand:`Solo la soglia di allarme invia notifiche: Buono e Discreto colorano solo la visualizzazione. Lascia vuoto per allarmare alla soglia discreta, come prima.`,tempAlarmMustBePositive:`Una soglia pari o inferiore a 0 viene ignorata: l'allarme usa la soglia discreta.`,historyRetention:`Conservazione cronologia`,keepSensorHistory:`Mantieni cronologia sensori per`,historyRetentionDescription:`I dati più vecchi saranno eliminati automaticamente`,defaultPrintOptions:`Opzioni di stampa predefinite`,defaultPrintOptionsDescription:`Imposta i valori predefiniti per le opzioni di stampa. Possono essere modificati nella finestra di stampa.`,defaultBedLevelling:`Livellamento piatto`,defaultBedLevellingDesc:`Livellamento automatico del piatto prima della stampa`,defaultFlowCali:`Calibrazione flusso`,defaultFlowCaliDesc:`Calibra il flusso di estrusione`,defaultVibrationCali:`Calibrazione vibrazioni`,defaultVibrationCaliDesc:`Riduce gli artefatti di ringing`,defaultLayerInspect:`Ispezione primo strato`,defaultLayerInspectDesc:`Ispezione IA del primo strato`,defaultTimelapse:`Timelapse`,defaultTimelapseDesc:`Registra un video timelapse`,defaultNozzleOffsetCali:`Calibrazione offset ugelli`,defaultNozzleOffsetCaliDesc:`Calibra gli offset tra gli ugelli`,tempFanPresetsTitle:`Preset di temperatura e ventola`,tempFanPresetsDescription:`Personalizza i valori di selezione rapida mostrati nei popover di temperatura e velocità ventola della scheda stampante. Il pulsante Off è sempre visibile.`,tempFanPresetsNozzle:`Temperatura ugello`,tempFanPresetsBed:`Temperatura piano`,tempFanPresetsChamber:`Temperatura camera`,tempFanPresetsFan:`Velocità ventola`,tempFanPresetsReset:`Ripristina valori predefiniti`,concurrentUploadsTitle:`Caricamenti simultanei`,concurrentUploadsDescription:`Quante stampanti possono ricevere file dalla coda contemporaneamente. Le stampanti ricevono i file lentamente (una stampa grande può richiedere diversi minuti) e ognuna aspetta il proprio turno: su un parco macchine ampio, aumentare questo valore evita che l'ultima stampante di un lotto debba attendere la fine di tutti i trasferimenti precedenti. Riducilo se la rete o l'host Bambuddy fatica con i trasferimenti paralleli.`,concurrentUploadsLabel:`Stampanti servite contemporaneamente`,concurrentUploadsHelp:`1 invia a una stampante alla volta (il comportamento precedente). Il valore predefinito è 4.`,staggeredStart:`Avvio scaglionato`,staggeredStartDescription:`Dimensione gruppo e intervallo predefiniti per scaglionare avvii di batch multi-stampante. Sovrascrivibili per batch nella finestra di stampa.`,preheatTitle:`Preriscaldo & Heat Soak`,preheatDescription:`Riscalda il piano (e la camera, se supportata) e mantiene la temperatura prima dell'avvio di ogni stampa in coda. Utile per filamenti tecnici (PA, ABS) su stampanti senza riscaldatore attivo della camera — il piano scalda la camera per irraggiamento mentre il timer di soak scorre. La temperatura target del piano viene letta dal file di stampa; il comportamento della camera dipende dal modello di stampante.`,preheatEnabled:`Abilita preriscaldo & soak`,preheatEnabledDesc:`Se disattivato, le stampe in coda partono subito. Ogni elemento può sovrascrivere per singola stampa.`,preheatFilamentTargetsLabel:`Target camera per filamento (°C)`,preheatFilamentTargetsHint:`Bambuddy sceglie il target più alto tra gli slot AMS caricati; le stampe solo PLA derivano 0 e saltano la fase camera automaticamente.`,preheatFilamentTargetsReset:`Ripristina valori predefiniti`,preheatFilamentTargetsDefaultRow:`Altro / non mappato`,preheatMaxWait:`Attesa max (secondi)`,preheatMaxWaitHelp:`Limite della fase di riscaldamento camera prima del passaggio al soak.`,preheatSoak:`Soak (secondi)`,preheatSoakHelp:`Tenuta dopo il raggiungimento del target o lo scadere dell'attesa max.`,preheatHardwareTitle:`Comportamento per stampante:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E riscaldano attivamente la camera con M141. X1C/P2S leggono la temperatura ma scaldano la camera solo per irraggiamento dal piano. P1S/P1P/A1/A1 Mini non hanno sensore di camera — vale solo il timer di soak.`,preheatPerItemDesc:`Riscalda il piano e la camera prima dell'avvio di questa stampa. Per impostazione predefinita usa l'interruttore globale in Impostazioni → Workflow.`,preheatOverride_inherit:`Eredita`,preheatOverride_on:`Attivo`,preheatOverride_off:`Spento`,calibrationMode_off:`Spento`,calibrationMode_on:`Attivo`,calibrationMode_auto:`Auto`,preheatTargetOverride:`Sovrascrivi target camera (°C, vuoto = per filamento)`,plateClear:`Conferma piatto libero`,requirePlateClear:`Richiedi conferma piatto libero`,requirePlateClearDescription:`Quando questa opzione è abilitata, lo scheduler attende una conferma per stampante che il piatto sia libero prima di avviare le stampe in coda su stampanti con lavori completati. Disabilitandola vengono nascosti anche il badge di stato del piatto e il pulsante "Segna il piatto come liberato" sulle schede stampante.`,keepBedWarm:`Mantieni il piano caldo tra le stampe`,keepBedWarmDesc:`In attesa della conferma di piatto liberato, mantiene il piano alla temperatura di mantenimento indicata sotto così la camera resta calda — o alla temperatura del piano della stampa successiva se è più alta. Si applica solo quando la stampa successiva richiede il riscaldamento della camera (ASA, ABS, PA, PC, ecc.). Richiede la conferma di piatto liberato abilitata.`,keepWarmBedTemp:`Temperatura del piano in mantenimento (°C)`,keepWarmBedTempHelp:`Usato quando il piano serve a riscaldare la camera: durante il mantenimento in caldo e nel preriscaldamento se il file di stampa non contiene una temperatura del piano. Una temperatura più alta indicata dal file ha sempre la precedenza.`,keepWarmMaxMinutes:`Interrompi il mantenimento in caldo dopo (minuti)`,keepWarmMaxMinutesHelp:`Se il piatto non viene liberato entro questo tempo, i riscaldatori vengono spenti invece di restare accesi indefinitamente.`,gcodeInjection:`Iniezione G-code`,gcodeInjectionDescription:`Configura G-code personalizzato da iniettare all'inizio e/o alla fine delle stampe per sistemi di stampa automatica come Farmloop, SwapMod, AutoClear e Printflow 3D. Gli snippet sono configurati per modello di stampante e applicati quando "Inietta G-code" è abilitato su un elemento della coda.`,gcodeInjectionNoPrinters:`Nessuna stampante trovata. Aggiungi stampanti per configurare gli snippet G-code.`,gcodeStartLabel:`G-code iniziale`,gcodeEndLabel:`G-code finale`,gcodeStartPlaceholder:`G-code inserito prima dell'inizio della stampa...`,gcodeEndPlaceholder:`G-code aggiunto dopo la fine della stampa...`,staggerGroupSize:`Dimensione gruppo`,staggerGroupSizeHelp:`Stampanti da avviare simultaneamente per gruppo`,staggerInterval:`Intervallo (minuti)`,staggerIntervalHelp:`Ritardo tra l'avvio di ogni gruppo`,queueDrying:`Asciugatura automatica`,queueDryingDescription:`Asciugare automaticamente il filamento AMS quando la stampante è inattiva tra le stampe in coda. Usa la soglia di umidità sopra.`,queueDryingEnabled:`Abilita asciugatura automatica`,queueDryingEnabledDescription:`Avvia l'asciugatura AMS automaticamente quando la stampante è inattiva e l'umidità supera la soglia`,queueDryingBlock:`Attendi completamento asciugatura`,queueDryingBlockDescription:`Blocca la coda di stampa fino al completamento dell'asciugatura. Se disattivato, le stampe hanno priorità.`,ambientDryingEnabled:`Asciugatura ambientale`,ambientDryingEnabledDescription:`Asciuga automaticamente il filamento sulle stampanti inattive quando l'umidità supera la soglia, anche senza stampe in coda.`,printDryingEnabled:`Asciugatura durante la stampa`,printDryingEnabledDescription:`Consente all'asciugatura automatica di continuare durante una stampa su hardware supportato (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L con firmware recente). La temperatura di asciugatura viene automaticamente limitata a 5°C sotto il preset di riposo per proteggere le bobine.`,dryingPresets:`Preset di asciugatura`,dryingPresetsDescription:`Temperatura e durata per tipo di filamento. AMS 2 Pro usa temperature più basse, AMS-HT supporta temperature più alte.`,dryingFilament:`Filamento`,humidityThresholds:`Soglie di umidità`,humidityThresholdsDescription:`Soglia di umidità per tipo di filamento per asciugatura automatica e allarmi. Carichi misti in un AMS usano la soglia più bassa.`,humidityThresholdCol:`Soglia`,humidityThresholdDefault:`Predefinito (tipi sconosciuti)`,printModal:`Modale stampa`,expandCustomMapping:`Espandi mapping personalizzato di default`,expandCustomMappingDescription:`Quando stampi su più stampanti, mostra mapping AMS per stampante espanso`,authentication:`Autenticazione`,authEnabledDescription:`La tua istanza è protetta con autenticazione`,authDisabledDescription:`Abilita per richiedere accesso e gestire utenti`,authDisabledMessage:`Abilita autenticazione per creare account, gestire permessi e proteggere la tua istanza Bambuddy.`,enableAuthentication:`Abilita autenticazione`,currentUser:`Utente corrente`,changePassword:`Cambia password`,admin:`Amministratore`,users:`Utenti`,addUser:`Aggiungi utente`,groups:`Gruppi`,addGroup:`Aggiungi gruppo`,system:`Sistema`,noDescription:`Nessuna descrizione`,userCount:`{{count}} utenti`,permissionCount:`{{count}} permessi`,createUser:`Crea utente`,username:`Nome utente`,enterUsername:`Inserisci nome utente`,password:`Password`,enterPassword:`Inserisci password`,passwordRequirements:`Almeno 8 caratteri, con una maiuscola, una minuscola, una cifra e un carattere speciale.`,confirmPassword:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,viewReleaseOnGitHub:`Vedi release su GitHub`,turnAllPlugsOn:`Accendi tutte le prese`,turnAllPlugsOff:`Spegni tutte le prese`,clearNotificationLogs:`Cancella log notifiche`,clearLogsMessage:`Questo eliminerà definitivamente tutti i log notifiche più vecchi di 30 giorni. Questa azione non può essere annullata.`,clearLogs:`Cancella log`,resetUiPreferences:`Reimposta preferenze UI`,resetUiPreferencesMessage:`Questo reimposterà le preferenze UI ai valori predefiniti: ordine barra laterale, tema, layout dashboard, modalità vista e preferenze ordinamento. Stampanti, archivi e impostazioni server NON saranno modificati. La pagina si ricaricherà dopo la cancellazione.`,resetPreferences:`Reimposta preferenze`,deleteGroupTitle:`Elimina gruppo`,deleteGroupMessage:`Sei sicuro di voler eliminare questo gruppo? Gli utenti in questo gruppo perderanno questi permessi.`,deleteGroup:`Elimina gruppo`,disableAuthenticationTitle:`Disabilita autenticazione`,disableAuthenticationMessage:`Sei sicuro di voler disabilitare l'autenticazione? Questo renderà la tua istanza Bambuddy accessibile senza login. Tutti gli utenti resteranno nel database ma l'autenticazione sarà disabilitata.`,disableAuthentication:`Disabilita autenticazione`,configureBambuddy:`Configura Bambuddy`,systemDefault:`Predefinito di sistema`,archiveSettings:`Impostazioni archivio`,newWindow:`Nuova finestra`,embeddedOverlay:`Overlay incorporato`,preferredSlicer:`Slicer preferito`,preferredSlicerDescription:`Slicer utilizzato per lo slicing in-app tramite il sidecar API`,openInSlicerLabel:`Apri nello slicer`,openInSlicerInherit:`Come slicer API`,openInSlicerDescription:`Slicer desktop utilizzato dal pulsante 'Apri nello slicer'. Lascia su 'Come slicer API' per ereditare, o scegli uno slicer diverso per l'uso locale.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev hanno bug CLI noti che bloccano lo slicing di molti 3MF creati da Bambu — vedi le issue upstream #12426 (segfault su file multi-estrusore dipinti) e #13386 (rifiuto della validazione rigorosa dei range di parametri). Bambu Studio è raccomandato finché non arrivano le correzioni upstream.`,useSlicerApi:`Usa Slicer API`,useSlicerApiDescription:`Se attivo, le azioni "Slice" aprono il modale slicer integrato e chiamano il sidecar slicer-API. Se disattivo (predefinito), inoltrano al slicer desktop tramite schema URI.`,slicerCard:`Slicer`,orcaslicerApiUrl:`OrcaSlicer sidecar URL`,bambuStudioApiUrl:`Bambu Studio sidecar URL`,slicerStallTimeout:`Timeout di inattivita dello slicer (minuti)`,slicerStallTimeoutDescription:`Interrompe uno slice dopo questo tempo senza progressi dal sidecar. I modelli pesanti che continuano a segnalare progressi non vengono mai interrotti, per quanto tempo richiedano. I sidecar che non segnalano progressi usano questo valore come limite di tempo totale.`,slicerApiUrlDescription:`URL del container sidecar slicer-API. Lascia vuoto per usare le variabili d'ambiente SLICER_API_URL / BAMBU_STUDIO_API_URL.`,externalCameras:`Camere esterne`,costTracking:`Tracciamento costi`,printsOnly:`Solo stampe`,totalConsumption:`Consumo totale`,dataManagement:`Gestione dati`,storageUsage:`Memoria utilizzata`,storageUsageDescription:`Ripartizione della memoria per categoria`,storageUsageTotal:`Totale`,storageUsageErrors:`Errori`,storageUsageOtherBreakdown:`Altro (include risorse statiche, script e file di configurazione)`,storageUsageSystem:`Sistema`,storageUsageData:`Dati`,storageUsageUnavailable:`Informazioni sull'utilizzo della memoria non disponibili`,clearNotificationLogsDescription:`Elimina log notifiche più vecchi di 30 giorni`,resetUiPreferencesDescription:`Reimposta ordine barra laterale, tema, modalità vista e preferenze layout. Stampanti, archivi e impostazioni non vengono modificati.`,enableHomeAssistant:`Abilita Home Assistant`,enableMqtt:`Abilita MQTT`,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`,leaveEmptyForAnonymous:`Lascia vuoto per anonimo`,leaveEmptyForNoAuth:`Lascia vuoto per nessuna autenticazione`,enterNewPassword:`Inserisci nuova password`,confirmNewPassword:`Conferma nuova password`,enterGroupName:`Inserisci nome gruppo`,enterDescriptionOptional:`Inserisci descrizione (opzionale)`,enterCurrentPassword:`Inserisci password attuale`,enterNewPasswordMin6:`Inserisci nuova password (min 6 caratteri)`,toast:{keyCopied:`Chiave copiata negli appunti`,copyFailed:`Copia chiave fallita`,keyAddedToBrowser:`Chiave aggiunta al Browser API`,clearLogsFailed:`Eliminazione log fallita`,uiPreferencesReset:`Preferenze UI reimpostate. Aggiornamento...`,authDisabled:`Autenticazione disabilitata con successo`,authDisableFailed:`Disabilitazione autenticazione fallita`,apiKeyCreated:`Chiave API creata`,apiKeyDeleted:`Chiave API eliminata`,userCreated:`Utente creato con successo`,userUpdated:`Utente aggiornato con successo`,userDeleted:`Utente eliminato con successo`,groupCreated:`Gruppo creato con successo`,groupUpdated:`Gruppo aggiornato con successo`,groupDeleted:`Gruppo eliminato con successo`,fillRequiredFields:`Compila tutti i campi obbligatori`,passwordsDoNotMatch:`Le password non coincidono`,passwordTooShort:`La password deve essere di almeno 8 caratteri`,passwordNeedsUppercase:`La password deve contenere almeno una lettera maiuscola`,passwordNeedsLowercase:`La password deve contenere almeno una lettera minuscola`,passwordNeedsDigit:`La password deve contenere almeno una cifra`,passwordNeedsSpecial:`La password deve contenere almeno un carattere speciale`,enterGroupName:`Inserisci un nome gruppo`,settingsSaved:`Impostazioni salvate`,noPermissionUpdate:`Non hai il permesso di modificare le impostazioni`,cameraSettingsSaved:`Impostazioni camera salvate`,enterCameraUrl:`Inserisci un URL camera`,passwordChanged:`Password cambiata con successo`,connectionFailed:`Connessione fallita`,testFailed:`Test fallito`,cameraConnected:`Camera connessa{{resolution}}`,cameraConnectedCoalesced:`Camera connessa{{resolution}} (condivisa con un'acquisizione già in corso)`},testConnection:`Testa connessione`,catalog:{spoolCatalog:`Catalogo bobine`,spoolCatalogDescription:`Pesi delle bobine vuote per marca/tipo. Utilizzato per la ricerca automatica del peso quando si aggiungono bobine.`,searchCatalog:`Cerca nel catalogo...`,addNewEntry:`Aggiungi nuova voce`,namePlaceholder:`Nome (es. Bambu Lab - Plastica)`,weight:`Peso`,type:`Tipo`,default:`Predefinito`,custom:`Personalizzato`,noMatch:`Nessuna voce corrisponde alla ricerca`,empty:`Nessuna voce nel catalogo`,deleteEntry:`Elimina voce`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"?`,resetCatalog:`Ripristina catalogo`,resetConfirm:`Ripristinare il catalogo ai valori predefiniti? Tutte le voci personalizzate verranno rimosse.`,loadFailed:`Impossibile caricare il catalogo bobine`,nameWeightRequired:`Nome e peso sono obbligatori`,entryAdded:`Voce aggiunta`,addFailed:`Impossibile aggiungere la voce`,entryUpdated:`Voce aggiornata`,updateFailed:`Impossibile aggiornare la voce`,entryDeleted:`Voce eliminata`,deleteFailed:`Impossibile eliminare la voce`,resetSuccess:`Catalogo ripristinato ai valori predefiniti`,resetFailed:`Impossibile ripristinare il catalogo`,exported:`{{count}} voci esportate`,imported:`{{added}} voci importate ({{skipped}} saltate)`,importFailed:`Impossibile importare: formato JSON non valido`,exportTooltip:`Esporta catalogo in JSON`,importTooltip:`Importa catalogo da JSON`,resetTooltip:`Ripristina valori predefiniti`,selectedCount:`{{count}} selezionati`,deleteSelected:`Elimina selezionati`,bulkDeleteConfirm:`Eliminare {{count}} voci?`,bulkDeleted:`{{count}} voci eliminate`,bulkDeleteFailed:`Impossibile eliminare le voci`,material:`Materiale`,spoolWeight:`Peso bobina`,color:`Colore`,updateSpoolWeight:`Aggiorna peso bobina`,filamentUpdated:`Filamento aggiornato`,filamentUpdateFailed:`Aggiornamento filamento non riuscito`,filamentUpdateInvalid:`Dati filamento non validi`,keepExistingSpoolWeight:`Mantieni vecchio peso per le bobine esistenti`,keepExistingSpoolWeightDesc:`Le bobine già create con questo tipo di filamento mantengono il vecchio peso tara. Le nuove bobine usano il valore aggiornato.`,applyToAllSpools:`Applica a tutte le bobine`,applyToAllSpoolsDesc:`Tutti i calcoli del peso per questo tipo di filamento usano immediatamente il nuovo peso tara.`},colorCatalog:{title:`Catalogo colori`,description:`Colori del filamento per produttore/materiale. Utilizzato per la ricerca automatica del colore quando si aggiungono bobine.`,searchColors:`Cerca colori...`,allManufacturers:`Tutti i produttori`,addNewColor:`Aggiungi nuovo colore`,manufacturer:`Produttore`,colorName:`Nome colore`,hex:`Hex`,materialOptional:`Materiale (opzionale)`,showing:`Visualizzazione di {{filtered}} su {{total}} colori`,noMatch:`Nessun colore corrisponde alla ricerca`,empty:`Nessun colore nel catalogo`,deleteColor:`Elimina colore`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"?`,resetCatalog:`Ripristina catalogo colori`,resetConfirm:`Ripristinare il catalogo ai valori predefiniti? Tutti i colori personalizzati verranno rimossi.`,sync:`Sincronizza`,starting:`Avvio...`,syncTooltip:`Sincronizza da FilamentColors.xyz (2000+ colori, potrebbe richiedere un minuto)`,loadFailed:`Impossibile caricare il catalogo colori`,fieldsRequired:`Produttore, nome colore e colore hex sono obbligatori`,colorAdded:`Colore aggiunto`,addFailed:`Impossibile aggiungere il colore`,colorUpdated:`Colore aggiornato`,updateFailed:`Impossibile aggiornare il colore`,colorDeleted:`Colore eliminato`,deleteFailed:`Impossibile eliminare il colore`,resetSuccess:`Catalogo colori ripristinato ai valori predefiniti`,resetFailed:`Impossibile ripristinare il catalogo`,syncUpToDate:`Già aggiornato ({{count}} colori verificati)`,syncComplete:`{{added}} nuovi colori aggiunti ({{skipped}} già esistenti)`,syncError:`Errore di sincronizzazione`,syncFailed:`Impossibile sincronizzare da FilamentColors.xyz`,exported:`{{count}} colori esportati`,imported:`{{added}} colori importati ({{skipped}} saltati)`,importFailed:`Impossibile importare: formato JSON non valido`,selectedCount:`{{count}} selezionati`,deleteSelected:`Elimina selezionati`,bulkDeleteConfirm:`Eliminare {{count}} colori?`,bulkDeleted:`{{count}} colori eliminati`,bulkDeleteFailed:`Impossibile eliminare i colori`},dateFormat:`Formato data`,dateFormatUs:`US (MM/GG/AAAA)`,dateFormatEu:`EU (GG/MM/AAAA)`,dateFormatIso:`ISO (AAAA-MM-GG)`,timeFormat:`Formato ora`,timeFormat12:`12 ore (3:30 PM)`,timeFormat24:`24 ore (15:30)`,defaultPrinter:`Stampante predefinita`,defaultPrinterDescription:`Preseleziona questa stampante per upload, ristampe e altre operazioni.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`Usa il layout della barra laterale per riordinare gli elementi, ripristinare la visibilità e gestire i link personalizzati.`,setDefault:`Imposta predefinito`,sidebarOrderSetDefaultHint:`Imposta predefinito applica l'ordine attuale del menu agli utenti che non hanno ancora personalizzato il proprio.`,sidebarDefaultSet:`L'ordine predefinito del menu è stato impostato.`,sidebarDefaultCleared:`Ordine predefinito del menu cancellato.`,sidebarDefaultFailed:`Impossibile impostare l'ordine predefinito del menu.`,reset:`Ripristina`,darkMode:`Modalità scura`,lightMode:`Modalità chiara`,active:`(attivo)`,background:`Sfondo`,accent:`Accento`,style:`Stile`,bgNeutral:`Neutro`,bgWarm:`Caldo`,bgCool:`Freddo`,bgOled:`OLED Nero`,bgSlate:`Blu ardesia`,bgForest:`Verde foresta`,accentGreen:`Verde`,accentTeal:`Verde acqua`,accentBlue:`Blu`,accentOrange:`Arancione`,accentPurple:`Viola`,accentRed:`Rosso`,styleClassic:`Classico`,styleGlow:`Luminoso`,styleVibrant:`Vibrante`,themeToggleHint:`Passa tra modalità scura, chiara e sistema con l'icona nella barra laterale.`,progressInTitle:`Avanzamento nella scheda`,progressInTitleDescription:`Mostra la percentuale della stampa attiva e un anello di avanzamento nella scheda del browser.`,autoArchivePrints:`Archiviazione automatica stampe`,autoArchiveDescription:`Salva automaticamente i file 3MF al completamento delle stampe`,saveThumbnailsDescription:`Estrai e salva le immagini di anteprima dai file 3MF`,captureFinishPhotoDescription:`Scatta una foto dalla fotocamera della stampante al completamento della stampa. Bambuddy registra un breve timelapse durante la stampa in modo che la foto possa essere ricavata dal momento precedente all'abbassamento del piatto; il file del timelapse viene mantenuto se hai abilitato il timelapse per questa stampa, altrimenti viene eliminato automaticamente dopo l'acquisizione della foto.`,finishPhotoRestorePlate:`Solleva il piatto per la foto finale`,finishPhotoRestorePlateDescription:`La stampante abbassa il piatto di circa 100 mm al termine di una stampa, lasciando l'oggetto finito sotto l'inquadratura della fotocamera. Bambuddy lo risolleva fino a poco sopra l'ultimo strato stampato, scatta la foto e poi lo riabbassa. Ignorato se l'altezza di stampa è sconosciuta o se un altro lavoro è in coda.`,ffmpegNotInstalled:`ffmpeg non installato`,ffmpegRequired:`L'acquisizione dalla fotocamera richiede ffmpeg. Installalo tramite brew install ffmpeg (macOS) o apt install ffmpeg (Linux).`,camera:`Fotocamera`,cameraViewMode:`Modalità visualizzazione fotocamera`,cameraOverlayDescription:`La fotocamera si apre in un overlay ridimensionabile sulla schermata principale`,cameraWindowDescription:`La fotocamera si apre in una finestra separata del browser`,externalCamerasDescription:`Configura fotocamere esterne per sostituire la fotocamera integrata della stampante. Supporta stream MJPEG, RTSP, snapshot HTTP e fotocamere USB (V4L2). Quando abilitata, la fotocamera esterna viene usata per la vista in diretta e le foto di completamento.`,cameraPlaceholderUsb:`Percorso dispositivo (/dev/video0)`,cameraPlaceholderUrl:`URL fotocamera (rtsp://... o http://...)`,cameraTypeMjpeg:`Stream MJPEG`,cameraTypeRtsp:`Stream RTSP`,cameraTypeSnapshot:`Snapshot HTTP`,cameraTypeUsb:`Fotocamera USB (V4L2)`,cameraSnapshotUrl:`URL istantanea (facoltativo)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`URL singolo frame usato per miniature di notifica, foto di fine, frame del layer timelapse e rilevamento del piano. Timelapse e rilevamento del piano richiedono ciascuno il proprio toggle per stampante — questo URL è solo la sorgente immagine che usano quando attivi. Lascia vuoto per acquisire dallo stream live sopra. Utile per go2rtc (/api/frame.jpeg) e telecamere IP con endpoint snapshot dedicato.`,cameraRotation:`Rotazione`,test:`Test`,connected:`Connesso`,disconnected:`Disconnesso`,currency:`Valuta`,defaultFilamentCost:`Costo filamento predefinito (per kg)`,electricityCost:`Costo elettricità per kWh`,energyDisplayMode:`Modalità visualizzazione energia`,energyModePrintDescription:`La dashboard mostra la somma dell'energia usata durante le stampe`,energyModeTotalDescription:`La dashboard mostra l'energia totale dalle prese smart`,fileManager:`Gestore file`,createArchiveEntry:`Crea voce archivio durante la stampa`,createArchiveEntryDescription:`Quando si stampa dal gestore file, crea opzionalmente una voce di archivio`,lowDiskSpaceWarning:`Avviso spazio disco insufficiente`,lowDiskSpaceDescription:`Mostra avviso quando lo spazio disco scende sotto questa soglia`,printerFirmware:`Firmware stampante`,checkFirmwareDescription:`Controlla aggiornamenti firmware da Bambu Lab`,bambuddySoftware:`Software Bambuddy`,autoCheckDescription:`Controlla automaticamente nuove versioni all'avvio`,checkNow:`Controlla ora`,updateAvailableVersion:`Aggiornamento disponibile: v{{version}}`,releaseNotes:`Note di rilascio`,updateViaDocker:`Aggiorna tramite Docker Compose:`,composeDirectory:`Cartella Compose`,composeDirectoryHint:`Cartella che contiene il tuo docker-compose.yml. Lascia vuoto per omettere il cd.`,copyUpdateCommand:`Copia comando di aggiornamento`,updateViaHomeAssistant:`Gli aggiornamenti sono gestiti dal Supervisor di Home Assistant. Apri Impostazioni → Add-on → Bambuddy in Home Assistant per installare la nuova versione.`,updateViaWindowsInstaller:`Le installazioni Windows si aggiornano rieseguendo l'installer. Scarica la nuova versione qui sotto — i tuoi dati, le impostazioni e le stampanti vengono mantenuti.`,downloadWindowsInstaller:`Scarica installer per v{{version}}`,installUpdate:`Installa aggiornamento`,latestVersionRunning:`Stai usando l'ultima versione`,failedToCheckUpdates:`Controllo aggiornamenti fallito: {{error}}`,backupRestore:`Backup e ripristino`,backupRestoreDescription:`Esporta/importa impostazioni e configura backup GitHub`,goToBackup:`Vai al backup`,externalUrl:`URL esterno`,externalUrlDescription:`L'URL esterno dove Bambuddy è accessibile. Usato per immagini di notifica e integrazioni esterne.`,bambuddyUrl:`URL Bambuddy`,externalUrlHint:`Includi protocollo e porta (es. http://192.168.1.100:8000)`,ftpRetry:`Riprova FTP`,ftpRetryDescription:`Riprova le operazioni FTP quando il WiFi della stampante è instabile. Si applica a download 3MF, upload stampe, download timelapse e aggiornamenti firmware.`,autoRetryDescription:`Riprova automaticamente le operazioni FTP fallite`,retryAttempts:`Tentativi di ripetizione`,retryDelay:`Ritardo ripetizione`,connectionTimeout:`Timeout connessione`,time_one:`{{count}} volta`,time_other:`{{count}} volte`,second_one:`{{count}} secondo`,second_other:`{{count}} secondi`,nSeconds:`{{count}} secondi`,increaseForWeakWifi:`Aumenta per stampanti con WiFi debole`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Connetti a Home Assistant per controllare le prese smart tramite l'API REST HA. Supporta entità switch, light, input_boolean e script.`,homeAssistantUrl:`URL Home Assistant`,longLivedAccessToken:`Token di accesso a lunga durata`,haTokenHint:`Crea un token in HA: Profilo → Token di accesso a lunga durata → Crea token`,connectionSuccessful:`Connessione riuscita`,connectionFailed:`Connessione fallita`,haConnectionSuccess:`Connesso con successo a Home Assistant.`,haConnectionFailed:`Connessione a Home Assistant fallita.`,mqttPublishing:`Pubblicazione MQTT`,mqttDescription:`Pubblica eventi BamBuddy su un broker MQTT esterno per l'integrazione con Node-RED, Home Assistant e altri sistemi di automazione.`,mqttEnableDescription:`Pubblica eventi su broker MQTT esterno`,brokerHostname:`Hostname broker`,port:`Porta`,usernameOptional:`Nome utente (opzionale)`,passwordOptional:`Password (opzionale)`,topicPrefix:`Prefisso topic`,topicPrefixHint:`I topic saranno: {{prefix}}/printers//status, ecc.`,prometheusMetrics:`Metriche Prometheus`,prometheusEndpointDescription:`Esponi metriche stampante su /api/v1/metrics per monitoraggio Prometheus/Grafana.`,bearerTokenOptional:`Token Bearer (opzionale)`,bearerTokenHint:`Se impostato, le richieste devono includere Authorization: Bearer `,metricsConnectionStatus:`Stato connessione`,metricsPrinterState:`Stato stampante (idle/printing/ecc)`,metricsPrintProgress:`Progresso stampa 0-100%`,metricsBedTemp:`Temperatura piatto`,metricsNozzleTemp:`Temperatura ugello`,metricsPrintsTotal:`Stampe totali per risultato`,metricsMore:`...e altro (strati, ventole, coda, consumo filamento)`,smartPlugsDescription:`Connetti prese smart (Tasmota o Home Assistant) per automatizzare il controllo dell'alimentazione e monitorare il consumo energetico delle stampanti.`,allOn:`Tutte accese`,allOff:`Tutte spente`,addSmartPlug:`Aggiungi presa smart`,energySummary:`Riepilogo energia`,currentPower:`Potenza attuale`,plugsOnline:`{{reachable}}/{{total}} prese online`,today:`Oggi`,yesterday:`Ieri`,total:`Totale`,enablePlugsForSummary:`Abilita le prese per vedere il riepilogo energia`,addNotificationProvider:`Aggiungi`,systemBadge:`(Sistema)`,creating:`Creazione...`,changing:`Modifica...`,deleteUserAndItems:`Elimina utente E i suoi elementi`,deleteUserKeepItems:`Elimina utente, mantieni elementi (diventeranno senza proprietario)`,ok:`OK`,twoFa:{totpTitle:`App Authenticator (TOTP)`,totpDesc:`Usa un'app come Google Authenticator, Aegis o Authy.`,emailOtpTitle:`OTP via e-mail`,emailOtpDesc:`Invia un codice monouso a {{email}} al momento del login.`,emailOtpNoEmail:`Aggiungi un indirizzo e-mail al tuo account per abilitare questo metodo.`,addEmailFirst:`Il tuo account non ha un indirizzo e-mail. Chiedi a un amministratore di aggiungerne uno.`,setupTotp:`Configura app Authenticator`,setupAuthApp:`Configura app Authenticator`,setupInstructions:`Scansiona il codice QR con la tua app authenticator, poi conferma con un codice.`,manualEntry:`Impossibile scansionare? Inserisci questo segreto manualmente:`,scannedContinue:`Codice scansionato — continua`,enterCodeToConfirm:`Inserisci il codice a 6 cifre dalla tua app authenticator per confermare.`,activate:`Attiva`,disableTotp:`Disabilita Authenticator`,disableConfirmHint:`Inserisci un codice TOTP valido o un codice di backup per disabilitare l'authenticator.`,totpDisabled:`App Authenticator disabilitata.`,emailOtpEnabled:`OTP via e-mail abilitato.`,emailOtpDisabled:`OTP via e-mail disabilitato.`,smtpRequired:`Configura e testa prima le impostazioni SMTP.`,invalidCode:`Codice non valido. Riprova.`,enableEmailOtp:`Abilita OTP via e-mail`,disableEmailOtp:`Disabilita OTP via e-mail`,emailSetupEnterCode:`È stato inviato un codice di verifica al tuo indirizzo e-mail. Inseriscilo qui sotto per confermare che possiedi questa casella di posta.`,verifyAndEnable:`Verifica e abilita`,emailDisablePasswordHint:`Inserisci la password del tuo account per confermare la disabilitazione dell'OTP via e-mail.`,passwordPlaceholder:`Inserisci la tua password`,backupCodesTitle:`Salva i tuoi codici di backup`,backupCodesWarning:`Conserva questi codici in un posto sicuro. Ogni codice può essere usato una sola volta.`,backupCodesRemaining:`{{count}} codici di backup rimanenti`,savedCodes:`Codici salvati`,regenBackup:`Rigenera codici di backup`,regenBackupHint:`Inserisci il tuo codice TOTP corrente per generare 10 nuovi codici di backup.`,newBackupCodes:`Nuovi codici di backup`,linkedAccounts:`Account SSO collegati`,linkedAccountsDesc:`Questi provider di identità esterni sono collegati al tuo account.`,oidcUnlinked:`Account scollegato.`},sessionPolicy:{title:`Criterio di sessione`,description:`Durata massima della sessione per i nuovi accessi utente. I token già emessi mantengono la scadenza originale.`,preset24h:`24 ore`,preset7d:`7 giorni`,preset30d:`30 giorni`,customHoursLabel:`Durata personalizzata della sessione in ore`,hoursSuffix:`ore`,warning:`Le sessioni più lunghe riducono la protezione di disconnessione automatica. Consigliato solo per installazioni mono-utente attendibili.`},oidc:{title:`Provider SSO / OIDC`,desc:`Configura provider OpenID Connect per il single sign-on.`,addProvider:`Aggiungi provider`,newProvider:`Nuovo provider`,empty:`Nessun provider OIDC configurato.`,created:`Provider creato.`,updated:`Provider aggiornato.`,deleted:`Provider eliminato.`,refreshIcon:`Aggiorna icona`,removeIcon:`Rimuovi icona`,iconRefreshed:`Icona aggiornata.`,iconRemoved:`Icona rimossa.`,iconFetchFailed:`Impossibile recuperare l'icona dall'URL del provider.`,deleteTitle:`Elimina provider`,deleteMessage:`Eliminare "{{name}}"? Tutti gli account collegati verranno disconnessi.`,form:{name:`Nome visualizzato`,issuerUrl:`URL emittente`,clientId:`ID client`,clientSecret:`Client secret`,scopes:`Scope`,iconUrl:`URL icona (opzionale)`,enabled:`Abilitato`,autoCreate:`Crea utenti automaticamente`,autoCreateDesc:`Crea automaticamente un account locale al primo accesso.`,autoLink:`Collega automaticamente gli account esistenti`,autoLinkDesc:`Collega gli account locali esistenti tramite email al primo accesso.`,secretHint:`lascia vuoto per mantenere`,secretPlaceholder:`nuovo segreto`,emailClaim:`Claim email`,emailClaimDesc:`Claim JWT usato come identità email. Usare 'preferred_username' o 'upn' per Azure Entra ID (che non invia email_verified). Usare solo nomi di claim affidabili.`,emailClaimPlaceholder:`e-mail`,emailClaimCustomClaimAutoLinkWarning:`I claim personalizzati sono sicuri per il collegamento automatico solo se il valore è gestito dal tenant (es. Azure Entra ID upn / preferred_username). Non abilitare il collegamento automatico se il tuo IdP consente agli utenti di auto-assegnare questo claim.`,requireEmailVerified:`Richiedi verifica email`,requireEmailVerifiedDesc:`Accetta il claim email solo se il provider lo contrassegna come verificato.`,requireEmailVerifiedWarning:`Attenzione: l'email sarà accettata senza verifica. Usare solo con provider affidabili.`,requireEmailVerifiedAutoLink:`Disabilitare prima il collegamento automatico per modificare questa impostazione.`,defaultGroup:`Gruppo predefinito`,defaultGroupDesc:`Gruppo assegnato agli utenti creati automaticamente. Ritorno a Viewers se non impostato.`,defaultGroupViewersFallback:`Viewers (predefinito)`,autologin:`Accesso automatico`,autologinDesc:`Reindirizza i visitatori non autenticati direttamente a questo provider. Solo un provider può avere questo flag.`}},encryption:{title:`Stato crittografia MFA`,enabledFromEnv:`Crittografia a riposo abilitata (chiave dalla variabile d'ambiente MFA_ENCRYPTION_KEY)`,enabledFromFile:`Crittografia a riposo abilitata (chiave caricata dalla directory dei dati)`,enabledGenerated:`Crittografia a riposo abilitata con chiave auto-generata`,notConfigured:`Crittografia a riposo non configurata`,notConfiguredDesc:`I segreti TOTP e i client_secrets OIDC sono memorizzati in chiaro. Imposta MFA_ENCRYPTION_KEY o riavvia Bambuddy con una directory dati scrivibile per generarne uno automaticamente.`,allEncrypted:`Tutti i segreti MFA sono crittografati a riposo.`,legacyRowsLabel:`Righe legacy in chiaro`,encryptedRowsLabel:`Righe crittografate`,legacyRowsWarning:`Rilevate {{count}} righe legacy in chiaro. Salva di nuovo il provider OIDC o re-iscrivi l'app authenticator dell'utente per migrare allo storage crittografato.`,backupHint:`La chiave generata automaticamente è memorizzata in DATA_DIR/.mfa_encryption_key ed è inclusa nei backup locali ZIP. Mantieni sicuri i tuoi backup o imposta MFA_ENCRYPTION_KEY esplicitamente.`,decryptionBrokenTitle:`Chiave di crittografia mancante`,decryptionBrokenError:`{{count}} record crittografati non possono essere decifrati perché la chiave di crittografia non è più disponibile. Ripristina il precedente MFA_ENCRYPTION_KEY o DATA_DIR/.mfa_encryption_key per recuperare.`,migrationErrorWarning:`{{count}} riga/righe legacy non sono state ricifrate all'avvio. Controlla i log del server e riavvia Bambuddy per riprovare.`},spoolbuddy:{infoTitle:`Dispositivi SpoolBuddy`,infoBody:`I kiosk SpoolBuddy si registrano automaticamente tramite heartbeat. Annulla la registrazione qui se un dispositivo non è più in uso o se un duplicato obsoleto è rimasto dopo un crash del daemon.`,duplicatesTitle:`{{count}} dispositivi registrati`,duplicatesBody:`Solo il primo dispositivo registrato viene utilizzato dall'interfaccia kiosk. Se uno di questi è un duplicato obsoleto da un crash, annulla la sua registrazione — un dispositivo online si ri-registrerà al prossimo heartbeat.`,empty:`Nessun dispositivo SpoolBuddy registrato.`,online:`Online`,offline:`Offline`,unregister:`Annulla registrazione`,unregisterSuccess:`Dispositivo deregistrato`,unregisterError:`Deregistrazione non riuscita`,confirmTitle:`Annullare la registrazione del dispositivo SpoolBuddy?`,confirmBody:`Questo rimuoverà "{{hostname}}" ({{deviceId}}) dal database. Se il dispositivo è online, si ri-registrerà al prossimo heartbeat.`,ipAddress:`Indirizzo IP`,firmware:`Firmware`,lastSeen:`Ultimo rilevamento`,daemonUptime:`Uptime del daemon`,systemUptime:`Uptime sistema`,never:`mai`,nfc:`NFC`,scale:`Bilancia`,cpuTemp:`Temp. CPU`,cpuLoad:`Carico CPU`,memory:`Memoria`,disk:`Disco`,update:`Aggiorna`,updateConfirmTitle:`Aggiornare il daemon Spoolbuddy?`,updateConfirmBody:`Avviare un aggiornamento software su "{{hostname}}"? Il daemon si riavvierà al termine dell'aggiornamento.`,restartBrowser:`Riavvia browser`,restartBrowserConfirmTitle:`Riavviare il browser del kiosk?`,restartBrowserConfirmBody:`Riavviare il browser del kiosk su "{{hostname}}"? Il display si oscurerà brevemente.`,restartDaemon:`Riavvia daemon`,restartDaemonConfirmTitle:`Riavviare il daemon Spoolbuddy?`,restartDaemonConfirmBody:`Riavviare il daemon Spoolbuddy su "{{hostname}}"? Il dispositivo sarà offline per alcuni secondi.`,reboot:`Riavvia`,rebootConfirmTitle:`Riavviare il dispositivo?`,rebootConfirmBody:`Riavviare "{{hostname}}"? Il dispositivo sarà offline per circa un minuto.`,shutdown:`Spegni`,shutdownConfirmTitle:`Spegnere il dispositivo?`,shutdownConfirmBody:`Spegnere "{{hostname}}"? Sarà necessario un accesso fisico per riaccenderlo.`,commandConfirm:`Conferma`,commandQueued:`Comando in coda`,commandError:`Invio comando non riuscito`},pipelineLimits:{title:`Limiti pipeline dello slicer`,maxCopiesLabel:`Copie massime per esecuzione`,maxCopiesDesc:`Limite superiore alle copie che gli operatori possono richiedere durante l'esecuzione di una pipeline. Il limite massimo lato server è 1000.`},pipelines:{title:`Pipeline dello Slicer`,subtitle:`Bundle di preset riutilizzabili (stampante + processo + filamenti + tipo di piatto). Salvane uno dal dialogo Slice e applicalo con un clic al file successivo.`,loading:`Caricamento pipeline…`,loadError:`Impossibile caricare le pipeline.`,confirmDelete:`Eliminare questa pipeline? L'operazione non può essere annullata.`,staleWarning:`Uno o più preset referenziati non esistono più. Risalva questa pipeline dal dialogo Slice per ripararla.`,empty:{title:`Nessuna pipeline ancora.`,howto:`Apri il dialogo Slice per un file, scegli stampante / processo / filamenti / piatto, poi clicca "Salva come pipeline". Le tue pipeline salvate appariranno qui.`},field:{name:`Nome pipeline`,description:`Descrizione`,targetPrinter:`Stampante di destinazione`,noTarget:`— Nessuna destinazione —`,targetKind:`Tipo destinazione`,targetKindSpecific:`Stampante specifica`,targetKindClass:`Classe stampante`,targetModelClass:`Modello stampante`,fanoutStrategy:`Strategia di distribuzione`,fanout:{max_parallel:`Max parallelo — distribuisci su qualsiasi stampante libera corrispondente`,round_robin:`Round robin — alterna tra stampanti idonee`,fill_one_first:`Riempi una prima — assegna tutte le copie a una stampante`},fanoutShort:{max_parallel:`parallelo`,round_robin:`round robin`,fill_one_first:`prima una`}},action:{save:`Salva`,cancel:`Annulla`,rename:`Rinomina`,delete:`Elimina`},slot:{printer:`Stampante`,process:`Processo`,filament:`Filamento`,filamentN:`Filamento {{n}}`,filamentAll:`Tutti i {{n}} slot`,bed:`Piatto`},group:{profiles:`Profili`,filaments:`Filamenti`},searchPlaceholder:`Cerca pipeline…`,filterTargetType:`Filtra per tipo di destinazione`,filterTarget:`Filtra per destinazione`,filter:{all:`Tutte le destinazioni`,noTarget:`Nessuna destinazione`,count:`{{shown}} / {{total}}`,noMatches:`Nessuna pipeline corrisponde ai filtri attuali.`},toast:{saved:`Pipeline salvata`,saveFailed:`Salvataggio non riuscito`,deleted:`Pipeline eliminata`,deleteFailed:`Eliminazione non riuscita`},noTargetHint:`Imposta una stampante di destinazione per eseguire`,noTargetWarning:`Imposta una stampante di destinazione prima di eseguire questa pipeline.`,runs:{lastRun:`Ultima esecuzione`,status:{queued:`in coda`,slicing:`slicing`,dispatching:`invio`,in_progress:`stampa`,completed:`completata`,failed:`fallita`,partial_failure:`fallimento parziale`,cancelled:`annullata`}}}},notification:{printStarted:{title:`Stampa avviata`,body:`{{printer}}: {{filename}} ha iniziato a stampare`},printCompleted:{title:`Stampa completata`,body:`{{printer}}: {{filename}} completata con successo`},printFailed:{title:`Stampa fallita`,body:`{{printer}}: {{filename}} fallita`},printStopped:{title:`Stampa interrotta`,body:`{{printer}}: {{filename}} interrotta`},printProgress:{title:`Avanzamento stampa`,body:`{{printer}}: {{filename}} al {{percent}}% completamento`},printerOffline:{title:`Stampante offline`,body:`{{printer}} e offline`},printerError:{title:`Errore stampante`,body:`{{printer}} – {{error}}`},filamentLow:{title:`Filamento in esaurimento`,body:`{{printer}}: Filamento in esaurimento`},maintenanceDue:{title:`Manutenzione dovuta`,body:`{{printer}}: {{items}} richiedono attenzione`}},errors:{generic:`Qualcosa e andato storto`,networkError:`Errore di rete. Controlla la connessione.`,notFound:`Non trovato`,unauthorized:`Non autorizzato`,serverError:`Errore server`,validationError:`Controlla i dati inseriti`,printerConnectionFailed:`Connessione alla stampante fallita`,saveFailed:`Salvataggio modifiche fallito`,deleteFailed:`Eliminazione fallita`,loadFailed:`Caricamento dati fallito`},hmsErrors:{title:`Errori - {{name}}`,noErrors:`Nessun errore`,viewOnWiki:`Vedi su Bambu Lab Wiki`,mqttVerifyFailedRemedy:`Attiva la modalita sviluppatore sulla stampante, riavvia la stampante e avvia di nuovo il lavoro.`,unknownCode:`Codice HMS sconosciuto — consulta la wiki di Bambu Lab per i dettagli.`,clearInstructions:`Cancella gli errori sulla stampante per rimuoverli qui.`,clearErrors:`Cancella errori`,clearSuccess:`Errori HMS cancellati`,clearFailed:`Impossibile cancellare gli errori HMS`,actionSuccess:`Azione inviata alla stampante`,actionFailed:`Impossibile inviare l'azione`,runoutExpectedSlot:`Il filamento in {{ranOut}} è esaurito. La stampante ora attende filamento compatibile in {{expected}}. Inserisci una bobina in {{expected}}, quindi seleziona Riprova.`,runoutExpectedSlotOnly:`La stampante attende filamento compatibile in {{expected}}. Inserisci lì una bobina, quindi seleziona Riprova.`,runoutSlotUnknown:`Il filamento è esaurito e la stampa è in pausa. Bambuddy non è riuscito a determinare quale slot la stampante attende ora — controlla lo schermo della stampante per lo slot richiesto.`,actions:{RESUME_PRINTING:`Riprendi stampa`,RESUME_PRINTING_DEFECTS:`Riprendi (difetti accettabili)`,RESUME_PRINTING_PROBELM_SOLVED:`Riprendi (problema risolto)`,STOP_PRINTING:`Ferma stampa`,CHECK_ASSISTANT:`Apri assistente`,FILAMENT_EXTRUDED:`Filamento estruso, continua`,RETRY_FILAMENT_EXTRUDED:`Non ancora estruso, riprova`,CONTINUE:`Completato, continua`,LOAD_VIRTUAL_TRAY:`Carica filamento`,OK_BUTTON:`OK`,FILAMENT_LOAD_RESUME:`Filamento caricato, riprendi`,JUMP_TO_LIVEVIEW:`Visualizza in diretta`,NO_REMINDER_NEXT_TIME:`Non ricordare la prossima volta`,REFRESH_NOZZLE:`Ricontrolla`,IGNORE_NO_REMINDER_NEXT_TIME:`Ignora e non ricordare`,IGNORE_RESUME:`Ignora e riprendi`,PROBLEM_SOLVED_RESUME:`Problema risolto, riprendi`,TURN_OFF_FIRE_ALARM:`Capito, spegni allarme antincendio`,RETRY_PROBLEM_SOLVED:`Riprova (problema risolto)`,CANCLE:`Annulla`,STOP_DRYING:`Ferma essiccazione`,PROCEED:`Procedi`,OK_JUMP_RACK:`OK`,ABORT:`Annulla`,DISABLE_PURIFICATION:`Disattiva purificazione per questa stampa`,DONT_REMIND_NEXT_TIME:`Non ricordarmelo`,DBL_CHECK_CANCEL:`Annulla`,DBL_CHECK_DONE:`Fatto`,DBL_CHECK_RETRY:`Riprova`,DBL_CHECK_RESUME:`Riprendi`,DBL_CHECK_OK:`Conferma`,REMOVE_CLOSE_BTN:`Chiudi`}},mqttDebug:{title:`Log debug MQTT`,searchPlaceholder:`Cerca topic o payload...`,noMessages:`Nessun messaggio registrato`,startLoggingHint:`Clicca "Avvia logging" per iniziare a catturare messaggi MQTT`,noMessagesMatch:`Nessun messaggio corrisponde al filtro`,adjustFilterHint:`Prova a modificare la ricerca o i filtri`,incoming:`In ingresso`,outgoing:`In uscita`,loggingStopped:`Logging fermato`,loggingActive:`Logging attivo - i messaggi si aggiornano automaticamente`,startLogging:`Avvia logging`,stopLogging:`Ferma logging`,clearLog:`Pulisci log`,topic:`Argomento`,timestamp:`Timestamp`,direction:`Direzione`,all:`Tutti`},printerFiles:{zipStarted_one:`Download ZIP avviato per {{count}} file`,zipStarted_other:`Download ZIP avviato per {{count}} file`,zipPartial:`Download ZIP avviato con {{successful}} file su {{total}}; non è stato possibile recuperare gli altri`,downloadFailed:`Download non riuscito: {{error}}`,unknownError:`Errore sconosciuto`,shiftSelectHint:`Maiusc-clic per selezionare un intervallo`,selectFile:`Seleziona {{name}}`,deselectFile:`Deseleziona {{name}}`,title:`Gestore file`,storageUsed:`Usato:`,storageFree:`Libero:`,filterPlaceholder:`Filtra file...`,deleteButton:`Elimina`,deleteFiles:`Elimina {{count}} file`,deleteFileConfirm:`Eliminare "{{name}}"? Questa azione non può essere annullata.`,deleteFilesConfirm:`Eliminare {{count}} file selezionati? Questa azione non può essere annullata.`,noFiles:`Nessun file sulla stampante`,printerUnavailable:`Il servizio file della stampante non è disponibile. Riprova quando la stampante è raggiungibile.`,loadingFiles:`Caricamento file...`,failedToLoad:`Caricamento file fallito`,toast:{filesDeleted:`Eliminati {{count}} file`,deleteFailed:`Eliminazione fallita: {{error}}`}},confirm:{delete:`Sei sicuro di voler eliminare questo?`,unsavedChanges:`Hai modifiche non salvate. Sei sicuro di voler uscire?`,clearQueue:`Sei sicuro di voler svuotare la coda?`},login:{title:`Login Bambuddy`,subtitle:`Accedi al tuo account`,username:`Nome utente`,usernamePlaceholder:`Inserisci il nome utente`,usernameOrEmail:`Nome utente o email`,usernameOrEmailPlaceholder:`Nome utente o @ Email`,password:`Password`,passwordPlaceholder:`Inserisci la password`,signIn:`Accedi`,signingIn:`Accesso in corso...`,rememberMe:`Ricordami`,forgotPassword:`Hai dimenticato la password?`,autologinFailed:`Accesso SSO automatico fallito. Scegli un provider qui sotto per continuare.`,localDisabledNotice:`L'accesso locale è disabilitato. Usa uno dei provider SSO qui sotto.`,loginSuccess:`Accesso riuscito`,loginFailed:`Accesso fallito`,enterCredentials:`Inserisci nome utente e password`,enterEmail:`Inserisci il tuo indirizzo e-mail`,oidcLoginFailed:`Accesso OIDC fallito`,oidcErrors:{providerError:`Il provider di identità ha restituito un errore`,missingParameters:`Parametri obbligatori mancanti nel callback OIDC`,invalidState:`Lo stato OIDC non è valido o è già stato utilizzato`,stateExpired:`La sessione OIDC è scaduta — riprovare`,providerNotFound:`Provider OIDC non trovato`,discoveryFailed:`Impossibile recuperare il documento di discovery OIDC`,invalidDiscovery:`Il documento di discovery OIDC non è valido`,networkError:`Errore di rete durante lo scambio di token OIDC`,badResponse:`Risposta inattesa durante lo scambio di token OIDC`,noIdToken:`Il provider OIDC non ha restituito un ID token`,validationFailed:`La validazione del token OIDC non è riuscita`,nonceMismatch:`Il nonce OIDC non corrisponde — possibile attacco di replay`,missingSubClaim:`Il token OIDC è privo del claim sub`,noLinkedAccount:`Nessun account locale è collegato a questa identità OIDC`,accountInactive:`Il tuo account è inattivo`,userResolutionFailed:`Impossibile risolvere il tuo account`,internalError:`Si è verificato un errore interno durante il login OIDC`,tokenExchangeFailed:`Lo scambio di token OIDC non è riuscito`},forgotPasswordTitle:`Password dimenticata`,forgotPasswordMessage:`Se hai dimenticato la password, contatta il tuo amministratore di sistema per reimpostarla.`,forgotPasswordEmailMessage:`Inserisci il tuo indirizzo email e ti invieremo una nuova password.`,emailAddress:`Indirizzo email`,emailPlaceholder:`tua.email@esempio.com`,cancel:`Annulla`,sending:`Invio...`,sendResetEmail:`Invia email di reimpostazione`,howToReset:`Come reimpostare la password:`,resetStep1:`Contatta il tuo amministratore Bambuddy`,resetStep2:`Chiedi di reimpostare la password in Gestione utenti`,resetStep3:`Possono impostare una nuova password temporanea`,resetStep4:`Accedi con la nuova password e cambiala in Impostazioni`,gotIt:`Capito`,twoFA:{title:`Autenticazione a due fattori`,subtitle:`Il tuo account è protetto da 2FA. Inserisci il codice di verifica qui sotto.`,methodAuthenticator:`App di autenticazione`,methodEmail:`Codice via e-mail`,methodBackup:`Codice di recupero`,instructionsTotp:`Apri la tua app di autenticazione e inserisci il codice a 6 cifre per Bambuddy.`,instructionsEmail:`Un codice a 6 cifre è stato inviato al tuo indirizzo e-mail. È valido per 10 minuti.`,instructionsEmailNotSent:`Clicca il pulsante qui sotto per ricevere un codice di verifica via e-mail.`,instructionsBackup:`Inserisci uno dei tuoi codici di recupero a 8 caratteri. Ogni codice può essere utilizzato una sola volta.`,sendCodeButton:`Invia codice via e-mail`,sendingCode:`Invio in corso...`,resendCode:`Invia nuovamente il codice`,codeLabel:`Codice di verifica`,backupCodeLabel:`Codice di recupero`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`Verifica`,verifyingButton:`Verifica in corso...`,backToLogin:`← Torna alla pagina di accesso`,orContinueWith:`oppure accedi con`,signInWith:`Accedi con {{provider}}`,enterCode:`Inserisci il codice di verifica`,sendCodeFailed:`Invio del codice di verifica non riuscito`,invalidCode:`Codice non valido. Riprova.`},resetPassword:{title:`Imposta nuova password`,subtitle:`Inserisci e conferma la nuova password qui sotto.`,newPassword:`Nuova password`,newPasswordPlaceholder:`Almeno 8 caratteri`,confirmPassword:`Conferma password`,confirmPasswordPlaceholder:`Ripeti la nuova password`,saving:`Salvataggio…`,submit:`Imposta nuova password`,backToLogin:`Torna al login`,passwordsDoNotMatch:`Le password non coincidono`,passwordTooShort:`La password deve avere almeno 8 caratteri`,resetFailed:`Reimpostazione non riuscita. Il link potrebbe essere scaduto.`}},setup:{title:`Configurazione Bambuddy`,subtitle:`Configura autenticazione per la tua istanza Bambuddy`,enableAuth:`Abilita autenticazione`,adminAccount:`Account admin`,adminAccountDesc:`Se esistono già admin, l'autenticazione verrà abilitata usando gli account esistenti. Lascia i campi sotto vuoti per usare gli admin esistenti, oppure inserisci nuove credenziali per creare un nuovo utente admin.`,adminUsername:`Nome utente admin`,adminPassword:`Password admin`,optionalIfAdminExists:`(opzionale se esistono admin)`,adminUsernamePlaceholder:`Inserisci nome utente admin (opzionale)`,adminPasswordPlaceholder:`Inserisci password admin (opzionale)`,confirmPassword:`Conferma password`,confirmPasswordPlaceholder:`Conferma password admin`,settingUp:`Configurazione...`,completeSetup:`Completa configurazione`,toast:{authEnabledAdminCreated:`Autenticazione abilitata e utente admin creato`,authEnabledExistingAdmins:`Autenticazione abilitata usando admin esistenti`,setupCompleted:`Configurazione completata`,enterBothCredentials:`Inserisci nome utente e password admin, oppure lascia entrambi vuoti per usare admin esistenti`,passwordsDoNotMatch:`Le password non coincidono`,passwordTooShort:`La password deve essere di almeno 6 caratteri`}},changePassword:{title:`Cambia password`,currentPassword:`Password attuale`,currentPasswordPlaceholder:`Inserisci password attuale`,newPassword:`Nuova password`,newPasswordPlaceholder:`Inserisci nuova password (min 6 caratteri)`,confirmPassword:`Conferma nuova password`,confirmPasswordPlaceholder:`Conferma nuova password`,passwordsDoNotMatch:`Le password non coincidono`,passwordTooShort:`La password deve essere di almeno 6 caratteri`,changing:`Modifica in corso...`,success:`Password cambiata con successo`,failed:`Modifica password fallita`},plateAlert:{title:`Stampa in pausa!`,message:`Oggetti rilevati sul piatto. La stampa è stata messa automaticamente in pausa. Svuota il piatto e riprendi la stampa.`,understand:`Ho capito`},camera:{title:`Vista camera`,invalidPrinterId:`ID stampante non valido`,live:`Live`,snapshot:`Istantanea`,restartStream:`Riavvia stream`,refreshSnapshot:`Aggiorna snapshot`,fullscreen:`Schermo intero`,exitFullscreen:`Esci da schermo intero`,connectingToCamera:`Connessione alla camera...`,capturingSnapshot:`Acquisizione snapshot...`,connectionLost:`Connessione persa`,connectionFailed:`Connessione camera fallita`,reconnecting:`Riconnessione tra {{countdown}}s... (tentativo {{attempt}}/{{max}})`,reconnectNow:`Riconnetti ora`,cameraUnavailable:`Camera non disponibile`,cameraUnavailableDesc:`Assicurati che la stampante sia accesa e connessa.`,noCamera:`Nessuna camera disponibile`,retry:`Riprova`,cameraStream:`Stream camera`,zoomOut:`Zoom indietro`,zoomIn:`Zoom avanti`,resetZoom:`Reimposta zoom`,recording:`Registrazione`,startRecording:`Avvia registrazione`,stopRecording:`Ferma registrazione`,chamberLight:`Accendi/Spegni luce camera`,unavailable:`Telecamera non disponibile`,diagnose:{button:`Diagnostica`,modalTitle:`Diagnostica telecamera`,running:`Diagnostica in corso...`,runFailed:`Impossibile eseguire la diagnostica: {{error}}`,retry:`Riesegui`,stage:{tcp_reachable:`Raggiungibilità di rete`,first_frame:`Acquisizione frame`,live_stream_active:`Stream live attivo`},summary:{all_ok:`La telecamera funziona. La diagnostica ha completato tutte le fasi con successo.`,live_stream_active_healthy:`La telecamera sta trasmettendo con frame recenti — nessun test necessario.`,printer_unreachable:`La stampante non è raggiungibile. Verifica l'indirizzo IP, la connessione di rete e che la stampante sia accesa.`,camera_port_closed:`La stampante risponde ma la porta della telecamera è chiusa. Assicurati che la modalità LAN e la modalità sviluppatore siano attive nelle impostazioni della stampante.`,no_frame:`Connessione alla telecamera riuscita ma nessun frame ricevuto. Riprova o verifica che la telecamera sia abilitata nelle impostazioni della stampante.`,unknown_failure:`Diagnostica della telecamera fallita per motivo sconosciuto. Controlla il log di supporto per i dettagli.`},meta:{protocol:`Protocollo`,port:`Porta`,profile:`Profilo`}}},groups:{title:`Gestione gruppi`,subtitle:`Gestisci gruppi permessi per controllo accesso`,backToSettings:`Torna a Impostazioni`,createGroup:`Crea gruppo`,noPermission:`Non hai il permesso di accedere a questa pagina.`,system:`Sistema`,noDescription:`Nessuna descrizione`,usersCount:`{{count}} utenti`,permissionsCount:`{{count}} permessi`,edit:`Modifica`,delete:`Elimina`,toast:{created:`Gruppo creato con successo`,updated:`Gruppo aggiornato con successo`,deleted:`Gruppo eliminato con successo`,enterGroupName:`Inserisci un nome gruppo`},modal:{editGroup:`Modifica gruppo`,createGroup:`Crea gruppo`,cancel:`Annulla`,saving:`Salvataggio...`,creating:`Creazione...`,saveChanges:`Salva modifiche`},form:{groupName:`Nome gruppo`,groupNamePlaceholder:`Inserisci nome gruppo`,systemGroupWarning:`I nomi dei gruppi di sistema non possono essere modificati`,description:`Descrizione`,descriptionPlaceholder:`Inserisci descrizione (opzionale)`,permissions:`Permessi ({{count}} selezionati)`},deleteModal:{title:`Elimina gruppo`,message:`Sei sicuro di voler eliminare questo gruppo? Gli utenti in questo gruppo perderanno questi permessi.`,confirm:`Elimina gruppo`},editor:{title:`Modifica gruppo`,createTitle:`Crea gruppo`,search:`Cerca permessi...`,selectAll:`Seleziona tutto`,clearAll:`Deseleziona tutto`,permissionsSelected:`{{count}} selezionati`,noResults:`Nessun permesso corrisponde alla ricerca`,websocketHint:`Necessario per gli aggiornamenti in tempo reale. Senza questo permesso, l'interfaccia ripiega sul polling periodico.`}},users:{title:`Gestione utenti`,subtitle:`Gestisci utenti e accesso alla tua istanza Bambuddy`,backToSettings:`Torna a Impostazioni`,createUser:`Crea utente`,noPermission:`Non hai il permesso di accedere a questa pagina.`,admin:`Amministratore`,noGroups:`Nessun gruppo`,active:`Attivo`,inactive:`Inattivo`,edit:`Modifica`,delete:`Elimina`,system:`Sistema`,noGroupsAvailable:`Nessun gruppo disponibile`,table:{username:`Nome utente`,groups:`Gruppi`,status:`Stato`,actions:`Azioni`},toast:{created:`Utente creato con successo`,updated:`Utente aggiornato con successo`,deleted:`Utente eliminato con successo`,fillRequired:`Compila tutti i campi obbligatori`,passwordsDoNotMatch:`Le password non coincidono`,passwordTooShort:`La password deve essere di almeno 6 caratteri`,ldapProvisioned:`Utente LDAP "{{username}}" provisionato`},modal:{createUser:`Crea utente`,editUser:`Modifica utente`,cancel:`Annulla`,creating:`Creazione...`,saving:`Salvataggio...`,saveChanges:`Salva modifiche`,advancedAuthSubtitle:`con autenticazione avanzata`,tabsAriaLabel:`Origine utente`,localTab:`Locale`,ldapTab:`LDAP`,ldapSearchLabel:`Cerca nella directory`,ldapSearchPlaceholder:`Digita un nome utente, nome o e-mail...`,ldapMinChars:`Digita almeno 2 caratteri per cercare`,ldapTypeToSearch:`Inizia a digitare per cercare nella directory LDAP`,ldapSearching:`Ricerca nella directory...`,ldapNoResults:`Nessun utente corrispondente nella directory`,ldapSearchError:`Ricerca nella directory fallita. Verifica lo stato del server LDAP.`,ldapAlreadyProvisioned:`Già provisionato`,ldapSelectedLabel:`Selezionato`,ldapProvision:`Provisiona utente`,ldapProvisioning:`Provisioning...`,ldapErrorProvision:`Provisioning fallito. Verifica lo stato del server LDAP e riprova.`},form:{username:`Nome utente`,usernamePlaceholder:`Inserisci nome utente`,email:`E-mail`,emailPlaceholder:`utente@esempio.com`,password:`Password`,passwordPlaceholder:`Inserisci password`,confirmPassword:`Conferma password`,confirmPasswordPlaceholder:`Conferma password`,newPasswordPlaceholder:`Inserisci nuova password`,confirmNewPasswordPlaceholder:`Conferma nuova password`,leaveBlankToKeep:`lascia vuoto per mantenere attuale`,groups:`Gruppi`,optional:`opzionale`,autoGeneratedPassword:`Una password sicura verrà generata automaticamente e inviata via email all'utente.`,passwordManagedByAdvancedAuth:`La password è gestita dall'autenticazione avanzata. Usa "Reimposta password" per inviare una nuova password all'utente via email.`,resetPassword:`Reimposta password`,resettingPassword:`Reimpostazione password...`},deleteModal:{title:`Elimina utente`,message:`Sei sicuro di voler eliminare questo utente? Questa azione non può essere annullata.`,confirm:`Elimina utente`}},streamOverlay:{title:`Overlay stream`,invalidPrinterId:`ID stampante non valido`,cameraStream:`Stream camera`,progress:`Avanzamento`,eta:`ETA`,printerIdle:`Stampante inattiva`,printerOffline:`Stampante offline`,builder:{title:`Overlay per streaming`,description:`Compone l'URL di un overlay per streaming: una vista telecamera a schermo intero con i dati di stampa in tempo reale sovrapposti, per OBS, un display a parete o qualsiasi sorgente browser. Scegli i campi e copia l'URL.`,printer:`Stampante`,size:`Dimensione del testo`,sizeSmall:`Piccola`,sizeMedium:`Media`,sizeLarge:`Grande`,fps:`Frequenza fotogrammi`,fpsHint:`Le telecamere A1 e P1 si fermano intorno a 5 fps, qualunque valore venga richiesto.`,token:`Token overlay (facoltativo)`,tokenHint:`Serve solo con il login attivo: OBS non ha una sessione propria. Creane uno sopra con ambito Overlay per streaming.`,tokenWarning:`Questo URL contiene un token: chi riesce a leggerlo può vedere lo streaming e il nome del file. Revoca il token per interrompere l'accesso.`,fields:`Campi da mostrare`,fieldPrinter:`Nome stampante`,fieldFilename:`Nome file`,fieldStatus:`Stato`,fieldProgress:`Barra di avanzamento`,fieldLayers:`Numero di layer`,fieldEta:`Tempo rimanente e orario di fine`,fieldCamera:`Immagine telecamera`,chamberHint:`La temperatura della camera compare solo sui modelli con un vero sensore: P1 e A1 riportano un valore privo di significato, quindi viene omessa.`,urlTitle:`URL overlay`,open:`Apri`,showPreview:`Mostra anteprima`,hidePreview:`Nascondi anteprima`,previewTitle:`Anteprima overlay`},status:{printing:`In stampa`,paused:`In pausa`,finished:`Completata`,failed:`Fallita`,idle:`Inattiva`,unknown:`Sconosciuto`}},profiles:{title:`Profili`,subtitle:`Gestisci preset slicer e calibrazioni pressure advance`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`Profili locali`,kprofiles:`Profili K`},orcaCloud:{connectedAs:`Connesso come`,connectedShort:`Connesso a Orca Cloud`,logout:`Disconnetti`,noLogoutPermission:`Non hai il permesso di disconnetterti`,noConnectPermission:`Non hai il permesso di connetterti a Orca Cloud`,retry:`Riprova`,connectButton:`Connetti Orca Cloud`,connect:{title:`Connetti a Orca Cloud`,description:`Accedi al tuo account Orca Cloud per sincronizzare i profili dello slicer in Bambuddy.`},device:{title:`Approva Bambuddy in Orca Cloud`,instruction:`Apri Orca Cloud e approva questo codice. Bambuddy si connette automaticamente non appena approvi.`,codeLabel:`Il tuo codice di associazione`,openButton:`Apri la pagina di approvazione di Orca Cloud`,manualHint:`Oppure vai su {{url}} e inserisci il codice qui sopra.`,waiting:`In attesa della tua approvazione…`,cancel:`Annulla`},profiles:{title:`I tuoi profili Orca Cloud ({{count}})`,refresh:`Aggiorna`,empty:`Nessun profilo trovato nel tuo account Orca Cloud.`},toast:{disconnected:`Disconnesso da Orca Cloud`},errors:{startFailed:`Impossibile avviare l'accesso a Orca Cloud.`,denied:`L'associazione è stata rifiutata in Orca Cloud.`,expired:`Il codice di associazione è scaduto. Fai clic su Connetti per riprovare.`,pollFailed:`Connessione persa durante l'attesa dell'approvazione. Riprova.`}},localProfiles:{title:`Profili locali`,subtitle:`Importa e gestisci preset slicer da OrcaSlicer`,import:`Importa profili`,importDesc:`Trascina file .bbscfg, .bbsflmt, .orca_filament, .zip o .json qui`,importing:`Importazione...`,search:`Cerca preset locali...`,noPresets:`Nessun preset locale ancora`,noSearchResults:`Nessun preset corrisponde alla ricerca`,badge:`Locale`,edit:`Modifica`,delete:`Elimina`,cancel:`Annulla`,deleteConfirmTitle:`Elimina preset`,deleteConfirm:`Sei sicuro di voler eliminare questo preset? Questa azione non può essere annullata.`,source:`Fonte`,inheritsFrom:`Eredita da`,filamentType:`Tipo`,vendor:`Produttore`,compatiblePrinters:`Stampanti`,nozzleTemp:`Temp. ugello`,cost:`Costo`,density:`Densità`,pressureAdvance:`Pressure Advance`,filament:`Filamento`,process:`Processo`,printer:`Stampante`,toast:{importSuccess:`{{count}} preset importati`,importSkipped:`{{count}} preset saltati (duplicati)`,importError:`{{count}} errori durante l'importazione`,deleted:`Preset eliminato`,updated:`Preset aggiornato`}},connectedAs:`Connesso come`,signInExpiredTitle:`Accesso a Bambu Cloud scaduto`,signInExpiredBody:`Bambu Lab non accetta più il token salvato. Accedi di nuovo per ripristinare i profili cloud, le importazioni da MakerWorld e i controlli del firmware.`,logout:`Esci`,noLogoutPermission:`Non hai il permesso di disconnetterti`,failedToLoad:`Caricamento profili fallito`,retry:`Riprova`,time:{justNow:`Proprio ora`,minsAgo:`{{count}}m fa`,hoursAgo:`{{count}}h fa`,daysAgo:`{{count}}g fa`},toast:{loggedOut:`Disconnesso`},login:{title:`Connetti a Bambu Cloud`,subtitle:`Sincronizza i preset del slicer tra dispositivi`,email:`E-mail`,password:`Password`,region:`Regione`,regionGlobal:`Globale`,regionChina:`Cina`,verificationCode:`Codice di verifica`,totpCode:`Codice autenticatore`,checkEmail:`Controlla la tua email ({{email}}) per un codice a 6 cifre`,enterTotpHint:`Inserisci il codice a 6 cifre dalla tua app autenticatore`,accessToken:`Token di accesso`,accessTokenHint:`Incolla il tuo access token Bambu Cloud. Gli account della regione Cina devono usare questa via (vincolati al numero di telefono — login via e-mail non disponibile). Il wiki spiega come recuperare il token dai cookie di MakerWorld.`,back:`Indietro`,loginButton:`Accedi`,verifyButton:`Verifica`,setTokenButton:`Imposta token`,useToken:`Usa access token invece`,captchaTitle:`Bambu Cloud richiede un CAPTCHA`,captchaBody:`Bambu sta richiedendo un CAPTCHA alla tua rete prima di accettare un accesso, e la verifica non può essere completata da Bambuddy. Email e password non sono il problema. Il blocco è legato al tuo indirizzo IP pubblico e di solito si risolve da solo entro qualche ora; riprovare di continuo lo prolunga. Per accedere subito, usa invece un token di accesso preso da una sessione del browser.`,useEmail:`Accedi con email invece`,toast:{loggedIn:`Accesso riuscito`,codeSent:`Codice di verifica inviato via email`,enterTotp:`Inserisci il codice dalla tua app autenticatore`,tokenSet:`Token impostato con successo`}},presets:{myPreset:`Il mio preset (modificabile)`,duplicate:`Duplica`,editable:`Modificabile`,failedToLoadDetails:`Caricamento dettagli preset fallito`,deleteConfirm:`Eliminare questo preset?`,deleteWarning:`Questo eliminerà definitivamente "{{name}}" da Bambu Cloud. Questa azione non può essere annullata.`,noDuplicatePermission:`Non hai il permesso di duplicare preset`,noEditPermission:`Non hai il permesso di modificare preset`,noDeletePermission:`Non hai il permesso di eliminare preset`,types:{filament:`Preset filamento`,printer:`Preset stampante`,process:`Preset processo`},toast:{deleted:`Preset eliminato`,created:`Preset creato`,updated:`Preset aggiornato`,duplicated:`Preset duplicato`,fieldAdded:`Campo "{{key}}" aggiunto`,exported:`Preset esportato`},baseLabel:`Base: {{name}}`,currentLabel:`Corrente: {{name}}`,newPreset:`Nuovo preset`,editPreset:`Modifica preset`,duplicatePreset:`Duplica preset`,createNewPreset:`Crea nuovo preset`,customizeSettings:`Personalizza le impostazioni per il nuovo preset`,compareWithBase:`Confronta con base`,compare:`Confronta`,basePreset:`Preset base`,selectBasePreset:`Seleziona preset base...`,presetName:`Nome preset`,myCustomPreset:`Il mio preset personalizzato`,inheritsFrom:`Deriva da`,dropJsonToImport:`Rilascia JSON per importare`,tabs:{common:`Comune`,allFields:`Tutti i campi`},availableFields:`Campi disponibili`,searchFieldsPlaceholder:`Cerca campi...`,noMatchingFields:`Nessun campo corrispondente`,allFieldsAdded:`Tutti i campi aggiunti`,addCustomField:`Aggiungi campo personalizzato`,yourOverrides:`Le tue override`,noOverridesYet:`Nessun override ancora`,clickFieldsToAdd:`Clicca i campi a sinistra per aggiungerli`,saveAsTemplate:`Salva come template`,jsonTip:`Suggerimento: trascina e rilascia un file .json ovunque in questa modale per importare impostazioni`},cloudView:{searchPlaceholder:`Cerca preset...`,templates:`Template`,refresh:`Aggiorna`,newPreset:`Nuovo preset`,clearFilters:`Pulisci filtri`,compareMode:`Modalita confronto`,selectAnotherPreset:`Seleziona un altro preset {{type}}`,clickTwoPresets:`Clicca due preset dello stesso tipo per confrontare`,selectFirst:`1. Seleziona il primo`,selectSecond:`2. Seleziona il secondo`,compareNow:`Confronta ora`,lastSynced:`Ultima sincronizzazione:`,showingCount:`Mostrati {{showing}} di {{total}} preset`,noPresetsFound:`Nessun preset trovato`,columns:{filament:`Filamento`,process:`Processo`,printer:`Stampante`},noFilamentPresets:`Nessun preset filamento`,noProcessPresets:`Nessun preset processo`,noPrinterPresets:`Nessun preset stampante`,filters:{type:`Tipo`,owner:`Proprietario`,printer:`Stampante`,nozzle:`Ugello`,filament:`Filamento`,layer:`Layer`,all:`Tutti`,myPresets:`I miei preset`,builtIn:`Integrati`,process:`Processo`},noTemplatesPermission:`Non hai il permesso di gestire i template`,noRefreshPermission:`Non hai il permesso di aggiornare i profili`,noCreatePermission:`Non hai il permesso di creare preset`},templates:{title:`Template rapidi`,noTemplates:`Nessun template ancora`,createFirst:`Crea template dall'editor preset`,typeFilter:`Tipo:`,deleteTitle:`Elimina template`,deleteWarning:`Questa azione non può essere annullata`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"?`,namePlaceholder:`Nome template`,descriptionPlaceholder:`Descrizione`,settingsJson:`Impostazioni (JSON)`,fieldsCount:`{{count}} campi`,shownInModals:`Mostrati nelle modali`,hiddenInModals:`Nascosti nelle modali`,apply:`Applica`,toast:{deleted:`Template eliminato`,updated:`Template aggiornato`,created:`Template creato`,applied:`Template applicato`}}},support:{debugLoggingActive:`Log debug attivo`,manageLogs:`Gestisci`,collectItem7:`Connettività stampante e versioni firmware`,collectItem8:`Stato integrazioni (Spoolman, MQTT, HA)`,collectItem9:`Interfacce di rete (solo subnet)`,collectItem10:`Versioni dei pacchetti Python`,collectItem11:`Controlli di integrità del database`,collectItem12:`Dettagli dell'ambiente Docker`,bundleGenerating:`Generazione del pacchetto...`,bundleStepConnection:`Controlli di connettività delle stampanti in corso`,bundleStepVirtualPrinters:`Controlli di configurazione delle stampanti virtuali in corso`,bundleStepLogScan:`Analisi dei log recenti per problemi noti`,bundleStepBuild:`Creazione dello ZIP del pacchetto di supporto`},fileManager:{variants:{badge:`{{count}} versioni`,groupAction:`Raggruppa come versioni`,groupTooltip:`Segna questi file come lo stesso lavoro elaborato per stampanti diverse`,grouped:`{{count}} file raggruppati come versioni`,printAlternatives:`Stampa ({{count}} alternative)`},title:`Gestore file`,subtitle:`Organizza e gestisci i tuoi file di stampa`,uploadFiles:`Carica file`,newFolder:`Nuova cartella`,folderName:`Nome cartella`,folderNamePlaceholder:`es., Parti funzionali`,renameFile:`Rinomina file`,renameFolder:`Rinomina cartella`,invalidFilenameChar:`Il carattere "{{char}}" non è consentito nei nomi dei file di stampa. La scheda SD della stampante rifiuta: < > : " / \\ | ? *`,moveFiles:`Sposta {{count}} file`,rootNoFolder:`Root (nessuna cartella)`,current:`corrente`,linkFolder:`Collega cartella`,linkFolderDescription:`Collega "{{name}}" a un progetto o archivio per accesso rapido.`,project:`Progetto`,archive:`Archivio`,noProjectsFound:`Nessun progetto trovato`,noArchivesFound:`Nessun archivio trovato`,unlink:`Scollega`,link:`Collega`,dragDropFiles:`Trascina e rilascia file qui`,dropFilesHere:`Rilascia file qui`,releaseToUpload:`Rilascia per caricare`,orClickToBrowse:`oppure clicca per sfogliare`,allFileTypesSupported:`Tutti i tipi di file supportati. I file ZIP saranno estratti.`,zipFilesDetected:`File ZIP rilevati`,zipExtractOptions:`I file ZIP saranno estratti. Scegli come gestire la struttura cartelle:`,preserveZipStructure:`Mantieni struttura cartelle dal ZIP`,createFolderFromZip:`Crea cartella dal nome ZIP`,stlThumbnailGeneration:`Generazione miniature STL`,zipMayContainStl:`I file ZIP possono contenere STL. Le miniature possono essere generate durante l'estrazione.`,thumbnailsCanBeGenerated:`Le miniature possono essere generate per file STL. I modelli grandi possono richiedere più tempo.`,generateThumbnailsForStl:`Genera miniature per file STL`,threemfDetected:`File 3MF rilevati`,threemfExtractionInfo:`Modello stampante, materiale, colore e impostazioni stampa saranno estratti automaticamente dai file 3MF.`,willBeExtracted:`Sara estratto`,filesExtracted:`{{count}} file estratti`,uploadComplete:`Caricamento completato: {{succeeded}} riusciti`,uploadFailed:`Caricamento fallito`,zipFilesFailed:`{{count}} file falliti`,uploading:`Caricamento...`,changeLink:`Cambia collegamento...`,linkTo:`Collega a...`,linkToProjectOrArchive:`Collega a progetto o archivio`,generateThumbnail:`Genera miniatura`,generateThumbnails:`Genera miniature`,generateThumbnailsForMissing:`Genera miniature per STL senza miniatura`,gridView:`Vista griglia`,listView:`Vista elenco`,lowDiskSpaceWarning:`Avviso spazio disco basso`,lowDiskSpaceDetails:`Solo {{free}} liberi su {{total}} totali. La soglia e {{threshold}} GB nelle impostazioni.`,files:`File`,folders:`Cartelle`,size:`Dimensione`,free:`Libero`,allFiles:`Tutti i file`,allExternal:`Esterni`,externalIsEmpty:`Nessun file esterno`,externalEmptyDescription:`I file delle tue cartelle esterne collegate appariranno qui.`,wrap:`A capo`,enableTextWrapping:`Abilita a capo testo`,disableTextWrapping:`Disabilita a capo testo`,collapse:`Comprimi`,collapseFoldersByDefault:`Comprimi le cartelle per impostazione predefinita`,expandFoldersByDefault:`Espandi le cartelle per impostazione predefinita`,folderSort:`Ordina cartelle`,folderSortByName:`Per nome`,folderSortByActivity:`Per attività recente`,dragToResizeTooltip:`Trascina per ridimensionare, doppio clic per reset`,searchFiles:`Cerca file...`,searchSubfoldersHint:`Sottocartelle incluse`,readme:{truncated:`Troncato`,show:`Mostra README`,hide:`Nascondi README`,label:`README`},tags:{title:`Etichette`,subtitle:`Etichetta i file per filtri trasversali — giocattoli, sicuri per bambini, solo PETG, qualunque cosa serva.`,manage:`Etichette`,manageTitle:`Gestisci il catalogo delle etichette`,add:`Nuova etichetta`,edit:`Rinomina etichetta`,name:`Nome`,fileCount:`File`,empty:`Nessuna etichetta. Creane una per iniziare.`,noMatches:`Nessuna etichetta corrispondente.`,createPlaceholder:`es. giocattoli, sicuro-bimbi, petg`,createButton:`Crea`,nameRequired:`Il nome è obbligatorio.`,searchPlaceholder:`Filtra etichette...`,created:`Etichetta creata.`,updated:`Etichetta rinominata.`,deleted:`Etichetta rimossa.`,saveFailed:`Impossibile salvare l'etichetta.`,deleteFailed:`Impossibile rimuovere l'etichetta.`,applyFailed:`Impossibile applicare le etichette.`,applyAdd:`Aggiungi etichette`,applyRemove:`Rimuovi etichette`,applyAddSuccess:`Aggiunte {{count}} etichetta/e su {{files}} file.`,applyRemoveSuccess:`Rimosse {{count}} etichetta/e da {{files}} file.`,actionAdd:`Aggiungi ai file selezionati`,actionRemove:`Rimuovi dai file selezionati`,tagAction:`Etichetta`,bulkTitle:`Etichetta {{count}} file selezionato/i`,bulkTooltip:`Aggiungi o rimuovi etichette su ogni file selezionato.`,noPermission:`Non hai il permesso per etichettare i file.`,filterLabel:`Filtraggio per:`,clearAll:`Pulisci tutto`,confirmDelete:`Eliminare l'etichetta "{{name}}"?`,confirmDeleteMessage:`Rimuove l'etichetta dal catalogo. I file mantengono le altre etichette.`,confirmDeleteInUseMessage:`Questa etichetta è su {{count}} file. L'eliminazione la rimuove da tutti; i file non vengono toccati.`,editAria:`Modifica {{name}}`,deleteAria:`Elimina {{name}}`},allTypes:`Tutti i tipi`,prints:`Stampe`,ascending:`Crescente`,descending:`Decrescente`,showModified:`Mostra date di modifica`,hideModified:`Nascondi date di modifica`,lastModified:`Ultima modifica`,lastActivity:`Ultima attività`,resultsCount:`{{showing}} di {{total}} file`,selectAll:`Seleziona tutto`,deselectAll:`Deseleziona tutto`,selected:`{{count}} selezionati`,adding:`Aggiunta...`,loadingFiles:`Caricamento file...`,folderIsEmpty:`La cartella e vuota`,noFilesYet:`Nessun file ancora`,folderEmptyDescription:`Carica file o sposta file in questa cartella per iniziare.`,noFilesDescription:`Carica file per iniziare a organizzare i file di stampa.`,noMatchingFiles:`Nessun file corrispondente`,noMatchingFilesDescription:`Nessun file corrisponde ai criteri di ricerca o filtro.`,clearFilters:`Pulisci filtri`,printedCount:`Stampato {{count}}x`,uploadedBy:`Caricato da`,deleteFolder:`Elimina cartella`,deleteFile:`Elimina file`,deleteFilesCount:`Elimina {{count}} file`,deleteFolderConfirm:`Sei sicuro di voler eliminare questa cartella? Tutti i file dentro saranno eliminati.`,deleteFileConfirm:`Sei sicuro di voler eliminare questo file?`,deleteFilesConfirm:`Sei sicuro di voler eliminare {{count}} file selezionati? Questa azione non può essere annullata.`,deleting:`Eliminazione...`,noPermissionRenameFolder:`Non hai il permesso di rinominare cartelle`,noPermissionLinkFolder:`Non hai il permesso di collegare cartelle`,noPermissionDeleteFolder:`Non hai il permesso di eliminare cartelle`,onlyEmptyFoldersDeletable:`Puoi eliminare solo cartelle vuote`,noPermissionPrint:`Non hai il permesso di stampare`,noPermissionSlice:`Non hai il permesso di sezionare i file`,noPermissionAddToQueue:`Non hai il permesso di aggiungere alla coda`,noPermissionDownload:`Non hai il permesso di scaricare file`,noPermissionPreview:`Non hai il permesso di visualizzare l'anteprima dei file`,preview3d:`Anteprima 3D`,noPermissionRenameFile:`Non hai il permesso di rinominare questo file`,noPermissionGenerateThumbnail:`Non hai il permesso di generare miniature`,noPermissionDeleteFile:`Non hai il permesso di eliminare questo file`,noPermissionCreateFolder:`Non hai il permesso di creare cartelle`,noPermissionUpload:`Non hai il permesso di caricare file`,noPermissionMoveFiles:`Non hai il permesso di spostare file`,noPermissionDeleteFiles:`Non hai il permesso di eliminare file`,linkExternal:`Collega esterno`,linkExternalFolder:`Collega cartella esterna`,linkExternalFolderDescription:`Monta una directory host (NAS, USB, condivisione di rete) nel File Manager. I file non vengono copiati — vengono letti direttamente dal percorso originale.`,externalFolderNamePlaceholder:`es. Stampe NAS`,externalPath:`Percorso host`,externalPathHelp:`Percorso assoluto della directory sull'host Docker. Deve essere montato come bind nel container.`,readOnly:`Sola lettura`,readOnlyHelp:`impedisce caricamenti e cancellazioni`,showHiddenFiles:`Mostra file nascosti (file punto)`,externalFolder:`Cartella esterna`,scanFolder:`Scansiona`,toast:{folderCreated:`Cartella creata`,openInSlicerFailed:`Impossibile aprire nello slicer`,folderDeleted:`Cartella eliminata`,fileDeleted:`File eliminato`,filesDeleted:`Eliminati {{count}} file`,filesMoved:`File spostati`,folderLinked:`Cartella collegata`,folderUnlinked:`Cartella scollegata`,externalFolderLinked:`Cartella esterna collegata e scansionata`,folderScanned:`Scansione completata: {{added}} aggiunti, {{removed}} rimossi`,addedToQueue:`Aggiunti {{count}} file alla coda`,addedToQueuePartial:`Aggiunti {{added}} file, {{failed}} falliti`,failedToAddToQueue:`Aggiunta file fallita: {{error}}`,fileRenamed:`File rinominato`,folderRenamed:`Cartella rinominata`,thumbnailsGenerated:`Generate {{count}} miniature`,thumbnailsGeneratedPartial:`Generate {{succeeded}} miniature, {{failed}} fallite`,noStlMissingThumbnails:`Nessun file STL senza miniature`,failedToGenerateThumbnails:`Generazione miniature fallita: {{error}}`,thumbnailGenerated:`Miniatura generata`,failedToGenerateThumbnail:`Generazione miniatura fallita: {{error}}`}},projects:{parentLabel:`Progetto principale`,parentNone:`Nessuno (progetto di primo livello)`,parentHint:`Annida questo progetto in un altro perché i suoi numeri confluiscano in un progetto principale`,partOf:`Parte di {{name}}`,subProjectCount:`{{count}} sotto-progetti`,subProjectsOf:`Sotto-progetti di {{name}}`,title:`Progetti`,subtitle:`Organizza e traccia i tuoi progetti di stampa 3D`,newProject:`Nuovo progetto`,editProject:`Modifica progetto`,deleteProject:`Elimina progetto`,projectName:`Nome progetto`,description:`Descrizione`,noProjects:`Nessun progetto ancora`,noProjectsFiltered:`Nessun progetto {{status}}`,noProjectsFilteredHelp:`Non hai progetti {{status}}. I progetti appariranno qui quando il loro stato cambia.`,createFirst:`Crea il tuo primo progetto per organizzare stampe correlate, tracciare progressi e gestire i tuoi build.`,createFirstButton:`Crea il tuo primo progetto`,create:`Crea`,files:`File`,prints:`Stampe`,plates:`piatti`,parts:`parti`,lastModified:`Ultima modifica`,deleteConfirm:`Sei sicuro di voler eliminare questo progetto? Archivi e elementi in coda saranno scollegati ma non eliminati.`,addFiles:`Aggiungi file`,removeFile:`Rimuovi file`,viewDetails:`Vedi dettagli`,namePlaceholder:`es., Build Voron 2.4`,descriptionPlaceholder:`Descrizione opzionale...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`L'URL deve iniziare con http:// o https://`,openExternalUrl:`Apri URL del progetto`,coverImageLabel:`Immagine di copertina`,coverImageAlt:`Immagine di copertina del progetto`,coverImageUpload:`Carica`,coverImageReplace:`Sostituisci`,coverImageRemove:`Rimuovi`,color:`Colore`,targetPlates:`Piatti target`,targetPlatesPlaceholder:`es., 25`,targetPlatesHelp:`Numero di job di stampa`,targetParts:`Parti target`,targetPartsPlaceholder:`es., 150`,targetPartsHelp:`Totale oggetti necessari`,targetSets:`Copie per file`,targetSetsPlaceholder:`es. 10`,targetSetsHelp:`Quante volte stampare ogni file stampabile`,tagsLabel:`Tag (separati da virgola)`,tagsPlaceholder:`es., voron, funzionale, regalo`,dueDate:`Data scadenza`,priority:`Priorita`,priorityLow:`Bassa`,priorityNormal:`Normale`,priorityHigh:`Alta`,priorityUrgent:`Urgente`,statusActive:`Attivo`,statusCompleted:`Completato`,statusArchived:`Archiviato`,done:`Fatto`,completed:`completato`,failed:`fallito`,inQueue:`in coda`,noPrintsYet:`Nessuna stampa ancora`,printJobs:`Job di stampa (piatti)`,partsPrinted:`Parti stampate`,failedParts:`Parti fallite`,import:`Importa`,export:`Esporta`,importProject:`Importa progetto`,exportAll:`Esporta tutti i progetti`,loading:`Caricamento progetti...`,noEditPermission:`Non hai il permesso di modificare progetti`,noDeletePermission:`Non hai il permesso di eliminare progetti`,noCreatePermission:`Non hai il permesso di creare progetti`,noImportPermission:`Non hai il permesso di importare progetti`,noExportPermission:`Non hai il permesso di esportare progetti`,toast:{created:`Progetto creato`,updated:`Progetto aggiornato`,deleted:`Progetto eliminato`,imported:`Progetto importato`,multipleImported:`{{count}} progetti importati`,importFailed:`Import fallito`,exported:`Progetti esportati (solo metadati)`}},projectDetail:{notFound:`Progetto non trovato`,backToProjects:`Torna a Progetti`,export:`Esporta`,exportProject:`Esporta progetto`,noExportPermission:`Non hai il permesso di esportare progetti`,noEditPermission:`Non hai il permesso di modificare progetti`,partOf:`Parte di:`,priorityLabel:`Priorita:`,noPrints:`Nessuna stampa in questo progetto ancora`,status:{active:`Attivo`,completed:`Completato`,archived:`Archiviato`},priority:{low:`Bassa`,normal:`Normale`,high:`Alta`,urgent:`Urgente`},dueDate:{overdue:`Scaduto`,today:`Scade oggi`,daysLeft:`{{count}} giorni rimanenti`},progress:{platesProgress:`Avanzamento piatti`,partsProgress:`Avanzamento parti`,setsProgress:`Set completi`,sets:`set`,setsHint:`Un set è completo quando ogni file stampabile raggiunge questo numero`,printJobs:`job di stampa`,parts:`parti`,percentComplete:`{{percent}}% completato`,remaining:`{{count}} rimanenti`},stats:{printJobs:`Job di stampa`,total:`totale`,failed:`{{count}} falliti`,partsPrinted:`{{count}} parti stampate`,printTime:`Tempo di stampa`,filamentUsed:`Filamento usato`},cost:{title:`Tracciamento costi`,filamentCost:`Costo filamento`,energy:`Energia`,totalCost:`Costo totale`,total:`Totale`,includesBom:`incl. distinta materiali`,budget:`Budget`,remaining:`Rimanente`},subProjects:{title:`Sotto-progetti ({{count}})`,jobs:`{{count}} lavori`},rollup:{title:`Inclusi {{count}} sotto-progetti`,progress:`Avanzamento complessivo`,percentComplete:`{{percent}}% completato`},notes:{title:`Note`,noEditPermission:`Non hai il permesso di modificare le note`,placeholder:`Aggiungi note su questo progetto...`,empty:`Nessuna nota ancora. Clicca Modifica per aggiungere note.`},files:{title:`File`,linkFolders:`Collega cartelle dal Gestore file`,forQuickAccess:`a questo progetto per accesso rapido.`,fileCount:`{{count}} file`,empty:`Nessuna cartella collegata. Vai a Gestore file e collega una cartella a questo progetto.`,printedCount:`Stampato {{count}} volte`,progressTooltip:`{{done}} di {{target}} stampe completate`,noFiles:`Nessun file in questa cartella.`},bom:{title:`Distinta materiali`,acquired:`{{completed}}/{{total}} acquisiti`,showAll:`Mostra tutti`,hideDone:`Nascondi completati`,addPart:`Aggiungi parte`,noAddPermission:`Non hai il permesso di aggiungere parti`,partNamePlaceholder:`Nome parte (es., viti M3x8)`,partName:`Nome parte`,qty:`Qta`,price:`Prezzo ({{currency}})`,sourcingUrlPlaceholder:`URL fornitura (opzionale)`,remarksPlaceholder:`Note (opzionale)`,deletePart:`Elimina parte`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"?`,noUpdatePermission:`Non hai il permesso di aggiornare parti`,noEditPermission:`Non hai il permesso di modificare parti`,noDeletePermission:`Non hai il permesso di eliminare parti`,totalCost:`Costo totale:`,empty:`Nessuna parte nella distinta materiali. Aggiungi hardware, elettronica o altri componenti da reperire.`},timeline:{title:`Timeline attivita`,empty:`Nessuna attivita ancora.`},template:{saveAsTemplate:`Salva come template`,noCreatePermission:`Non hai il permesso di creare template`},queue:{title:`Coda`,viewAll:`Vedi tutto`,printing:`{{count}} in stampa`,queued:`{{count}} in coda`},prints:{title:`Stampe ({{count}})`},toast:{projectUpdated:`Progetto aggiornato`,partAdded:`Parte aggiunta`,partRemoved:`Parte rimossa`,exportFailed:`Export fallito`,projectExported:`Progetto esportato`,templateCreated:`Template creato`}},system:{title:`Informazioni sistema`,version:`Versione`,uptime:`Tempo attivo`,cpuUsage:`Uso CPU`,memoryUsage:`Uso memoria`,diskUsage:`Uso disco`,networkInfo:`Info rete`,logs:`Log`,debugMode:`Modalita debug`,enableDebug:`Abilita log debug`,disableDebug:`Disabilita log debug`,downloadLogs:`Scarica log`,clearLogs:`Cancella log`,dockerInfo:`Info Docker`,containerName:`Nome container`,imageName:`Nome immagine`,platform:`Piattaforma`,architecture:`Architettura`},sponsors:{sectionTitle:`Indipendente e finanziato dalla community`,tagline:`Bambuddy è gratuito e resta tale perché qualcuno sceglie di sostenerlo. Niente VC, niente lock-in cloud.`,viewSupporters:`Vedi i sostenitori`,toastPrints:`Hai completato {{count}} stampe con Bambuddy. Bambuddy resta gratuito grazie a chi lo sostiene.`,toastCost:`Hai monitorato {{total}} di filamento con Bambuddy. Scopri chi mantiene il progetto indipendente.`,toastArchives:`{{count}} stampe archiviate con Bambuddy. Scopri chi lo mantiene indipendente.`,toastAnniversary:`Un anno con Bambuddy! Scopri chi mantiene il progetto indipendente.`,toastVersionUpdate:`Aggiornato a v{{version}}. Bambuddy resta gratuito grazie a chi lo sostiene.`,toastBusiness:`Usi Bambuddy su {{count}} stampanti? Esiste un piano di supporto per i team: correzioni prioritarie, fatturazione e un contatto diretto con il manutentore.`,businessCta:`Bambuddy per le aziende`,businessTitle:`Bambuddy per le aziende`,businessTagline:`Stai gestendo {{count}} stampanti. Supporto prioritario, licenze commerciali e fatturazione sono disponibili per team e farm di stampa.`},library:{title:`Libreria filamenti`,addFilament:`Aggiungi filamento`,editFilament:`Modifica filamento`,deleteFilament:`Elimina filamento`,vendor:`Produttore`,material:`Materiale`,color:`Colore`,kFactor:`Fattore K`,temperature:`Temperatura`,noFilaments:`Nessun filamento in libreria`,deleteConfirm:`Sei sicuro di voler eliminare questo filamento?`,importFromPrinter:`Importa da stampante`,exportToFile:`Esporta su file`,runWithPipeline:{actionLabel:`Esegui con pipeline`,noPermission:`Non hai il permesso di eseguire pipeline`,modalTitle:`Esegui con pipeline`,confirmTitle:`Conferma esecuzione`,confirmIntro:`Il pre-volo ha trovato problemi con questa esecuzione`,sourceHint:`Sorgente`,pipelineHint:`Pipeline`,targetHint:`Destinazione`,pipelineListAria:`Pipeline disponibili`,runAnyway:`Esegui comunque`,loading:`Caricamento…`,empty:`Nessuna pipeline salvata. Apri il dialogo Slice e fai clic su "Salva come pipeline" per crearne una.`,noTarget:`Nessuna stampante di destinazione`,noTargetMessage:`Questa pipeline non ha una stampante di destinazione. Aprila nelle Impostazioni per sceglierne una.`,copies:`Copie`,copiesHint:`max {{n}}`,classTarget:`Qualsiasi {{model}}`,toast:{started:`Esecuzione della pipeline avviata`,failed:`Impossibile avviare l'esecuzione`},issue:{printerNotSet:`Nessuna stampante di destinazione su questa pipeline.`,printerNotFound:`La stampante di destinazione non esiste più.`,printerDisabled:`La stampante di destinazione è disabilitata.`,printerOffline:`La stampante di destinazione è offline.`,filamentType:`Slot filamento {{slot}}: atteso {{expected}}, AMS ha {{actual}}`,filamentColor:`Slot filamento {{slot}}: colore differente (atteso {{expected}}, AMS ha {{actual}})`,amsSlotMissing:`Slot AMS {{slot}} non disponibile su questa stampante`,filamentUnverified:`Lo slot filamento {{slot}} proviene da un preset cloud / standard e non può essere verificato staticamente.`,noClassMatches:`Nessuna stampante in questa installazione corrisponde alla classe di modello target della pipeline ({{expected}}).`,classNotSet:`La destinazione della pipeline è una classe di stampante ma nessun modello è stato scelto.`}}},slicerSettings:{presetValuesOutdatedSidecar:`Sono mostrati i valori predefiniti dello slicer: il tuo sidecar è più vecchio di questa funzione e non può fornire i valori di un profilo. Aggiorna l'immagine del sidecar per vederli. Tutto ciò che non modifichi continua a usare il profilo.`,presetValuesNotConfigured:`Sono mostrati i valori predefiniti dello slicer: nessun sidecar è configurato, quindi i valori di un profilo non sono leggibili. Tutto ciò che non modifichi continua a usare il profilo.`,presetValuesSidecarUnavailable:`Sono mostrati i valori predefiniti dello slicer: il sidecar non ha risposto, quindi i valori di un profilo non sono leggibili. Tutto ciò che non modifichi continua a usare il profilo.`,presetValuesUnavailable:`Sono mostrati i valori predefiniti dello slicer: quelli del profilo scelto non sono leggibili. Tutto ciò che non modifichi continua a usare il profilo.`,filamentDefault:`Predefinito`,fromFile:`dal file`,fromFileHint:`Il designer ha modificato questo parametro nel file di origine. Il valore è {{value}}.`,fromFilePrinterCoupled:`stampante del designer`,fromFilePrinterCoupledHint:`Tarato per la stampante per cui è stato progettato questo file: sulla tua può essere errato o fuori intervallo.`,fromFileOverridesPreset:`sovrascrive il profilo`,fromFileOverridesPresetHint:`Il file imposta {{value}} mentre il profilo scelto usa {{preset}}. Selezionalo solo se deve prevalere il file.`,useFromFile:`Usa il valore del file di origine per {{option}}`,otherFromFile:`Altre impostazioni da questo file`,fromFileSummary:`Il progettista ha modificato {{count}} impostazioni di processo in questo file. Vengono usate solo quelle che spunti.`,fromFileUseAll:`Usa le impostazioni del progettista`,fromFileUseAllHint:`Spunta le impostazioni che si trasferiscono ad altre stampanti. Quelle tarate sulla stampante del progettista, e quelle che definiscono il preset scelto, restano disattivate.`,fromFileClear:`Azzera {{count}}`,loading:`Caricamento impostazioni dello slicer…`,mode:{simple:`Semplice`,advanced:`Avanzato`,expert:`Esperto`},searchPlaceholder:`Cerca impostazioni`,resetAll:`Ripristina {{count}}`,resetOption:`Ripristina il valore predefinito`,noMatches:`Nessuna impostazione corrisponde a questa ricerca.`},slice:{filamentSlotUnset:`non impostato`,processSettingsEmbedded:`Non utilizzato finché «Usa le impostazioni integrate del file» è attivo: sono le impostazioni del file a guidare questo slice.`,processSettingsInactive:`Non attivo`,presetsHidden:`{{count}} nascosti`,showAllPresets:`Mostra tutti`,showFewerPresets:`Mostra meno`,processSettings:`Impostazioni di processo`,processSettingsHint:`Regola il profilo scelto per questo slice. Tutto ciò che non tocchi resta come definito dal profilo.`,processSettingsChanged:`{{count}} modificate`,processSettingsUnchanged:`Valori del profilo`,title:`Slicing modello`,action:`Slice`,actionAll:`Slicia tutti i {{count}} piatti`,actionAllTitle:`Slicia tutti i piatti in un unico output multi-piatto (un solo archivio). La selezione del filamento copre ogni slot definito dal progetto.`,allPlatesToggle:`Slicia tutti i {{count}} piatti`,slicing:`Slicing…`,printer:`Profilo stampante`,process:`Profilo processo`,filament:`Profilo filamento`,filamentSlot:`Filamento {{index}} ({{type}})`,selectPreset:`— Seleziona un preset —`,loadingPresets:`Caricamento preset…`,analyzingPlateFilaments:`Analisi filamenti del piano…`,analyzingPlateFilamentsHint:`Slicing di anteprima per scoprire quali slot AMS usa questo piano. In cache dopo — la riapertura è istantanea.`,previewToast:`Analisi di {{name}} – {{elapsed}}`,previewWithProgress:`Analisi di {{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,notUsedByPlate:`— non usato da questo piano`,noPresetsForSlot:`Nessun preset disponibile`,otherPrinters:`Altre stampanti`,presetsLoadFailed:`Caricamento preset fallito. Apri Impostazioni → Profili per importarli prima.`,refreshPresets:`Aggiorna`,refreshPresetsTitle:`Aggiorna i preset — recupera gli elenchi più recenti dal cloud e dai bundle (da usare dopo aver eliminato un preset in Bambu Studio o Bambu Handy)`,allPresetsRequired:`Tutti i preset devono essere selezionati`,useEmbedded:`Usa le impostazioni integrate del file`,useEmbeddedHint:`Slicia come impostato dal designer (pareti, riempimento, filamento) invece dei profili sopra. Disponibile perché la tua stampante corrisponde a quella del file.`,autoOrient:`Orienta automaticamente gli oggetti`,autoOrientHint:`Lo slicer ruota ogni oggetto sul lato che si stampa meglio prima di affettare. Sostituisce l'orientamento salvato nel file.`,autoArrange:`Disponi automaticamente sul piatto`,autoArrangeHint:`Lo slicer dispone gli oggetti in modo che non si sovrappongano più. Sostituisce la disposizione del file.`,enqueuing:`Invio lavoro di slicing…`,queued:`In coda…`,failed:`Slicing fallito. Controlla i log del sidecar.`,startedToast:`Slicing di {{name}} in background…`,queuedToast:`In coda: {{name}} – {{elapsed}}`,runningToast:`Slicing {{name}} – {{elapsed}}`,runningWithProgress:`{{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,runningWithProgressMultiPlate:`Piatto {{plateIndex}} di {{plateCount}} • {{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,completedToast:`{{name}} sezionato`,externalWriteFallbackToast:`Salvato nella libreria interna: impossibile scrivere nella cartella esterna`,failedTitle:`Slicing fallito`,failedToast:`Slicing di {{name}} fallito: {{detail}}`,tier:{local:`Importato`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`Standard`},cloud:{notAuthenticated:`Accedi a Bambu Cloud (Impostazioni → Profili → Bambu Cloud) per vedere i preset cloud.`,expired:`Sessione Bambu Cloud scaduta – accedi di nuovo per aggiornare i preset cloud.`,unreachable:`Bambu Cloud non è raggiungibile. I preset locali e standard funzionano ancora.`},orcaCloud:{notAuthenticated:`Accedi a Orca Cloud (Profili → Orca Cloud) per vedere i tuoi preset Orca.`,expired:`Sessione Orca Cloud scaduta — accedi di nuovo per aggiornare i tuoi preset Orca.`,unreachable:`Orca Cloud non è raggiungibile in questo momento. Gli altri preset continuano a funzionare.`},bedType:{label:`Piano di stampa`,auto:`Auto (usa preset di processo)`,coolPlate:`Cool Plate`,coolPlateSuperTack:`Cool Plate SuperTack`,engineering:`Engineering Plate`,highTemp:`High Temp Plate`,texturedPEI:`Textured PEI Plate`,smoothPEI:`Smooth PEI Plate`},pipelines:{label:`Pipeline`,applyAria:`Applica pipeline`,applyPrompt:`Applica pipeline…`,empty:`Nessuna pipeline salvata`,saveButton:`Salva come pipeline`,saveTitle:`Salva la selezione corrente di tutti e quattro gli slot come pipeline riutilizzabile`,namePlaceholder:`Nome pipeline`,nameAria:`Nome nuova pipeline`,toast:{applied:`"{{name}}" applicata`,saved:`Pipeline salvata`,saveFailed:`Salvataggio non riuscito`}}},spoolman:{title:`Integrazione Spoolman`,enabled:`Spoolman abilitato`,url:`URL Spoolman`,connected:`Connesso`,disconnected:`Non connesso`,testConnection:`Testa connessione`,sync:`Sincronizza`,syncing:`Sincronizzazione...`,lastSync:`Ultima sincronizzazione`,linkToSpoolman:`Collega a Spoolman`,openInSpoolman:`Apri in Spoolman`,unlinkSpool:`Scollega bobina`,unlinkConfirmTitle:`Rimuovere bobina?`,unlinkConfirmMessage:`Questo rimuoverà la bobina da questo slot. I dati della bobina stessa rimarranno invariati.`,selectSpool:`Seleziona bobina`,noUnlinkedSpools:`Nessuna bobina disponibile`,linkSuccess:`Bobina assegnata con successo`,linkFailed:`Impossibile assegnare la bobina`,unlinkSuccess:`Bobina rimossa con successo`,unlinkFailed:`Impossibile rimuovere la bobina`,linkedSpool:`Bobina assegnata`,spoolId:`ID bobina`,fillSourceLabel:`(Spoolman)`,weight:`Peso`,remaining:`Rimanente`,disableWeightSync:`Disabilita sync peso stimato AMS`,disableWeightSyncDesc:`Non aggiornare la capacità rimanente dalle stime AMS. Usalo se preferisci il tracciamento di Spoolman rispetto alle stime AMS. Le nuove bobine useranno comunque la stima AMS come peso iniziale.`,reportPartialUsage:`Segnala uso parziale per stampe fallite`,reportPartialUsageDesc:`Quando una stampa fallisce o viene annullata, segnala il filamento stimato usato fino a quel punto in base all'avanzamento layer.`},locations:{title:`Ubicazioni di stoccaggio`,subtitle:`Gestisci scaffali, cassetti e altri posti fisici per le bobine`,add:`Aggiungi ubicazione`,addShort:`Aggiungi`,edit:`Modifica ubicazione`,name:`Nome`,spools:`Bobine`,sensors:`Sensori`,empty:`Nessuna ubicazione di stoccaggio. Crea il tuo primo scaffale o cassetto.`,manage:`Ubicazioni`,createPlaceholder:`es. Scaffale A, Cassetto 1`,nameRequired:`Il nome dell'ubicazione è obbligatorio`,created:`Ubicazione creata`,updated:`Ubicazione aggiornata`,deleted:`Ubicazione eliminata`,saveFailed:`Impossibile salvare l'ubicazione`,deleteFailed:`Impossibile eliminare l'ubicazione`,deleteBlocked:`Rimuovi prima tutte le bobine da questa ubicazione`,confirmDelete:`Eliminare «{{name}}»?`,confirmDeleteMessage:`Questa ubicazione verrà rimossa dal catalogo. Sposta prima le bobine.`,confirmDeleteMessageWithSensors:`Questa ubicazione verrà rimossa dal catalogo. Sposta prima le bobine. Verranno eliminati anche i sensori collegati.`},inventory:{title:`Inventario Bobine`,subtitle:`Gestisci le tue bobine`,addToInventory:`Aggiungi all'inventario`,addToInventoryPending:`Aggiunta in corso...`,addToInventorySuccess:`Bobina aggiunta all'inventario`,addToInventoryFailed:`Aggiunta della bobina all'inventario non riuscita`,unknownSpoolTitle:`Nuovo filamento rilevato`,unknownSpoolMessage:`È stata rilevata una bobina con tag RFID sconosciuto in {{location}}. Aggiungerla all'inventario ora?`,unknownSpoolSlot:`Slot`,bulk:{selectAllVisible:`Seleziona tutto il visibile`,selectRow:`Seleziona riga`,selectGroup:`Seleziona gruppo`,selectionCount:`{{count}} selezionate`,edit:`Modifica`,printLabels:`Stampa etichette`,resetUsage:`Reimposta utilizzo`,restore:`Ripristina`,archive:`Archivia`,delete:`Elimina`,clearSelection:`Cancella selezione`,editTitle:`Modifica bobine in blocco`,editSubtitle:`Si applica a {{count}} bobine selezionate. Vengono aggiornati solo i campi spuntati.`,editHint:`Digita in un campo per contrassegnarlo per l'aggiornamento — vengono inviate solo le righe spuntate. Un campo vuoto lascia le bobine invariate (svuotare un campo si fa per singola bobina).`,useCustom:`Usa "{{value}}"`,toggleField:`Attiva l'aggiornamento per questo campo`,changeCount:`{{count}} campi verranno aggiornati.`,applyPending:`Applicazione in corso...`,applyButton:`Applica a {{count}} bobine`,deleteTitle:`Elimina bobine selezionate`,archiveTitle:`Archivia bobine selezionate`,restoreTitle:`Ripristina bobine selezionate`,resetUsageTitle:`Reimposta utilizzo delle bobine selezionate`,deleteMessage:`Eliminare definitivamente {{count}} bobine? L'operazione non può essere annullata.`,archiveMessage:`Archiviare {{count}} bobine? Possono essere ripristinate in seguito.`,restoreMessage:`Ripristinare {{count}} bobine archiviate?`,resetUsageMessage:`Reimpostare il contatore "Totale consumato" su {{count}} bobine? Il peso rimanente viene preservato.`,updateSuccess:`{{count}} bobine aggiornate`,updateFailed:`Aggiornamento in blocco fallito`,updatePartial:`{{ok}} bobine aggiornate, {{failed}} fallite`,updateAllFailed:`Tutti i {{count}} aggiornamenti sono falliti — la selezione viene mantenuta per riprovare`,deleteSuccess:`{{count}} bobine eliminate`,deleteFailed:`Eliminazione in blocco fallita`,deletePartial:`{{ok}} bobine eliminate, {{failed}} fallite`,deleteAllFailed:`Tutte le {{count}} eliminazioni sono fallite — la selezione viene mantenuta per riprovare`,archiveSuccess:`{{count}} bobine archiviate`,archiveFailed:`Archiviazione in blocco fallita`,archivePartial:`{{ok}} bobine archiviate, {{failed}} fallite`,archiveAllFailed:`Tutte le {{count}} archiviazioni sono fallite — la selezione viene mantenuta per riprovare`,restoreSuccess:`{{count}} bobine ripristinate`,restoreFailed:`Ripristino in blocco fallito`,restorePartial:`{{ok}} bobine ripristinate, {{failed}} fallite`,restoreAllFailed:`Tutti i {{count}} ripristini sono falliti — la selezione viene mantenuta per riprovare`,invalidHex:`Inserisci 6 caratteri esadecimali (RRGGBB) o 8 (RRGGBBAA). Altrimenti il campo non verrà applicato.`},spoolmanMixedContentTitle:`Spoolman non può essere caricato tramite HTTPS — contenuto misto bloccato dal browser`,spoolmanMixedContentBody:`Bambuddy viene servito tramite HTTPS (dietro il tuo reverse proxy), ma l'URL di Spoolman è ancora HTTP. I browser bloccano il contenuto misto per motivi di sicurezza, quindi l'interfaccia Spoolman incorporata non può essere visualizzata. Anche Spoolman deve essere raggiungibile via HTTPS.`,spoolmanMixedContentFixReverseProxy:`Metti Spoolman dietro lo stesso reverse proxy di Bambuddy (Traefik / Nginx / Caddy) in HTTPS, poi aggiorna l'URL di Spoolman nelle Impostazioni con il nuovo indirizzo HTTPS.`,spoolmanMixedContentFixOpenNewTab:`Come alternativa, apri Spoolman in una nuova scheda via HTTP — le regole sul contenuto misto si applicano solo ai frame incorporati, una scheda autonoma funziona.`,spoolmanOpenInNewTab:`Apri Spoolman in una nuova scheda`,labels:{title:`Stampa etichette bobine`,selectedCount:`{{count}} selezionato`,pickSpools:`Scegli per quali bobine stampare le etichette:`,monochrome:`Monocromatico (stampante in bianco e nero)`,monochromeHint:`Rimuove il campione di colore e allarga il testo`,startingPosition:`Posizione iniziale dell’etichetta`,startingPositionRange:`Solo modelli a foglio: L7160 supporta 1–21; 5160 supporta 1–30.`,startingPositionInvalid:`Inserisci un numero intero da 1 a {{capacity}}.`,startingPositionFirst:`La stampa inizia dalla posizione 1.`,startingPositionSkipped:`Le posizioni da 1 a {{lastPosition}} resteranno vuote sul primo foglio.`,startingPositionRangeError:`La posizione iniziale deve essere compresa tra 1 e {{capacity}} per questo foglio.`,searchPlaceholder:`Cerca per nome, marca o #ID`,filterByMaterial:`Materiale:`,allMaterials:`Tutto`,selectVisible:`Seleziona tutti visibili ({{count}})`,deselectVisible:`Deseleziona visibili`,clearAll:`Cancella tutto`,noSpoolsToShow:`Nessuna bobina da mostrare. Modifica il filtro e riprova.`,noMatches:`Nessuna bobina corrisponde alla ricerca o al filtro corrente.`,printOne:`Stampa etichetta per questa bobina`,printLabels:`Stampa etichette…`,bulkTitle:`Scegli le bobine da etichettare tra le {{count}} mostrate`,noSpoolsTitle:`Nessuna bobina da etichettare`,error:`Impossibile generare etichette: {{msg}}`,sortBy:{label:`Ordina:`,id:`Per ID`,color:`Per colore`},templates:{amsHolderSmall:{label:`Supporto AMS — piccolo (74 × 33 mm)`,hint:`Un'etichetta per pagina; corrisponde all'etichetta stampabile del modello MakerWorld 752566 (Porta-etichette filamento AMS).`},amsHolderLarge:{label:`Supporto AMS — grande (75 × 55 mm)`,hint:`Un'etichetta per pagina; si adatta alla variante cartoncino del porta-etichette filamento AMS. Spazio sufficiente per campione colore, marca, materiale, ID e codice QR.`},box40x30:{label:`Etichetta scatola (40 × 30 mm)`,hint:`Una etichetta per pagina; misura comune DK/Brother, ideale per etichette di sacchetti filamento e contenitori.`},box:{label:`Box label (62 × 29 mm)`,hint:`Una etichetta per pagina; dimensionata per Brother PT/QL e piccole etichette Dymo.`},averyL7160:{label:`Avery L7160 — A4 sheet (38.1 × 63.5 mm × 21)`,hint:`Foglio formato UE; 21 etichette per pagina A4.`},avery5160:{label:`Avery 5160 — US Letter sheet (25.4 × 66.7 mm × 30)`,hint:`Foglio formato US; 30 etichette per pagina Letter.`}}},csv:{importButton:`Importa CSV`,exportButton:`Esporta CSV`,modalTitle:`Importa bobine da CSV`,selectFile:`Scegli un file CSV o trascinalo qui`,dragHint:`Intestazione: material (obbligatorio), brand, subtype, color_name, rgba, …`,parsing:`Lettura del file…`,previewError:`Impossibile leggere il file CSV`,validCount:`{{count}} valide`,errorCount:`{{count}} con errore`,skippedCount:`{{count}} ignorate`,colRow:`Riga`,colStatus:`Stato`,colColor:`Colore`,colorResolved:`Colore compilato dal catalogo`,colorCrossMaterial:`Colore preso da un materiale diverso — nessuna corrispondenza esatta nel catalogo`,duplicateExisting:`Esiste già una bobina con questo materiale, marca e colore — verrà comunque importata come nuova bobina`,spoolmanHint:`In modalità Spoolman, usa l'importazione/esportazione CSV integrata di Spoolman.`,importValidRows:`Importa {{count}} righe valide`,noValidRows:`Nessuna riga valida`,importing:`Importazione…`,importSuccess:`{{count}} bobine importate`,importError:`Importazione non riuscita`,exportError:`Esportazione non riuscita`},addSpool:`Aggiungi Bobina`,editSpool:`Modifica Bobina`,copySpool:`Copia Bobina`,material:`Materiale`,selectMaterial:`Seleziona materiale...`,subtype:`Sottotipo`,brand:`Marchio`,searchBrand:`Cerca marchio...`,useCustomBrand:`Usa "{{brand}}"`,useCustomMaterial:`Usa materiale personalizzato: {{material}}`,suggestedOptions:`Suggeriti`,allOptions:`Tutti`,colorName:`Nome Colore`,colorNamePlaceholder:`Bianco Giada, Rosso Fuoco...`,color:`Colore`,hexColor:`Colore Hex`,pickColor:`Scegli colore personalizzato`,labelWeight:`Peso da Etichetta`,coreWeight:`Peso Bobina Vuota`,searchSpoolWeight:`Cerca peso bobina...`,weightUsed:`Utilizzato`,currentWeight:`Peso Rimanente`,measuredWeight:`Peso Misurato`,spoolName:`Bobina`,costPerKg:`Costo per kg`,storageLocation:`Posizione di archiviazione`,temperature:`Temperatura`,humidity:`Umidità`,battery:`Batteria`,storageLocationPlaceholder:`es. Scaffale A, Cassetto 1`,openInInventory:`Apri nell'inventario`,measuredWeightError:`Il peso misurato deve essere compreso tra {{min}}g e {{max}}g.`,slicerFilament:`Filamento Slicer`,slicerFilamentName:`Nome Preset Slicer`,slicerPreset:`Preset Slicer`,searchPresets:`Cerca preset filamento...`,selectedPreset:`Selezionato`,noPresetsFound:`Nessun preset trovato`,tempOverrides:`Override Temperatura`,note:`Nota`,notePlaceholder:`Eventuali note aggiuntive su questa bobina...`,category:`Categoria`,categoryPlaceholder:`es. Produzione, Prototipo, Cliente A`,categoryNone:`Senza categoria`,storageLocationNone:`Nessuna posizione impostata`,lowStockThresholdOverride:`Soglia scorte basse (questa bobina)`,lowStockThresholdOverrideHelp:`Lascia vuoto per usare la soglia globale ({{global}}%).`,clearRfid:`Cancella tag RFID`,rfidCleared:`Tag RFID cancellato`,archive:`Archivia`,restore:`Ripristina`,noSpools:`Ancora nessuna bobina. Aggiungi la tua prima bobina per iniziare.`,noAvailableSpools:`Nessuna bobina disponibile. Aggiungi una bobina al tuo inventario o rimuovine l'assegnazione da un altro slot.`,kProfiles:`Profili K`,addKProfile:`Aggiungi K-Profile`,assignSpool:`Assegna Bobina`,unassignSpool:`Scollega`,assignSuccess:`Bobina assegnata e slot AMS configurato`,assignPendingInsert:`Assegnato. Lo slot verrà configurato all'inserimento della bobina.`,assignFailed:`Assegnazione bobina fallita`,selectSpool:`Seleziona una bobina da assegnare a questo slot`,assigned:`Assegnato`,assigning:`Assegnazione...`,searchSpools:`Cerca bobine...`,showAllSpools:`Mostra tutte le bobine`,spoolmanSpools:`Bobine Spoolman`,allMaterials:`Tutti i Materiali`,filterByBrand:`Filtra per marchio...`,showArchived:`Mostra archiviate`,quickAdd:`Aggiunta rapida (Scorta)`,quantity:`Quantità`,stock:`Scorta`,configured:`Configurata`,spoolsCreated:`{{count}} bobine create`,spoolsPartiallyCreated:`{{created}} di {{total}} bobine create (alcune non riuscite)`,spoolCreated:`Bobina creata`,spoolUpdated:`Bobina aggiornata`,spoolDeleted:`Bobina eliminata`,deepLinkSpoolNotFound:`Bobina non trovata`,deepLinkFetchFailed:`Impossibile caricare la bobina — riprova`,spoolArchived:`Bobina archiviata`,spoolRestored:`Bobina ripristinata`,kProfileSaveFailed:`Impossibile salvare le impostazioni del profilo K`,syncWeightSpoolNotFound:`Bobina non trovata — potrebbe essere stata eliminata`,syncWeightSpoolmanUnreachable:`Spoolman non è raggiungibile — riprovare più tardi`,syncWeightFailed:`Sincronizzazione del peso non riuscita`,spoolmanUnreachable:`Spoolman non è raggiungibile — riprovare più tardi`,deleteSpoolNotFound:`Bobina non trovata — potrebbe essere già stata eliminata`,deleteFailed:`Impossibile eliminare la bobina`,archiveSpoolNotFound:`Bobina non trovata — potrebbe essere già stata eliminata`,archiveFailed:`Impossibile archiviare la bobina`,restoreSpoolNotFound:`Bobina non trovata — potrebbe essere già stata eliminata`,restoreFailed:`Impossibile ripristinare la bobina`,saveFailed:`Impossibile salvare le modifiche`,tagClearFailed:`Impossibile cancellare il tag`,deleteConfirm:`Sei sicuro di voler eliminare questa bobina? Questa azione non può essere annullata.`,archiveConfirm:`Sei sicuro di voler archiviare questa bobina?`,advancedSettings:`Impostazioni Avanzate`,filamentInfoTab:`Info filamento`,paProfileTab:`Profilo PA`,filamentInfo:`Filamento`,additional:`Aggiuntivo`,loadingPresets:`Caricamento preset cloud...`,cloudConnected:`Cloud connesso`,cloudNotConnected:`Cloud non connesso (valori predefiniti)`,recentColors:`Recenti`,searchColors:`Cerca colori...`,searchResults:`Risultati della ricerca`,allColors:`Tutti i colori`,commonColors:`Colori comuni`,showLess:`Mostra meno`,showAll:`Mostra tutto`,noColorsFound:`Nessun colore corrisponde alla ricerca`,noResults:`Nessun risultato trovato`,extraColorsLabel:`Colori extra`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`Incolla da 2 a 8 stop hex, separati da virgole. Visualizzato come sfumatura.`,extraColorsInvalid:`Hex non validi ignorati: {{tokens}}`,colorEffectLabel:`Effetto`,colorEffect:{none:`Nessuno`,sparkle:`Scintillante`,wood:`Legno`,marble:`Marmo`,glow:`Bagliore`,matte:`Opaco`,silk:`Silk`,galaxy:`Galassia`,rainbow:`Arcobaleno`,metal:`Metallo`,translucent:`Traslucido`,gradient:`Sfumatura`,dualColor:`Bicolore`,triColor:`Tricolore`,multicolor:`Multicolore`},selectMaterialFirst:`Selezionare prima un materiale nella scheda Info filamento.`,noPrintersConfigured:`Nessuna stampante configurata. Aggiungi stampanti per usare i profili PA.`,matchingFilter:`Corrispondenti`,anyBrand:`Qualsiasi marca`,anyVariant:`Qualsiasi variante`,autoSelect:`Selezione automatica`,matches:`corrispondenze`,match:`corrispondenza`,noMatches:`Nessuna corrispondenza`,connected:`Connessa`,offline:`Offline`,printerOffline:`La stampante è offline. Connetti per visualizzare i profili di calibrazione.`,noKProfilesMatch:`Nessun profilo K corrisponde al filamento selezionato.`,leftNozzle:`Ugello sinistro`,rightNozzle:`Ugello destro`,profilesSelected:`profili di calibrazione selezionati`,totalInventory:`Inventario totale`,totalConsumed:`Totale consumato`,byMaterial:`Per materiale`,inPrinter:`In stampante`,lowStock:`Scorta bassa`,sinceTracking:`Dall'inizio del tracciamento`,resetConsumedCounter:`Azzera contatore`,resetConsumedCounterTooltip:`Azzera il contatore di grammi consumati per questa bobina. Il peso rimanente non viene modificato.`,resetConsumedCounterConfirm:`Azzerare il contatore di grammi consumati di questa bobina? Le stampe future ripartiranno da zero. La bobina, il calcolo del peso rimanente e le impostazioni non vengono modificati.`,resetAllConsumedCounters:`Azzera tutti i contatori`,resetAllConsumedCountersTooltip:`Azzera il contatore di grammi consumati su ogni bobina. I pesi rimanenti non vengono modificati.`,resetAllConsumedCountersConfirm:`Azzerare il contatore di grammi consumati su tutte le {{count}} bobine (incluse quelle archiviate)? La statistica "Totale Consumato" verrà azzerata e le stampe future ripartiranno da zero. Bobine e pesi rimanenti restano invariati.`,consumedCounterReset:`Contatore azzerato`,allConsumedCountersReset:`Contatore azzerato per {{count}} bobina/e`,resetConsumedCounterFailed:`Impossibile azzerare il contatore`,loadedInAms:`Caricato in AMS/Est`,remaining:`Rimanente`,weightCheck:`Controllo Peso`,lastWeighed:`Ultima pesatura`,neverWeighed:`Mai pesato`,search:`Cerca bobine...`,showing:`Visualizzazione`,to:`a`,of:`di`,show:`Mostra`,spools:`bobine`,spool:`bobina`,page:`Pagina`,noSpoolsMatch:`Nessun risultato trovato`,noSpoolsMatchDesc:`Prova a modificare la ricerca o i filtri per trovare quello che cerchi.`,active:`Attive`,archived:`Archiviate`,all:`Tutte`,used:`Usato`,new:`Nuovo`,clearFilters:`Cancella filtri`,table:`Tabella`,cards:`Schede`,net:`Netto`,groupSimilar:`Raggruppa`,groupedSpools:`{{count}} bobine identiche`,groupedRows:`righe`,columns:`Colonne`,configureColumns:`Configura colonne`,configureColumnsDesc:`Trascina per riordinare le colonne o usa le frecce. Attiva/disattiva la visibilità con l'icona dell'occhio.`,visible:`visibili`,reset:`Ripristina`,cancel:`Annulla`,applyChanges:`Applica modifiche`,moveUp:`Sposta su`,moveDown:`Sposta giù`,hideColumn:`Nascondi colonna`,showColumn:`Mostra colonna`,linkToSpool:`Collega a bobina`,tagLinked:`Tag collegato alla bobina`,tagLinkFailed:`Impossibile collegare il tag`,tagAlreadyLinked:`Tag già collegato a un'altra bobina`,unknownTag:`Tag RFID sconosciuto rilevato`,usageHistory:`Cronologia utilizzo`,noUsageHistory:`Nessun utilizzo registrato`,printName:`Nome stampa`,weightConsumed:`Peso consumato`,clearHistory:`Cancella`,historyCleared:`Cronologia utilizzo cancellata`,fillSourceLabel:`(Inv)`,lowStockThresholdError:`La soglia deve essere tra 0.1 e 99.9`,assignMismatchTitle:`Materiale non corrispondente`,assignMismatchMessage:`Il materiale della bobina selezionata "{{spoolMaterial}}" non corrisponde al materiale del vassoio "{{trayMaterial}}" per {{location}}. Assegnare comunque?`,assignMismatchConfirm:`Assegna comunque`,assignPartialMismatchMessage:`Il materiale della bobina "{{spoolMaterial}}" è simile ma non corrisponde esattamente a "{{trayMaterial}}" in {{location}}. Vuoi procedere?`,assignProfileMismatchMessage:`Il profilo della bobina "{{spoolProfile}}" non corrisponde al profilo del vassoio "{{trayProfile}}" in {{location}}. Vuoi procedere?`,assignReconfigureNote:`Lo slot AMS verrà riconfigurato per utilizzare il profilo della bobina.`,spoolmanFilamentCatalog:`Catalogo filamenti Spoolman`,pickFromSpoolmanCatalog:`Scegli dal catalogo Spoolman…`,spoolmanFilamentSelected:`Filamento selezionato dal catalogo Spoolman`,spoolmanFilamentUnlinked:`Collegamento al catalogo filamenti rimosso`,noSpoolmanFilaments:`Nessun filamento trovato nel catalogo Spoolman`,spoolmanFilamentColorSwatch:`Colore del filamento`,spoolWeightManagedBySpoolman:`Il peso della bobina vuota è gestito per tipo di filamento in Spoolman`,spoolmanCatalogLoadFailed:`Impossibile caricare il catalogo Spoolman`},timelapse:{title:`Timelapse`,create:`Crea timelapse`,download:`Scarica`,delete:`Elimina`,preview:`Anteprima`,frameRate:`Frame rate`,quality:`Qualità`,processing:`Elaborazione...`,noTimelapses:`Nessun timelapse disponibile`},ams:{title:`AMS`,slot:`Slot`,empty:`Vuoto`,emptySlot:`Slot vuoto`,slotEmpty:`Vuoto`,slotUnconfigured:`?`,emptySlotReset:`Nessuna bobina assegnata`,unknown:`Sconosciuto`,humidity:`Umidità`,temperature:`Temperatura`,filamentType:`Tipo filamento`,filamentColor:`Colore`,remaining:`Rimanente`,history:`Cronologia AMS`,noHistory:`Nessuna cronologia disponibile`,configureSlot:`Configura slot`,externalSpool:`Bobina esterna`,profile:`Profilo`,kFactor:`Fattore K`,kFactorShort:`K`,fill:`Livello`,configure:`Configura`,used:`utilizzato`,remainingUnit:`rimanente`},printModal:{variants:{editNote:`Queste alternative sono state definite al momento dell'accodamento. Annulla e riaccoda per modificarle.`,title:`Alternative di stampante`,help:`Un lavoro, un posto in coda. La prima stampante compatibile che si libera stampa il suo file.`,unknownModel:`Modello sconosciuto`,plateFor:`Piatto per {{filename}}`,moveUp:`Sposta su`,moveDown:`Sposta giù`,queued:`In coda con {{count}} alternative`},selectPrinter:`Seleziona stampante`,selectPlate:`Seleziona piatto`,filamentMapping:`Mappatura filamento`,useArchiveMapping:`Mappatura`,useArchiveMappingTooltip:`Seleziona ogni slot dalla mappatura AMS salvata con questo archivio (dallo slicer), invece di abbinare per tipo/colore.`,clickToChangeSlot:`Fai clic per modificare l'assegnazione dello slot`,reRead:`Rileggi`,plateN:`Piatto {{n}}`,plateFilamentsUnreadable:`Non è stato possibile leggere i filamenti di un piatto selezionato, quindi non può essere assegnato. Deselezionalo per accodare gli altri.`,totalCost:`Costo totale:`,slotRemainingShort:` - {{grams}}g rim.`,printSettings:`Impostazioni stampa`,bedLeveling:`Livellamento piatto`,flowCalibration:`Calibrazione flusso`,vibrationCalibration:`Calibrazione vibrazioni`,layerInspection:`Ispezione primo layer`,timelapse:`Timelapse`,cancel:`Annulla`,noPrintersAvailable:`Nessuna stampante disponibile`,printerBusy:`Stampante occupata`,printerOffline:`Stampante offline`,sameTypeDifferentColor:`Stesso tipo, colore diverso`,filamentTypeNotLoaded:`Tipo di filamento non caricato`,statusReady:`Pronto`,statusColorMismatch:`Colore diverso`,statusTypeNotFound:`Tipo non trovato`,requiredTooltip:`Richiesto: {{name}} - {{color}}`,manuallySelected:`Selezionato manualmente`,autoMatched:`Abbinato automaticamente`,selectSlot:`Scegli slot`,sameTypeDifferentColorDetail:`Stesso tipo, colore diverso: richiede {{required}}, lo slot ha {{loaded}}`,requiredTypeNotInPrinter:`Tipo di filamento richiesto non trovato nella stampante.`,whenToPrint:`Quando stampare`,asap:`Subito`,queue:`Coda`,schedule:`Programma`,dateTime:`Data e ora`,invalidDateTime:`Inserisci data e ora valide`,openCalendar:`Apri calendario`,requireManualStart:`Richiedi avvio manuale`,requirePreviousSuccess:`Avvia solo se la stampa precedente è riuscita`,autoOffAfter:`Spegni la stampante al termine`,helpAsap:`La stampa verrà aggiunta in cima alla coda e partirà appena una stampante idonea è inattiva.`,helpSchedule:`La stampa partirà all'ora programmata se la stampante è inattiva. Se è occupata, attenderà che diventi disponibile.`,helpQueue:`La stampa verrà aggiunta in fondo alla coda.`,leftNozzle:`L`,rightNozzle:`R`,leftNozzleTooltip:`Ugello sinistro`,rightNozzleTooltip:`Ugello destro`,ftsSameInletHint:`Tutti i filamenti di questa stampa sono sul Filament Track Switch IN-{{inlet}}. Il cambio tra filamenti sullo stesso ingresso è più lento: spostane uno su un AMS dell'altro ingresso.`,rackPosition:`Posizione nel rack`,rackPositionTooltip:`Quale ugello del rack stampa questo filamento. Le posizioni sono numerate come sulla stampante.`,rackEmptyPosition:`Questa posizione del rack è vuota`,rackWrongNozzle:`Contiene un ugello {{has}}; questo filamento richiede {{needs}}`,filamentOverride:`Sostituzione filamento`,filamentOverrideHint:`Sostituisci opzionalmente i filamenti per l'assegnazione basata sul modello. Lo scheduler abbinerà i filamenti selezionati invece dei valori 3MF originali.`,originalFilament:`Originale`,overrideWith:`Sostituisci con`,resetToOriginal:`Ripristina originale`,insufficientFilamentTitle:`Filamento insufficiente`,waitingForAmsStatus:`In attesa dello stato AMS di {{printer}}…`,insufficientFilamentMessage:`Alcune bobine assegnate hanno meno filamento rimanente di quanto necessario per questa stampa:`,insufficientFilamentLine:`{{printer}} - {{slot}}: necessita di {{required}}g, rimanenti {{remaining}}g`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: necessita di {{required}}g, {{remaining}}g disponibili tra le bobine corrispondenti (AMS Filament Backup)`,printAnyway:`Stampa comunque`,forceColorMatch:`Forza corrispondenza colore`,staggerPrinterStarts:`Scaglionare avvii`,staggerGroupSize:`Dimensione gruppo`,staggerInterval:`Intervallo (min)`,staggerPreview:`{{printers}} stampanti → {{groups}} gruppi di {{size}}, avvio ogni {{interval}} min`,staggerLastGroup:`ultimo gruppo: {{count}}`,staggerTotal:`totale: {{minutes}} min`,staggerToPrinters:`Scagliona a {{count}} stampanti`,gcodeInjection:`Inietta G-code auto-stampa`,insufficientBudget:`Budget insufficiente`,unlimitedNoBudget:`Illimitato – non è impostato alcun limite di budget.`,noPrintableCostCenters:`Non è disponibile alcun centro di costo attivo per la stampa. Chiedi a un amministratore di concederti l’accesso alla stampa.`},backup:{includesEncryptionKey:`I backup locali includono il file della chiave di crittografia MFA (DATA_DIR/.mfa_encryption_key), quindi un backup ZIP è autonomo. Tratta lo ZIP come sensibile — chiunque abbia il file può decifrare i client secret OIDC e i segreti TOTP contenuti.`,title:`Backup e ripristino`,createBackup:`Crea backup`,restoreBackup:`Ripristina backup`,restoreDescription:`Sostituisci tutti i dati da un file di backup`,downloadBackup:`Scarica backup`,uploadBackup:`Carica backup`,lastBackup:`Ultimo backup`,autoBackup:`Backup automatico`,backupNow:`Esegui backup ora`,restoreWarning:`Avviso: il ripristino sovrascriverà tutti i dati attuali.`,includeArchives:`Includi archivi`,includeSettings:`Includi impostazioni`,includeProfiles:`Includi profili`,backupSuccess:`Backup creato con successo`,restoreSuccess:`Backup ripristinato con successo`,backupFailed:`Backup fallito`,restoreFailed:`Ripristino fallito`,restoreNote:`La stampante virtuale verrà fermata durante il ripristino`,githubBackup:`Backup GitHub`,enabled:`Abilitato`,cloudLoginRequired:`Accesso Bambu Cloud richiesto. Accedi in Profili → Profili Cloud per abilitare il backup GitHub.`,cloudLoginRequiredShort:`Accesso Cloud richiesto`,githubDescription:`Sincronizza automaticamente i tuoi profili con un repository GitHub privato per backup e cronologia delle versioni.`,repoIsPrivate:`Il repository è privato — è sicuro effettuare il backup.`,repoIsPublicWarning:`Il repository è PUBBLICO. I backup di Bambuddy includono credenziali MQTT, token di Home Assistant, token di Prometheus, la tua e-mail Bambu Cloud e i codici di accesso alle stampanti tramite K-profile. Il salvataggio è bloccato finché non rendi privato il repository nelle impostazioni del tuo provider.`,repoVisibilityUnknown:`Impossibile determinare la visibilità del repository. Bambuddy rifiuta di eseguire backup su qualsiasi target non confermato come privato; il salvataggio sarà bloccato.`,repositoryUrl:`URL del repository`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`Consenti HTTP non sicuro`,allowInsecureHttpHint:`Abilita per istanze self-hosted su reti private senza TLS`,personalAccessToken:`Token di accesso personale`,tokenSaved:`(salvato)`,enterNewToken:`Inserisci un nuovo token per aggiornare`,tokenHintGitHub:`Token a grana fine con accesso in lettura e scrittura a Contents, oppure token classico con ambito repo.`,tokenHintGitLab:`Token con ambito api, oppure read_repository insieme a write_repository.`,tokenHintGitea:`Token con ambito write:repository.`,tokenHintForgejo:`Token con ambito write:repository. Basta un token limitato a questo solo repository.`,branch:`Branch`,provider:`Provider Git`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`Solo manuale`,hourly:`Ogni ora`,daily:`Giornaliero`,weekly:`Settimanale`,includeInBackup:`Includi nel backup`,kProfiles:`K-Profili`,kProfilesDescription:`Calibrazione dell'avanzamento pressione dalle stampanti connesse`,noPrintersConnected:`Nessuna stampante connessa`,printersConnected:`{{connected}}/{{total}} connesse`,cloudProfiles:`Profili Cloud`,cloudProfilesDescription:`Preset di filamento, stampante e processo da Bambu Cloud e Orca Cloud`,cloudProfilesAccounts:`Account collegati — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}`,appSettings:`Impostazioni App`,appSettingsDescription:`Configurazione Bambuddy (database completo)`,spoolInventory:`Inventario bobine`,spoolInventoryDescription:`Bobine di filamento, cronologia utilizzo e tracciamento costi`,printArchives:`Archivi di stampa`,printArchivesDescription:`Metadati della cronologia di stampa (nessun file gcode/3MF)`,lastBackupAt:`Ultimo backup:`,noBackupsYet:`Nessun backup ancora`,next:`Prossimo:`,startingBackup:`Avvio del backup...`,test:`Test`,enableBackup:`Abilita backup`,testConnection:`Testa connessione`,enterRepoUrl:`Inserisci l'URL del repository`,enterRepoAndToken:`Inserisci l'URL del repository e il token di accesso`,repoRequired:`L'URL del repository è obbligatorio`,tokenRequired:`Il token di accesso è obbligatorio`,githubBackupEnabled:`Backup GitHub abilitato`,tokenUpdated:`Token aggiornato`,settingsSaved:`Impostazioni salvate`,failedToSave:`Salvataggio fallito: {{message}}`,backupCompleteFiles:`Backup completato - {{count}} file aggiornati`,backupSkippedNoChanges:`Backup saltato - nessuna modifica`,backupFailed2:`Backup fallito: {{message}}`,clearedLogs:`{{count}} log eliminati`,failedToClearLogs:`Eliminazione log fallita: {{message}}`,restoreFromGit:{button:`Ripristina da Git`,title:`Ripristina dal backup Git`,subtitle:`Scegli un commit e cosa ripristinare`,commitLabel:`Commit del backup`,latestCommit:`Ultimo backup (punta del branch)`,categoriesLabel:`Cosa ripristinare`,inspecting:`Lettura del contenuto del backup...`,itemCount:`{{count}} nel backup`,overwriteLabel:`Sovrascrivi le voci esistenti`,overwriteOn:`Le voci esistenti verranno aggiornate dal backup.`,overwriteOff:`Vengono aggiunte solo le voci mancanti; quelle esistenti restano invariate.`,selectedCount:`{{count}} selezionati`,restoring:`Ripristino in corso...`,confirmTitle:`Ripristinare dal backup?`,confirmMessage:`Le categorie selezionate verranno ripristinate da questo commit. Le voci mancanti vengono aggiunte, quelle esistenti restano invariate.`,confirmMessageOverwrite:`Le categorie selezionate verranno ripristinate da questo commit sovrascrivendo le voci già presenti in locale. Operazione non annullabile.`,kprofilesOverwriteCaveat:`I profili K sono l'eccezione: scrivere uno slot sostituisce sempre la calibrazione sulla stampante.`,tally:`{{restored}} ripristinati, {{skipped}} saltati, {{failed}} non riusciti`,reloadHint:`Ricarica Bambuddy per vedere i dati ripristinati in tutte le sezioni.`,partialHint:`Le categorie elencate sopra sono state completate e salvate. Quelle mancanti non sono state eseguite.`,failed:`Ripristino non riuscito.`,loadFailed:`Impossibile leggere il repository di backup.`,details:{notPresent:`Non presente in questo commit di backup`,unreadableJson:`JSON illeggibile: {{paths}}`,settingsNoPayload:`Nessuna impostazione nei dati`,settingsCredentialsWillSkip:`{{count}} chiavi simili a credenziali verranno saltate`,settingsCompanionWillSkip:`{{count}} chiavi simili a credenziali verranno saltate e {{companion}} interruttori che dipendono da esse resteranno disattivati`,settingsCompanionOnlyWillSkip:`{{companion}} interruttori resteranno disattivati - le credenziali necessarie a ciascuno non possono essere ripristinate da un backup`,spoolsUsageCount:`inclusi {{count}} record di consumo`,archivesMetadataOnly:`Solo metadati - i file 3MF e le miniature non sono in un backup Git`,kprofilesPrinterCount:`su {{count}} stampanti`},notes:{noData:`Nessun dato di questo tipo in questo backup`,archivesPrinterMissing:`Alcuni archivi facevano riferimento a stampanti non più esistenti - collegamento rimosso`,archivesProjectMissing:`Alcuni archivi facevano riferimento a progetti non più esistenti - collegamento rimosso`,archivesOwnerCleared:`Alcuni archivi facevano riferimento a utenti non più esistenti - proprietario rimosso, quindi sono visibili solo agli utenti con il permesso archives:read_all finché un amministratore non li riassegna`,archivesOwnerUnmatched:`Alcuni archivi indicano un proprietario che questa istanza non ha - il proprietario è stato rimosso anziché dedotto dall'id utente del backup, quindi sono visibili solo agli utenti con il permesso archives:read_all finché un amministratore non li riassegna`,archivesOwnerUnknown:`Alcuni archivi sono stati ripristinati senza proprietario - questo backup non ne registra alcuno, quindi sono visibili solo agli utenti con il permesso archives:read_all finché un amministratore non li riassegna`,archivesUndeleted:`Gli archivi eliminati dopo il backup sono di nuovo visibili - la sovrascrittura era attiva`,archivesMetadataOnly:`Gli archivi ripristinati contengono solo metadati - i file 3MF e le miniature non sono in un backup Git`,spoolUsageUnresolved:`{{count}} record di consumo saltati - la loro bobina non è nell'elenco bobine di questo backup, quindi non c'è nulla a cui collegarli.`,spoolUsageUnlinked:`{{count}} record di consumo ripristinati senza il collegamento alla cronologia di stampa - seleziona Archivi di stampa insieme a Inventario bobine per mantenerlo.`,spoolTagKept:`{{count}} tag bobina lasciati invariati - il backup avrebbe cancellato un tag nel frattempo scansionato, oppure lo avrebbe spostato su una seconda bobina.`,settingsCredentialsSkipped:`{{count}} chiavi simili a credenziali saltate - reinserisci i segreti manualmente`,settingsAuthSkipped:`{{count}} impostazioni di autenticazione saltate - modificale in Impostazioni > Autenticazione così i controlli di blocco restano attivi`,settingsCompanionSkipped:`{{keys}} lasciati disattivati - la credenziale richiesta da ciascuno non può essere ripristinata da un backup e questa istanza non ne ha nessuna salvata, quindi attivarli lascerebbe l'integrazione senza autenticazione`,settingsMqttRelayFailed:`Impostazioni MQTT ripristinate, ma il relay non è stato riconnesso - riavvia Bambuddy`,kprofilesAlwaysOverwrite:`I profili K sovrascrivono sempre lo slot corrispondente sulla stampante`,kprofilesAckUnreliable:`Una stampante che non risponde conta comunque come ripristinata - verifica i profili sulla stampante`,kprofilesPrinterMissing:`Nessuna stampante con numero di serie {{serial}} - saltato`,kprofilesPrinterOffline:`{{printer}} ({{serial}}) non è connessa - saltato`,kprofilesUnknownNozzle:`Diametro ugello inatteso {{nozzle}} per {{serial}} - inviato così com'è`,kprofilesUnmatched:`{{count}} profili per {{nozzle}} non avevano corrispondenza su {{printer}} - aggiunti come nuovi profili`,kprofilesSendFailed:`Impossibile inviare i profili {{nozzle}} a {{printer}} ({{serial}})`,kprofilesRefused:`{{printer}} ({{serial}}) ha rifiutato i profili {{nozzle}}: {{reason}}`,kprofilesStepFailed:`Non è stato possibile completare il passaggio dei profili K - {{reason}}. Quanto ripristinato prima resta salvato.`}},history:`Cronologia`,clear:`Cancella`,date:`Data`,status:`Stato`,trigger:`Tipo`,triggers:{manual:`Backup (manuale)`,scheduled:`Backup (pianificato)`,restore:`Ripristino`},commit:`Commit`,localBackup:`Backup locale`,localBackupDescription:`Crea un backup completo dei tuoi dati Bambuddy includendo database, archivi, upload e tutti i file.`,downloadBackupLabel:`Scarica backup`,completeBackupZip:`Backup completo: database + tutti i file (ZIP)`,download:`Scarica`,preparingBackup:`Preparazione del backup...`,creatingArchive:`Creazione dell'archivio di backup... Potrebbe richiedere del tempo per archivi di grandi dimensioni.`,downloadingFile:`Download del file di backup...`,backupDownloaded:`Backup scaricato con successo`,failedToCreateBackup:`Creazione del backup fallita: {{message}}`,restore:`Ripristina`,restoreReplacesAll:`Il ripristino sostituisce tutti i dati.`,restoreReplacesAllDetail:`Il database e i file attuali verranno completamente sostituiti. È necessario un riavvio dopo il ripristino.`,restoreConfirmTitle:`Ripristina backup`,restoreConfirmMessage:`Sei sicuro di voler ripristinare da "{{filename}}"? Questo sostituirà completamente il tuo database e tutti i file. L'applicazione dovrà essere riavviata dopo il ripristino.`,restoreConfirmButton:`Ripristina backup`,uploadingFile:`Caricamento del file di backup...`,backupRestoredRestart:`Backup ripristinato. Riavvia Bambuddy.`,failedToRestore:`Ripristino del backup fallito. Controlla il formato del file.`,reloadNow:`Ricarica ora`,creatingBackup:`Creazione del backup`,restoringBackup:`Ripristino del backup`,preparing:`Preparazione...`,processing:`Elaborazione...`,doNotClosePage:`Non chiudere questa pagina e non navigare altrove. Questa operazione potrebbe richiedere diversi minuti per backup di grandi dimensioni.`,restoring:`Ripristino in corso...`,restoreComplete:`Ripristino completato`,restoreFailed2:`Ripristino fallito`,importSettings:`Importa impostazioni da un file di backup`,pleaseWaitRestoring:`Attendere durante il ripristino dei dati`,selectBackupFile:`Clicca per selezionare un file di backup (.json o .zip)`,duplicateHandling:`Come funziona la gestione dei duplicati:`,matchPrinters:`Stampanti`,matchPrintersBy:`corrispondenza per numero di serie`,matchSmartPlugs:`Smart Plug`,matchSmartPlugsBy:`corrispondenza per indirizzo IP`,matchNotificationProviders:`Provider di notifica`,matchNotificationProvidersBy:`corrispondenza per nome`,matchFilaments:`Filamenti`,matchFilamentsBy:`corrispondenza per nome + tipo + marca`,matchArchives:`Archivi`,matchArchivesBy:`corrispondenza per hash del contenuto (sempre saltato)`,matchPendingUploads:`Upload in sospeso`,matchPendingUploadsBy:`corrispondenza per nome file`,matchSettingsTemplates:`Impostazioni e modelli`,matchSettingsTemplatesBy:`sempre sovrascritti`,replaceExisting:`Sostituisci dati esistenti`,keepExisting:`Mantieni dati esistenti`,overwriteDescription:`Sovrascrivi gli elementi già esistenti con i dati del backup`,keepDescription:`Ripristina solo gli elementi che non esistono ancora`,overwriteCaution:`Attenzione:`,overwriteWarning:`La sovrascrittura sostituirà le configurazioni attuali con i dati del backup. I codici di accesso delle stampanti non vengono mai sovrascritti per sicurezza.`,cancel:`Annulla`,processingBackup:`Elaborazione del file di backup...`,itemsRestored:`Elementi ripristinati`,itemsSkipped:`Elementi saltati`,restored:`Ripristinati`,skippedAlreadyExist:`Saltati (già esistenti)`,filesCategory:`File (3MF, miniature, ecc.)`,andMore:`...e altri {{count}}`,newApiKeysGenerated:`Nuove chiavi API generate`,keysShownOnce:`Queste chiavi vengono mostrate solo una volta. Copiale ora!`,copy:`Copia`,noDataFound:`Nessun dato da ripristinare trovato nel file di backup.`,close:`Chiudi`,scheduledBackup:`Backup pianificati`,scheduledBackupDescription:`Crea automaticamente snapshot di backup secondo una pianificazione. La directory di output può essere montata su un NAS o storage esterno.`,frequency:`Frequenza`,backupTime:`Tempo`,retention:`Conservazione`,retentionDescription:`Numero di backup da conservare`,outputPath:`Percorso di output`,outputPathPlaceholder:`Predefinito: {{path}}`,outputPathDescription:`Lasciare vuoto per la posizione predefinita`,runNow:`Esegui ora`,backupFiles:`File di backup`,noScheduledBackups:`Nessun backup ancora`,deleteBackup:`Elimina`,deleteBackupConfirm:`Eliminare questo file di backup?`,backupRunning:`Backup in corso...`,scheduledBackupComplete:`Backup completato con successo`,scheduledBackupFailed:`Backup fallito`,nextBackup:`Prossimo backup`,backupSize:`Dimensione`,localTimeHint:`Ora locale ({{tz}})`,defaultPathLabel:`Predefinito:`,pathCheck:{title:`Bambuddy non riesce a scrivere in questa directory`,howToFix:`Come risolvere:`,sandboxed:`Il servizio Bambuddy non riesce a scrivere in {{path}}. La sua unit systemd usa ProtectSystem=strict, che rende ogni directory al di fuori di quelle di installazione, dati e log di sola lettura per il servizio - anche una in cui puoi scrivere dalla tua shell.`,read_only:`{{path}} si trova su un filesystem di sola lettura.`,permission_denied:`Bambuddy non ha il permesso di scrivere in {{path}}. Controlla proprietario e permessi della directory.`,no_space:`Il filesystem che contiene {{path}} è pieno.`,not_a_directory:`{{path}} esiste ma non è una directory.`,missing:`{{path}} non esiste e non è stato possibile crearla.`,error:`Bambuddy non riesce a scrivere in {{path}}.`,ephemeralTitle:`Questi backup non sopravvivono alla ricreazione del container`,container_ephemeral:`{{path}} si trova dentro il container Bambuddy, non sull'host. I backup scritti lì vanno persi quando il container viene ricreato. Monta la directory dall'host:`},categories:{settings:`Impostazioni`,notification_providers:`Provider di notifica`,notification_templates:`Modelli di notifica`,smart_plugs:`Smart Plug`,printers:`Stampanti`,filaments:`Filamenti`,maintenance_types:`Tipi di manutenzione`,archives:`Archivi`,projects:`Progetti`,pending_uploads:`Upload in sospeso`,external_links:`Link esterni`,api_keys:`Chiavi API`}},tags:{title:`Tag`,addTag:`Aggiungi tag`,editTag:`Modifica tag`,deleteTag:`Elimina tag`,tagName:`Nome tag`,tagColor:`Colore tag`,noTags:`Nessun tag`,deleteConfirm:`Sei sicuro di voler eliminare questo tag?`,manageTags:`Gestisci tag`},uploadModal:{title:`Carica file 3MF`,dragDrop:`Trascina e rilascia file .3mf qui`,or:`o`,browseFiles:`Sfoglia file`,extractionInfo:`Il modello stampante sarà estratto automaticamente dai metadati del file 3MF.`,uploaded:`caricati`,failed:`falliti`,uploading:`Caricamento...`,upload:`Carica`,uploadFailed:`Caricamento fallito`},editArchive:{title:`Modifica archivio`,name:`Nome`,namePlaceholder:`Nome stampa`,printer:`Stampante`,noPrinter:`Nessuna stampante`,project:`Progetto`,noProject:`Nessun progetto`,itemsPrinted:`Elementi stampati`,itemsPrintedHelp:`Numero di elementi prodotti in questo job di stampa`,filamentUsed:`Filamento usato (g)`,filamentUsedPlaceholder:`es. 46.16`,filamentUsedHelp:`Inseriscilo a mano quando una stampa è stata archiviata senza il suo 3MF, così da farla rientrare comunque nei totali del filamento. La riscansione di un archivio che ha il suo 3MF rilegge il valore dal file.`,notes:`Note`,notesPlaceholder:`Aggiungi note su questa stampa...`,externalLink:`Link esterno`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Link a Printables, Thingiverse o altra fonte`,tags:`Tag`,tagsPlaceholder:`Aggiungi tag...`,addMoreTags:`Aggiungi altri tag...`,matchingTags:`Tag corrispondenti "{{query}}"`,existingTags:`Tag esistenti`,clickToAdd:`(clicca per aggiungere)`,status:`Stato`,failureReason:`Motivo fallimento`,selectReason:`Seleziona motivo...`,photos:`Foto del risultato stampato`,photosHelp:`Clicca + per aggiungere foto del risultato stampato`,printResult:`Risultato stampa`,saving:`Salvataggio...`,failureReasons:{adhesionFailure:`Fallimento adesione`,spaghettiDetached:`Spaghetti / staccato`,layerShift:`Spostamento layer`,cloggedNozzle:`Ugello intasato`,filamentRunout:`Filamento esaurito`,warping:`Deformazione`,stringing:`Filamento`,underExtrusion:`Sotto-estrusione`,powerFailure:`Mancanza corrente`,userCancelled:`Annullato dall'utente`,other:`Altro`},statuses:{completed:`Completato`,failed:`Fallito`,aborted:`Annullato`,printing:`In stampa`}},kProfiles:{title:`Profili K`,noPrintersConfigured:`Nessuna stampante configurata`,addPrinterInSettings:`Aggiungi una stampante in Impostazioni per gestire i K-profiles`,noActivePrinters:`Nessuna stampante attiva`,enablePrinterConnection:`Abilita una connessione stampante per vedere i K-profiles`,loadingProfiles:`Caricamento K-Profiles...`,printerOffline:`Stampante offline`,printerOfflineDesc:`La stampante selezionata non e connessa. Accendila per vedere i K-profiles.`,noMatchingProfiles:`Nessun profilo corrispondente`,noMatchingProfilesDesc:`Nessun profilo corrisponde ai criteri di ricerca`,noKProfiles:`Nessun K-Profile`,noKProfilesDesc:`Nessun profilo pressure advance per ugello da {{diameter}}mm`,createFirstProfile:`Crea primo profilo`,printer:`Stampante`,nozzle:`Ugello`,refresh:`Aggiorna`,addProfile:`Aggiungi profilo`,export:`Esporta`,import:`Importa`,select:`Seleziona`,selectAll:`Seleziona tutto`,delete:`Elimina`,searchPlaceholder:`Cerca per nome o filamento...`,allExtruders:`Tutti gli estrusori`,leftOnly:`Solo sinistro`,rightOnly:`Solo destro`,allFlow:`Tutto flow`,hfOnly:`Solo HF`,sOnly:`Solo S`,sortName:`Ordina: Nome`,sortKValue:`Ordina: K-Value`,sortFilament:`Ordina: Filamento`,leftExtruder:`Estrusore sinistro`,rightExtruder:`Estrusore destro`,modal:{addTitle:`Aggiungi K-Profile`,editTitle:`Modifica K-Profile`,profileName:`Nome profilo`,profileNamePlaceholder:`Il mio profilo PLA`,kValue:`Valore K`,kValuePlaceholder:`0.020`,kValueHelp:`Intervallo tipico: 0.01 - 0.06 per PLA, 0.02 - 0.10 per PETG`,filament:`Filamento`,selectFilament:`Seleziona filamento...`,source:{local:`Importato`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`Integrato`},noFilamentsHelp:`Nessun filamento disponibile. Accedi a Bambu Cloud o importa i preset da Profili → Profili locali.`,searchFilaments:`Cerca filamenti...`,noFilamentMatches:`Nessun filamento corrisponde alla ricerca`,flowType:`Tipo flow`,highFlow:`Alto flusso`,standard:`Standard`,nozzleSize:`Dimensione ugello`,extruder:`Estrusore`,extruders:`Estrusori`,left:`Sinistra`,right:`Destra`,notes:`Note (salvate localmente)`,notesPlaceholder:`Aggiungi note su questo profilo...`,notesHelp:`Le note sono salvate in Bambuddy, non sulla stampante`,syncing:`Sincronizzazione con stampante...`,savingExtruder:`Salvataggio su estrusore {{current}}/{{total}}...`,pleaseWait:`Attendere`},deleteConfirm:{title:`Elimina profilo`,cannotUndo:`Questo non può essere annullato`,message:`Sei sicuro di voler eliminare "{{name}}" dalla stampante?`},bulkDelete:{title:`Elimina profili`,cannotUndo:`Questo non può essere annullato`,message:`Sei sicuro di voler eliminare {{count}} profili selezionati dalla stampante?`},toast:{profileSaved:`K-profile salvato`,profilesSaved:`K-profile salvato su {{count}} estrusori`,selectAtLeastOneExtruder:`Seleziona almeno un estrusore`,selectFilament:`Seleziona prima un filamento`,filamentNotResolvable:`Nessun ID filamento Bambu per {{name}}: la stampante non può salvare un profilo`,profileDeleted:`K-profile eliminato`,profilesDeleted:`Eliminati {{count}} profili`,exportedProfiles:`Esportati {{count}} profili`,importedProfiles:`Importati {{count}} di {{total}} profili`,noProfilesToExport:`Nessun profilo da esportare`,invalidFileFormat:`Formato file non valido`,failedToParseImport:`Parsing file import fallito`,failedToSaveBatch:`Salvataggio K-profiles fallito`,noteSaved:`Nota salvata`,failedToSaveNote:`Salvataggio nota fallito`},permission:{noRead:`Non hai il permesso di aggiornare i profili`,noCreate:`Non hai il permesso di aggiungere profili`,noUpdate:`Non hai il permesso di aggiornare K-profiles`,noDelete:`Non hai il permesso di eliminare K-profiles`,noExport:`Non hai il permesso di esportare profili`,noImport:`Non hai il permesso di importare profili`}},virtualPrinter:{title:`Stampante virtuale`,running:`In esecuzione`,stopped:`Ferma`,description:{default:`Abilita una stampante virtuale che appare in Bambu Studio e OrcaSlicer. I file inviati a questa stampante saranno archiviati senza stampare.`,proxy:`Abilita un proxy che inoltra il traffico slicer a una stampante reale, permettendo la stampa remota su qualsiasi rete.`},enable:{title:`Abilita stampante virtuale`,visibleInSlicer:`Visibile come "Bambuddy" nella ricerca slicer`,proxyingTo:`In proxy verso {{name}}`,notActive:`Non attivo`},model:{title:`Modello stampante`,description:`Seleziona il modello stampante da emulare.`,restartWarning:`Cambiare il modello riavviera la stampante virtuale`},accessCode:{title:`Codice accesso`,isSet:`Codice accesso impostato`,notSet:`Nessun codice accesso impostato - richiesto per abilitare`,placeholder:`Inserisci codice 8 caratteri`,placeholderChange:`Inserisci nuovo codice per cambiare`,hint:`Deve essere esattamente 8 caratteri. Usato dagli slicer per autenticarsi.`,charCount:`({{count}}/8)`,inheritedFromTarget:`Ereditato dalla stampante target`,derivedFromTargetHint:`Usa il codice di accesso della stampante target. Il bridge inoltra l'autenticazione dello slicer alla stampante reale, quindi i codici devono corrispondere — modifica il codice nelle impostazioni della stampante per cambiarlo.`,reveal:`Mostra codice accesso`,hide:`Nascondi codice accesso`},targetPrinter:{title:`Stampante target`,configured:`Target proxy configurato`,notConfigured:`Nessuna stampante target selezionata - richiesta per modalita proxy`,placeholder:`Seleziona una stampante...`,hint:`Seleziona la stampante a cui fare proxy. La stampante deve essere in modalita LAN.`,noPrinters:`Nessuna stampante configurata. Aggiungi una stampante per usare la modalita proxy.`},remoteInterface:{title:`Sovrascrittura interfaccia di rete`,configured:`Sovrascrittura interfaccia attiva`,optional:`Opzionale - usare se l'IP rilevato automaticamente e sbagliato (es. piu NIC, Docker, VPN)`,placeholder:`Rilevamento automatico (predefinito)...`,hint:`Sovrascrive l'indirizzo IP pubblicizzato via SSDP e usato nel certificato TLS. Utile quando Bambuddy ha piu interfacce di rete.`},mode:{title:`Modalita`,archive:`Archivio`,archiveDesc:`Archivia subito i file`,review:`Revisione`,reviewDesc:`Rivedi prima di archiviare`,queue:`Coda`,queueDesc:`Archivia e aggiungi alla coda`,proxy:`Proxy`,proxyDesc:`Inoltra a stampante reale`},autoDispatch:{title:`Avvio automatico`,description:`Avvia automaticamente le stampe aggiunte alla coda. Se disattivato, le stampe attendono l'avvio manuale.`},queueForceColorMatch:{title:`Forza corrispondenza colori`,description:`Rifiuta di inviare a una stampante che non ha esattamente il tipo di filamento e il colore caricato. Disattivato per impostazione predefinita — senza questo, la coda usa solo la corrispondenza per modello e potrebbe scegliere una stampante con il colore sbagliato.`},saveAmsMapping:{title:`Salva mappatura AMS`,description:`Salva nell'archivio la scelta dello slot AMS effettuata dallo slicer stesso (dal comando MQTT project_file), in modo che una ristampa successiva riutilizzi la stessa bobina fisica invece di ricavarla di nuovo dal tipo/colore del file. Disattivato per impostazione predefinita.`},gcodeInjection:{title:`Iniezione G-code`,description:`Applica gli snippet G-code configurati per modello nelle Impostazioni ai lavori di questo VP. Disattivato per impostazione predefinita.`},tailscaleDisabled:{title:`Integrazione Tailscale`,description:`Abilita per contrassegnare questo VP come esposto tramite Tailscale. Mostra l'indirizzo Tailscale dell'host così sai quale IP incollare nello slicer. Il passo di importazione CA è invariato — questo toggle non ha effetto sui certificati.`},setupRequired:{title:`Configurazione necessaria`,description:`La stampante virtuale richiede configurazioni di sistema aggiuntive prima di funzionare. Include port forwarding, regole firewall e impostazioni specifiche della piattaforma.`,readGuide:`Leggi la guida prima di abilitare`},howItWorks:{title:`Come funziona`,step1:`Sulla stessa LAN, le stampanti virtuali appaiono automaticamente nel tuo slicer (Bambu Studio / OrcaSlicer). Da altre reti, aggiungile manualmente tramite indirizzo IP e codice di accesso.`,step2:`In modalità Archivio, Revisione e Coda, usa il pulsante "Invia" nel tuo slicer per caricare file 3MF su Bambuddy. Lo slicer mostrerà "Stampa riuscita" — il file viene salvato, non stampato.`,step3:`In modalità Proxy, la stampante virtuale inoltra tutto il traffico a una stampante reale — le stampe partono immediatamente come con una connessione diretta.`},status:{title:`Dettagli stato`,printerName:`Nome stampante`,model:`Modello`,serialNumber:`Numero seriale`,mode:`Modalita`,pendingFiles:`File in sospeso`,targetPrinter:`Stampante target`,ftpPort:`Porta FTP`,mqttPort:`Porta MQTT`,ftpConnections:`Connessioni FTP`,mqttConnections:`Connessioni MQTT`},toast:{updated:`Impostazioni stampante virtuale aggiornate`,failedToUpdate:`Aggiornamento impostazioni fallito`,copyFailed:`Copia non riuscita — seleziona il testo manualmente`,accessCodeRequired:`Imposta prima un codice accesso`,targetPrinterRequired:`Seleziona prima una stampante target`,bindIpRequired:`Impostare prima un indirizzo IP`,accessCodeEmpty:`Il codice accesso non può essere vuoto`,accessCodeLength:`Il codice accesso deve essere esattamente 8 caratteri`,targetCodeChangedRebind:`Il codice di accesso ora corrisponde alla nuova stampante target. Ri-aggiungi questo dispositivo nel tuo slicer per acquisire il nuovo codice.`,created:`Stampante virtuale creata`,failedToCreate:`Impossibile creare la stampante virtuale`,deleted:`Stampante virtuale eliminata`,failedToDelete:`Impossibile eliminare la stampante virtuale`},list:{title:`Stampanti virtuali`,add:`Aggiungi`,addFirst:`Aggiungi stampante virtuale`,empty:`Nessuna stampante virtuale configurata. Aggiungine una per iniziare.`},bindIp:{title:`Interfaccia di rete`,placeholder:`Seleziona interfaccia...`,hint:`Interfaccia di rete a cui questa stampante virtuale si collega. Deve essere unica per stampante.`},proxy:{accessCodeHint:`In modalita proxy, usa il codice di accesso della stampante di destinazione nello slicer. La connessione viene inoltrata in modo trasparente alla stampante reale.`},addDialog:{title:`Aggiungi stampante virtuale`,name:`Nome`,hint:`Potrai configurare il codice di accesso, la stampante di destinazione e altre impostazioni dopo la creazione.`,create:`Crea`},deleteConfirm:{title:`Elimina stampante virtuale`,message:`Sei sicuro di voler eliminare "{{name}}"? Tutti i servizi di questa stampante verranno interrotti.`},archiveNameSource:{title:`Origine nome archivio`,description:`Scegli come vengono nominati i nuovi archivi quando i file arrivano tramite la stampante virtuale. "Metadati" utilizza il titolo incorporato nello slicer dal 3MF (default). "Nome file" utilizza il nome che Bambu Studio ha inviato via FTP. Nota: Bambu Studio sovrascrive il nome digitato nella finestra "invia a stampante" con il campo Titolo del 3MF quando presente, quindi entrambe le modalità producono spesso la stessa stringa.`,metadata:`Metadati`,filename:`Nome file`},caCert:{title:`Certificato dello slicer`,description:`Le stampanti virtuali usano un certificato TLS firmato dalla CA di Bambuddy. Importa questo certificato CA nell'archivio attendibile del tuo slicer una sola volta affinché accetti la connessione — senza doverlo copiare dalla riga di comando.`,copy:`Copia`,copied:`Copiato`,download:`Scarica`,fingerprint:`SHA-256`}},modelViewer:{openInSlicer:`Apri nello slicer`,openInSlicerWith:`Apri in {{slicer}}`,moreSlicerOptions:`Altre opzioni dello slicer`,openInSlicerFailed:`Impossibile aprire nello slicer`,tabs:{model:`Modello 3D`},notAvailable:`non disponibile`,plates:`Piatti`,allPlates:`Tutti i piatti`,plateNumber:`Piatto {{number}}`,plateCount:`{{count}} piatto`,plateCount_other:`{{count}} piatti`,objectCount:`{{count}} oggetto`,objectCount_other:`{{count}} oggetti`,filamentCount:`{{count}} filamento`,filamentCount_other:`{{count}} filamenti`,eta:`ETA {{minutes}} min`,noPreview:`Nessuna anteprima disponibile per questo file`,pagination:{pageOf:`Pagina {{current}} di {{total}}`,prev:`Prec`,next:`Succ`},errors:{failedToLoad:`Caricamento file fallito`,noMeshes:`Nessuna mesh trovata nel file 3MF`,unsupportedFormat:`Formato file non supportato`}},maintenanceDescriptions:{lubricateCarbonRods:`Applica lubrificante alle aste in carbonio per un movimento fluido`,lubricateRails:`Applica lubrificante alle guide lineari per un movimento fluido`,cleanNozzle:`Pulisci hotend e ugello per prevenire intasamenti`,checkBelts:`Verifica tensione cinghie per stampe accurate`,cleanBuildPlate:`Pulisci il piatto per migliorare l'adesione`,checkExtruder:`Ispeziona ingranaggi estrusore per usura`,checkCooling:`Assicurati che le ventole di raffreddamento funzionino`,generalInspection:`Ispezione generale stampante`,cleanCarbonRods:`Pulisci le aste in carbonio per ridurre attrito`,lubricateSteelRods:`Applica lubrificante alle aste in acciaio per un movimento fluido`,cleanSteelRods:`Pulisci le aste in acciaio per ridurre attrito`,cleanLinearRails:`Pulisci le guide lineari per rimuovere polvere e detriti`,checkPtfeTube:`Ispeziona il tubo PTFE per usura o danni`,replaceHepaFilter:`Sostituisci filtro HEPA per qualità aria`,replaceCarbonFilter:`Sostituisci filtro a carbone attivo`,lubricateLeftNozzleRail:`Lubrifica guida ugello sinistro (serie H2)`},haSensors:{label:`Sensori`,unavailable:`Non disponibile`,blocksPrints:`{{entity}} — trattiene le stampe finché l'allarme è attivo`,states:{open:`Aperto`,closed:`Chiuso`,unlocked:`Sbloccato`,locked:`Bloccato`,detected:`Rilevato`,clear:`Libero`,wet:`Bagnato`,dry:`Asciutto`,problem:`Problema`,ok:`OK`,running:`In funzione`,stopped:`Fermo`,on:`Acceso`,off:`Spento`},sectionTitle:`Sensori Home Assistant (stampanti)`,add:`Aggiungi sensore`,addTitle:`Aggiungi sensore Home Assistant`,editTitle:`Modifica sensore Home Assistant`,empty:`Nessun sensore. Collega un contatto porta o un termometro da Home Assistant per mostrarlo sulla scheda stampante.`,unknownPrinter:`Stampante sconosciuta`,badgeBlocks:`Trattiene le stampe`,badgeNotifies:`Notifica`,badgeHidden:`Nascosto sulla scheda`,printer:`Stampante`,entity:`Entità`,searchPlaceholder:`Cerca entità...`,noEntities:`Nessuna entità corrispondente`,name:`Nome visualizzato`,alertWhen:`Allarme quando`,alertNever:`Mai — solo visualizzazione`,alertAbove:`Sopra`,alertBelow:`Sotto`,alertHint:`Lo stato di allarme evidenzia il sensore sulla scheda stampante e abilita le opzioni sottostanti.`,showOnCard:`Mostra sulla scheda stampante`,notifyOnAlert:`Invia una notifica quando scatta l'allarme`,blockPrint:`Trattieni le stampe in coda finché l'allarme è attivo`,blockPrintHint:`I lavori restano in coda e partono da soli quando il sensore rientra. Ignorato finché Home Assistant non è raggiungibile.`,toast:{created:`Sensore aggiunto`,updated:`Sensore salvato`,deleted:`Sensore rimosso`},error:{pickEntity:`Scegli un'entità Home Assistant`,nameRequired:`Inserisci un nome visualizzato`,printerRequired:`Scegli una stampante`,alertRequired:`Imposta prima una condizione di allarme`}},locationHaSensors:{sectionTitle:`Sensori Home Assistant (posizioni di archiviazione)`,sectionDescription:`Collega sensori di temperatura, umidità o batteria di Home Assistant alle tue posizioni di archiviazione per mostrare le letture in tempo reale sulla scheda del filamento e nella tabella. È consentito un solo sensore per categoria per posizione.`,add:`Aggiungi sensore`,addTitle:`Aggiungi sensore Home Assistant`,editTitle:`Modifica sensore Home Assistant`,empty:`Nessun sensore. Collega un sensore di temperatura o umidità da Home Assistant per mostrarlo sulla scheda del filamento.`,unknownLocation:`Posizione sconosciuta`,location:`Posizione di archiviazione`,showOnCard:`Mostra sulla scheda del filamento`,overwriteConfirm:{title:`Sostituire il sensore esistente?`,messageTemperature:`"{{location}}" ha già un sensore di temperatura collegato: {{name}}. Continuando verrà sostituito.`,messageHumidity:`"{{location}}" ha già un sensore di umidità collegato: {{name}}. Continuando verrà sostituito.`,messageBattery:`"{{location}}" ha già un sensore di batteria collegato: {{name}}. Continuando verrà sostituito.`},autoAdd:{confirmTitle:`Aggiungere anche gli altri sensori?`,confirmMessage:`Bambuddy ha trovato anche altri sensori per questa posizione. Scegli quali aggiungere.`,added:`Aggiunto anche: {{names}}`,noneFound:`Nessun sensore di temperatura, umidità o batteria corrispondente trovato per questa posizione.`,onlyThisOne:`Solo questo`},options:{buttonLabel:`Opzioni sensori`,title:`Opzioni sensori di posizione`,description:`Questi valori vengono usati quando un sensore di temperatura, umidità o batteria viene collegato automaticamente insieme al primo sensore di una posizione.`,generalSettings:`Impostazioni generali`,pollInterval:`Intervallo di aggiornamento (secondi)`,pollIntervalHint:`Con quale frequenza Bambuddy interroga Home Assistant e aggiorna i valori dei sensori a schermo. Minimo 60 secondi.`,colorizeValues:`Colora i valori dei sensori in base alle relative soglie di allarme`,aboveColor:`Colore sopra la soglia`,belowColor:`Colore sotto la soglia`,optimalColor:`Colore per il valore ottimale`,colors:{red:`Rosso`,orange:`Arancione`,yellow:`Giallo`,green:`Verde`,blue:`Blu`,purple:`Viola`,pink:`Rosa`},saved:`Opzioni salvate`,saveFailed:`Impossibile salvare le opzioni`,reset:`Ripristina`,resetConfirm:{title:`Reimpostare tutti i sensori di posizione esistenti?`,message:`Questo sovrascrive le soglie di allarme, le notifiche e la visibilità sulla scheda di tutti i sensori di temperatura, umidità e batteria di posizione esistenti con i valori configurati sopra, e ripristina il nome di ciascun sensore al suo nome descrittivo di Home Assistant: i sensori della stampante non sono interessati. Questa azione non può essere annullata. A seconda del numero di sensori, questa operazione potrebbe richiedere un momento.`},resetDone:`Applicato a {{count}} sensori di posizione`,resetFailed:`Impossibile reimpostare i sensori di posizione`},deleteAllConfirm:{title:`Eliminare tutti i sensori?`,message:`Questo rimuove tutti i {{count}} sensori collegati a "{{location}}". Questa azione non può essere annullata.`},currentlyBound:`Attualmente collegato: {{entity}}`,error:{locationRequired:`Scegli una posizione di archiviazione`},toast:{created:`Sensore aggiunto`,updated:`Sensore salvato`,deleted:`Sensore rimosso`}},smartPlugs:{offline:`Offline`,admin:`Amministrazione`,openPlugAdminPage:`Apri pagina amministrazione presa`,deleteSmartPlug:`Elimina presa smart`,turnOnSmartPlug:`Accendi presa smart`,turnOffSmartPlug:`Spegni presa smart`,turnOn:`Accendi`,turnOff:`Spegni`,addSmartPlug:{scanningNetwork:`Scansione rete...`,chooseEntity:`Scegli un'entità...`,connectionFailed:`Connessione fallita`,searchEntities:`Cerca entità...`,searchPowerSensors:`Cerca sensori di potenza...`,searchEnergySensors:`Cerca sensori di energia...`,placeholders:{plugName:`Presa soggiorno`,mqttStateOnValue:`ON, true, 1`,mqttSameAsPower:`Stesso del topic potenza, o diverso`}},linkedTo:`Collegato a:`,monitorOnly:`Solo monitoraggio`,alerts:`Avvisi`,scheduleOn:`Alle {{time}}`,scheduleOff:`Spento {{time}}`,on:`On`,off:`Spento`,power:`Potenza`,kwhToday:`kWh Oggi`,settings:`Impostazioni`,automationSettings:`Impostazioni automazione`,showInSwitchbar:`Mostra nella barra interruttori`,quickAccessSidebar:`Accesso rapido dalla barra laterale`,enabled:`Abilitato`,enableAutomation:`Abilita automazione per questa presa`,autoOn:`Auto On`,autoOnDescription:`Accendi quando inizia la stampa`,autoOff:`Auto Off`,autoOffDescription:`Spegni quando la stampa è completata (una tantum)`,autoOffPersistent:`Mantieni attivo`,autoOffPersistentDescription:`Resta attivo tra le stampe invece di una tantum`,controlsPrinterPower:`Alimenta la stampante`,controlsPrinterPowerDescription:`Disattiva se questa presa alimenta solo un accessorio (ventola del filtro, luci). Altrimenti spegnerla segna la stampante come offline.`,autoOffAfterDrying:`Spegni dopo asciugatura`,autoOffAfterDryingDescription:`Spegni al termine dell'asciugatura AMS`,delayAfterDryingMinutes:`Ritardo dopo asciugatura (minuti)`,turnOffDelayMode:`Modalità ritardo spegnimento`,time:`Tempo`,temp:`Temp.`,delayMinutes:`Ritardo (minuti)`,tempThreshold:`Soglia temperatura (°C)`,tempThresholdDescription:`Si spegne quando l'ugello si raffredda sotto questa temperatura`,edit:`Modifica`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"? Questa azione non può essere annullata.`,turnOnConfirm:`Sei sicuro di voler accendere "{{name}}"?`,turnOffConfirm:`Sei sicuro di voler spegnere "{{name}}"? Questo interromperà l'alimentazione del dispositivo collegato.`,failedToTurn:`Impossibile {{action}} "{{name}}"`,unknown:`Sconosciuto`,addTitle:`Aggiungi presa smart`,editTitle:`Modifica presa smart`,stopScanning:`Interrompi scansione`,discoverTasmota:`Scopri dispositivi Tasmota`,foundDevices:`{{count}} dispositivo/i trovato/i - clicca per selezionare:`,noDevicesFound:`Nessun dispositivo Tasmota trovato nella rete`,haNotConfigured:`Home Assistant non è configurato. Configuralo in`,haSettingsPath:`Impostazioni → Rete → Home Assistant`,selectEntity:`Seleziona entità *`,ipAddress:`Indirizzo IP *`,nameLabel:`Nome *`,username:`Nome utente`,password:`Password`,authHint:`Lascia vuoto se il tuo dispositivo Tasmota non richiede autenticazione`,linkToPrinter:`Collega alla stampante`,noPrinter:`Nessuna stampante (solo controllo manuale)`,linkingDescription:`Il collegamento abilita accensione/spegnimento automatico all'inizio/fine stampa`,powerAlerts:`Avvisi potenza`,alertAbove:`Avviso se sopra (W)`,alertBelow:`Avviso se sotto (W)`,alertDescription:`Ricevi notifiche quando il consumo supera queste soglie. Lascia vuoto per disabilitare quella direzione.`,dailySchedule:`Programma giornaliero`,turnOnAt:`Accendi alle`,turnOffAt:`Spegni alle`,scheduleDescription:`Accendi/spegni automaticamente la presa a questi orari ogni giorno. Lascia vuoto per saltare quell'azione.`,showOnPrinterCard:`Mostra sulla scheda stampante`,displayOnPrinterCard:`Mostra pulsante sulla scheda stampante`,connectedResult:`Connesso!`,deviceLabel:`Dispositivo: {{name}} - `,stateLabel:`Stato: {{state}}`,test:`Test`,delete:`Elimina`,save:`Salva`,add:`Aggiungi`,cancel:`Annulla`,failedToStartScan:`Impossibile avviare la scansione`,nameRequired:`Il nome è obbligatorio`,entityRequired:`L'entità è obbligatoria per le prese Home Assistant`,mqttTopicRequired:`Almeno un topic MQTT deve essere configurato per potenza, energia o monitoraggio stato`,loadingEntities:`Caricamento entità...`,loading:`Caricamento...`,failedToLoadEntities:`Impossibile caricare le entità: {{error}}`,noEntitiesMatching:`Nessuna entità trovata corrispondente a "{{search}}"`,noEntitiesAvailable:`Nessuna entità disponibile`,searchingEntities:`Ricerca in tutte le entità ({{count}} trovate)`,showingEntities:`Mostrando switch, light, input_boolean ({{count}} disponibili)`,energyMonitoringOptional:`Monitoraggio energia (Opzionale)`,energyMonitoringHint:`Cerca e seleziona i sensori che forniscono dati di potenza/energia.`,powerSensorW:`Sensore potenza (W)`,energyTodayKwh:`Energia oggi (kWh)`,totalEnergyKwh:`Energia totale (kWh)`,noMatchingSensors:`Nessun sensore corrispondente`,none:`Nessuno`,mqttNotConfigured:`Broker MQTT non configurato. Imposta l'indirizzo del broker in`,mqttSettingsPath:`Impostazioni → Rete → Pubblicazione MQTT`,mqttNotConfiguredSuffix:`(non è necessario abilitare la pubblicazione, basta inserire i dettagli del broker).`,mqttMonitorOnlyDescription:`Le prese MQTT ricevono dati di potenza/energia tramite sottoscrizione MQTT. Il controllo on/off non è disponibile - usa il tuo broker MQTT o sistema domotico.`,powerMonitoring:`Monitoraggio potenza`,energyMonitoring:`Monitoraggio energia`,stateMonitoring:`Monitoraggio stato`,optional:`opzionale`,topic:`Argomento`,jsonPath:`Percorso JSON`,multiplier:`Moltiplicatore`,onValue:`Valore ON`,mqttPowerHint:`Il percorso JSON estrae il valore dal payload JSON (es. "power_l1"). Lascia vuoto se il topic pubblica valori numerici grezzi. Usa moltiplicatore 0.001 per mW→W, 1000 per kW→W.`,mqttEnergyHint:`Il percorso JSON estrae il valore dal payload JSON. Lascia vuoto per valori grezzi. Usa moltiplicatore 0.001 per Wh→kWh, 1000 per MWh→kWh.`,mqttStateHint:`Il percorso JSON estrae il valore dal payload JSON. Lascia vuoto per valori grezzi. -Valore ON: la stringa esatta che significa "ON". Lascia vuoto per rilevamento auto (ON, true, 1).`,restControl:`Controllo`,restOnUrl:`URL accensione`,restOffUrl:`URL spegnimento`,restOnBody:`Corpo richiesta ON`,restOffBody:`Corpo richiesta OFF`,restMethod:`Metodo HTTP`,restHeaders:`Custom Headers (JSON)`,restStatusUrl:`URL stato`,restStatusPath:`Percorso JSON stato`,restStatusOnValue:`Valore ON`,restPowerUrl:`URL potenza`,restPowerPath:`Percorso JSON potenza`,restPowerMultiplier:`Moltiplicatore potenza`,restEnergyUrl:`URL energia`,restEnergyPath:`Percorso JSON energia (oggi)`,restEnergyTotalPath:`Percorso JSON energia (contatore totale)`,restEnergyTotalMultiplier:`Moltiplicatore contatore totale`,restEnergyTotalPathHint:`es. aenergy.total`,restEnergyTotalHint:`Molte prese — tutti gli Shelly fra queste — riportano solo un contatore cumulativo che non si azzera mai. Va qui, non nel campo sopra: letto come consumo di oggi non tornerebbe mai a zero a mezzanotte, e Ieri e Totale resterebbero vuoti. Bambuddy ricava Oggi e Ieri da questo valore, il che richiede uno o due giorni di letture. Uno Shelly riporta wattora, quindi usa un moltiplicatore di 0.001.`,restEnergyMultiplier:`Moltiplicatore energia`,restUrlRequired:`È richiesto almeno un URL (ON o OFF) per le prese REST`,restHeadersHint:`es. {"Authorization": "Bearer your-token"}`,restBodyHint:`es. ON, {"state": "on"}`,restStatusHint:`URL per recuperare lo stato attuale`,restPathHint:`es. state o data.power.status`,restPowerUrlHint:`URL separato per i dati di potenza (usa l'URL di stato se vuoto)`,restEnergyUrlHint:`URL separato per i dati di energia (usa l'URL di stato se vuoto)`,restEnergyHint:`Ogni valore può usare il proprio URL o ricadere sull'URL di stato. Usa i moltiplicatori per la conversione delle unità (es. 0.001 per convertire Wh in kWh).`,testConnection:`Testa connessione`,connectionSuccess:`Connessione riuscita`,noSwitchesInSwitchbar:`Nessun interruttore nella barra`,enableSwitchbarHint:`Abilita "Mostra nella barra interruttori" in Impostazioni > Smart Plugs`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`E-mail`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`Notifiche email tramite SMTP`,telegram:`Notifiche tramite bot Telegram`,discord:`Invia a un canale Discord tramite webhook`,ntfy:`Notifiche push gratuite e self-hostabili`,pushover:`Notifiche push semplici e affidabili`,callmebot:`Notifiche WhatsApp gratuite tramite CallMeBot`,webhook:`POST HTTP generico verso qualsiasi URL`,homeassistant:`Notifiche persistenti nella dashboard di Home Assistant`,bark:`Notifiche push iOS tramite Bark (auto-ospitabile)`},lastSuccess:`Ultimo: {{date}}`,error:`Errore`,printer:`Stampante:`,allPrinters:`Tutte le stampanti`,sendTestNotification:`Invia notifica di prova`,eventSettings:`Impostazioni eventi`,enabled:`Abilitato`,sendFromProvider:`Invia notifiche da questo provider`,printEvents:`Eventi di stampa`,printerStatus:`Stato stampante`,amsAlarms:`Allarmi AMS`,amsHtAlarms:`Allarmi AMS-HT`,printQueue:`Coda di stampa`,start:`Avvio`,plateCheck:`Controllo piatto`,complete:`Completato`,failed:`Fallito`,stopped:`Interrotto`,progress:`Avanzamento`,offline:`Offline`,lowFilament:`Filamento scarso`,maintenance:`Manutenzione`,amsHumidity:`Umidità AMS`,amsTemp:`Temp AMS`,amsDryingSuspended:`Asciugatura sospesa`,amsHtHumidity:`Umidità AMS-HT`,amsHtTemp:`Temp AMS-HT`,bedCooled:`Piatto raffreddato`,firstLayer:`Primo strato`,quiet:`Silenzioso`,digest:`Riepilogo {{time}}`,printStarted:`Stampa avviata`,plateNotEmpty:`Piatto non vuoto`,plateNotEmptyDescription:`Oggetti rilevati prima della stampa`,plateClearRequired:`Conferma piatto libero`,plateClearRequiredDescription:`Stampa finita, la coda attende conferma`,plateClear:`Piatto libero`,printCompleted:`Stampa completata`,bedCooledLabel:`Piatto raffreddato`,bedCooledDescription:`Piatto raffreddato sotto la soglia dopo la stampa`,firstLayerCompleteLabel:`Primo strato completato`,firstLayerCompleteDescription:`Notifica con foto al termine del primo strato`,missingSpoolAssignmentLabel:`Assegnazione bobina mancante`,billingChargeFailedLabel:`Errore di addebito`,billingChargeFailedDescription:`Notifica quando non è possibile registrare i costi di stampa`,missingSpoolAssignmentDescription:`Notifica quando una stampa parte e i vassoi richiesti non hanno una bobina assegnata`,printFailed:`Stampa fallita`,printStopped:`Stampa interrotta`,progressMilestones:`Traguardi di avanzamento`,progressMilestonesDescription:`Notifica al 25%, 50%, 75%`,printerOffline:`Stampante offline`,printerError:`Errore stampante`,aiFailureDetection:`Rilevamento guasti IA`,aiFailureDetectionDescription:`Notifica quando l'IA di Obico rileva un possibile guasto di stampa`,lowFilamentLabel:`Filamento scarso`,maintenanceDue:`Manutenzione necessaria`,maintenanceDueDescription:`Notifica quando è necessaria la manutenzione`,amsHumidityHigh:`Umidità AMS elevata`,amsHumidityHighDescription:`L'umidità dell'AMS standard supera la soglia`,amsTemperatureHigh:`Temperatura AMS elevata`,amsTemperatureHighDescription:`La temperatura dell'AMS standard supera la soglia`,amsDryingSuspendedTitle:`Asciugatura automatica sospesa`,amsDryingSuspendedDescription:`L'asciugatura automatica ha rinunciato a un'unità AMS perché l'umidità non è mai scesa sotto la soglia`,amsHtHumidityHigh:`Umidità AMS-HT elevata`,amsHtHumidityHighDescription:`L'umidità dell'AMS-HT supera la soglia`,amsHtTemperatureHigh:`Temperatura AMS-HT elevata`,amsHtTemperatureHighDescription:`La temperatura dell'AMS-HT supera la soglia`,inventoryAlerts:`Avvisi di inventario`,stockReorderAlert:`Avviso di riordino`,stockReorderAlertDescription:`Il SKU ha raggiunto il punto di riordino`,stockBreakAlert:`Avviso di esaurimento scorte`,stockBreakAlertDescription:`Le scorte si esauriranno prima dell'arrivo del rifornimento`,jobAdded:`Lavoro aggiunto`,jobAddedDescription:`Lavoro aggiunto alla coda`,jobAssigned:`Lavoro assegnato`,jobAssignedDescription:`Lavoro basato su modello assegnato alla stampante`,jobStarted:`Lavoro avviato`,jobStartedDescription:`Lavoro in coda avviato per la stampa`,jobWaiting:`Lavoro in attesa`,jobWaitingDescription:`Lavoro in attesa di filamento o stampante`,jobSkipped:`Lavoro saltato`,jobSkippedDescription:`Lavoro saltato (precedente fallito)`,jobFailed:`Lavoro fallito`,jobFailedDescription:`Avvio del lavoro fallito`,queueComplete:`Coda completata`,queueCompleteDescription:`Tutti i lavori in coda completati`,quietHours:`Ore silenziose`,noNotificationsDuring:`Nessuna notifica durante queste ore`,editProviderToChangeQuietHours:`Modifica il provider per cambiare le ore silenziose`,dailyDigest:`Riepilogo giornaliero`,batchNotifications:`Raggruppa le notifiche in un unico riepilogo giornaliero`,sendAt:`Invia alle {{time}}`,editProviderToChangeDigestTime:`Modifica il provider per cambiare l'orario del riepilogo`,edit:`Modifica`,deleteProvider:`Elimina provider di notifica`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"? Questa azione non può essere annullata.`,delete:`Elimina`,addTitle:`Aggiungi provider di notifica`,editTitle:`Modifica provider di notifica`,nameLabel:`Nome *`,namePlaceholder:`Le mie notifiche`,providerTypeLabel:`Tipo di provider *`,configuration:`Configurazione`,testConfiguration:`Testa configurazione`,printerFilter:`Filtro stampante`,onlyFromPrinter:`Invia notifiche solo per eventi da questa stampante`,quietHoursDnd:`Ore silenziose (Non disturbare)`,quietStart:`Inizio`,quietEnd:`Fine`,dailyDigestLabel:`Riepilogo giornaliero`,sendDigestAt:`Invia riepilogo alle`,digestCollected:`Gli eventi verranno raccolti e inviati come riepilogo unico a quest'ora`,notificationEvents:`Eventi di notifica`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(dopo il completamento della stampa)`,haSensorAlert:`Avviso sensore stampante`,haSensorAlertDescription:`(un sensore Home Assistant collegato richiede attenzione)`,locationHaSensorAlert:`Avviso sensore di posizione`,locationHaSensorAlertDescription:`(un sensore Home Assistant collegato a una posizione di archiviazione richiede attenzione)`,eventPriority:{sectionTitle:`Priorità ntfy`,helpNtfy:`Scegli una priorità per ogni evento abilitato. ntfy le usa per intensificare gli avvisi (suono, visibilità, comportamento push). I livelli non impostati qui usano l'impostazione predefinita del server ntfy.`,min:`Min.`,low:`Bassa`,default:`Predefinita`,high:`Alta`,urgent:`Urgente`},cancel:`Annulla`,save:`Salva`,add:`Aggiungi`,nameRequired:`Il nome è obbligatorio`,fieldRequired:`{{field}} è obbligatorio`,haDataInvalid:`Il campo Data deve essere un oggetto JSON valido, ad es. {"priority": "high", "ttl": 0}`,phoneNumber:`Numero di telefono`,apiKey:`Chiave API`,serverUrl:`URL del server`,topic:`Argomento`,authToken:`Token di autenticazione`,userKey:`Chiave utente`,appToken:`Token applicazione`,priority:`Priorità`,pushoverRetry:`Ripetizione emergenza (s)`,pushoverExpire:`Scadenza emergenza (s)`,botToken:`Token del bot`,chatId:`ID chat`,telegramThreadId:`ID argomento forum`,telegramThreadIdHelp:`Opzionale. Invia in un singolo argomento di un gruppo forum: l'ultimo numero nel link dell'argomento (t.me/c/.../25). Lascia vuoto per l'argomento Generale.`,telegramThreadIdInvalid:`L'ID argomento forum deve essere un numero.`,smtpServer:`Server SMTP`,smtpPort:`Porta SMTP`,security:`Sicurezza`,authentication:`Autenticazione`,username:`Nome utente`,password:`Password`,fromEmail:`Email mittente`,toEmail:`Email destinatario`,webhookUrl:`URL webhook`,payloadFormat:`Formato payload`,authorization:`Autorizzazione`,titleFieldName:`Nome campo titolo`,messageFieldName:`Nome campo messaggio`,editTemplate:`Modifica modello: {{name}}`,titleLabel:`Titolo`,bodyLabel:`Corpo`,titlePlaceholder:`Titolo della notifica...`,bodyPlaceholder:`Corpo della notifica...`,availableVariables:`Variabili disponibili`,clickToInsert:`Clicca per inserire alla posizione del cursore nel corpo`,livePreview:`Anteprima live`,hide:`Nascondi`,show:`Mostra`,loadingPreview:`Caricamento anteprima...`,enterTemplateContent:`Inserisci il contenuto del modello per vedere l'anteprima`,titlePreview:`Titolo:`,bodyPreview:`Corpo:`,resetToDefault:`Ripristina predefinito`,titleRequired:`Il titolo è obbligatorio`,bodyRequired:`Il corpo è obbligatorio`,notificationLog:`Registro notifiche`,showFailedOnly:`Solo fallite`,last24Hours:`Ultime 24 ore`,last7Days:`Ultimi 7 giorni`,last30Days:`Ultimi 30 giorni`,last90Days:`Ultimi 90 giorni`,justNow:`Proprio ora`,noFailedNotifications:`Nessuna notifica fallita`,noNotificationsLogged:`Nessuna notifica registrata`,unknownProvider:`Provider sconosciuto`,logTitle:`Titolo`,logMessage:`Messaggio`,logError:`Errore`,logProvider:`Provider: {{type}}`,logTime:`Ora: {{time}}`,refresh:`Aggiorna`,clearOld:`Cancella vecchie`,statsSummary:`Ultimi {{days}} giorni:`,statsNotifications:`notifiche`,statsSent:`{{count}} inviate`,statsFailed:`{{count}} fallite`,eventTypes:{print_start:`Stampa avviata`,print_complete:`Stampa completata`,print_failed:`Stampa fallita`,print_stopped:`Stampa interrotta`,print_progress:`Avanzamento`,printer_offline:`Stampante offline`,printer_error:`Errore stampante`,filament_low:`Filamento scarso`,maintenance_due:`Manutenzione necessaria`,test:`Prova`},userEmail:{title:`Notifiche`,emailNotifications:`Notifiche via e-mail`,emailNotificationsDesc:`Ricevi notifiche via e-mail per i tuoi lavori di stampa. Le e-mail vengono inviate tramite le impostazioni SMTP configurate nell'autenticazione avanzata.`,sendingTo:`Le notifiche verranno inviate a`,noEmailWarning:`Il tuo account non ha un indirizzo e-mail. Contatta un amministratore per aggiungerne uno.`,printJobNotifications:`Notifiche lavori di stampa`,printJobNotificationsDesc:`Scegli quali eventi attivano le notifiche e-mail per i lavori di stampa che invii.`,printJobStarts:`Inizio lavoro di stampa`,printJobStartsDesc:`Ricevi una notifica quando il tuo lavoro di stampa inizia.`,printJobFinishes:`Fine lavoro di stampa`,printJobFinishesDesc:`Ricevi una notifica quando il tuo lavoro di stampa si completa correttamente.`,printErrors:`Errori di stampa`,printErrorsDesc:`Ricevi una notifica quando il tuo lavoro di stampa fallisce o incontra un errore.`,printJobStops:`Lavoro di stampa interrotto`,printJobStopsDesc:`Ricevi una notifica quando il tuo lavoro di stampa viene annullato o interrotto.`,saveSuccess:`Preferenze di notifica salvate.`,saveError:`Impossibile salvare le preferenze di notifica.`}},richTextEditor:{bold:`Grassetto`,italic:`Corsivo`,underline:`Sottolineato`,bulletList:`Elenco puntato`,numberedList:`Elenco numerato`,alignLeft:`Allinea a sinistra`,alignCenter:`Allinea al centro`,alignRight:`Allinea a destra`,addLink:`Aggiungi link`,removeLink:`Rimuovi link`},externalLinks:{title:`Link della barra laterale`,sidebarLayout:`Barra laterale`,sidebarLayoutDescription:`Mostra o nascondi le pagine integrate, aggiungi link esterni e trascina gli elementi per riordinare la navigazione laterale.`,systemPages:`Pagine Bambuddy`,externalLinks:`Link esterni`,visibleInSidebar:`Visibile nella barra laterale`,hiddenFromSidebar:`Nascosto nella barra laterale`,requiredInSidebar:`Obbligatorio nella barra laterale`,hidePage:`Nascondi pagina`,showPage:`Mostra pagina`,settingsCannotBeHidden:`Le impostazioni non possono essere nascoste`,noLinksConfigured:`Nessun link esterno configurato`,deleteLink:`Elimina link`,removeCustomIcon:`Rimuovi icona personalizzata`,openInNewTab:`Apri in nuova scheda`,placeholders:{linkName:`Il mio link`}},keyboardShortcuts:{title:`Scorciatoie da tastiera`,navigation:`Navigazione`,archivesSection:`Archivi`,kProfilesSection:`Profili K`,generalSection:`Generale`,shortcuts:{goToPrinters:`Vai a Stampanti`,goToArchives:`Vai ad Archivi`,goToQueue:`Vai a Coda`,goToStats:`Vai a Statistiche`,goToProfiles:`Vai a Profili cloud`,goToSettings:`Vai a Impostazioni`,focusSearch:`Vai alla ricerca`,openUploadModal:`Apri finestra di caricamento`,clearSelection:`Cancella selezione / deseleziona input`,contextMenu:`Menu contestuale sulle schede`,refreshProfiles:`Aggiorna profili`,newProfile:`Nuovo profilo`,exitSelectionMode:`Esci dalla modalità selezione`,showHelp:`Mostra questa guida`},footer:`Premi Esc o clicca fuori per chiudere`},notificationLog:{title:`Registro notifiche`,events:{printStarted:`Stampa avviata`,printComplete:`Stampa completata`,printFailed:`Stampa fallita`,printStopped:`Stampa interrotta`,progress:`Avanzamento`,printerOffline:`Stampante offline`,printerError:`Errore stampante`,lowFilament:`Filamento in esaurimento`,maintenanceDue:`Manutenzione in scadenza`,test:`Test`},timeAgo:{justNow:`Adesso`,minutesAgo:`{{minutes}} min fa`,hoursAgo:`{{hours}} ore fa`}},restoreBackup:{title:`Ripristina backup`,restoring:`Ripristino...`,restoreComplete:`Ripristino completato`,restoreFailed:`Ripristino fallito`,importSettings:`Importa impostazioni da un file di backup`,pleaseWait:`Attendere il ripristino dei dati`,clickToSelect:`Clicca per selezionare il file di backup (.json o .zip)`,howDuplicateHandling:`Come funziona la gestione dei duplicati:`,categories:{printers:`Stampanti`,smartPlugs:`Prese smart`,notificationProviders:`Provider di notifica`,filaments:`Filamenti`,archives:`Archivi`,pendingUploads:`Caricamenti in sospeso`,settingsTemplates:`Impostazioni e modelli`},matchingInfo:{printers:`abbinati per numero di serie`,smartPlugs:`abbinati per indirizzo IP`,notificationProviders:`abbinati per nome`,filaments:`abbinati per nome + tipo + marca`,archives:`abbinati per hash del contenuto`,pendingUploads:`abbinati per nome file`,settingsTemplates:`sempre sovrascritti`},replaceExisting:`Sostituisci dati esistenti`,keepExisting:`Mantieni dati esistenti`,replaceDescription:`Sovrascrivi gli elementi già esistenti con i dati del backup`,keepDescription:`Ripristina solo gli elementi che non esistono già`,caution:`Attenzione:`,cautionText:`La sovrascrittura sostituirà le configurazioni attuali con i dati del backup. I codici di accesso delle stampanti non vengono mai sovrascritti per sicurezza.`,itemsRestored:`Elementi ripristinati`,itemsSkipped:`Elementi saltati`,restored:`Ripristinati`,skipped:`Saltati (già esistenti)`,filesLabel:`File (3MF, miniature, ecc.)`,newApiKeysGenerated:`Nuove chiavi API generate`,newApiKeysWarning:`Queste chiavi vengono mostrate una sola volta. Copiale adesso!`,processingBackup:`Elaborazione file di backup...`,noDataFound:`Nessun dato trovato da ripristinare nel file di backup.`,failedToRestore:`Impossibile ripristinare il backup. Verificare il formato del file.`},backupExport:{title:`Esporta backup`,selectData:`Seleziona i dati da includere`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,categoryDescriptions:{settings:`Lingua, tema, preferenze di aggiornamento`,notifications:`ntfy, Pushover, Discord, ecc.`,templates:`Modelli di messaggi personalizzati`,smartPlugs:`Configurazioni prese Tasmota`,externalLinks:`Link della barra laterale a servizi esterni`,printers:`Info stampanti (codici di accesso esclusi)`,plateDetection:`Immagini di riferimento piatto vuoto`,filaments:`Tipi di filamento e costi`,maintenance:`Programmi di manutenzione personalizzati`,archives:`Tutti i dati di stampa + file (3MF, miniature, foto)`,projects:`Progetti, elementi BOM e allegati`,pendingUploads:`Caricamenti della stampante virtuale in attesa di revisione`,apiKeys:`Chiavi API webhook (nuove chiavi generate all'importazione)`},requiresPrinters:`Richiede la selezione di Stampanti`,zipFileWarning:`Verrà creato un file ZIP.`,zipFileDescription:`Include tutti i file 3MF, miniature, timelapse e foto. Potrebbe richiedere tempo e produrre un file di grandi dimensioni.`,includeAccessCodes:`Includi codici di accesso`,includeAccessCodesDescription:`Per il trasferimento su un'altra macchina`,includeAccessCodesWarning:`I codici di accesso saranno inclusi in testo semplice. Mantieni sicuro questo file di backup!`,categoriesSelected:`{{selectedCount}} categorie selezionate`},pendingUploads:{placeholders:{notes:`Aggiungi note su questa stampa...`},discardUpload:`Scarta caricamento`,archiveAllUploads:`Archivia tutti i caricamenti`,discardAllUploads:`Scarta tutti i caricamenti`,archive:`Archivia`,timeAgo:{justNow:`Adesso`,minutesAgo:`{{minutes}} min fa`,hoursAgo:`{{hours}} ore fa`,daysAgo:`{{days}} giorni fa`}},apiBrowser:{placeholders:{requestBody:`Corpo della richiesta JSON...`,searchEndpoints:`Cerca endpoint...`}},configureAmsSlot:{title:`Configura Slot AMS`,slotConfigured:`Slot configurato!`,configuringSlot:`Configurazione slot:`,slotLabel:`{{ams}} – Slot {{slot}}`,searchPresets:`Cerca preset...`,colorPlaceholder:`Nome colore o hex (es. marrone, FF8800)`,clearCustomColor:`Cancella colore personalizzato`,noCloudPresets:`Nessun preset cloud. Accedi a Bambu Cloud per sincronizzare.`,noPresetsAvailable:`Nessun preset disponibile. Accedi a Bambu Cloud o importa profili locali.`,noMatchingPresets:`Nessun preset corrispondente trovato.`,custom:`Personalizzato`,builtin:`Integrato`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`Impostazioni inviate alla stampante`,filamentProfile:`Profilo filamento`,kProfileLabel:`Profilo K (Pressure Advance)`,filteringFor:`Filtrando per: {{material}}`,noKProfile:`Nessun profilo K (usa predefinito 0.020)`,noMatchingKProfiles:`Nessun profilo K corrispondente. Verrà usato K=0.020 predefinito.`,otherKProfiles:`Altri profili K su questa stampante`,selectFilamentFirst:`Seleziona prima un profilo filamento`,kFromCalibration:`K={{value}} dalla calibrazione stampante`,customColorLabel:`Colore personalizzato (opzionale)`,presetColors:`Colori {{name}}:`,showLessColors:`Mostra meno colori`,showMoreColors:`Mostra più colori`,clear:`Cancella`,hexLabel:`Hex – #{{hex}}`,resetting:`Ripristino...`,resetSlot:`Ripristina slot`,cancel:`Annulla`,configuring:`Configurazione...`,configureSlot:`Configura slot`},githubBackup:{title:`Backup Git`,history:`Cronologia`,downloadBackup:`Scarica backup`,restoreBackup:`Ripristina backup`,noBackupsYet:`Nessun backup ancora`},emailSettings:{placeholders:{fromName:`Bambuddy`}},tagManagement:{searchTags:`Cerca tag...`,renameTag:`Rinomina tag`,deleteTag:`Elimina tag`},notificationTemplates:{placeholders:{title:`Titolo notifica...`,body:`Corpo notifica...`}},batchTag:{placeholders:{newTag:`Inserisci nuovo tag...`}},photoGallery:{deletePhoto:`Elimina foto`},filamentHoverCard:{copySpoolUuid:`Copia UUID bobina`},kProfilesView:{hasNote:`Ha una nota`,copyProfile:`Copia profilo`},layout:{openMenu:`Apri menu`,noPermissionSystemInfo:`Non hai il permesso di visualizzare le informazioni di sistema`},dashboard:{dragToReorder:`Trascina per riordinare`,hideWidget:`Nascondi widget`},notificationProviderCard:{deleteNotificationProvider:`Elimina provider di notifica`},fileManagerModal:{closeFileManager:`Chiudi gestore file`,sortFiles:`Ordina file`,goToParentFolder:`Vai alla cartella superiore`,threeView:`Vista 3D`},embeddedCameraViewer:{refreshStream:`Aggiorna stream`,close:`Chiudi`,zoomOut:`Rimpicciolisci`,resetZoom:`Reimposta zoom`,zoomIn:`Ingrandisci`,dragToResize:`Trascina per ridimensionare`},timelapseViewer:{skipBack5s:`Indietro 5s`,skipForward5s:`Avanti 5s`},notificationProviders:{descriptions:{email:`Notifiche email via SMTP`,telegram:`Notifiche tramite bot Telegram`,discord:`Invia a canale Discord tramite webhook`,ntfy:`Notifiche push gratuite e self-hostabili`,pushover:`Notifiche push semplici e affidabili`,callmebot:`Notifiche WhatsApp gratuite tramite CallMeBot`,webhook:`POST HTTP generico a qualsiasi URL`}},logViewer:{searchPlaceholder:`Cerca messaggio o nome logger...`,noLogEntries:`Nessuna voce di log trovata`},switchbarPopover:{noSwitchesInSwitchbar:`Nessun interruttore nella barra`},projectPageModal:{placeholders:{title:`Titolo`,designer:`Designer`,license:`Licenza`,description:`Inserisci descrizione...`,profileTitle:`Titolo profilo`,profileDescription:`Descrizione profilo...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`In attesa`,justNow:`Proprio ora`,now:`Ora`,minsAgo:`{{count}}m fa`,inMins:`tra {{count}}m`,hoursAgo:`{{count}}h fa`,inHours:`tra {{count}}h`,daysAgo:`{{count}}g fa`,inDays:`tra {{count}}g`},spoolbuddy:{nav:{dashboard:`Dashboard`,ams:`AMS`,inventory:`Inventario`,writeTag:`Scrivi`,settings:`Impostazioni`},status:{nfcReady:`NFC pronto`,nfcOff:`NFC spento`,offline:`Offline`,online:`Online`,noPrinters:`Nessuna stampante`,deviceOffline:`Dispositivo offline`,waitingConnection:`In attesa della connessione...`,systemReady:`Sistema pronto`,status:`Stato`},dashboard:{readyToScan:`Pronto per la scansione`,idleMessage:`Posiziona una bobina sulla bilancia per identificarla`,nfcHint:`Il tag NFC verrà letto automaticamente`,device:`Dispositivo`,syncWeight:`Sincronizza peso`,weightSynced:`Sincronizzato!`,unknownTag:`Tag sconosciuto`,newTag:`Nuovo tag rilevato`,onScale:`sulla bilancia`,linkSpool:`Collega a bobina`,linkTagTitle:`Collega tag a bobina`,linkTag:`Collega tag`,selectSpool:`Seleziona una bobina da collegare a questo tag:`,noUntagged:`Nessuna bobina senza tag trovata`,tagDetected:`Tag rilevato`,noTag:`Nessun tag`,tagId:`Etichetta`,grossWeight:`Peso lordo`,spoolSize:`Dimensione bobina`,close:`Chiudi`,currentSpool:`Bobina attuale`,plateReady:`Piatto pronto: {{name}}`,plateReadyLabel:`Piatti da liberare`,plateClearAction:`Libera`,plateClearedToast:`Piatto contrassegnato come liberato`,plateClearFailed:`Impossibile contrassegnare il piatto come liberato`},modal:{spoolDetected:`Bobina rilevata`,assignToAms:`Assegna all'AMS`,syncWeight:`Sincronizza peso`,weightSynced:`Sincronizzato!`,syncing:`Sincronizzazione...`,newTagDetected:`Nuovo tag rilevato`,addToInventory:`Aggiungi all'inventario`,assignToAmsTitle:`Assegna all'AMS`,selectSlot:`Seleziona uno slot`,assign:`Assegna`,assigning:`Assegnazione...`,assignSuccess:`Assegnato!`,assignPendingInsert:`Assegnato. Lo slot verrà configurato all'inserimento della bobina.`,assignError:`Impossibile assegnare la bobina. Riprovare.`,noPrinterSelected:`Seleziona una stampante...`,noAmsDetected:`Nessun AMS rilevato su questa stampante`,slot:`Slot`},weight:{noReading:`Nessuna lettura`,stable:`Stabile`,measuring:`Misurazione...`,tare:`Tara`,calibrate:`Calibra`},spool:{remaining:`Rimanente`,material:`Materiale`,brand:`Marca`,color:`Colore`,coreWeight:`Nucleo`,labelWeight:`Etichetta`,scaleWeight:`Bilancia`,netWeight:`Netto`,lastUsed:`Ultimo utilizzo`},ams:{noData:`Nessun AMS rilevato`,connectAms:`Collega un AMS per vedere gli slot`,noPrinter:`Nessuna stampante selezionata`,selectPrinter:`Seleziona una stampante dalla barra superiore`,printerDisconnected:`Stampante disconnessa`,humidity:`Umidità`,level:`Livello`,active:`Attivo`,slot:`Slot`,empty:`Vuoto`},inventory:{search:`Cerca bobine...`,empty:`Nessuna bobina nell'inventario`,noResults:`Nessuna bobina corrispondente`,spools:`bobine`,addSpool:`Aggiungi bobina`},settings:{tabDevice:`Dispositivo`,tabDisplay:`Display`,tabScale:`Bilancia`,tabUpdates:`Aggiornamenti`,nfcReader:`Lettore NFC`,type:`Tipo`,connection:`Connessione`,notConnected:`N/D`,deviceInfo:`Info dispositivo`,hostname:`Host`,uptime:`Tempo di attività`,brightness:`Luminosità`,saved:`Salvato`,noBacklight:`Nessuna retroilluminazione DSI rilevata. Il controllo luminosità richiede un display DSI.`,screenBlank:`Timeout spegnimento schermo`,screenBlankDesc:`Lo schermo si spegne dopo inattività. Tocca per riattivare.`,displayNote:`La luminosità viene applicata come filtro software.`,scaleCalibration:`Calibrazione bilancia`,currentWeight:`Peso attuale`,tareOffset:`Tara`,calFactor:`Fattore`,knownWeight:`Peso noto`,calStep1:`Rimuovere tutto dalla bilancia e premere Imposta zero.`,calStep2:`Posizionare il peso noto sulla bilancia.`,setZero:`Imposta zero`,calibrateNow:`Calibra`,calibrated:`Calibrato`,tareSet:`Comando tara inviato. In attesa del dispositivo...`,tareComplete:`Tara completata!`,tareTimedOut:`Tempo scaduto per la tara — il demone SpoolBuddy è in esecuzione?`,tareFailed:`Invio comando tara fallito`,zeroSet:`Punto zero impostato. Posizionare il peso noto sulla bilancia.`,calibrationDone:`Calibrazione completata!`,calibrationFailed:`Calibrazione fallita`,lastCalibrated:`Ultima calibrazione`,stable:`Stabile`,settling:`Stabilizzazione...`,firmware:`Firmware`,scale:`Bilancia`,noDevice:`Nessun dispositivo SpoolBuddy trovato`,daemonVersion:`Versione daemon`,currentVersion:`Attuale`,versionPending:`In attesa del daemon...`,checking:`Verifica...`,checkUpdates:`Verifica aggiornamenti`,updateAvailable:`Aggiornamento disponibile`,updateInstructions:`Aggiorna via SSH: esegui lo script di installazione SpoolBuddy.`,upToDate:`Aggiornato`,includeBeta:`Includi versioni beta`,systemConfig:`Backend & autenticazione`,backendUrl:`URL backend Bambuddy`,apiToken:`Token API`,apiTokenPlaceholder:`Inserisci token API`,saveConfig:`Salva configurazione`,systemQueued:`Configurazione in coda.`,systemFieldsRequired:`L'URL del backend è obbligatorio.`,nfcDiagnostic:`Diagnostica NFC`,scaleDiagnostic:`Diagnostica bilancia`,readTagDiagnostic:`Diagnostica lettura tag`,testNfc:`Test lettore`,testScale:`Test precisione`,testReadTag:`Leggi tag`},writeTag:{tabExisting:`Bobina esistente`,tabNew:`Nuova bobina`,tabReplace:`Sostituisci tag`,searchPlaceholder:`Cerca per materiale, colore, marca...`,noUntaggedSpools:`Nessuna bobina senza tag`,noTaggedSpools:`Nessuna bobina con tag`,selectSpool:`Seleziona una bobina, poi posiziona un NTAG sul lettore`,placeTag:`Posiziona un NTAG sul lettore`,tagReady:`Tag rilevato — pronto per la scrittura`,writeTag:`Scrivi tag`,replaceTag:`Sostituisci tag`,writing:`Scrittura tag...`,waiting:`In attesa di SpoolBuddy...`,writeSuccess:`Tag scritto con successo!`,writeFailed:`Scrittura fallita`,queueFailed:`Impossibile accodare il comando di scrittura`,tryAgain:`Riprova`,cancel:`Annulla`,replaceWarning:`Il vecchio tag verrà scollegato. Il nuovo tag lo sostituirà.`,deviceOffline:`SpoolBuddy è offline`,material:`Materiale`,colorName:`Nome colore`,color:`Colore`,brand:`Marca`,weight:`Peso (g)`,createSpool:`Crea bobina`,creating:`Creazione...`,spoolCreated:`Bobina creata! Pronto per la scrittura.`,createFailed:`Impossibile creare la bobina`,incompleteDataWarning:`Tag scritto con dati Spoolman incompleti`},quickMenu:{printerPower:`Alimentazione stampante`,systemControls:`Sistema`,restartDaemon:`Riavvia daemon`,restartBrowser:`Riavvia browser`,reboot:`Riavvia`,shutdown:`Spegni`,swipeToClose:`Scorri verso il basso per chiudere`,confirmTitle:`Conferma`,confirmShutdown:`Sei sicuro di voler spegnere lo SpoolBuddy? Avrai bisogno di accesso fisico per riaccenderlo.`,confirmReboot:`Sei sicuro di voler riavviare lo SpoolBuddy?`,confirmRestartDaemon:`Riavviare il daemon SpoolBuddy? NFC e bilancia saranno temporaneamente non disponibili.`,confirmRestartBrowser:`Riavviare il browser kiosk? Lo schermo diventerà brevemente nero.`,confirm:`Conferma`,confirmPlugOn:`Accendere {{name}}?`,confirmPlugOff:`Spegnere {{name}}?`,turnOn:`Accendi`,turnOff:`Spegni`}},diagnostic:{modalTitle:`Diagnostica connessione — {{name}}`,running:`Diagnostica in corso...`,runningElapsed:`Diagnostica in corso... ({{elapsed}}s)`,waitingForReportHint:`In attesa che la stampante pubblichi un report di stato — può richiedere fino a {{max}} secondi.`,runFailed:`Impossibile eseguire la diagnostica: {{error}}`,retry:`Esegui di nuovo`,runButton:`Esegui diagnostica`,sectionTitle:`Diagnostica connessione`,sectionDescription:`Verifica perché una stampante non si connette o non stampa — raggiungibilità delle porte, modalità sviluppatore LAN, modalità di rete Docker e credenziali.`,noPrinters:`Nessuna stampante configurata.`,overall:{ok:`Nessun problema rilevato — la connessione della stampante sembra a posto.`,warnings:`La stampante dovrebbe funzionare, ma alcuni aspetti richiedono attenzione.`,problems:`Sono stati rilevati problemi che spiegano perché la stampante non si connette o non stampa.`},check:{port_mqtt:{title:`Porta di controllo (MQTT 8883)`,pass:`Raggiungibile — la stampante accetta connessioni di controllo.`,fail:`La porta 8883 non è raggiungibile. La stampante è spenta, ha un altro indirizzo IP oppure un firewall la blocca. Verifica l'IP della stampante e che nulla blocchi la porta 8883.`},port_ftps:{title:`Porta trasferimento file (FTPS 990)`,pass:`Raggiungibile — l'invio dei file di stampa funzionerà.`,warn:`La porta 990 non è raggiungibile. Il monitoraggio potrebbe ancora funzionare, ma l'invio delle stampe alla stampante fallirà. Assicurati che la porta 990 non sia bloccata.`,warn_no_tls:`La porta 990 è aperta, ma il servizio file della stampante non completa l'handshake TLS. I file di stampa, le anteprime e i timelapse non possono essere scaricati, quindi gli archivi restano vuoti. Riavvia la stampante — sbloccare la porta non serve.`},external_storage:{title:`Memorizza file inviati su archiviazione esterna (passo 4 dell'installazione)`,pass:`La stampante segnala che questa opzione è attiva — i file inviati saranno memorizzati sulla scheda SD e gli archivi avranno miniature e metadati dello slicer.`,fail:`La stampante segnala che questa opzione è disattivata. Abilita "Memorizza file inviati su archiviazione esterna" — nei firmware recenti (P2S 01.02 / Bambu Studio 2.6+) l'interruttore si trova nelle Impostazioni di stampa della stampante; nelle versioni precedenti è nella scheda Dispositivo di Bambu Studio / OrcaSlicer. Senza questa opzione, ogni stampa archiviata è priva di miniatura e di metadati dello slicer.`,skip:`Non verificato — è necessaria una connessione MQTT attiva. Negli slicer più vecchi dove questa impostazione esiste solo nello slicer, la stampante non la segnala, quindi questo controllo passa anche se l'opzione è disattivata — verifica manualmente il passo 4 dell'installazione.`,skip_unsupported_model:`Questo modello ha uno slot SD ma nessun modo per attivare l'opzione — il firmware attuale della serie P1 non mostra l'interruttore in Bambu Studio e la stampante non ha uno schermo. Non c'è nulla da correggere qui; alle stampe archiviate potrebbero mancare miniature e metadati dello slicer finché Bambu Lab non aggiungerà il supporto via firmware.`,fail_no_media:`L'opzione è attiva, ma la stampante non rileva né scheda né chiavetta nel suo slot, quindi i file inviati non hanno dove andare. Inseriscine una e stampa di nuovo — fino ad allora ogni stampa archiviata sarà priva di miniatura e metadati dello slicer.`,warn_internal_storage:`L'opzione è attiva ed è presente una memoria, ma l'ultima stampa è comunque finita nella memoria interna della stampante, che Bambuddy non può leggere. Sulla serie H2 e sulla P2S il pulsante «Stampa» di Bambu Studio invia sempre lì, a prescindere da questa opzione. Le stampe vengono archiviate con nome e tempi, ma senza miniatura né metadati dello slicer. Per archivi completi, avvia le stampe da Bambuddy oppure elabora in OrcaSlicer, oppure in Bambu Studio usa «Invia» con «Esterna» e avvia la stampa dopo.`,warn_internal_history:`L'opzione è attiva e la memoria è presente, ma l'ultima stampa è partita da un file già presente sulla stampante: una ristampa dal suo schermo, un avvio da Handy o un file inviato prima. Quella libreria si trova nella memoria interna, che Bambuddy non può leggere, e nessuna impostazione lo cambia, perché per quella stampa non è stato inviato nulla. Resta archiviata con nome e tempi, ma senza miniatura né metadati dello slicer. Per archivi completi, avvia le stampe da Bambuddy o inviale dallo slicer.`},port_rtsps:{title:`Porta fotocamera ({{protocol}} {{port}})`,pass:`Raggiungibile — lo streaming della fotocamera funzionerà.`,warn:`La porta {{port}} non è raggiungibile. La visualizzazione live della fotocamera non funzionerà. Questo non influisce sulla stampa.`},network_mode:{title:`Modalità di rete Docker`,pass:`In esecuzione in modalità di rete host.`,warn:`Bambuddy è in esecuzione con la rete Docker bridge. Il rilevamento delle stampanti e la stampante virtuale richiedono la modalità di rete host — ricrea il container con "network_mode: host".`,skip:`Non in esecuzione in Docker — non applicabile.`},subnet:{title:`Sottorete`,pass:`La stampante e Bambuddy sono nella stessa sottorete.`,warn:`La stampante ({{printer_ip}}) e Bambuddy ({{host_ip}}) sono in sottoreti diverse. Potrebbero non raggiungersi a meno che non sia configurato il routing tra le sottoreti.`,skip:`Impossibile determinare la sottorete — ignorato.`},mqtt_auth:{title:`Credenziali stampante`,pass:`La stampante ha accettato la connessione.`,fail:`La stampante è raggiungibile ma Bambuddy non è connesso ad essa. Il codice di accesso o il numero di serie è molto probabilmente errato — il codice di accesso cambia ogni volta che la modalità Solo LAN o la modalità sviluppatore viene attivata/disattivata, quindi ricopialo dallo schermo della stampante. Una stampante in fase di riavvio, o che ha già raggiunto il limite di connessioni simultanee, appare allo stesso modo.`,fail_auth_rejected:`La stampante ha rifiutato le credenziali di Bambuddy. Il codice di accesso o il numero di serie è errato — il codice di accesso cambia ogni volta che la modalità Solo LAN o la modalità sviluppatore viene attivata/disattivata. Ricopialo dallo schermo della stampante e salvalo nelle impostazioni della stampante.`,skip:`Non verificato — impossibile raggiungere la stampante.`},developer_mode:{title:`Modalità sviluppatore LAN`,pass:`La modalità sviluppatore è attivata.`,fail:`La modalità sviluppatore è DISATTIVATA sulla stampante. Attivala nelle impostazioni LAN della stampante — e conferma con OK. Senza di essa le stampe non verranno avviate.`,skip:`Impossibile verificare — richiede una connessione attiva alla stampante.`},printer_publishing:{title:`La stampante pubblica lo stato`,pass:`La stampante sta pubblicando aggiornamenti di stato — AMS, filamenti e profili K saranno correttamente replicati nello slicer.`,fail:`Il broker MQTT ha accettato la connessione ma la stampante non ha pubblicato alcun report di stato. È quasi sempre un numero di serie errato o con maiuscole/minuscole sbagliate — il topic device//report distingue tra maiuscole e minuscole. Confronta il numero di serie nelle impostazioni della stampante con quello mostrato sullo schermo del dispositivo.`,skip:`Impossibile verificare — richiede una connessione attiva alla stampante.`}}},systemHealth:{sectionTitle:`Stato del sistema`,sectionDescription:`Analizza i log recenti alla ricerca di problemi noti che di solito puoi risolvere da solo, prima che diventino un ticket di assistenza.`,rescan:`Analizza di nuovo`,clean:`Nessun problema noto trovato nelle ultime {{times}} voci di log.`,logUnavailable:`La registrazione su file è disattivata, quindi i log non possono essere analizzati. Attiva la registrazione su file per usare questo controllo.`,learnMore:`Come risolvere`,fixLabel:`Soluzione:`,occurrences:`Visto {{times}}× — ultima volta alle {{lastSeen}}`,category:{layer8:`Puoi risolverlo tu`,environment:`Ambiente`,bug:`Segnalalo, per favore`},signature:{"ftp-auth-rejected":{name:`La stampante ha rifiutato il codice di accesso`,cause:`La stampante ha rifiutato l'accesso per il trasferimento file. Il codice di accesso è errato oppure è cambiato dopo aver attivato la Modalità Sviluppatore.`,fix:`Ricopia il codice di accesso dallo schermo della stampante (impostazioni LAN) e aggiornalo nelle impostazioni della stampante in Bambuddy.`},"ftp-connection-timeout":{name:`Timeout della connessione di trasferimento file`,cause:`Bambuddy non è riuscito a raggiungere la porta di trasferimento file della stampante (FTPS 990). La porta è bloccata, oppure la stampante è spenta o in un'altra sottorete.`,fix:`Assicurati che nulla blocchi la porta 990 tra Bambuddy e la stampante e che entrambi siano sulla stessa rete.`},"ftp-ssl-error":{name:`Handshake sicuro del trasferimento file non riuscito`,cause:`Il servizio file della stampante ha risposto sulla porta 990 senza TLS. Il suo server file si è bloccato: è un guasto della stampante, non un problema di firewall o firmware.`,fix:`Riavvia la stampante. Fino ad allora non è possibile scaricare file di stampa, copertine e timelapse; la stampa in sé non è interessata.`},"bambu-cloud-captcha":{name:`Bambu Cloud richiede un CAPTCHA`,cause:`Il sistema antiabuso di Bambu sta verificando questa rete, quindi nessun accesso a Bambu Cloud può andare a buon fine. Dipende dall'indirizzo IP pubblico, non dal tuo account né da questa installazione.`,fix:`Attendi: di solito si risolve entro qualche ora e i tentativi ripetuti lo prolungano. Nel frattempo accedi con un token di accesso preso da una sessione del browser.`},"mqtt-connection-flapping":{name:`La connessione alla stampante cade di continuo`,cause:`La connessione di controllo (MQTT 8883) si disconnette e si riconnette ripetutamente, di solito per una rete debole o una porta parzialmente bloccata.`,fix:`Controlla il segnale Wi-Fi vicino alla stampante, preferisci una connessione cablata e assicurati che la porta 8883 sia raggiungibile in modo affidabile.`},"camera-connection-refused":{name:`Flusso della telecamera non raggiungibile`,cause:`Non è stato possibile raggiungere la telecamera dal vivo sulla porta RTSPS 322. La porta è bloccata, oppure la telecamera o la visione dal vivo via LAN è disattivata sulla stampante.`,fix:`Attiva la telecamera e la visione dal vivo via LAN sulla stampante e assicurati che la porta 322 non sia bloccata. Questo non influisce sulla stampa.`},"database-locked":{name:`Conflitti di scrittura nel database`,cause:`Il database SQLite presenta errori "database is locked" sotto carico, comune quando si usano più stampanti contemporaneamente.`,fix:`Passa Bambuddy a un database PostgreSQL esterno. Consulta la guida PostgreSQL nella documentazione.`}}},vpDiagnostic:{title:`Controllo configurazione — {{name}}`,runButton:`Esegui controllo configurazione`,running:`Controllo configurazione in corso...`,runFailed:`Impossibile eseguire il controllo della configurazione: {{error}}`,retry:`Esegui di nuovo`,overall:{ok:`Tutti i controlli superati — questa stampante virtuale è configurata correttamente.`,warnings:`La stampante virtuale dovrebbe funzionare, ma alcuni aspetti richiedono attenzione.`,problems:`Sono stati trovati problemi che spiegano perché lo slicer non riesce a vedere o usare questa stampante virtuale.`},check:{enabled:{title:`Stampante virtuale abilitata`,fail:`Questa stampante virtuale è spenta. Attivala per renderla rilevabile.`},running:{title:`Servizi in esecuzione`,fail:`La stampante virtuale è abilitata ma i suoi servizi non sono in esecuzione. Controlla il log di Bambuddy — di solito li ferma un conflitto di IP di binding o un errore di permessi.`},bind_interface:{title:`Interfaccia di rete di binding`,fail:`L'interfaccia di binding non è impostata o non esiste più su questo host. Scegli un'interfaccia attuale nel menu "Interfaccia di binding".`},access_code:{title:`Codice di accesso impostato`,fail:`Nessun codice di accesso impostato. Allo slicer deve essere fornito lo stesso codice di accesso di 8 caratteri impostato qui.`},target_printer:{title:`Stampante di destinazione`,fail:`Nessuna stampante di destinazione selezionata. La modalità proxy richiede una stampante reale a cui inoltrare.`,warn:`La stampante di destinazione è offline in questo momento — l'inoltro riprenderà quando si riconnetterà.`},port_ftps:{title:`Servizio di caricamento file (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi lo slicer non può caricare i file. La causa abituale è un conflitto di porta su questa interfaccia.`},port_mqtt:{title:`Servizio di controllo (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi lo slicer non può connettersi o mostrare lo stato.`},port_bind:{title:`Servizio di rilevamento (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi l'handshake di rilevamento dello slicer fallisce.`},privileged_ports:{title:`Binding sulle porte privilegiate`,fail:`La porta {{port}} è sotto 1024 e questo servizio non è autorizzato ad associarla: per questo sopra non risulta nulla in ascolto. Aggiungi AmbientCapabilities=CAP_NET_BIND_SERVICE in /etc/systemd/system/bambuddy.service e riavvia, oppure esegui "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))". Con Docker aggiungi cap_add: [NET_BIND_SERVICE].`},certificate:{title:`Certificato TLS`,pass:`Certificato pronto. Assicurati che il certificato CA di Bambuddy (sopra) sia importato nell'archivio attendibile del tuo slicer.`,fail:`Il certificato TLS per questa stampante virtuale è mancante. Verifica che la directory dei dati di Bambuddy sia scrivibile.`}}},bugReport:{logHealthSummary:`Trovati problemi noti nei tuoi log`,logHealthIntro:`I log recenti corrispondono a problemi noti. Controlla le soluzioni qui sotto: risolverle potrebbe sistemare il problema senza una segnalazione di bug. Puoi comunque inviare una segnalazione qui sotto.`,title:`Segnala un bug`,description:`Descrizione`,descriptionPlaceholder:`Cosa è andato storto? Descrivi il problema...`,email:`Email (opzionale)`,emailPlaceholder:`tua@email.it`,emailPrivacy:`Se fornita, la tua email sarà inclusa in una sezione compressa dell'issue GitHub per permettere al manutentore di contattarti.`,screenshot:`Schermata`,uploadOrPaste:`Carica, incolla o trascina un'immagine`,dataCollectedSummary:`Quali dati sono inclusi nel report?`,dataIncluded:`Inclusi:`,dataIncludedList:`Versione app, OS, architettura, versione Python, statistiche database (solo conteggi), modelli stampante, numero ugelli, versioni firmware, stato connessione, stato integrazioni (Spoolman, MQTT, HA), impostazioni non sensibili, conteggio interfacce di rete, dettagli Docker, versioni dipendenze.`,dataNeverIncluded:`Mai inclusi:`,dataNeverIncludedList:`Nomi stampanti, numeri di serie, codici di accesso, password, indirizzi IP, indirizzi email, chiavi API, token, URL webhook, nomi host o nomi utente.`,submit:`Invia`,startLogging:`Avvia registrazione debug`,stepEnableLogging:`Registrazione debug attivata`,stepReproduce:`Riproduci il problema ora`,stepStopLogging:`Ferma & invia rapporto`,stopAndSubmit:`Ferma & Invia`,maxDuration:`Arresto automatico dopo {{minutes}} min`,stoppingLogs:`Raccolta log & invio...`,submitting:`Invio segnalazione bug...`,submittingStepConnection:`Controlli di connettività delle stampanti in corso`,submittingStepVirtualPrinters:`Controlli di configurazione delle stampanti virtuali in corso`,submittingStepLogScan:`Analisi dei log recenti per problemi noti`,submittingStepSubmit:`Invio del report a GitHub`,submitSuccess:`Segnalazione bug inviata con successo!`,submitFailed:`Impossibile inviare la segnalazione bug`,diagnosticChecking:`Verifica delle connessioni delle stampanti...`,diagnosticHealthy:`Verifica della connessione superata — nessun problema rilevato sulle tue stampanti.`,diagnosticSummary:`{{problems}} stampanti su {{total}} hanno problemi di connessione`,diagnosticIntro:`Una o più stampanti hanno un problema di connessione che potrebbe essere la causa del tuo problema. Espandi una stampante qui sotto per vedere la soluzione — risolverla potrebbe sistemare il problema senza una segnalazione di bug. Puoi comunque inviare una segnalazione qui sotto.`,thankYou:`Grazie!`,submitted:`La tua segnalazione bug è stata inviata.`,viewIssue:`Vedi issue`,closeKeepsRecording:`Puoi chiudere questo pannello mentre riproduci il problema: la registrazione continua e riaprendolo tornerai qui.`,resumeRecording:`Segnalazione in registrazione — {{elapsed}}. Fai clic per completare.`,resumeReport:`Riprendi segnalazione`,unexpectedError:`Si è verificato un errore imprevisto`},failureDetection:{title:`Rilevamento guasti con IA`,description:`Monitora le stampe tramite un'API ML Obico auto-ospitata e agisce automaticamente sui guasti rilevati.`,mlUrl:`URL API ML Obico`,mlUrlHint:`URL base del tuo container Obico ml_api auto-ospitato (es. http://192.168.1.10:3333).`,mlToken:`Token API ML (facoltativo)`,mlTokenPlaceholder:`Lascia vuoto se il server funziona senza ML_API_TOKEN`,mlTokenHint:`Deve corrispondere alla variabile di ambiente ML_API_TOKEN del tuo container Obico ml_api. Lascia vuoto se il container funziona senza token.`,test:`Prova`,testSuccess:`API ML raggiungibile e funzionante.`,testSuccessTokenUnknown:`API ML raggiungibile e funzionante. Non è stato possibile verificare il token.`,testFailed:`Impossibile raggiungere l'API ML.`,sensitivity:`Sensibilità`,sensitivityLow:`Bassa (meno falsi positivi)`,sensitivityMedium:`Media (bilanciata)`,sensitivityHigh:`Alta (rilevamento precoce, più falsi positivi)`,sensitivityHint:`Regola le soglie di confidenza che attivano avvisi e guasti.`,action:`Azione al guasto rilevato`,actionNotify:`Solo notifica`,actionPause:`Metti in pausa`,actionPauseOff:`Pausa e stacca corrente`,pollInterval:`Intervallo di controllo (secondi)`,pollIntervalHint:`Frequenza di controllo di ogni stampante durante la stampa. Minimo 5s, massimo 120s.`,externalUrlMissing:`URL esterno non impostato.`,externalUrlHint:`L'API ML recupera l'istantanea della telecamera tramite URL. Imposta l'URL esterno nelle impostazioni generali in modo che il container API ML possa raggiungere Bambuddy.`,perPrinterTitle:`Stampanti monitorate`,perPrinterHint:`Scegli quali stampanti il servizio di rilevamento deve monitorare.`,monitorAll:`Monitora tutte le stampanti connesse`,statusTitle:`Stato`,serviceRunning:`Servizio in esecuzione`,thresholds:`Soglie bassa / alta`,activePrinters:`Stampe attive`,noActivePrints:`Nessuna stampa in corso.`,historyTitle:`Rilevamenti recenti`,noHistory:`Nessun rilevamento finora.`},makerworld:{title:`MakerWorld`,description:`Incolla un URL di un modello MakerWorld per importarlo e stamparlo direttamente da Bambuddy — senza passare dall'app Bambu Handy.`,pasteUrlHeader:`Importa da MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… o incolla qualsiasi link MakerWorld`,resolveButton:`Risolvi`,signInRequiredTitle:`Accesso Bambu Cloud richiesto per scaricare`,signInRequiredBody:`Puoi consultare i dettagli del modello in modo anonimo, ma MakerWorld richiede un account Bambu Cloud per scaricare i file 3MF.`,signInExpiredTitle:`Accesso a Bambu Cloud scaduto`,signInExpiredBody:`Hai ancora effettuato l'accesso a Bambuddy, ma Bambu Lab non accetta più il token salvato, quindi i download non riusciranno. Accedi di nuovo a Bambu Cloud.`,openCloudSettings:`Apri impostazioni Cloud`,untitledModel:`Modello senza titolo`,byCreator:`di {{name}}`,downloadsCount:`{{count}} download`,licensePrefix:`Licenza`,alreadyImported:`Già nella libreria`,openOnMakerworld:`Apri su MakerWorld`,alreadyInLibrary:`Questo modello è già nella tua libreria — lo trovi in Gestione file → MakerWorld`,importSuccess:`{{filename}} importato — salvato in Gestione file → MakerWorld`,platesHeader:`Piatti ({{count}})`,plateDefaultName:`Piatto {{n}}`,materialCount:`{{count}} filamenti`,amsRequired:`AMS richiesto`,slicedFor:`Sezionato per {{printer}}`,alsoCompatible:`Anche contrassegnato come compatibile: {{printers}}`,importToLibrary:`Salva`,sliceIn:`Salva e affetta in {{slicer}}`,disclaimer:`L'integrazione MakerWorld utilizza endpoint API documentati dalla community. Bambuddy non è affiliato né approvato da MakerWorld o Bambu Lab.`,lastImportSuccess:`Importato nella tua libreria`,lastImportAlreadyInLibrary:`Già nella tua libreria`,viewInLibrary:`Visualizza in Gestione file`,openInBambuStudio:`Apri in Bambu Studio`,openInOrcaSlicer:`Apri in OrcaSlicer`,importTo:`Importa in Gestione file`,recentImportsHeader:`Importazioni recenti`,phaseResolving:`Risoluzione`,phaseDownloading:`Download`,folderAuto:`MakerWorld (predefinita)`,importAll:`Importa tutto`,importAllProgress:`Importazione {{current}}/{{total}}`,openGallery:`Apri galleria immagini`,galleryPrev:`Immagine precedente`,galleryNext:`Immagine successiva`,deleteImport:`Rimuovi dalla libreria`,importDeleting:`Rimozione…`,importDeleted:`Rimosso dalla libreria`,confirmDelete:`Rimuovere {{filename}} dalla libreria? Il file locale verrà eliminato, ma il piatto può essere re-importato da MakerWorld.`,errors:{resolveFailed:`Impossibile risolvere questo URL MakerWorld.`,downloadFailed:`Download non riuscito. Riprova.`,deleteFailed:`Impossibile rimuovere il file dalla libreria.`}},gcodeViewer:{filamentSlot:`Filamento {{n}}`,loading:`Lettura del percorso…`,loadFailed:`Impossibile caricare il G-code di questo file.`,showTravel:`Spostamenti a vuoto`,topLayer:`Strato superiore`,bottomLayer:`Strato inferiore`,noSource:`Nessun file da visualizzare è stato indicato.`,view:{filament:`Filamento`,feature:`Elemento`,height:`Altezza`,width:`Larghezza`},feature:{wall:`Pareti`,sparseInfill:`Riempimento rado`,solidInfill:`Riempimento solido`,bridge:`Ponte / sbalzo`,support:`Supporto`,skirt:`Skirt / brim`,gapFill:`Riempimento vuoti`,ironing:`Stiratura`,primeTower:`Torre di spurgo`},back:`Indietro`,backToArchives:`Torna agli archivi di stampa`,backToFiles:`Torna al gestore file`,plates:`Piastre`,plateN:`Piastra {{n}}`},libraryTrash:{title:`Cestino`,headerButton:`Cestino`,headerTooltip:`Visualizza i file spostati nel cestino`,backToFiles:`Torna al gestore file`,subtitleAdmin:`I file eliminati restano qui per {{days}} giorni, poi vengono rimossi automaticamente. Questa vista mostra il cestino di tutti gli utenti.`,subtitleUser:`I file eliminati restano qui per {{days}} giorni, poi vengono rimossi automaticamente.`,loading:`Caricamento del cestino…`,loadError:`Impossibile caricare il cestino.`,empty:`Il cestino è vuoto.`,summary:`{{count}} file · {{size}}`,emptyTrash:`Svuota cestino`,restore:`Ripristina`,purgeNow:`Elimina ora`,autoPurgeIn:`Eliminazione automatica tra {{when}}`,days:`giorni`,retentionLabel:`Elimina automaticamente dopo`,selectAll:`Seleziona tutto`,selectOne:`Seleziona {{filename}}`,selectionCount:`{{count}} selezionati`,bulkRestore:`Ripristina selezionati`,bulkPurge:`Elimina selezionati`,col:{filename:`File`,folder:`Cartella`,size:`Dimensione`,deleted:`Spostato nel cestino`,autoPurge:`Eliminazione auto.`,owner:`Proprietario`,actions:`Azioni`},confirm:{purgeTitle:`Eliminare definitivamente?`,purgeBody:`{{filename}} verrà eliminato dal disco e non potrà essere ripristinato.`,emptyTitle:`Svuotare il cestino?`,emptyBody:`Tutti i {{count}} file verranno eliminati dal disco. Azione non annullabile.`,bulkPurgeTitle:`Eliminare definitivamente i file selezionati?`,bulkPurgeBody:`I {{count}} file selezionati verranno eliminati dal disco e non potranno essere ripristinati.`,cta:`Elimina definitivamente`},toast:{restored:`File ripristinato.`,restoreFailed:`Impossibile ripristinare il file.`,purged:`File eliminato definitivamente.`,purgeFailed:`Impossibile eliminare il file.`,emptied:`{{count}} file eliminati dal cestino.`,emptyFailed:`Impossibile svuotare il cestino.`,retentionSaved:`Eliminazione automatica impostata su {{days}} giorni.`,retentionFailed:`Impossibile salvare l'impostazione di conservazione.`,bulkRestored:`{{count}} file ripristinati.`,bulkPurged:`{{count}} file eliminati.`}},libraryPurge:{title:`Elimina file vecchi`,headerButton:`Elimina vecchi`,headerTooltip:`Sposta in blocco i file vecchi nel cestino`,description:`I file più vecchi della soglia verranno spostati nel cestino. Le cartelle esterne vengono ignorate. Puoi ripristinarli dal cestino prima dell'eliminazione automatica.`,ageLabel:`Sposta i file più vecchi di`,days:`giorni`,includeNeverPrinted:`Includi i file mai stampati`,effectsTitle:`Cosa succede quando fai clic su Pulisci`,effect1:`I file corrispondenti vengono spostati nel cestino — non sono ancora eliminati dal disco.`,effect2:`Puoi ripristinarli dal cestino in qualsiasi momento fino alla scadenza del periodo di conservazione.`,effect3:`Dopo il periodo di conservazione, lo spazzino del cestino li rimuove definitivamente.`,effect4:`I file in cartelle esterne (collegate) vengono saltati — Bambuddy non elimina mai dati che non possiede.`,previewLoading:`Verifica quanti file corrispondono…`,previewFailed:`Impossibile mostrare l'anteprima.`,previewSummary:`{{count}} file · {{size}} verrebbero spostati nel cestino`,andMore:`…e altri {{count}}`,warning:`I file vengono eliminati in modo soft — puoi ripristinarli dal cestino fino alla scadenza del periodo di conservazione.`,confirmCta:`Sposta {{count}} nel cestino`,purging:`Spostamento nel cestino…`,toast:{success:`{{count}} file spostati nel cestino.`,failed:`Impossibile eliminare i file.`}},libraryAutoPurge:{enableLabel:`Elimina automaticamente i file vecchi`,enableDescription:`Esegue l'eliminazione amministrativa una volta al giorno. I file finiscono prima nel cestino — non vengono eliminati immediatamente.`,ageLabel:`Elimina automaticamente i file più vecchi di`,ageDescription:`Minimo 7 giorni, massimo 10 anni. Usa la stessa regola di età del pulsante Elimina manuale.`,days:`giorni`,includeNeverPrinted:`Includi i file mai stampati`,saveFailed:`Impossibile salvare le impostazioni di eliminazione automatica.`},archivePurge:{headerButton:`Elimina vecchi`,headerTooltip:`Eliminazione massiva vecchi archivi`,title:`Elimina vecchi archivi`,description:`Cancella la vecchia cronologia di stampa. Ogni archivio invecchia in base alla sua ultima stampa completata — ristampare azzera l'età, quindi il lavoro attivo non viene mai eliminato.`,ageLabel:`Elimina archivi non stampati negli ultimi`,days:`giorni`,effectsTitle:`Cosa succede quando fai clic su Pulisci`,effect1:`Ogni archivio corrispondente viene nascosto dagli elenchi e i suoi file vengono rimossi dal disco (3MF, miniatura, timelapse, 3MF sorgente, F3D, foto).`,effect2:`La riga dell'archivio rimane nel database, così le Quick Stats conservano il contributo di filamento, tempo, costo ed energia — come il comportamento predefinito dell'eliminazione singola.`,effect3:`Spunta «Rimuovi anche dalle statistiche» qui sotto per eliminare anche il contributo dalle Quick Stats (equivalente all'opzione dell'eliminazione singola). Questo percorso è irreversibile.`,effect4:`Ristampare un archivio azzera il suo conteggio dell'età, quindi gli archivi attivi sono al sicuro.`,purgeStatsLabel:`Rimuovi anche dalle statistiche`,purgeStatsHint:`Rimuove gli archivi selezionati dalle Quick Stats (filamento, tempo, costo, energia). Senza questa opzione le Quick Stats conservano ogni contributo e solo i file vengono cancellati.`,previewLoading:`Verifica del numero di archivi corrispondenti…`,previewFailed:`Impossibile visualizzare l'anteprima della pulizia.`,previewSummary:`{{count}} archivi · {{size}} verrebbero rimossi`,andMore:`…e altri {{count}}`,warning:`I file vengono rimossi dal disco e non possono essere ripristinati. Scarica o aggiungi ai preferiti tutto ciò che vuoi conservare prima di continuare.`,confirmCta:`Rimuovi {{count}} archivio(i)`,purging:`Rimozione…`,toast:{success:`{{count}} archivio(i) rimosso.`,failed:`Impossibile eliminare gli archivi.`}},archiveAutoPurge:{enableLabel:`Elimina auto. vecchi archivi`,enableDescription:`Una volta al giorno nasconde dagli elenchi gli archivi non stampati entro la soglia e rimuove i loro file dal disco. Ristampare azzera il timer.`,ageLabel:`Eliminazione auto. di archivi non stampati negli ultimi`,ageDescription:`Minimo 7 giorni, massimo 10 anni. Basato sull'ultima stampa completata — ristampare azzera l'età. Rimuove 3MF, miniatura, timelapse, 3MF sorgente, F3D e foto.`,days:`giorni`,purgeStatsLabel:`Rimuovi anche dalle statistiche`,purgeStatsDescription:`Quando abilitato, lo sweeper giornaliero elimina anche il contributo di ogni archivio purgato dalle Quick Stats (filamento, tempo, costo, energia). Disabilitato per impostazione predefinita — le Quick Stats mantengono il contributo e solo i file vengono cancellati.`,runNow:`Elimina archivi ora`,saveFailed:`Impossibile salvare le impostazioni di pulizia automatica.`},cameraTokens:{scope:{camera_stream:`Flusso della telecamera`,camwall:`Muro telecamere`,overlay:`Overlay di streaming`},title:`Token API telecamera`,navTitle:`Token API telecamera`,description:`Token di lunga durata per incorporare il flusso della telecamera in Home Assistant, Frigate, schermi in modalità chiosco o qualsiasi altro strumento che richieda un indirizzo stabile. L'ambito si sceglie alla creazione; un token può essere revocato in qualsiasi momento.`,loading:`Caricamento…`,confirmRevoke:{title:`Revocare questo token?`,body:`Qualsiasi dispositivo che usa "{{name}}" perderà l'accesso immediatamente. Non può essere annullato.`,cancel:`Annulla`,confirm:`Revoca`},create:{scopeLabel:`Ambito`,hintCameraStream:`Un token del flusso della telecamera può recuperare soltanto flussi e istantanee. Usalo per Home Assistant, Frigate o qualsiasi cosa incorpori una singola telecamera.`,hintCamWall:`Un token Muro telecamere apre /camwall su uno schermo senza login. Vede nome e stato di ogni stampante e i relativi flussi della telecamera. Non vede nomi di file, indirizzi o codici di accesso.`,hintOverlay:`Un token Overlay di streaming apre /overlay/{printerId} su uno schermo senza login, per OBS o qualsiasi diretta streaming. Vede il flusso della telecamera di una stampante e il suo stato di stampa in tempo reale, incluso il nome del file mostrato sullo schermo. Non vede indirizzi o codici di accesso.`,title:`Crea nuovo token`,nameLabel:`Nome token`,namePlaceholder:`es. Home Assistant`,daysLabel:`Giorni alla scadenza`,submit:`Crea`,hint:`Durata massima 365 giorni. Il valore del token viene mostrato solo alla creazione — copialo ora.`},created:{camWallUrlTitle:`Indirizzo del muro telecamere per questo schermo`,camWallUrlHint:`Apri questo indirizzo sullo schermo. Chiunque possa leggerlo può guardare il muro, quindi trattalo come una chiave: revoca il token per escludere lo schermo.`,overlayUrlTitle:`Indirizzo overlay per OBS`,overlayUrlHint:`Aggiungi questo come Sorgente browser in OBS. Cambia il numero in /overlay/1 con il numero della tua stampante (dall'indirizzo nella pagina Stampanti). Chiunque possa leggere l'indirizzo può guardare lo streaming, quindi trattalo come una chiave: revoca il token per interrompere l'accesso.`,title:`Token creato – copialo ora`,warning:`Questa è l'unica volta in cui questo token sarà visibile. Dopo la chiusura di questa finestra non potrai più visualizzarlo.`,copy:`Copia`,dismiss:`L'ho salvato`},list:{scope:`Ambito`,myTitle:`I miei token`,allTitle:`Tutti gli utenti (vista admin)`,empty:`Nessun token ancora.`,name:`Nome`,owner:`Proprietario`,prefix:`Prefisso`,created:`Creato`,expires:`Scade`,lastUsed:`Ultimo uso`,revoke:`Revoca`,expired:`Scaduto`},toast:{created:`Token creato`,createFailed:`Creazione token fallita`,revoked:`Token revocato`,revokeFailed:`Revoca token fallita`,loadFailed:`Caricamento token fallito`,copied:`Copiato negli appunti`,copyFailed:`Copia non riuscita – seleziona e copia manualmente`}},forecast:{title:`Previsione scorte`,noSpools:`Nessuna bobina attiva trovata. Aggiungi bobine al tuo inventario per vedere i dati di previsione.`,noUsageData:`Nessun dato di utilizzo disponibile — impossibile proiettare la timeline delle scorte.`,sku:`SKU`,material:`Materiale`,stock:`Scorte`,dailyRate:`Tasso`,daysLeft:`Giorni rimanenti`,emptyBy:`Esaurimento previsto`,reorderBy:`Riordinare entro`,actions:`Azioni`,trend:`Tendenza`,estimated:`Stim.`,noData:`Nessun dato`,timeframe:`Periodo`,chartTitle:`Stock proiettato — Top 5 materiali`,dashedLinesROP:`Linee tratteggiate = punti di riordino`,stockLevel:`Livello scorte`,reorderPoint:`Punto di riordino`,safetyMargin:`Margine di sicurezza`,trendLegend:`Tendenza (basata su storico, livello servizio 95%)`,estimatedLegend:`Stimata (delta peso)`,noDataLegend:`Nessun dato`,ropLabel:`PR`,ssLabel:`SS`,safetyStockLegend:`Scorta di sicurezza`,stockArrivalLegend:`Arrivo merce`,stockoutLegend:`Esaurimento scorte`,alertCount_one:`{{count}} avviso`,alertCount_other:`{{count}} avvisi`,order:`Ordina`,globalLeadTime:`Lead time globale`,globalLeadTimeHint:`Lead time globale minimo — usato nel calcolo del punto di riordino per tutti gli SKU`,save:`Salva`,cancel:`Annulla`,settingsSaved:`Impostazioni salvate`,failedSaveSettings:`Impossibile salvare le impostazioni`,globalLeadTimeSaved:`Lead time globale salvato`,skuLeadTimeOverride:`Override lead time SKU`,skuLeadTimeHint:`0 = usa lead time globale. Imposta >0 per sovrascrivere per questo SKU.`,safetyMarginLabel:`Margine di sicurezza`,effectiveLeadTime:`Lead time effettivo`,effectiveLeadTimeHint:`max(globale {{global}}g, SKU {{sku}}g)`,reorderPointHint:`d̄ × LT + safety margin — ordina quando le scorte raggiungono questo livello`,safetyMarginHint:`Scorta di sicurezza statistica (z=1,65 × σ × √LT) + buffer definito dall'utente`,safetyMarginHintDays:`Buffer aggiunto sulla scorta di sicurezza statistica.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}}g al tasso attuale.`,safetyMarginHintG:`Buffer di peso fisso aggiunto sulla scorta di sicurezza statistica.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}}g al tasso attuale.`,individualSpools:`Bobine singole`,labelWeight:`Etichetta`,spoolCount_one:`{{count}} bobina`,spoolCount_other:`{{count}} bobine`,stockBreakRisk:`Rischio di rottura scorte`,stockBreakBefore:`Rottura scorte prima del rifornimento`,stockBreakDetail:`{{days}}g rimanenti, lead time {{lt}}g.`,reorderNow:`Riordina ora`,reorderTriggerPassed:`La data di attivazione {{date}} è passata.`,shoppingList:`Lista della spesa`,shoppingListItems_one:`({{count}} articolo)`,shoppingListItems_other:`({{count}} articoli)`,shoppingListEmpty:`La lista della spesa è vuota. Clicca sull'icona del carrello in qualsiasi riga per aggiungere articoli.`,addToCart:`Aggiungi alla lista della spesa`,alertsSnoozed:`Silenzia avvisi per questo SKU`,alertsEnabled:`Riattiva avvisi per questo SKU`,addedToCart:`Aggiunto alla lista della spesa`,failedAddItem:`Impossibile aggiungere l'articolo`,listView:`Lista`,logisticsView:`Logistica`,qty:`Qtà`,weight:`Peso`,leadTime:`Lead time`,expectedRestock:`Rifornimento previsto`,status:`Stato`,note:`Nota`,pending:`In attesa`,purchased:`Acquistato`,received:`Ricevuto`,markPurchased:`Segna come acquistato`,markReceived:`Segna come ricevuto — aggiunge bobine all'inventario`,resetToPending:`Ripristina in attesa`,remove:`Rimuovi`,clearAll:`Cancella tutto`,downloadCsv:`CSV`,addToCartTitle:`Aggiungi alla lista della spesa`,byQuantity:`Per quantità`,byDuration:`Per durata`,numberOfSpools:`Numero di bobine`,lastHowManyDays:`Per quanti giorni deve durare?`,noUsageQty:`Nessun dato di utilizzo — quantità impostata a 1.`,noteOptional:`Nota (opzionale)`,notePlaceholder:`es. per il progetto X, urgente…`,addNSpools_one:`Aggiungi {{count}} bobina`,addNSpools_other:`Aggiungi {{count}} bobine`,onArrival:`All'arrivo`,stockBreakIn:`Rottura scorte tra {{days}}g.`,stockRunsOutBefore:`Le scorte si esauriscono prima dello scadere del lead time di {{lt}}g.`,atRate:`A {{rate}}g/giorno hai bisogno di`,moreSpools_one:`{{count}} bobina in più`,moreSpools_other:`{{count}} bobine in più`,bridgeGap:`per colmare il divario.`,noReadAccess:`Non hai il permesso di visualizzare le previsioni di inventario.`,noWriteAccess:`Non hai il permesso di modificare le impostazioni di previsione.`}}},ko:{translation:{nav:{printers:`프린터`,archives:`아카이브`,queue:`대기열`,stats:`통계`,profiles:`프로필`,maintenance:`유지보수`,projects:`프로젝트`,inventory:`필라멘트`,finance:`재무`,files:`파일 관리자`,makerworld:`MakerWorld`,notifications:`알림`,settings:`설정`,system:`시스템`,collapseSidebar:`사이드바 접기`,expandSidebar:`사이드바 펼치기`,update:`업데이트`,updateAvailable:`업데이트 가능: v{{version}}`,updateAvailableBanner:`버전 {{version}}이(가) 출시되었습니다!`,viewUpdate:`업데이트 보기`,viewOnGithub:`GitHub에서 보기`,keyboardShortcuts:`키보드 단축키 (?)`,switchToLight:`라이트 모드로 전환`,switchToDark:`다크 모드로 전환`,switchToSystem:`기기 설정으로 전환`,smartSwitches:`스마트 스위치`,logout:`로그아웃`,installApp:`앱 설치`,installAppSuccess:`Bambuddy가 설치되었습니다`},common:{plusNMore:`외 {{count}}개`,save:`저장`,saving:`저장 중...`,cancel:`취소`,delete:`삭제`,edit:`편집`,add:`추가`,close:`닫기`,confirm:`확인`,loading:`로딩 중...`,error:`오류`,errorLoading:`데이터 로딩 오류`,retry:`재시도`,success:`성공`,warning:`경고`,enabled:`활성화됨`,disabled:`비활성화됨`,yes:`예`,no:`아니요`,on:`켜짐`,off:`꺼짐`,all:`전체`,none:`없음`,search:`검색`,filter:`필터`,sort:`정렬`,refresh:`새로고침`,download:`다운로드`,upload:`업로드`,uploading:`업로드 중...`,uploadFailed:`업로드 실패`,actions:`작업`,status:`상태`,name:`이름`,description:`설명`,date:`날짜`,time:`시간`,hours:`시간`,minutes:`분`,seconds:`초`,days:`일`,enable:`활성화`,disable:`비활성화`,permissions:`권한`,noPrinters:`등록된 프린터가 없습니다`,noData:`데이터가 없습니다`,linkNotFound:`링크를 찾을 수 없습니다`,required:`필수`,optional:`선택`,dismiss:`닫기`,apply:`적용`,reset:`초기화`,export:`내보내기`,import:`가져오기`,clear:`지우기`,selectAll:`전체 선택`,deselectAll:`전체 해제`,noChange:`— 변경 없음 —`,unchanged:`변경 없음`,unassigned:`미할당`,unknown:`알 수 없음`,unknownError:`알 수 없는 오류`,today:`오늘`,tomorrow:`내일`,asap:`즉시`,overdue:`기한 초과`,now:`지금`,collapse:`접기`,expand:`펼치기`,previous:`이전`,next:`다음`,viewArchive:`아카이브 보기`,viewInFileManager:`파일 관리자에서 보기`,addedBy:`{{username}}님이 추가함`,prints:`인쇄`,more:`+{{count}}개 더`,ascending:`오름차순`,descending:`내림차순`,back:`뒤로`,copy:`복사`,copied:`복사됨!`,printer:`프린터`,remove:`제거`,type:`유형`,print:`인쇄`,rename:`이름 변경`,move:`이동`,create:`만들기`,duplicate:`복제`,left:`왼쪽`,right:`오른쪽`,user:`사용자`,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:`계정 잔액`,unlimited:`무제한`,budgetPolicyHint:`계정 잔액은 비용을 기록합니다. 인쇄는 선택한 비용 센터의 예산으로만 제한되며, 예산이 없으면 무제한입니다.`,budget:`예산`,shared:`공유`,cannotEditPrivateCostCenter:`비공개 비용 센터는 여기에서 편집할 수 없습니다`,recentTransactions:`최근 거래`,transactionsHint:`유형 및 비용 센터별 필터링`,first:`처음`,prev:`이전`,next:`다음`,last:`마지막`,pageNumberOf:`{{total}}페이지 중 {{page}}페이지`,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:{title:`프린터`,addPrinter:`프린터 추가`,editPrinter:`프린터 편집`,deletePrinter:`프린터 삭제`,printerName:`프린터 이름`,serialNumber:`일련번호`,ipAddress:`IP 주소 / 호스트명`,accessCode:`액세스 코드`,model:`모델`,nozzleCount:`노즐 수`,autoArchive:`자동 아카이브`,status:{available:`사용 가능`,idle:`대기 중`,printing:`인쇄 중`,paused:`일시정지`,offline:`오프라인`,problem:`문제 발생`,error:`오류`,finished:`완료`,unknown:`알 수 없음`},temperatures:{nozzle:`노즐`,bed:`베드`,chamber:`챔버`},heaterHistory:{title:`히터 기록`,openLabel:`히터 기록 보기`,nozzle:`노즐`,nozzle2:`노즐 2`,bed:`베드`,chamber:`챔버`,error:`기록을 불러올 수 없습니다`,empty:`아직 기록된 데이터가 없습니다`},progress:`{{percent}}% 완료`,timeRemaining:`{{time}} 남음`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,maintenanceOk:`유지보수 정상`,maintenanceWarning:`{{count}}개 경고`,maintenanceWarning_plural:`{{count}}개 경고`,maintenanceDue:`{{count}}개 예정`,maintenanceDue_plural:`{{count}}개 예정`,sort:{name:`이름`,status:`상태`,model:`모델`,location:`위치`,eta:`남은 시간`,ascending:`오름차순 정렬`,descending:`내림차순 정렬`},cardSize:{small:`작은 카드`,medium:`중간 카드`,large:`큰 카드`,extraLarge:`아주 큰 카드`},pageView:{openCamWallPage:`카메라 월을 페이지로 열기`,cards:`카드`,camWall:`카메라 월`},camWall:{page:{tokenRejected:`이 카메라 월 링크는 더 이상 유효하지 않습니다. 토큰이 만료되었거나 취소되었을 수 있습니다.`,loadFailed:`프린터를 불러오지 못했습니다.`},noPrinters:`표시할 프린터가 없습니다`,noSignal:`신호 없음`,live:`라이브`,snap:`스냅`,off:`꺼짐`,summary:`라이브 {{live}}개, 스냅 {{snap}}개, 총 {{total}}개`,layer:`레이어 {{cur}}/{{total}}`,timeLeft:`{{time}} 남음`,statusMode:{off:`꺼짐`,compact:`간단`,full:`전체`},settings:{title:`카메라 월 설정`,maxLive:`최대 라이브 스트림`,maxLiveHint:`동시에 라이브 스트리밍할 타일 수. 나머지는 스냅샷으로 갱신됩니다.`,snapshotInterval:`스냅샷 간격(초)`,snapshotIntervalHint:`비라이브 타일이 새 스냅샷을 가져오는 주기.`,statusOverlay:`상태 표시`,statusOverlayHint:`간단: 상태 배지만 표시. 전체: + 진행률, 레이어, 남은 시간.`}},hideOffline:`오프라인 숨기기`,nextAvailable:`다음 가용`,powerOn:`전원 켜기`,offlinePrintersWithPlugs:`스마트 플러그가 연결된 오프라인 프린터`,noPrintersConfigured:`아직 설정된 프린터가 없습니다`,search:`프린터 검색...`,noSearchResults:`검색 또는 필터 조건에 맞는 프린터가 없습니다`,filter:{allStatuses:`모든 상태`,allLocations:`모든 위치`},toolbar:{filters:`필터`,view:`보기`,actions:`작업`},readyToPrint:`인쇄 준비 완료`,external:`외부`,extL:`외부-L`,extR:`외부-R`,deleteArchives:`인쇄 아카이브 삭제`,noLabel:`라벨 없음`,printPreview:`인쇄 미리보기`,width:`너비`,height:`높이`,noObjectsFound:`객체를 찾을 수 없습니다`,objectsLoadedOnPrintStart:`인쇄 시작 시 객체가 로드됩니다`,willBeSkipped:`건너뛸 예정`,name:`이름`,serialCannotBeChanged:`일련번호는 변경할 수 없습니다`,locationHelp:`프린터 그룹화 및 대기열 작업 필터링에 사용됩니다`,wifiSignal:{veryWeak:`매우 약함`,weak:`약함`,fair:`보통`,good:`좋음`,excellent:`매우 좋음`},maintenanceUpToDate:`모든 유지보수 최신 상태 - 클릭하여 보기`,maintenance:{title:`유지보수 중`,subtitle:`이 프린터는 일시 중지되었습니다 — 연결되지 않음, 대기열에서 제외, 알림 전송 안 함.`,pillLabel:`유지보수`,exitButton:`유지보수 종료`,menuEnter:`유지보수 모드로 전환`,menuExit:`유지보수 모드 종료`,toastEntered:`{{name}} 은(는) 이제 유지보수 모드입니다`,toastExited:`{{name}} 이(가) 다시 온라인 상태입니다`,confirmMidPrintTitle:`인쇄 중 유지보수 모드로 전환하시겠습니까?`,confirmMidPrintMessage:`{{name}} 은(는) 현재 인쇄 중입니다. 유지보수 모드로 전환하면 MQTT가 연결 해제되고 이 작업의 진행률 추적 및 완료 알림이 중지됩니다. 계속하시겠습니까?`,editFieldLabel:`유지보수 모드`,editFieldHelp:`활성화하면 이 프린터는 MQTT, 대기열 디스패치 및 알림에서 일시 중지됩니다 — 수리, 병렬 Bambuddy 설치 또는 임시 중지에 유용합니다.`},chamberLightOn:`챔버 조명 켜기`,chamberLightOff:`챔버 조명 끄기`,files:`파일`,browseFiles:`프린터 파일 탐색`,autoOffAfterPrint:`인쇄 후 자동 전원 끄기`,autoOffExecuted:`자동 끄기 실행됨 - 초기화하려면 프린터를 켜세요`,hmsErrors:`HMS 오류`,viewHmsErrors:`{{count}}개 HMS 오류 보기`,resume:`재개`,pause:`일시정지`,stop:`정지`,camera:`카메라`,skipObject:`객체 건너뛰기`,reconnect:`재연결`,forceRefresh:`강제 새로고침`,forceRefreshSuccess:`새로고침 요청됨`,mqttDebug:`MQTT 디버그`,printerInformation:`프린터 정보`,copyToClipboard:`복사`,copied:`복사됨!`,state:`상태`,wifiSignalLabel:`WiFi 신호`,developerMode:`개발자 모드`,enabled:`활성화됨`,disabled:`비활성화됨`,addedOn:`추가됨`,sdCard:`SD 카드`,inserted:`삽입됨`,notInserted:`삽입되지 않음`,totalPrintHours:`인쇄 시간`,activeNozzle:`활성: {{nozzle}} 노즐`,amsSwitchInletTooltip:`필라멘트 트랙 스위치 IN-{{inlet}}({{side}}) — 양쪽 노즐에 공급`,nozzleRack:`노즐 랙`,nozzleDocked:`도킹됨`,nozzleMounted:`장착됨`,nozzleActive:`활성`,nozzleIdle:`대기`,nozzleDiameter:`직경`,nozzleType:`유형`,nozzleStatus:`상태`,nozzleFilament:`필라멘트`,nozzleWear:`마모`,nozzleMaxTemp:`최대 온도`,nozzleSerial:`일련번호`,nozzleHardenedSteel:`경화강`,nozzleStainlessSteel:`스테인리스강`,nozzleTungstenCarbide:`텅스텐 카바이드`,nozzleFlow:`유량`,nozzleHighFlow:`고유량`,nozzleStandardFlow:`표준`,firmwareUpdate:`펌웨어 업데이트`,firmwareInstructions:`프린터 터치스크린에서`,firmwareNav:`이동`,settings:`설정`,firmware:`펌웨어`,discoverPrinters:`프린터 검색`,searching:`검색 중...`,manualEntry:`수동 입력`,addFromCloud:`클라우드에서 추가`,toast:{printerDeleted:`프린터가 삭제되었습니다`,missingSpoolAssignment:`{{printer}}에서 인쇄가 시작되었습니다. 슬롯 할당 누락: {{slots}}`,killSwitchTriggered:`결제 킬 스위치가 {{printer}}에서 승인되지 않은 인쇄를 중지했습니다: {{filename}}`,billingChargeFailed:`{{printer}}의 {{filename}} 결제에 실패했습니다. 예산 예약은 유지되었습니다. 서버 로그를 확인하세요.`,assignmentVerified:`슬롯 {{slot}}에 필라멘트가 로드되었습니다 ({{printer}})`,assignmentVerifiedNoKprofile:`{{printer}}의 슬롯 {{slot}}이(가) 로드되었지만 유량 보정 프로파일(K 프로파일)이 적용되지 않았습니다`,assignmentNotConfirmed:`{{printer}}의 슬롯 {{slot}} 할당을 확인할 수 없습니다. AMS 슬롯을 확인하세요`,printerAdded:`프린터가 추가되었습니다`,printerUpdated:`프린터가 업데이트되었습니다`,failedToDelete:`프린터 삭제 실패`,failedToAdd:`프린터 추가 실패`,failedToUpdate:`프린터 업데이트 실패`,commandSent:`명령이 전송되었습니다`,failedToSendCommand:`명령 전송 실패`,turnedOn:`{{name}} 켜짐`,failedToPowerOn:`{{name}} 전원 켜기 실패`,scriptTriggered:`스크립트가 실행되었습니다`,printStopped:`인쇄가 정지되었습니다`,printPaused:`인쇄가 일시정지되었습니다`,printResumed:`인쇄가 재개되었습니다`,referenceDeleted:`참조가 삭제되었습니다`,detectionAreaSaved:`감지 영역이 저장되었습니다`,failedToRunScript:`스크립트 실행 실패`,failedToStopPrint:`인쇄 정지 실패`,failedToPausePrint:`인쇄 일시정지 실패`,failedToResumePrint:`인쇄 재개 실패`,failedToControlChamberLight:`챔버 조명 제어 실패`,failedToSetSpeed:`인쇄 속도 설정 실패`,failedToUpdateSetting:`설정 업데이트 실패`,failedToSkipObjects:`객체 건너뛰기 실패`,failedToRereadRfid:`RFID 재읽기 실패`,failedToCheckPlate:`플레이트 확인 실패`,failedToUpdateLabel:`라벨 업데이트 실패`,failedToDeleteReference:`참조 삭제 실패`,failedToSaveDetectionArea:`감지 영역 저장 실패`,plateCheckEnabled:`플레이트 확인 활성화됨`,plateCheckDisabled:`플레이트 확인 비활성화됨`,calibrationSaved:`캘리브레이션이 저장되었습니다!`,calibrationFailed:`캘리브레이션 실패`,rfidRereadInitiated:`RFID 재읽기가 시작되었습니다`,loadInitiated:`필라멘트 로딩 중…`,unloadInitiated:`필라멘트 언로딩 중…`,failedToLoad:`필라멘트 로드 실패`,failedToUnload:`필라멘트 언로드 실패`,connectionFailedNotAdded:`프린터에 연결할 수 없습니다. IP, 시리얼 번호, 액세스 코드를 확인하고 LAN 전용 모드가 켜져 있는지 확인하세요. 프린터가 추가되지 않았습니다.`},connection:{connected:`연결됨`,offline:`오프라인`},plateStatus:{markCleared:`플레이트 비움으로 표시`,cleared:`플레이트 비워짐`,notCleared:`플레이트 미비움`,inUse:`플레이트 사용 중`},queue:{inQueue:`대기열에 {{count}}개`,inQueue_plural:`대기열에 {{count}}개`},controls:`제어`,rfid:{reread:`RFID 재읽기`},ams:{load:`로드`,unload:`언로드`,feedTitle:`{{slot}}을(를) 어느 노즐로 로드할까요?`,feedPrompt:`Filament Track Switch는 이 슬롯을 양쪽 핫엔드로 보낼 수 있습니다. 공급할 쪽을 선택하세요.`,feedLeft:`왼쪽 노즐`,feedRight:`오른쪽 노즐`,feedAlreadyLoaded:`이미 로드됨`,switchNotReady:`Filament Track Switch가 아직 설정되지 않았습니다. 프린터에서 각 AMS를 입구에 할당한 뒤 다시 시도하세요.`},bedJog:{limitWarning:`수동 이동 중에는 이동 한계가 적용되지 않습니다. Bambu 펌웨어 버그로 인해 원격 명령에서는 소프트웨어 엔드스톱이 무시됩니다. 충돌하지 않도록 주의해서 이동하세요.`,title:`조그 컨트롤`,bed:`베드`,step:`이동 거리 (mm)`,up:`플레이트 위로`,down:`플레이트 아래로`,disabledWhilePrinting:`인쇄 중 비활성화됨`,notHomedTitle:`프린터 홈 설정 필요`,notHomedMessage:`마지막 인쇄 이후 홈 설정이 되지 않았습니다. 안전한 위치 지정을 위해 자동 홈 설정을 먼저 실행하거나, 그냥 이동하세요 — 소프트 엔드스톱이 무시됩니다.`,homeZ:`자동 홈 설정`,moveAnyway:`그냥 이동`,homingStarted:`프린터 자동 홈 설정 중…`},permission:{noAdd:`프린터를 추가할 권한이 없습니다`,noEdit:`프린터를 편집할 권한이 없습니다`,noDelete:`프린터를 삭제할 권한이 없습니다`,noControl:`프린터를 제어할 권한이 없습니다`,noFiles:`프린터 파일에 접근할 권한이 없습니다`,noAmsRfid:`AMS RFID를 재읽기할 권한이 없습니다`,noSmartPlugControl:`스마트 플러그를 제어할 권한이 없습니다`,noCamera:`카메라를 볼 권한이 없습니다`},modal:{addTitle:`프린터 추가`,editTitle:`프린터 편집`,myPrinter:`내 프린터`,selectModel:`모델 선택...`,locationGroup:`위치 / 그룹 (선택사항)`,locationPlaceholder:`예: 작업실, 사무실, 지하실`,autoArchiveLabel:`완료된 인쇄 자동 아카이브`,fromPrinterSettings:`프린터 설정에서`,modelOptional:`모델 (선택사항)`,saveChanges:`변경사항 저장`},skipObjects:{tooltip:`객체 건너뛰기`,onlyWhilePrinting:`객체 건너뛰기 (인쇄 중에만)`,requiresMultiple:`객체 건너뛰기 (2개 이상 필요)`,title:`객체 건너뛰기`,matchIdsInfo:`프린터 화면의 ID와 일치`,printerShowsIds:`프린터 화면에서 빌드 플레이트의 객체 ID를 표시합니다`,skipSelected:`선택 항목 건너뛰기`,skipping:`건너뛰는 중...`,noObjectsSelected:`선택된 객체 없음`,selectObjectsToSkip:`현재 인쇄에서 건너뛸 객체를 선택하세요`,skipped:`건너뜀`,objectsSkipped:`객체가 건너뛰어졌습니다`,activeCount:`{{count}}개 활성`,waitForLayer:`객체를 건너뛰려면 2층 이상을 기다리세요 (현재 {{layer}}층)`,skip:`건너뛰기`,confirmTitle:`객체를 건너뛰시겠습니까?`,confirmMessage:`"{{name}}"을(를) 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.`,confirmAllMessage:`남아 있는 모든 개체가 선택되었습니다. 인쇄 작업이 중지됩니다. 계속하시겠습니까?`,confirmMultipleMessage:`선택한 {{count}}개의 객체를 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.`},confirm:{deleteTitle:`프린터 삭제`,deleteMessage:`"{{name}}"을(를) 삭제하시겠습니까? 모든 연결 설정이 제거됩니다.`,deleteArchivesNote:`이 프린터의 모든 인쇄 기록이 영구적으로 삭제됩니다.`,keepArchivesNote:`인쇄 기록은 유지되지만 이 프린터와 연결이 해제됩니다.`,stopTitle:`인쇄 정지`,stopMessage:`"{{name}}"의 현재 인쇄를 정지하시겠습니까? 인쇄 작업이 취소됩니다.`,stopButton:`인쇄 정지`,pauseTitle:`인쇄 일시정지`,pauseMessage:`"{{name}}"의 현재 인쇄를 일시정지하시겠습니까?`,pauseButton:`인쇄 일시정지`,resumeTitle:`인쇄 재개`,resumeMessage:`"{{name}}"의 인쇄를 재개하시겠습니까?`,resumeButton:`인쇄 재개`,powerOnTitle:`프린터 전원 켜기`,powerOnMessage:`"{{name}}"의 전원을 켜시겠습니까?`,powerOnButton:`전원 켜기`,powerOffTitle:`프린터 전원 끄기`,powerOffMessage:`"{{name}}"의 전원을 끄시겠습니까?`,powerOffWarning:`경고: "{{name}}"이(가) 현재 인쇄 중입니다! 전원을 끄시겠습니까? 인쇄가 중단되고 프린터가 손상될 수 있습니다.`,powerOffButton:`전원 끄기`,haToggleTitle:`"{{name}}" 토글`,haToggleMessage:`Home Assistant 엔티티 {{entity}}를 토글하시겠습니까? 현재 켜져 있으면 전원이 꺼질 수 있습니다.`,haToggleWarning:`경고: "{{name}}"이(가) 현재 인쇄 중입니다! {{entity}}를 토글하면 전원이 차단되어 인쇄가 중단될 수 있습니다. 계속하시겠습니까?`,haToggleButton:`토글`},bulk:{select:`선택`,selectAll:`전체 선택`,selectByLocation:`위치별 선택`,selected:`{{count}}개 선택됨`,actions:{stop:`정지`,pause:`일시정지`,resume:`재개`,clearPlate:`베드 비우기`,clearHMS:`알림 지우기`},confirm:{stopTitle:`{{count}}개 인쇄 정지`,stopMessage:`{{count}}개 프린터의 활성 인쇄를 취소합니다. 이 작업은 취소할 수 없습니다.`,stopButton:`모두 정지`,pauseTitle:`{{count}}개 인쇄 일시정지`,pauseMessage:`{{count}}개 프린터의 활성 인쇄를 일시정지합니다.`,pauseButton:`모두 일시정지`,clearPlateTitle:`{{count}}개 인쇄 베드 비우기`,clearPlateMessage:`{{count}}개 프린터의 인쇄 베드를 비우고 대기열 작업을 시작할 수 있습니다.`,clearPlateButton:`모두 비우기`},success:`{{count}}개 프린터에서 {{action}} 완료`,partial:`{{succeeded}}개 성공, {{failed}}개 실패`,noneApplicable:`선택된 프린터 중 이 작업에 적합한 상태의 프린터가 없습니다`,selectByState:`상태별 선택`},discovery:{title:`프린터 검색`,searching:`검색 중...`,scanning:`스캔 중...`,scanProgress:`스캔 중... {{scanned}}/{{total}}`,foundPrinters:`{{count}}개 프린터 발견`,noPrintersFound:`프린터를 찾을 수 없습니다`,noPrintersFoundSubnet:`지정된 서브넷에서 프린터를 찾을 수 없습니다.`,noPrintersFoundNetwork:`네트워크에서 프린터를 찾을 수 없습니다.`,allConfigured:`검색된 모든 프린터가 이미 설정되어 있습니다.`,alreadyAdded:`이미 추가됨`,select:`선택`,manualEntry:`수동 입력`,addFromCloud:`클라우드에서 추가`,subnetToScan:`스캔할 서브넷`,dockerNote:`Docker가 감지되었습니다. CIDR 표기법으로 프린터의 서브넷을 입력하세요. docker-compose.yml에 network_mode: host가 필요합니다.`,scanSubnet:`서브넷에서 프린터 스캔`,discoverNetwork:`네트워크에서 프린터 검색`,scanningSubnet:`Bambu 프린터를 위해 서브넷 스캔 중...`,scanningNetwork:`네트워크 스캔 중...`,serialRequired:`일련번호 필수`,unknown:`알 수 없음`,failedToStart:`검색 시작 실패`,customSubnetOption:`사용자 지정 서브넷...`,customSubnetLabel:`사용자 지정 서브넷 (CIDR)`,customSubnetNote:`프린터가 이 서버와 다른 네트워크에 있는 경우 사용자 지정 서브넷을 사용하세요. FTP (990) 및 MQTT (8883) 포트가 라우팅 경계를 통해 접근 가능해야 합니다.`},drying:{start:`건조 시작`,stop:`건조 정지`,temperature:`온도`,duration:`시간`,hours:`시간`,timeRemaining:`{{time}} 남음`,active:`건조 중`,targetSummary:`{{filament}} @ {{temp}}°C`,notSupported:`건조 지원 안 됨`,powerRequired:`건조를 활성화하려면 AMS 전원 어댑터를 연결하세요`,cannotDryNow:`AMS가 지금은 건조를 시작할 수 없습니다`,startingDrying:`건조 시작 중...`,toastCommandSent:`건조 명령을 전송했습니다`,toastStopped:`건조를 중지했습니다`,toastNotStarted:`프린터가 명령을 수락했지만 AMS가 건조를 시작하지 않았습니다. AMS 전원 어댑터가 연결되어 있는지, 프린터가 대기 상태인지 확인하십시오.`,screenOnly:`이 프린터에서는 AMS 건조를 프린터 자체 화면에서만 제어할 수 있습니다 (Bambu 제한 사항)`,stoppingDrying:`건조 정지 중...`,rotateTray:`건조 중 스풀 회전`,rotateUnavailableReason:`사용할 수 없음 — 이 AMS의 슬롯이 툴헤드로 로드되어 있습니다. 스풀이 공급 튜브에 의해 고정되어 회전할 수 없습니다. 먼저 필라멘트를 뺀 후 다시 시도하십시오.`,startMode:`시작 시간`,modeNow:`지금`,modeDelay:`지연 후`,modeAtTime:`시각 지정`,schedule:`예약하기`,scheduledFor:`건조 예약: {{time}}`,scheduledAsap:`건조 예약됨 (프린터 대기 중)`,cancelScheduled:`예약된 건조 취소`,scheduleFailed:`건조 예약에 실패했습니다`,retractFilament:`건조를 시작하려면 AMS 출구의 필라멘트를 빼내세요`,waitingAmsNotFound:`AMS 감지를 기다리는 중`,waitingOffline:`프린터가 온라인 상태가 되기를 기다리는 중`,waitingPrinterBusy:`프린터가 사용 가능해지기를 기다리는 중`,waitingAlreadyDrying:`현재 건조 주기가 끝나기를 기다리는 중`,waitingInterrupted:`중단됨, 프린터가 사용 가능해지면 다시 시작됩니다`,scheduleFailedReason:`예약된 건조에 실패했습니다: {{reason}}`,scheduleFailedUnknown:`알 수 없는 오류`,dismissFailed:`닫기`},amsBackup:{titleOn:`AMS 필라멘트 백업이 켜져 있습니다. 비활성화하려면 클릭하세요.`,titleOff:`AMS 필라멘트 백업이 꺼져 있습니다. 활성화하려면 클릭하세요.`,titleUnknown:`이 프린터에서는 AMS 필라멘트 백업 상태를 확인할 수 없습니다.`,toastEnabled:`AMS 필라멘트 백업이 활성화되었습니다`,toastDisabled:`AMS 필라멘트 백업이 비활성화되었습니다`,modalTitle:`AMS 필라멘트 백업`,modalHelp:`활성 슬롯이 소진되면 프린터는 같은 프리셋과 색상의 슬롯을 이 순서로 순환합니다.`,modalNoSlots:`필라멘트가 로드되지 않았습니다.`,modalNoPairs:`백업 쌍이 없습니다 — 프리셋과 색상이 모두 일치하는 슬롯이 없습니다.`,extruderRightShort:`우`,extruderLeftShort:`좌`,stateOn:`활성화됨`,stateOff:`비활성화됨`,stateUnknown:`이 프린터에서 지원되지 않음`},activeJobSlot:{title:`이 슬롯은 활성 인쇄의 필라멘트 {{n}}입니다`,ariaLabel:`활성 인쇄 슬롯 {{n}}`},expectedSlot:{title:`프린터가 이 슬롯의 필라멘트를 기다리고 있습니다`,ariaLabel:`요청된 필라멘트 슬롯 {{n}}`,label:`{{ams}} · 슬롯 {{slot}}`,external:`외부 스풀`},filaments:`필라멘트`,externalSpool:{hide:`외부 스풀 숨기기`,show:`외부 스풀 표시`},openCameraOverlay:`카메라 오버레이 열기`,openCameraWindow:`새 창에서 카메라 열기`,firmwareUpdateAvailable:`펌웨어 업데이트 가능: {{current}} → {{latest}}`,firmwareUpToDate:`펌웨어 {{version}} — 최신 상태`,firmwareUpdateButton:`업데이트`,plateDetection:{noPermission:`프린터를 업데이트할 권한이 없습니다`,enabledClick:`플레이트 확인 활성화됨 - 클릭하여 비활성화`,disabledClick:`플레이트 확인 비활성화됨 - 클릭하여 활성화`,manageCalibration:`플레이트 감지 캘리브레이션 관리`,calibrationRequired:`캘리브레이션 필요`,calibrationInstructions:`빌드 플레이트가 완전히 비어 있는지 확인한 후 캘리브레이션을 클릭하세요.`,calibrationDescription:`캘리브레이션은 빈 플레이트의 참조 이미지를 캡처합니다. 이후 확인 시 이 참조와 비교하여 객체를 감지합니다.`,calibrationTip:`팁: 다른 플레이트에 대해 최대 5개의 캘리브레이션을 저장할 수 있습니다. 확인 시 시스템이 자동으로 가장 잘 맞는 것을 사용합니다.`,plateEmpty:`플레이트가 비어 있는 것으로 보입니다`,objectsDetected:`플레이트에 객체가 감지되었습니다`,confidence:`신뢰도`,difference:`차이`,analysisPreview:`분석 미리보기:`,analysisLegend:`초록 박스 = 감지 영역, 빨간 오버레이 = 캘리브레이션과의 차이`,savedReferences:`저장된 참조 ({{count}}/{{max}})`,deleteReference:`참조 삭제`,labelPlaceholder:`라벨...`,clickToEdit:`{{label}} - 클릭하여 편집`,clickToAddLabel:`클릭하여 라벨 추가`},speed:{title:`인쇄 속도`,silent:`조용함 (50%)`,standard:`표준 (100%)`,sport:`스포츠 (124%)`,ludicrous:`루디크러스 (166%)`},airduct:{title:`에어덕트 모드`,cooling:`냉각`,heating:`가열`},noSdCard:`SD 없음`,door:{open:`열림`,closed:`닫힘`},fans:{partCooling:`파트 냉각 팬`,auxiliary:`보조 팬`,leftAuxiliary:`왼쪽 보조 팬`,exhaust:`배기`,chamber:`챔버 팬`},clickToViewHmsErrors:`HMS 오류 보기 클릭`,aiDetection:{safe:`안전`,warning:`경고`,failure:`실패`,idle:`대기 중`,error:`확인 안 함`,unknown:`시작 중`,tooltipError:`AI 실패 감지가 이 인쇄를 확인하고 있지 않습니다: {{reason}} - 클릭하여 자세히 보기`,tooltipUnknown:`AI 실패 감지: 첫 번째 결과를 기다리는 중 - 클릭하여 자세히 보기`,errorHint:`이 인쇄는 확인되고 있지 않습니다. 아래 문제가 해결되면 감지가 자동으로 재개됩니다.`,tooltip:`AI 실패 감지: {{status}} (점수 {{score}}) - 클릭하여 자세히 보기`,tooltipIdle:`AI 실패 감지 활성화됨 - 다음 인쇄부터 모니터링을 시작합니다 - 클릭하여 자세히 보기`,modalTitle:`AI 실패 감지 - {{name}}`,currentStatus:`상태`,score:`점수`,framesAnalyzed:`분석된 프레임`,idleHint:`현재 모니터링 중인 인쇄가 없습니다. 다음 인쇄부터 자동으로 모니터링을 시작합니다.`,lastError:`마지막 오류`,openSettings:`설정 열기`},estimatedCompletion:`예상 완료 시간`,plateNumber:`플레이트 {{number}}`,slotOptions:`슬롯 옵션`,amsPopup:{friendlyName:`AMS 이름`,friendlyNamePlaceholder:`예: AMS 친숙한 이름`,serialNumber:`일련번호`,firmwareVersion:`펌웨어`,save:`저장`,clear:`지우기`,noEditPermission:`AMS 유닛 이름을 변경할 권한이 없습니다`},firmwareModal:{title:`펌웨어 업데이트`,titleUpToDate:`펌웨어 정보`,currentVersion:`현재:`,latestVersion:`최신:`,releaseNotes:`릴리스 노트`,checkingPrereqs:`전제 조건 확인 중...`,sdCardReady:`SD 카드 준비됨. 아래를 클릭하여 펌웨어를 업로드하세요.`,uploadedSuccess:`SD 카드에 펌웨어가 업로드되었습니다!`,applyInstructions:`프린터에서 업데이트를 적용하려면:`,step1:`프린터 터치스크린에서 설정으로 이동하세요`,step2:`펌웨어로 이동하세요`,step3:`SD 카드에서 업데이트를 선택하세요`,step4:`업데이트에 10-20분이 소요됩니다`,done:`완료`,starting:`시작 중...`,uploadFirmware:`펌웨어 업로드`,uploadFailed:`업로드 시작 실패: {{error}}`,uploadedToast:`펌웨어 업로드됨! 프린터 화면에서 업데이트를 시작하세요.`,availableVersions:`사용 가능한 버전`,usable:`사용 가능`,unavailable:`사용 불가`,installed:`설치됨`,newerBadge:`최신`,olderBadge:`이전`,currentBadge:`현재`},accessCodePlaceholder:`현재 값을 유지하려면 비워두세요`,roi:{title:`감지 영역 (ROI)`,xStart:`X 시작`,yStart:`Y 시작`,width:`너비`,height:`높이`,instruction:`빌드 플레이트에 집중할 감지 영역을 조정하세요. 미리보기의 초록 박스가 현재 영역을 표시합니다.`},developerModeWarning:`개발자 LAN 모드가 활성화되지 않음: {{names}}. 일부 기능이 작동하지 않을 수 있습니다.`,howToEnable:`활성화 방법`,incompatibleFile:`이 파일은 {{slicedFor}}용으로 슬라이싱되었지만, 이 프린터는 {{printerModel}}입니다`,dropNotPrintable:`.gcode 및 .gcode.3mf 파일만 인쇄할 수 있습니다`,dropToPrint:`놓아서 인쇄`,dropToQueue:`놓아서 대기열에 추가`,addPreflight:{checking:`연결 확인 중...`,warning:`일부 연결 확인이 실패했습니다. 이 프린터가 오프라인으로 표시될 수 있습니다. 아래 항목을 검토하고 수정하거나 그냥 저장하세요.`,back:`뒤로`,saveAnyway:`그냥 저장`}},archives:{media:{title:`출력 동영상`,download:`출력 동영상 다운로드`,searching:`프린터에서 동영상을 확인하는 중…`,searchFailed:`프린터에서 동영상을 확인할 수 없습니다.`,none:`이 출력의 타임랩스 또는 IP 카메라 영상 조각을 찾지 못했습니다.`,attachedTimelapse:`첨부된 타임랩스`,printerFiles:`프린터에 남아 있는 파일`,downloadSelected:`선택 항목 다운로드`,printerMissing:`프린터가 더 이상 구성되어 있지 않습니다`,timelapseUnavailable:`타임랩스 디렉터리를 읽을 수 없습니다`,ipcamUnavailable:`IP 카메라 디렉터리를 읽을 수 없습니다`},title:`인쇄 아카이브`,no3mfBanner:{title:`최근 일부 인쇄가 썸네일과 함께 아카이브되지 않았습니다`,body:`슬라이서가 프린터의 SD 카드에 .gcode.3mf 파일을 남기지 않아서 Bambuddy가 썸네일이나 슬라이서 메타데이터를 가져올 수 없었습니다. 일반적으로 슬라이서 (Bambu Studio / OrcaSlicer 장치 탭)에서 "전송된 파일을 외부 저장소에 저장"이 꺼져 있을 때 발생합니다.`,docsLink:`설치 단계 4 보기`,docsLinkInternalStorage:`왜 이런 일이 생기나요`,titleInternalStorage:`최근 일부 출력물이 프린터 내부 저장소에 남았습니다`,bodyInternalStorage:`슬라이싱된 파일을 Bambu Studio가 카드가 아니라 프린터 내부 저장소에 저장해서 Bambuddy가 FTP로 읽을 것이 없었습니다. H2 시리즈와 P2S에서는 «인쇄» 버튼이 항상 그렇게 동작하며, 선택할 수 있는 것은 «보내기»뿐인데 그것도 기본값이 «캐시»입니다. 해당 출력물은 이름과 시간과 함께 계속 보관되지만 썸네일과 슬라이서 메타데이터는 없습니다. 완전한 기록을 남기려면 Bambuddy에서 출력을 시작하거나 OrcaSlicer로 슬라이싱하세요. Bambu Studio를 쓴다면 «보내기»에서 «외부 저장소»를 고른 뒤 출력을 시작하면 됩니다. 모두 프린터에 카드나 USB 메모리가 필요합니다.`,titleNoExternalStorage:`최근 일부 출력물을 보관하지 못했습니다 — 프린터에 저장소가 없습니다`,bodyNoExternalStorage:`프린터 슬롯에 카드도 USB도 감지되지 않아 슬라이싱된 파일이 저장될 곳이 없었고 Bambuddy가 읽을 것도 없었습니다. 하나 넣으면 다음 출력물은 온전히 보관됩니다.`,titleInternalHistory:`최근 일부 출력물은 이미 프린터에 있던 파일에서 시작되었습니다`,bodyInternalHistory:`해당 출력물은 프린터 자체 라이브러리에서 실행되었습니다 — 화면에서의 재출력, Handy에서의 시작, 또는 이전에 보내 두고 나중에 출력한 파일입니다. Bambuddy는 출력 파일을 FTP로 읽는데 FTP는 카드나 USB만 제공하고, 프린터는 그 라이브러리를 FTP가 닿지 않는 영역에 보관하므로 읽을 3MF가 없었습니다. 이 출력물들은 아무것도 전송되지 않았으므로 슬라이서 설정으로는 해결되지 않습니다. 이름과 시간과 함께 계속 보관되며, "아카이브 편집"에서 사용된 필라멘트를 직접 입력할 수 있습니다. 온전한 보관을 원하면 Bambuddy나 슬라이서에서 출력을 시작하세요.`,dismissLabel:`이 알림 닫기`},searchPlaceholder:`아카이브 검색...`,filterByPrinter:`프린터별 필터`,filterByStatus:`상태별 필터`,sortBy:`정렬 기준`,sortNewest:`최신순`,sortOldest:`오래된순`,sortName:`이름`,sortDuration:`시간`,sortLargest:`큰 것 먼저`,sortSmallest:`작은 것 먼저`,sortSize:`크기`,noArchives:`아카이브를 찾을 수 없습니다`,noArchivesSearch:`검색 조건에 맞는 아카이브가 없습니다`,originalPrintNotVisible:`원본 인쇄가 보이지 않음 - 필터를 지워보세요`,noArchivesYet:`아직 아카이브가 없습니다`,prints:`인쇄`,pagination:{showing:`표시 중`,to:`~`,of:`/`,show:`표시`,page:`페이지`,all:`전체`},loadingArchives:`아카이브 로딩 중...`,releaseToUpload:`놓아서 업로드`,showAll:`모두 보기`,showFavoritesOnly:`즐겨찾기만 보기`,gridView:`그리드 보기`,listView:`목록 보기`,calendarView:`달력 보기`,logView:`인쇄 로그`,manageTags:`태그 관리`,showFailedPrints:`실패한 인쇄 표시`,hideFailedPrints:`실패한 인쇄 숨기기`,hideDuplicates:`중복 숨기기`,viewOriginalPrint:`원본 인쇄 보기 클릭 (#{{id}})`,printTime:`인쇄 시간`,filamentUsed:`사용된 필라멘트`,cost:`비용`,preview:`미리보기`,deleteArchive:`아카이브 삭제`,deleteConfirm:`이 아카이브를 삭제하시겠습니까?`,favorite:`즐겨찾기`,unfavorite:`즐겨찾기에서 제거`,viewDetails:`상세 보기`,status:{completed:`완료`,failed:`실패`,stopped:`정지됨`},toast:{source3mfAttached:`소스 3MF 첨부됨: {{filename}}`,failedUploadSource3mf:`소스 3MF 업로드 실패`,source3mfRemoved:`소스 3MF 제거됨`,failedRemoveSource3mf:`소스 3MF 제거 실패`,f3dAttached:`F3D 첨부됨: {{filename}}`,failedUploadF3d:`F3D 업로드 실패`,f3dRemoved:`F3D 제거됨`,failedRemoveF3d:`F3D 제거 실패`,timelapseAttached:`타임랩스 첨부됨: {{filename}}`,timelapseAlreadyAttached:`타임랩스가 이미 첨부됨`,noMatchingTimelapse:`일치하는 타임랩스를 찾을 수 없습니다`,failedScanTimelapse:`타임랩스 스캔 실패`,failedAttachTimelapse:`타임랩스 첨부 실패`,timelapseRemoved:`타임랩스 제거됨`,failedRemoveTimelapse:`타임랩스 제거 실패`,timelapseUploaded:`타임랩스 업로드됨: {{filename}}`,failedUploadTimelapse:`타임랩스 업로드 실패`,archiveDeleted:`아카이브가 삭제되었습니다`,failedDeleteArchive:`아카이브 삭제 실패`,addedToFavorites:`즐겨찾기에 추가됨`,removedFromFavorites:`즐겨찾기에서 제거됨`,projectUpdated:`프로젝트가 업데이트되었습니다`,failedUpdateProject:`프로젝트 업데이트 실패`,linkCopied:`링크가 클립보드에 복사되었습니다`,failedCopyLink:`링크 복사 실패`,photoDeleted:`사진이 삭제되었습니다`,failedDeletePhoto:`사진 삭제 실패`,failedDeleteArchives:`아카이브 삭제 실패`,failedUpdateFavorites:`즐겨찾기 업데이트 실패`,exportDownloaded:`내보내기 다운로드됨`,exportFailed:`내보내기 실패`},menu:{print:`인쇄`,openInBambuStudio:`슬라이서에서 열기`,slice:`슬라이스`,externalLink:`외부 링크`,viewOnMakerWorld:`MakerWorld에서 보기`,preview3d:`3D 미리보기`,viewTimelapse:`타임랩스 보기`,scanForTimelapse:`타임랩스 검색`,uploadTimelapse:`타임랩스 업로드`,removeTimelapse:`타임랩스 제거`,downloadSource3mf:`소스 3MF 다운로드`,uploadSource3mf:`소스 3MF 업로드`,replaceSource3mf:`소스 3MF 교체`,removeSource3mf:`소스 3MF 제거`,uploadF3d:`F3D 업로드`,replaceF3d:`F3D 교체`,downloadF3d:`F3D 다운로드`,removeF3d:`F3D 제거`,download:`다운로드`,copyDownloadLink:`다운로드 링크 복사`,qrCode:`QR 코드`,viewPhotos:`사진 보기`,viewPhotosCount:`사진 보기 ({{count}})`,projectPage:`프로젝트 페이지`,addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,edit:`편집`,goToProject:`프로젝트로 이동: {{name}}`,addToProject:`프로젝트에 추가`,removeFromProject:`프로젝트에서 제거`,loading:`로딩 중...`,noProjectsAvailable:`사용 가능한 프로젝트 없음`,searchProjects:`프로젝트 검색…`,select:`선택`,deselect:`선택 해제`,delete:`삭제`,printLog:`인쇄 기록`},permission:{noReprint:`이 아카이브를 재인쇄할 권한이 없습니다`,noAddToQueue:`대기열에 추가할 권한이 없습니다`,noUpdateArchives:`아카이브를 업데이트할 권한이 없습니다`,noUploadFiles:`파일을 업로드할 권한이 없습니다`,noDownload:`아카이브를 다운로드할 권한이 없습니다`,noCopyLink:`다운로드 링크를 복사할 권한이 없습니다`,noDelete:`이 아카이브를 삭제할 권한이 없습니다`,noEdit:`이 항목을 편집할 권한이 없습니다`,noCreate:`아카이브를 만들 권한이 없습니다`},platePicker:{title:`미리 볼 플레이트 선택`,hint:`이 아카이브에는 여러 플레이트가 있습니다. G코드 뷰어에서 열 플레이트를 선택하세요.`,plateLabel:`플레이트 {{index}}`,objectCount:`{{count}}개 객체`,objectCount_plural:`{{count}}개 객체`,noGcode:`이 아카이브에는 미리 볼 슬라이싱된 G코드가 없습니다. Bambu Studio에서 먼저 슬라이싱하세요.`},card:{previousPlate:`이전 플레이트`,nextPlate:`다음 플레이트`,plateNumber:`플레이트 {{index}}`,moreOptions:`더 많은 옵션은 우클릭`,addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,cancelled:`취소됨`,failed:`실패`,duplicate:`중복`,duplicateTitle:`이 모델은 이전에 인쇄된 적이 있습니다`,openSource3mf:`Bambu Studio에서 소스 3MF 열기 (더 많은 옵션은 우클릭)`,downloadF3d:`Fusion 360 디자인 파일 다운로드`,viewTimelapse:`타임랩스 보기`,viewPhoto:`사진 1장 보기`,viewPhotos:`사진 {{count}}장 보기`,openFolder:`폴더 열기: {{name}}`,slicedFile:`슬라이싱된 파일 - 인쇄 준비 완료`,sourceFile:`소스 파일만 - AMS 매핑 없음`,gcode:`GCODE`,source:`소스`,project:`프로젝트: {{name}}`,estimated:`예상: {{time}}`,actual:`실제: {{time}}`,accuracy:`정확도: {{percent}}%`,filament:`{{weight}}g`,layer:`{{count}}층`,layers:`{{count}}층`,object:`{{count}}개 객체`,objects:`{{count}}개 객체`,slicedFor:`{{model}}용으로 슬라이싱됨`,uploadedBy:`업로드한 사용자`,noPermissionReprint:`재인쇄 권한이 없습니다`,noFileForReprint:`3MF 파일 없음 — 인쇄 기록 시 프린터에서 파일을 다운로드할 수 없었습니다`,slicerAmsMapping:`AMS 매핑 저장됨({{printer}})`,slicerAmsMappingTooltip:`슬라이서가 선택한 AMS 슬롯이 {{printer}}용으로 저장되었습니다. 슬롯 번호는 해당 프린터에서만 의미가 있으므로, 다시 {{printer}}로 보낼 때만 재인쇄에서 재사용됩니다.`,noPermissionEdit:`아카이브를 편집할 권한이 없습니다`,noPermissionDelete:`아카이브를 삭제할 권한이 없습니다`,openInBambuStudio:`슬라이서에서 열기`,openInBambuStudioToSlice:`슬라이스하려면 슬라이서에서 열기`,slice:`슬라이스`,externalLink:`외부 링크`,makerWorld:`MakerWorld: {{designer}}`,viewProject:`프로젝트 보기`,noExternalLink:`외부 링크 없음`,preview3d:`3D 미리보기`,download:`다운로드`,edit:`편집`,delete:`삭제`,runsBadge:`{{count}}회 인쇄`,runsBadgeTitle:`총 {{count}}회 인쇄 — {{successful}}회 성공, {{failed}}회 실패. 전체 인쇄 기록을 보려면 클릭하세요.`},modal:{deleteArchive:`아카이브 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteButton:`삭제`,removeSource3mf:`소스 3MF 제거`,removeSource3mfConfirm:`"{{name}}"에서 소스 3MF 파일을 제거하시겠습니까? 원본 슬라이서 프로젝트 파일이 삭제됩니다.`,removeButton:`제거`,removeF3d:`F3D 제거`,removeF3dConfirm:`"{{name}}"에서 Fusion 360 디자인 파일을 제거하시겠습니까?`,removeTimelapse:`타임랩스 제거`,removeTimelapseConfirm:`"{{name}}"에서 타임랩스 영상을 제거하시겠습니까?`,timelapse:`{{name}} - 타임랩스`,selectTimelapse:`타임랩스 선택`,selectTimelapseDesc:`자동 일치 항목 없음. 이 인쇄의 타임랩스를 선택하세요:`,deleteArchives:`아카이브 삭제`,deleteArchivesConfirm:`{{count}}개 아카이브를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteCount:`{{count}}개 삭제`,deletePurgeStats:`빠른 통계에서도 이 인쇄 항목 제거 (필라멘트, 시간, 비용, 에너지)`,deleteQueueItemsWarning:`이 아카이브와 연결된 {{count}}개의 대기열 항목도 함께 제거됩니다.`,deleteBlockedByPrinting:`삭제할 수 없습니다 — {{count}}개의 대기열 항목이 현재 인쇄 중입니다. 인쇄를 먼저 중지한 다음 다시 시도하십시오.`},page:{title:`아카이브`,printsCount:`{{total}}개 중 {{filtered}}개 인쇄`,dropFilesHere:`.3mf 파일을 여기에 놓으세요`,releaseToUpload:`놓아서 업로드`,only3mfSupported:`.3mf 파일만 지원됩니다`,close:`닫기`,selected:`{{count}}개 선택됨`,selectAll:`전체 선택`,tags:`태그`,project:`프로젝트`,favorite:`즐겨찾기`,delete:`삭제`,toggledFavorites:`{{count}}개 아카이브의 즐겨찾기가 변경됨`,failedUpdateFavorites:`즐겨찾기 업데이트 실패`,archivesDeleted:`{{count}}개 아카이브가 삭제됨`,failedDeleteArchives:`아카이브 삭제 실패`,photoDeleted:`사진이 삭제됨`,failedDeletePhoto:`사진 삭제 실패`},list:{name:`이름`,printer:`프린터`,date:`날짜`,size:`크기`,actions:`작업`,hasTimelapse:`타임랩스 있음`},log:{date:`날짜`,printName:`인쇄 이름`,printer:`프린터`,user:`사용자`,status:`상태`,duration:`소요 시간`,filament:`필라멘트`,filamentUsed:`사용 필라멘트량`,cost:`비용`,energy:`전력량`,energyCost:`전력 비용`,completedAt:`완료`,columns:`열`,sortBy:`{{column}} 기준 정렬`,allPrinters:`모든 프린터`,allUsers:`모든 사용자`,allStatuses:`모든 상태`,cancelled:`취소됨`,skipped:`건너뜀`,dateFrom:`시작`,dateTo:`종료`,noEntries:`인쇄 로그 항목이 없습니다`,showing:`{{total}}개 중 {{count}}개 표시`,rowsPerPage:`행`,page:`페이지`,prev:`이전`,next:`다음`,clearLog:`로그 지우기`,clearLogTitle:`인쇄 로그 지우기`,clearLogConfirm:`모든 인쇄 로그 항목이 영구적으로 삭제됩니다. 아카이브와 대기열 항목은 영향받지 않습니다. 이 작업은 취소할 수 없습니다. 계속하시겠습니까?`,clearLogButton:`모두 지우기`,cleared:`{{count}}개 로그 항목이 지워졌습니다`,clearFailed:`인쇄 로그 지우기 실패`,deleteEntryTitle:`인쇄 로그 항목 삭제`,deleteEntryConfirm:`이 항목이 로그에서 삭제되며 필라멘트, 시간 및 비용 기여도가 빠른 통계에서 제외됩니다. 해당 아카이브(있는 경우)는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.`,entryDeleted:`인쇄 로그 항목이 삭제되었습니다`,entryDeleteFailed:`인쇄 로그 항목 삭제 실패`,editEntryTitle:`인쇄 로그 항목 편집`,editEntryDescription:`이 인쇄를 분류합니다. 실패 분석 위젯이 이 값으로 그룹화하므로 업데이트가 통계에 즉시 반영됩니다.`,entryUpdated:`인쇄 로그 항목이 업데이트되었습니다`,entryUpdateFailed:`인쇄 로그 항목 업데이트 실패`,statuses:{completed:`완료됨`,failed:`실패`,stopped:`중지됨`,cancelled:`취소됨`,skipped:`건너뜀`}},runLog:{title:`인쇄 기록`,modalTitle:`인쇄 기록 — {{name}}`,modalTitleFallback:`이 아카이브`,empty:`이 아카이브에 대해 기록된 인쇄 이벤트가 없습니다.`,col:{date:`날짜`,status:`상태`,duration:`소요 시간`,filament:`필라멘트`,cost:`비용`},status:{completed:`완료`,failed:`실패`,cancelled:`취소됨`,stopped:`중지됨`,skipped:`건너뜀`,printing:`인쇄 중`}}},dispatchToast:{untitled:`인쇄 작업`,startingPrints:`인쇄 시작 중`,progressSummary:`{{complete}}/{{total}} 완료 • 처리 중: {{processing}}`,expandDetails:`디스패치 세부 정보 펼치기`,collapseDetails:`디스패치 세부 정보 접기`,awaitingPrinter:`프린터 응답 대기 중…`,status:{processing:`처리 중`,completed:`완료`,failed:`실패`},failed:{generic:`디스패치 실패`,upload_failed:`프린터로 업로드 실패`,start_command_failed:`프린터가 시작 명령을 거부했습니다`},dismiss:`닫기`},pipelineRuns:{title:`파이프라인 실행`,loading:`불러오는 중…`,empty:`아직 파이프라인 실행이 없습니다.`,filter:{pipeline:`파이프라인`,status:`상태`,target:`대상`,all:`전체`,allPipelines:`모든 파이프라인`,allStatus:`모든 상태`,allTargets:`모든 대상`,clear:`필터 지우기`,noMatches:`현재 필터와 일치하는 실행이 없습니다.`},totalCount_one:`{{n}}회 실행`,totalCount_other:`{{n}}회 실행`,copies:`사본 {{n}}`,failedCount:`실패 {{n}}`,copyN:`사본 {{n}}`,retryFailed:`실패 재시도`,retryOf:`#{{n}}의 재시도`,pagination:`{{total}} 중 {{start}}–{{end}}`,toast:{cancelled:`실행 취소됨`,cancelFailed:`취소 실패`,retryStarted:`재시도 시작됨`,retryFailed:`재시도 실패`,cleared:`{{n}}회 실행 삭제됨`,clearFailed:`삭제 실패`},clearLog:`로그 지우기`,clearConfirmTitle:`로그를 지울까요?`,clearConfirmBody:`완료, 실패, 취소, 부분 실패한 모든 파이프라인 실행을 삭제합니까? 진행 중인 실행은 유지됩니다. 되돌릴 수 없습니다.`,clearConfirmAction:`지우기`,jobStatus:{pending:`대기 중`,awaiting_printer:`프린터 대기 중`,queued:`대기 중`,printing:`인쇄 중`,completed:`완료됨`,failed:`실패`,cancelled:`취소됨`},cancelledByUser:`사용자에 의해 취소됨`},queue:{title:`인쇄 대기열`,subtitle:`인쇄 작업을 예약하고 관리하세요`,editQueueItem:`대기열 항목 편집`,selectAllPlates:`{{count}}개 플레이트 전체 선택`,deselectAll:`전체 해제`,printQueued:`인쇄가 대기열에 추가됨`,printQueuedWillStartWhenIdle:`프린터가 유휴 상태가 되면 시작됩니다`,itemsQueued:`{{count}}개 항목이 대기열에 추가됨`,sending:`전송 중...`,sendingProgress:`{{current}}/{{total}} 전송 중...`,adding:`추가 중...`,addingProgress:`{{current}}/{{total}} 추가 중...`,savingProgress:`{{current}}/{{total}} 저장 중...`,clearQueue:`대기열 지우기`,clearHistory:`기록 지우기`,emptyQueue:`대기열이 비어 있습니다`,position:`위치`,scheduledTime:`예약 시간`,moveUp:`위로 이동`,moveDown:`아래로 이동`,startNow:`지금 시작`,printingInProgress:`인쇄 중...`,viewArchive:`아카이브 보기`,viewInFileManager:`파일 관리자에서 보기`,itemCount:`{{count}}개 항목`,itemCount_plural:`{{count}}개 항목`,dragToReorder:`드래그하여 순서 변경 (즉시만)`,reorderHint:`위치는 즉시 항목에만 영향을 줍니다. 예약된 항목은 설정된 시간에 실행됩니다.`,sjf:{label:`SJF`,tooltip:`최단 작업 우선 — 스케줄러가 짧은 인쇄를 우선합니다`},addedBy:`{{name}}님이 추가함`,nextInQueue:`다음 대기`,clearPlateSuccess:`플레이트 비워짐 — 다음 인쇄 준비 완료`,plateNumber:`플레이트 {{index}}`,quantity:`수량`,quantityHint:`{{count}}개 대기열 항목 생성`,plateQuantityLabel:`{{plate}} 실행 횟수`,plateQuantityTotal_one:`총 {{count}}회`,plateQuantityTotal_other:`총 {{count}}회`,batchOrders:{title:`배치 주문`,emptyTitle:`배치 주문 없음`,emptyDescription:`여러 플레이트 파일이나 한 플레이트의 여러 복사본을 대기열에 넣으면 주문이 진행 상황과 함께 여기에 표시됩니다.`,filter:{active:`진행 중`,completed:`완료`,cancelled:`취소됨`,all:`전체`},status:{active:`진행 중`,completed:`완료`,cancelled:`취소됨`},noTargets:`그룹만`,noTargetsHint:`플레이트별 목표 수량이 도입되기 전에 생성되어 목표가 아닌 대기열에 넣은 실행을 추적합니다.`,dispatchRemaining:`남은 {{count}}개 대기열 추가`,dispatchPlate:`남은 항목 추가`,strandedPlate:`설정을 복사할 실행이 없습니다`,strandedNotice:`아직 남은 {{owed}}건 중 {{runs}}건을 대기열에 추가할 수 없습니다. 해당 플레이트에는 설정을 복사할 대기 중이거나 완료된 실행이 남아 있지 않습니다. 파일에서 해당 플레이트를 한 번 대기열에 추가하거나 주문을 취소하세요.`,dispatched:`{{name}}의 남은 실행을 대기열에 추가했습니다`,plateProgress:`{{target}}개 중 {{completed}}개 완료`,remaining:`{{count}}개 남음`,failed:`{{count}}개 실패`,printing:`{{count}}개 인쇄 중`,wholeFile:`파일 전체`,due:`기한 {{date}}`,costSoFar:`현재까지 {{amount}}`,costRemaining:`({{amount}} 남음)`},activeBatches:`활성 배치`,batchProgress:`{{total}}개 중 {{completed}}개 완료`,cancelBatch:`나머지 취소`,batchCancelled:`남은 배치 항목이 취소되었습니다`,cancelBatchConfirmTitle:`배치 취소`,cancelBatchConfirmMessage:`이 주문을 종료할까요? 대기열에 남은 실행은 취소되고, 생산하지 못한 분량도 더 이상 요구하지 않습니다.`,batch:{defaultName:`배치`,label:`{{count}}개 항목`,label_plural:`{{count}}개 항목`,pendingCount:`{{count}}개 대기 중`,pendingCount_plural:`{{count}}개 대기 중`,expand:`배치 펼치기`,collapse:`배치 접기`,groupAsBatch:`배치로 묶기…`,groupAsBatchDescription:`선택한 {{count}}개 항목을 접을 수 있는 하나의 배치로 묶습니다.`,nameLabel:`배치 이름`,namePlaceholder:`예: 금요일 선물`,create:`배치 만들기`,ungroup:`그룹 해제`,ungroupConfirmTitle:`배치 그룹을 해제하시겠습니까?`,ungroupConfirmMessage:`항목은 큐에 남아 있지만 더 이상 함께 그룹화되지 않습니다.`,dragGroup:`그룹 드래그`},tabs:{batches:`배치`,queue:`큐`,history:`기록`,timeline:`타임라인`,pipelines:`파이프라인`},layout:{flatList:`목록`,byPrinter:`프린터별`,groupByPrinter:`프린터별로 묶기`},history:{emptyTitle:`아직 기록이 없습니다`,emptyDescription:`완료·취소·실패한 인쇄가 여기에 표시됩니다.`,showMore:`더 보기`,showingCount:`{{total}}개 중 {{shown}}개 표시`},dragGhost:{multiCount:`{{count}}개 항목`,batch:`{{name}} ({{count}}부)`,batch_plural:`{{name}} ({{count}}부)`},sections:{currentlyPrinting:`현재 인쇄 중`,queued:`대기 중`,history:`기록`},status:{pending:`대기 중`,waiting:`기다리는 중`,printing:`인쇄 중`,paused:`일시정지`,completed:`완료`,failed:`실패`,skipped:`건너뜀`,cancelled:`취소됨`},summary:{printing:`인쇄 중`,queued:`대기 중`,totalTime:`총 대기열 시간`,totalWeight:`총 대기열 무게`,history:`기록`},filter:{allPrinters:`모든 프린터`,unassigned:`미할당`,allStatus:`모든 상태`,allLocations:`모든 위치`,any:`전체`},sort:{byPosition:`위치별 정렬`,byName:`이름별 정렬`,byPrinter:`프린터별 정렬`,bySchedule:`예약별 정렬`,byDate:`날짜별 정렬`,ascendingOldest:`오름차순 (오래된 것 먼저)`,descendingNewest:`내림차순 (최신 것 먼저)`},badges:{staged:`준비됨`,requiresPrevious:`이전 성공 필요`,autoPowerOff:`자동 전원 끄기`,gcodeInjection:`G코드`},empty:{title:`예약된 인쇄 없음`,description:`아카이브 페이지의 컨텍스트 메뉴에서 "예약" 옵션을 사용하거나 파일을 드래그 앤 드롭하여 시작하세요.`},time:{etaIfStartedNow:`이 작업을 지금 시작할 경우의 완료 예정 시각`,asap:`즉시`,overdue:`기한 초과`,now:`지금`,lessThanMinute:`1분 이내`,inMinutes:`{{count}}분 후`,inHours:`{{count}}시간 후`},actions:{startPrint:`인쇄 시작`,stopPrint:`인쇄 정지`,requeue:`재대기`},bulkEdit:{title:`{{count}}개 항목 편집`,title_plural:`{{count}}개 항목 편집`,description:`변경된 설정만 선택된 항목에 적용됩니다.`,printer:`프린터`,noChange:`— 변경 없음 —`,queueOptions:`대기열 옵션`,staged:`준비됨 (수동 시작)`,autoPowerOff:`인쇄 후 자동 전원 끄기`,requirePrevious:`이전 성공 필요`,printOptions:`인쇄 옵션`,bedLevelling:`베드 레벨링`,flowCalibration:`유량 캘리브레이션`,vibrationCalibration:`진동 캘리브레이션`,layerInspection:`첫 번째 층 검사`,timelapse:`타임랩스`,useAms:`AMS 사용`,nozzleOffsetCali:`노즐 오프셋 보정`,applyChanges:`변경사항 적용`,selectAll:`전체 선택`,deselectAll:`전체 해제`,selected:`{{count}}개 선택됨`,editSelected:`선택 항목 편집`,cancelSelected:`선택 항목 취소`},confirm:{cancelTitle:`예약된 인쇄 취소`,cancelMessage:`"{{name}}"을(를) 취소하시겠습니까?`,stopTitle:`인쇄 정지`,stopMessage:`"{{name}}"의 현재 인쇄를 정지하시겠습니까? 프린터의 인쇄 작업이 취소됩니다.`,removeTitle:`기록에서 제거`,removeMessage:`대기열 기록에서 "{{name}}"을(를) 제거하시겠습니까?`,clearHistoryTitle:`기록 지우기`,clearHistoryMessage:`기록에서 {{count}}개 항목을 모두 제거하시겠습니까?`,cancelButton:`인쇄 취소`,stopButton:`인쇄 정지`,thisPrint:`이 인쇄`,thisItem:`이 항목`},toast:{cancelled:`대기열 항목이 취소되었습니다`,cancelFailed:`항목 취소 실패`,removed:`대기열 항목이 제거되었습니다`,keptForOrder:`제거 대신 취소했습니다: 배치 주문이 이 플레이트를 다시 대기열에 넣을 수 있는 유일한 실행입니다`,historyKeptForOrders:`배치 주문에 아직 필요한 {{kept}}건은 남겨 두었습니다.`,removeFailed:`항목 제거 실패`,stopped:`인쇄가 정지되었습니다`,stopFailed:`인쇄 정지 실패`,released:`인쇄가 대기열에 릴리스되었습니다`,startFailed:`인쇄 시작 실패`,reorderFailed:`대기열 순서 변경 실패`,historyCleared:`{{count}}개 기록 항목이 지워졌습니다`,clearHistoryFailed:`기록 지우기 실패`,updateFailed:`항목 업데이트 실패`,bulkCancelled:`{{count}}개 항목이 취소되었습니다`,bulkCancelFailed:`항목 취소 실패`,batchCreated:`"{{name}}" 배치를 만들었습니다`,batchCreateFailed:`배치 만들기에 실패했습니다`,batchUngrouped:`{{count}}개 항목의 그룹을 해제했습니다`,batchUngroupFailed:`배치 그룹 해제에 실패했습니다`,resumedAfterFailure:`큐를 재개했습니다 — {{restored}}개 작업을 대기 상태로 복원했습니다`,resumeAfterFailureFailed:`큐 재개에 실패했습니다`},resumeAfterFailure:{banner:`{{printer}}이(가) 이전 인쇄 실패로 인해 차단되었습니다 — {{count}}개 작업이 건너뛰어졌습니다`,bannerHint:`프린터 문제를 해결한 후 재개하여 건너뛴 작업을 복원하고 차단을 해제하세요.`,button:`실패 후 재개`,confirmTitle:`실패 후 큐를 재개하시겠습니까?`,confirmMessage:`{{printer}}에서 건너뛴 {{count}}개 작업을 대기 상태로 복원하고 이전 인쇄 차단을 해제합니다. 계속하기 전에 프린터가 준비되었는지 확인하세요.`},timeline:{listView:`목록`,timelineView:`타임라인`,unassigned:`미할당`,noData:`이 날에 예약된 인쇄 없음`,nothingCommitted:`이 시간 창에 확정된 일정이 없습니다. 대기 중인 항목, 보류된 항목, 유휴 프린터의 ASAP 작업은 표시되지 않습니다 — 예약 시간을 설정하거나 대기 항목을 릴리스하면 여기에 표시됩니다.`,allDoneBy:`모든 인쇄 예상 완료 시간: {{time}}`,staged:`준비됨`,filterAll:`모두 표시`,filterPrinting:`인쇄 중`,filterQueued:`대기 중`,time:{anyMoment:`잠시 후`,minutesLeft:`{{minutes}}분 남음`,hoursLeft:`{{hours}}시간 남음`,hoursMinutesLeft:`{{hours}}시간 {{minutes}}분 남음`},day:{previous:`이전 날`,next:`다음 날`,today:`오늘`},window:{back12h:`12시간 이전`,forward12h:`12시간 이후`,now:`지금`},printerColumnHeader:`프린터`},permissions:{noStopPrint:`인쇄를 정지할 권한이 없습니다`,noStartPrint:`인쇄를 시작할 권한이 없습니다`,noEdit:`이 대기열 항목을 편집할 권한이 없습니다`,noCancel:`이 대기열 항목을 취소할 권한이 없습니다`,noRequeue:`항목을 재대기할 권한이 없습니다`,noRemove:`이 대기열 항목을 제거할 권한이 없습니다`,noClearHistory:`모든 기록을 지울 권한이 없습니다`,noEditItems:`대기열 항목을 편집할 권한이 없습니다`,noCancelItems:`대기열 항목을 취소할 권한이 없습니다`},filamentShort:{rowBadge:`할당된 스풀의 필라멘트가 부족합니다`,rowTooltip:`디스패치 스케줄러가 이 항목을 표시했습니다. 재생 버튼을 클릭하여 슬롯별 부족량을 확인하고 인쇄 여부를 결정하세요.`,confirmTitle:`필라멘트 부족`,confirmIntro:`할당된 스풀이 하나 이상의 슬롯을 채울 수 없습니다. 그래도 인쇄하시겠습니까?`,lineItem:`슬롯 {{slot}}: {{required}}g 필요, {{remaining}}g 남음`,unknown:`알 수 없음`,printAnyway:`그냥 인쇄`},slicerAmsMapping:{rowBadge:`이 프린터용으로 저장된 AMS 슬롯`,rowTooltip:`이 아카이브에는 슬라이서가 선택한 정확한 AMS 슬롯이 이 항목의 대상 프린터용으로 저장되어 있습니다. 해당 프린터에서 재인쇄하면 유형과 색상으로 다시 맞추는 대신 그 트레이를 재사용할 수 있습니다.`}},stats:{title:`대시보드`,subtitle:`위젯을 드래그하여 정렬하세요. 눈 아이콘을 클릭하여 숨기세요.`,overview:`개요`,totalPrints:`총 인쇄 수`,successRate:`성공률`,totalPrintTime:`총 인쇄 시간`,printTime:`인쇄 시간`,totalFilament:`총 사용 필라멘트`,filamentUsed:`사용된 필라멘트`,filamentCost:`필라멘트 비용`,totalCost:`총 비용`,energyUsed:`사용된 에너지`,energyCost:`에너지 비용`,energyWarmingUpTooltip:`에너지 추적이 시간별 스냅샷을 수집 중입니다. 날짜 범위 합계는 선택한 범위 이전에 하나 이상의 스냅샷이 존재하면 정확해집니다. 초기 값이 적게 집계될 수 있습니다.`,averagePrintTime:`평균 인쇄 시간`,printsPerDay:`일일 인쇄 수`,byPrinter:`프린터별`,printsByPrinter:`프린터별 인쇄`,byMaterial:`재료별`,byMonth:`월별`,last7Days:`최근 7일`,last30Days:`최근 30일`,last90Days:`최근 90일`,allTime:`전체 기간`,quickStats:`빠른 통계`,printActivity:`인쇄 활동`,filamentTypes:`필라멘트 종류`,filamentTrends:`필라멘트 추세`,failureAnalysis:`실패 분석`,timeAccuracy:`시간 정확도`,successful:`성공:`,failed:`실패:`,cancelled:`취소됨:`,perfectEstimate:`100% = 완벽한 예상`,noTimeAccuracyData:`아직 시간 정확도 데이터 없음`,noFilamentData:`필라멘트 데이터 없음`,noPrinterData:`프린터 데이터 없음`,noPrintData:`인쇄 데이터 없음`,noPrintDataLast30Days:`최근 30일 인쇄 데이터 없음`,failureReasons:`실패 원인`,topFailureReasons:`주요 실패 원인`,failedPrintsCount:`{{total}}개 인쇄 중 {{failed}}개 실패`,lastWeekRate:`지난 주: {{rate}}%`,resetLayout:`레이아웃 초기화`,recalculateCosts:`비용 재계산`,recalculateCostsHint:`현재 필라멘트 가격으로 모든 아카이브 비용 재계산`,exportStats:`통계 내보내기`,exportAsCsv:`CSV로 내보내기`,exportAsExcel:`Excel로 내보내기`,hiddenCount:`{{count}}개 숨겨짐`,exportDownloaded:`내보내기 다운로드됨`,exportFailed:`내보내기 실패`,layoutReset:`레이아웃이 초기화되었습니다`,recalculatedCosts:`{{count}}개 아카이브의 비용이 재계산되었습니다`,recalculateFailed:`비용 재계산 실패`,loadingStats:`통계 로딩 중...`,noPermissionResetLayout:`레이아웃을 초기화할 권한이 없습니다`,noPermissionRecalculate:`비용을 재계산할 권한이 없습니다`,noPrintDataInRange:`선택한 범위에 인쇄 데이터 없음`,periodFilament:`기간 필라멘트`,periodCost:`기간 비용`,avgPerPrint:`인쇄당 평균`,usageOverTime:`시간별 사용량`,energyOverTime:`시간별 에너지 사용량`,filamentByWeight:`무게`,printDuration:`인쇄 시간`,printerUtilization:`프린터 사용률`,filamentSuccess:`재료별 성공률`,printHabits:`인쇄 습관`,printTimeOfDay:`시간대별 인쇄`,colorDistribution:`색상 분포`,noColorData:`색상 데이터 없음`,records:`기록`,longestPrint:`최장 인쇄`,heaviestPrint:`가장 무거운 인쇄`,mostExpensivePrint:`가장 비싼 인쇄`,busiestDay:`가장 바쁜 날`,successStreak:`연속 성공`,streakPrint:`연속 인쇄`,streakPrints:`{{count}}번 연속 인쇄`,printerStats:`프린터 통계`,hours:`시간`,avgPrints:`평균 인쇄`,noArchiveData:`인쇄 데이터 없음`,filamentByTime:`시간`,avgWeight:`평균 무게`,avgTime:`평균 시간`,filamentByPrints:`인쇄`,timeframe:{today:`오늘`,"this-week":`이번 주`,"this-month":`이번 달`,"last-7":`최근 7일`,"last-30":`최근 30일`,"last-90":`최근 90일`,"this-year":`올해`,"all-time":`전체 기간`,custom:`사용자 지정 범위`,from:`시작`,to:`종료`},allUsers:`모든 사용자`,noUser:`사용자 없음 (시스템)`,filterByUser:`사용자별 필터`},maintenance:{title:`유지보수`,overview:`개요`,allOk:`모든 유지보수 최신 상태`,dueCount:`{{count}}개 항목 예정`,dueCount_plural:`{{count}}개 항목 예정`,warningCount:`{{count}}개 경고`,warningCount_plural:`{{count}}개 경고`,totalPrintTime:`총 인쇄 시간`,nextMaintenance:`다음 유지보수`,nothingDue:`예정 없음`,tasks:`작업`,lastPerformed:`마지막 수행`,interval:`간격`,hoursRemaining:`{{hours}}시간 남음`,hoursOverdue:`{{hours}}시간 초과`,markDone:`완료로 표시`,performMaintenance:`유지보수 수행`,history:`기록`,noHistory:`유지보수 기록 없음`,editPrintHours:`인쇄 시간 편집`,currentHours:`현재 시간`,statusTab:`상태`,settingsTab:`설정`,overdueCount:`{{count}}개 초과`,dueSoonCount:`{{count}}개 곧 예정`,dueSoon:`곧 예정`,allGood:`모두 정상`,overdueBy:`{{duration}} 초과`,dueIn:`{{duration}} 후 예정`,timeLeft:`{{duration}} 남음`,day:`1일`,days:`{{count}}일`,week:`1주`,weeks:`{{count}}주`,month:`1개월`,months:`{{count}}개월`,year:`1년`,maintenanceTypes:`유지보수 유형`,maintenanceTypesDescription:`시스템 유형 및 사용자 지정 유지보수 작업`,addCustomType:`사용자 지정 유형 추가`,restoreDefaults:`기본 작업 복원`,intervalType:`간격 유형`,intervalValue:`간격 ({{type}})`,icon:`아이콘`,documentationLink:`문서 링크 (선택사항)`,assignToPrinters:`프린터에 할당`,selectAtLeastOnePrinter:`최소 한 개의 프린터를 선택하세요`,addType:`유형 추가`,custom:`사용자 지정`,printHours:`인쇄 시간`,calendarDays:`달력 일수`,exampleName:`예: HEPA 필터 교체`,viewDocumentation:`문서 보기`,timeBasedInterval:`시간 기반 간격`,intervalOverrides:`간격 재정의`,intervalOverridesDescription:`특정 프린터의 간격 사용자 지정`,assignedToPrinters:`할당된 프린터:`,noPrintersAssigned:`할당된 프린터 없음`,addPrinterShort:`추가:`,printersAssignedClick:`{{count}}개 프린터 할당됨 - 클릭하여 관리`,removeFromPrinter:`이 프린터에서 제거`,types:{lubricateCarbonRods:`카본 로드 윤활`,lubricateRails:`리니어 레일 윤활`,cleanNozzle:`노즐/핫엔드 청소`,checkBelts:`벨트 장력 확인`,cleanBuildPlate:`빌드 플레이트 청소`,checkExtruder:`압출기 기어 확인`,checkCooling:`냉각 팬 확인`,generalInspection:`일반 점검`,cleanCarbonRods:`카본 로드 청소`,lubricateSteelRods:`스틸 로드 윤활`,cleanSteelRods:`스틸 로드 청소`,cleanLinearRails:`리니어 레일 청소`,checkPtfeTube:`PTFE 튜브 확인`,replaceHepaFilter:`HEPA 필터 교체`,replaceCarbonFilter:`활성탄 필터 교체`,lubricateLeftNozzleRail:`좌측 노즐 레일 윤활`},maintenanceComplete:`유지보수가 완료로 표시되었습니다`,typeUpdated:`유지보수 유형이 업데이트되었습니다`,typeDeleted:`유지보수 유형이 삭제되었습니다`,defaultsRestored:`{{count}}개 기본 작업이 복원되었습니다`,printHoursUpdated:`인쇄 시간이 업데이트되었습니다`,printerAssigned:`프린터가 할당되었습니다`,printerRemoved:`프린터가 제거되었습니다`,deleteTypeConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,deleteSystemTypeTitle:`기본 유지보수 작업을 삭제하시겠습니까?`,deleteSystemTypeMessage:`기본 유지보수 작업 "{{name}}"을(를) 삭제하시겠습니까?`,noPermissionUpdate:`유지보수 항목을 업데이트할 권한이 없습니다`,noPermissionPerform:`유지보수를 수행할 권한이 없습니다`,noPermissionEditTypes:`유지보수 유형을 편집할 권한이 없습니다`,noPermissionDeleteTypes:`유지보수 유형을 삭제할 권한이 없습니다`,noPermissionEditHours:`인쇄 시간을 편집할 권한이 없습니다`,noPermissionRemovePrinter:`프린터 할당을 제거할 권한이 없습니다`,noPermissionAssignPrinter:`프린터를 할당할 권한이 없습니다`,noPermissionEditIntervals:`간격을 편집할 권한이 없습니다`,configureSettings:`유지보수 유형 및 간격 설정`},settings:{sliceEngine:`슬라이스 엔진`,sliceEngineSidecar:`서버 사이드카`,sliceEngineSidecarHint:`슬라이싱이 서버의 슬라이서 사이드카 컨테이너에서 실행됩니다.`,sliceEngineBrowser:`브라우저에서`,sliceEngineBrowserHint:`슬라이싱이 서버 없이 이 기기에서 실행됩니다.`,title:`설정`,general:`일반`,tabs:{general:`일반`,smartPlugs:`스마트 플러그`,sensors:`센서`,notifications:`알림`,queue:`워크플로우`,queueDispatch:`큐 및 디스패치`,queuePipelines:`파이프라인`,filament:`필라멘트`,network:`네트워크`,apiKeys:`API 키`,virtualPrinter:`가상 프린터`,spoolbuddy:`SpoolBuddy`,failureDetection:`실패 감지`,users:`인증`,backup:`백업`,emailAuth:`이메일 인증`,ldap:`LDAP`,twoFa:`이중 인증`,oidc:`SSO / OIDC`,security:`보안`},spoolbuddy:{infoTitle:`SpoolBuddy 기기`,infoBody:`SpoolBuddy 키오스크는 하트비트를 통해 자동으로 등록됩니다. 더 이상 사용하지 않거나 데몬 충돌로 인한 중복이 있는 경우 여기서 기기를 등록 해제하세요.`,duplicatesTitle:`{{count}}개 기기 등록됨`,duplicatesBody:`첫 번째로 등록된 기기만 키오스크 UI에서 사용됩니다. 충돌로 인한 오래된 중복이 있으면 등록 해제하세요 — 온라인 기기는 다음 하트비트에서 자동으로 재등록됩니다.`,empty:`아직 등록된 SpoolBuddy 기기가 없습니다.`,online:`온라인`,offline:`오프라인`,unregister:`등록 해제`,unregisterSuccess:`기기 등록 해제됨`,unregisterError:`기기 등록 해제 실패`,confirmTitle:`SpoolBuddy 기기를 등록 해제하시겠습니까?`,confirmBody:`데이터베이스에서 "{{hostname}}" ({{deviceId}})를 제거합니다. 기기가 온라인이면 다음 하트비트에서 자동으로 재등록됩니다.`,ipAddress:`IP 주소`,firmware:`펌웨어`,lastSeen:`마지막 확인`,daemonUptime:`데몬 가동 시간`,systemUptime:`시스템 가동 시간`,never:`없음`,nfc:`NFC`,scale:`저울`,cpuTemp:`CPU 온도`,memory:`메모리`,disk:`디스크`,update:`업데이트`,updateConfirmTitle:`Spoolbuddy 데몬을 업데이트하시겠습니까?`,updateConfirmBody:`"{{hostname}}"에서 소프트웨어 업데이트를 실행하시겠습니까? 업데이트가 적용되면 데몬이 재시작됩니다.`,restartBrowser:`브라우저 재시작`,restartBrowserConfirmTitle:`키오스크 브라우저를 재시작하시겠습니까?`,restartBrowserConfirmBody:`"{{hostname}}"의 키오스크 브라우저를 재시작하시겠습니까? 화면이 잠시 꺼집니다.`,restartDaemon:`데몬 재시작`,restartDaemonConfirmTitle:`Spoolbuddy 데몬을 재시작하시겠습니까?`,restartDaemonConfirmBody:`"{{hostname}}"의 Spoolbuddy 데몬을 재시작하시겠습니까? 기기가 몇 초 동안 오프라인 상태가 됩니다.`,reboot:`재부팅`,rebootConfirmTitle:`기기를 재부팅하시겠습니까?`,rebootConfirmBody:`"{{hostname}}"을(를) 재부팅하시겠습니까? 기기가 약 1분 동안 오프라인 상태가 됩니다.`,shutdown:`종료`,shutdownConfirmTitle:`기기를 종료하시겠습니까?`,shutdownConfirmBody:`"{{hostname}}"을(를) 종료하시겠습니까? 다시 켜려면 물리적 접근이 필요합니다.`,commandConfirm:`확인`,commandQueued:`명령이 대기열에 추가됨`,commandError:`명령 전송 실패`,cpuLoad:`CPU 부하`},ldap:{title:`LDAP 인증`,enabledDesc:`LDAP 인증이 활성화되어 있습니다`,disabledDesc:`LDAP 인증이 비활성화되어 있습니다`,disabledHint:`아래에서 LDAP 설정을 구성하고 저장한 후 활성화하세요.`,enabled:`LDAP 인증 활성화됨`,disabled:`LDAP 인증 비활성화됨`,feature1:`사용자가 LDAP 자격 증명으로 로그인 가능`,feature2:`로컬 관리자 계정이 대체 수단으로 유지됨`,feature3:`LDAP 그룹이 로그인 시 Bambuddy 그룹에 매핑됨`,serverConfig:`LDAP 서버 설정`,serverUrl:`서버 URL`,serverUrlHint:`SSL에는 ldaps://, StartTLS에는 ldap:// 사용`,security:`보안`,securityHint:`StartTLS는 일반 연결을 TLS로 업그레이드합니다. LDAPS는 처음부터 TLS를 사용합니다.`,bindDn:`바인드 DN (서비스 계정)`,bindPassword:`바인드 비밀번호`,searchBase:`검색 기반 DN`,userFilter:`사용자 검색 필터`,userFilterHint:`{username}은 로그인 사용자명으로 대체됩니다. OpenLDAP의 경우 (uid={username})을 사용하세요.`,autoProvision:`사용자 자동 프로비저닝`,autoProvisionHint:`첫 LDAP 로그인 시 자동으로 Bambuddy 계정 생성`,defaultGroup:`기본 그룹`,defaultGroupNone:`— 없음 (대체 없음) —`,defaultGroupHint:`LDAP 사용자가 인증되었지만 매핑된 LDAP 그룹에 없을 때 할당되는 대체 그룹. 비워두면 매핑되지 않은 사용자에게 권한이 없습니다.`,groupMapping:`그룹 매핑 (JSON)`,groupMappingHint:`LDAP 그룹 DN을 Bambuddy 그룹에 매핑합니다. 사용 가능한 그룹: `,testConnection:`연결 테스트`,settingsSaved:`LDAP 설정이 저장되었습니다`,errors:{serverRequired:`LDAP 서버 URL이 필요합니다`,searchBaseRequired:`검색 기반 DN이 필요합니다`,enableAuthFirst:`먼저 인증을 활성화하세요`,configureLdapFirst:`먼저 LDAP 설정을 저장하세요`},advanced:`고급`},email:{smtpSettings:`SMTP 설정`,smtpHost:`SMTP 서버`,smtpPort:`SMTP 포트`,security:`보안`,authentication:`인증`,username:`사용자명`,password:`비밀번호`,fromEmail:`발신 이메일`,fromName:`발신자 이름`,testConnection:`SMTP 연결 테스트`,testRecipient:`테스트 수신자 이메일`,sendTest:`테스트 이메일 전송`,sending:`전송 중...`,save:`설정 저장`,saving:`저장 중...`,advancedAuth:`고급 인증`,advancedAuthEnabled:`고급 인증이 활성화되어 있습니다`,advancedAuthEnabledDesc:`이메일 기반 사용자 관리 기능이 활성화되어 있습니다. 신규 사용자는 이메일로 자동 생성된 비밀번호를 받으며, 사용자는 비밀번호 찾기 기능으로 비밀번호를 재설정할 수 있습니다.`,advancedAuthDisabled:`고급 인증이 비활성화되어 있습니다`,advancedAuthDisabledDesc:`이메일 기반 사용자 관리 기능을 활성화하려면 고급 인증을 활성화하세요.`,enable:`활성화`,disable:`비활성화`,feature1:`비밀번호가 자동 생성되어 신규 사용자에게 이메일로 전송됨`,feature2:`사용자가 사용자명 또는 이메일로 로그인 가능`,feature3:`비밀번호 찾기 기능 사용 가능`,feature4:`관리자가 이메일로 사용자 비밀번호 재설정 가능`,errors:{requiredFields:`모든 필수 항목을 입력하세요`,usernameRequired:`인증이 활성화된 경우 사용자명이 필요합니다`,enterTestEmail:`테스트 이메일 주소를 입력하세요`,smtpServerAndEmail:`테스트 전에 SMTP 서버와 발신 이메일을 입력하세요`,usernamePasswordRequired:`인증이 활성화된 경우 사용자명과 비밀번호가 필요합니다`,configureSmtpFirst:`먼저 SMTP 설정을 구성하고 테스트하세요`,enableAuthFirst:`이메일 기반 기능을 사용하려면 먼저 인증을 활성화하세요.`},success:{settingsSaved:`SMTP 설정이 성공적으로 저장되었습니다`},securityOptions:{starttls:`STARTTLS (포트 587)`,ssl:`SSL/TLS (포트 465)`,none:`없음 (포트 25)`},authOptions:{enabled:`활성화됨`,disabled:`비활성화됨`}},appearance:`모양`,notifications:`알림`,smartPlugs:`스마트 플러그`,spoolman:`Spoolman`,updates:`업데이트`,language:`언어`,languageDescription:`선호하는 언어를 선택하세요`,theme:`테마`,themeLight:`라이트`,themeDark:`다크`,themeSystem:`시스템`,defaultView:`기본 보기`,defaultViewDescription:`앱을 열 때 표시할 페이지`,checkForUpdates:`업데이트 확인`,autoUpdate:`자동 업데이트`,currentVersion:`현재 버전`,latestVersion:`최신 버전`,upToDate:`최신 상태입니다`,updateAvailable:`업데이트 가능`,notificationLanguage:`알림 언어`,notificationLanguageDescription:`푸시 알림 언어`,bedCooledThreshold:`베드 냉각 임계값`,bedCooledThresholdDescription:`인쇄 후 베드가 냉각된 것으로 간주되는 온도`,userNotificationsEnabled:`사용자 알림`,userNotificationsEnabledDescription:`사용자 알림 메뉴 및 인쇄 작업 이벤트에 대한 이메일 알림을 활성화합니다. 고급 인증이 필요합니다.`,userNotificationsDisabledHint:`사용자 알림을 사용하려면 고급 인증을 활성화하세요.`,notificationProviders:`알림 제공자`,addProvider:`제공자 추가`,editProvider:`제공자 편집`,providerType:`제공자 유형`,testNotification:`알림 테스트`,testSuccess:`테스트 알림이 성공적으로 전송되었습니다`,testFailed:`테스트 알림 전송 실패`,quietHours:`방해 금지 시간`,quietHoursDescription:`이 시간 동안 방해하지 않음`,quietHoursStart:`시작`,quietHoursEnd:`종료`,events:{title:`알림 이벤트`,printStart:`인쇄 시작됨`,printComplete:`인쇄 완료됨`,printFailed:`인쇄 실패`,printStopped:`인쇄 정지됨`,printProgress:`진행 마일스톤`,printProgressDescription:`25%, 50%, 75%에 알림`,printerOffline:`프린터 오프라인`,printerError:`프린터 오류`,filamentLow:`필라멘트 부족`,maintenanceDue:`유지보수 예정`,maintenanceDueDescription:`유지보수가 필요할 때 알림`},smartPlug:{title:`스마트 플러그`,add:`스마트 플러그 추가`,edit:`스마트 플러그 편집`,name:`이름`,ipAddress:`IP 주소`,linkedPrinter:`연결된 프린터`,autoOn:`자동 켜기`,autoOnDescription:`인쇄 시작 시 켜기`,autoOff:`자동 끄기`,autoOffDescription:`인쇄 완료 후 끄기`,offDelay:`끄기 지연`,offDelayMinutes:`인쇄 후 분`,offDelayTemp:`노즐 온도 이하일 때`,currentState:`현재 상태`,turnOn:`켜기`,turnOff:`끄기`},filamentTracking:`필라멘트 추적`,filamentTrackingDesc:`필라멘트 스풀을 추적하는 방법을 선택하세요. 내장 인벤토리를 사용하거나 외부 Spoolman 서버에 연결할 수 있습니다.`,autoAddUnknownRfid:`알 수 없는 RFID 스풀 자동 추가`,autoAddUnknownRfidDesc:`알 수 없는 RFID 태그가 있는 스풀이 감지되면 자동으로 인벤토리 항목을 생성합니다. 새 스풀을 미리 수동으로 등록한다면 중복을 피하기 위해 끄세요.`,filamentChecks:`필라멘트 확인`,disableFilamentWarnings:`필라멘트 경고 비활성화`,disableFilamentWarningsDesc:`인쇄 또는 대기열 추가 시 필라멘트 부족 경고 표시 안 함`,preferLowestFilament:`남은 필라멘트가 가장 적은 것 우선`,preferLowestFilamentDesc:`여러 스풀이 일치할 때 남은 필라멘트가 가장 적은 것 사용`,preferLowestFilamentBackupNote:`프린터에서 AMS 필라멘트 백업이 활성화된 경우에만 적용됩니다. 그렇지 않으면 선택한 스풀이 다 떨어졌을 때 두 번째 스풀로 전환할 수 없습니다.`,trackingModeBuiltIn:`내장 인벤토리`,trackingModeBuiltInDesc:`RFID 자동 매칭 및 사용량 추적 포함`,trackingModeSpoolmanDesc:`외부 필라멘트 관리 서버`,builtInFeatureRfid:`AMS의 Bambu Lab RFID 스풀 자동 감지`,builtInFeatureUsage:`인쇄당 필라멘트 소비량 추적`,builtInFeatureCatalog:`스풀, 색상, K 팩터 프로필 관리`,builtInFeatureThirdParty:`서드파티 스풀을 인벤토리 스풀에 할당 가능`,amsSyncButton:`AMS에서 무게 동기화`,amsSyncTitle:`AMS에서 스풀 무게 동기화`,amsSyncMessage:`연결된 프린터의 현재 AMS 잔여% 값으로 모든 인벤토리 스풀 무게를 덮어씁니다. 손상된 무게 데이터를 복구하는 데 사용하세요. 프린터가 온라인이어야 합니다.`,amsSyncing:`동기화 중...`,amsSyncSuccess:`{{synced}}개 스풀 동기화됨, {{skipped}}개 건너뜀`,amsSyncError:`AMS에서 무게 동기화 실패`,spoolmanAmsSyncButton:`AMS에서 Spoolman 무게 동기화`,spoolmanAmsSyncTitle:`AMS에서 Spoolman 스풀 무게 동기화`,spoolmanAmsSyncMessage:`연결된 프린터의 현재 AMS 잔여% 값으로 모든 Spoolman 스풀 무게를 업데이트합니다. 프린터가 온라인이어야 합니다.`,spoolmanAmsSyncing:`동기화 중...`,spoolmanAmsSyncSuccess:`{{synced}}개 스풀 동기화됨, {{skipped}}개 건너뜀`,spoolmanAmsSyncError:`AMS에서 Spoolman 무게 동기화 실패`,spoolmanAmsSyncErrorUnreachable:`Spoolman 무게 동기화 실패 (Spoolman 접근 불가)`,spoolmanAmsSyncErrorNotConfigured:`Spoolman 무게 동기화 실패 (Spoolman 미설정)`,spoolmanNotConfigured:`Spoolman 미설정`,spoolmanFilamentCatalogTitle:`Spoolman 필라멘트 카탈로그`,spoolmanFilamentCatalogDesc:`Spoolman 인스턴스의 필라멘트 이름 및 공 무게. 이름과 스풀 무게는 여기서 편집 가능하며 다른 속성은 Spoolman에서 직접 관리됩니다.`,spoolmanUrl:`Spoolman URL`,spoolmanUrlHint:`Spoolman 서버의 URL (예: http://localhost:7912)`,spoolmanConnected:`연결됨`,spoolmanDisconnected:`연결 끊김`,status:`상태`,connect:`연결`,disconnect:`연결 해제`,howSyncWorks:`동기화 작동 방식`,syncInfoRfidOnly:`RFID가 있는 공식 Bambu Lab 스풀만 동기화됨`,syncInfoAutoCreate:`새 스풀은 첫 번째 동기화 시 Spoolman에 자동 생성됨`,syncInfoThirdPartySkipped:`비 Bambu Lab 스풀 (서드파티, 리필)은 건너뜀`,linkingExistingSpools:`기존 스풀 연결`,linkingExistingSpoolsDesc:`기존 Spoolman 스풀을 AMS에 연결하려면 AMS 슬롯 위에 마우스를 올리고 "Spoolman에 연결"을 클릭하세요.`,syncMode:`동기화 모드`,syncModeAuto:`자동`,syncModeManual:`수동만`,syncModeAutoDesc:`변경이 감지되면 AMS 데이터가 자동으로 동기화됨`,syncModeManualDesc:`수동으로 트리거할 때만 동기화`,syncAmsData:`AMS 데이터 동기화`,syncAmsDataDesc:`프린터 AMS 데이터를 Spoolman에 수동으로 동기화`,allPrinters:`모든 프린터`,noDefaultPrinter:`기본값 없음 (매번 묻기)`,sidebarOrder:`사이드바 순서`,saveThumbnails:`썸네일 저장`,captureFinishPhoto:`완료 사진 캡처`,noPrintersConfigured:`설정된 프린터 없음`,archiveMode:{always:`항상 아카이브 항목 생성`,never:`아카이브 항목 생성 안 함`,ask:`매번 묻기`},checkForUpdatesLabel:`업데이트 확인`,checkPrinterFirmware:`프린터 펌웨어 확인`,includeBetaUpdates:`베타 버전 포함`,includeBetaUpdatesDesc:`업데이트 확인 시 베타 및 사전 릴리스 버전에 대해 알림`,localLogin:{disable:`로컬 사용자명/비밀번호 로그인 비활성화`,disableHint:`활성화하면 SSO 공급자로만 로그인할 수 있습니다. LDAP는 영향을 받지 않습니다. 서버에서 BAMBUDDY_LOCAL_LOGIN=true 를 설정하면 복구 경로가 유지됩니다.`},enableRetry:`재시도 활성화`,homeAssistantDescription:`Home Assistant를 통해 스마트 플러그 제어`,environmentManagedLabel:`(환경 변수 관리)`,autoEnabledViaEnv:`환경 변수를 통해 자동 활성화됨`,urlFromEnvReadOnly:`HA_URL 환경 변수에서 값 설정됨 (읽기 전용)`,tokenFromEnvReadOnly:`HA_TOKEN 환경 변수에서 값 설정됨 (읽기 전용)`,mqttConnectedTo:`연결됨`,prometheusDescription:`Prometheus 형식으로 프린터 데이터 노출`,noSmartPlugsTitle:`설정된 스마트 플러그 없음`,noSmartPlugsDescription:`에너지 사용량 추적 및 전원 제어 자동화를 위해 Tasmota 기반 스마트 플러그를 추가하세요.`,noProvidersTitle:`설정된 제공자 없음`,noProvidersDescription:`알림을 받으려면 제공자를 추가하세요.`,noTemplatesAvailable:`사용 가능한 템플릿 없음. 기본 템플릿을 시드하려면 백엔드를 재시작하세요.`,apiPermissionView:`프린터 상태 및 대기열 보기`,apiPermissionEdit:`인쇄 대기열에서 항목 추가 및 제거`,apiKeysEmptyTitle:`API 키 없음`,apiKeysEmptyDescription:`외부 서비스와 통합하려면 API 키를 만드세요.`,noUsersFound:`사용자를 찾을 수 없습니다`,noGroupsFound:`그룹을 찾을 수 없습니다`,noGroupsAvailable:`사용 가능한 그룹 없음`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,systemGroupWarning:`시스템 그룹 이름은 변경할 수 없습니다`,authDisabledTitle:`인증이 비활성화되어 있습니다`,authDisabledFeature1:`시스템 접근 시 로그인 필요`,authDisabledFeature2:`그룹 기반 권한으로 여러 사용자 생성`,authDisabledFeature3:`50개 이상의 세분화된 권한으로 접근 제어`,userHasCreated:`이 사용자가 만든 항목:`,userItemsQuestion:`이 항목들을 어떻게 처리하시겠습니까?`,deleteUserConfirm:`이 사용자를 삭제하시겠습니까?`,actionCannotBeUndone:`이 작업은 취소할 수 없습니다.`,addFirstSmartPlug:`첫 번째 스마트 플러그 추가`,providers:`제공자`,log:`로그`,testAll:`모두 테스트`,testResults:`테스트 결과`,testPassedCount:`{{count}}개 통과`,testFailedCount:`{{count}}개 실패`,messageTemplates:`메시지 템플릿`,messageTemplatesDescription:`각 이벤트에 대한 알림 메시지를 사용자 지정하세요.`,apiKeys:`API 키`,apiKeysDescription:`외부 통합 및 웹훅을 위한 API 키를 만드세요.`,createKey:`키 만들기`,apiKeyCreated:`API 키가 성공적으로 생성되었습니다`,apiKeyCopyWarning:`지금 이 키를 복사하세요 - 다시 표시되지 않습니다!`,useInApiBrowser:`API 브라우저에서 사용`,apiKeyQrButton:`QR 코드`,apiKeyQrTitle:`스캔하여 설정`,apiKeyQrCaption:`모바일 앱으로 스캔하여 이 서버와 API 키를 추가하세요.`,apiKeyQrWarning:`비밀 API 키가 포함되어 있습니다. 다른 사람이 볼 수 있는 곳에서 공유하거나 스크린샷하지 마세요.`,createNewApiKey:`새 API 키 만들기`,keyName:`키 이름`,keyNamePlaceholder:`예: Home Assistant, OctoPrint`,readStatus:`상태 읽기`,readStatusDescription:`프린터 상태, 대기열, 라이브러리, 아카이브 및 슬라이서 파이프라인 보기`,manageQueue:`대기열 관리`,manageQueueDescription:`인쇄 대기열에서 항목 추가 및 제거. "라이브러리 관리"와 함께 슬라이서 파이프라인 실행`,controlPrinter:`프린터 제어`,controlPrinterDescription:`인쇄 일시정지, 재개, 정지`,manageLibrary:`라이브러리 관리`,manageLibraryDescription:`라이브러리 파일 업로드, 이름 변경, 삭제 및 슬라이스; MakerWorld에서 모델 가져오기. "대기열 관리"와 함께 슬라이서 파이프라인 실행`,manageInventory:`재고 관리`,manageInventoryDescription:`스풀 및 재고 레코드 생성, 업데이트 및 삭제. SpoolBuddy 키오스크(NFC 스캔, 저울 측정값, 키오스크 시스템 명령)에 필요합니다.`,manageMaintenance:`유지보수 관리`,manageMaintenanceDescription:`완료된 유지보수 기록, 카운터 재설정, 주기 편집, 유지보수 유형 카탈로그 관리. 프린터 제어를 더 광범위하게 허용하지 않고 "노즐을 청소했다"를 기록하는 Home Assistant 자동화에 적합합니다.`,manageArchives:`아카이브 관리`,manageArchivesDescription:`오래된 출력물과 통계 기여 항목의 제거를 포함하여 출력 아카이브를 편집하고 삭제합니다. 출력 기록을 정리하는 자동화에 적합합니다.`,manageProjects:`프로젝트 관리`,manageProjectsDescription:`프로젝트를 생성, 업데이트, 삭제하고 프로젝트에 아카이브를 추가합니다. 출력물을 프로젝트로 정리하는 자동화에 적합합니다.`,maintenanceBadge:`유지보수`,archivesBadge:`아카이브`,projectsBadge:`프로젝트`,libraryBadge:`라이브러리`,inventoryBadge:`재고`,cloudAccess:`클라우드 접근 허용`,cloudAccessDescription:`사용자를 대신하여 Bambu Cloud 프리셋 및 필라멘트를 읽습니다. Bambu Cloud에 로그인되어 있어야 합니다.`,cloudBadge:`클라우드`,legacyKey:`레거시`,legacyKeyTooltip:`사용자별 소유권 이전에 생성됨. 클라우드 접근을 사용하려면 재생성하세요`,unnamedKey:`이름 없는 키`,lastUsed:`마지막 사용`,read:`읽기`,control:`제어`,createFirstKey:`첫 번째 키 만들기`,webhookEndpoints:`웹훅 엔드포인트`,webhookApiKeyHint:`X-API-Key 헤더에 API 키를 사용하세요.`,webhook:{getAllStatus:`모든 프린터 상태 가져오기`,getSpecificStatus:`특정 프린터 상태 가져오기`,addToQueue:`인쇄 대기열에 추가`,pausePrint:`인쇄 일시정지`,resumePrint:`인쇄 재개`,stopPrint:`인쇄 정지`},apiBrowser:`API 브라우저`,apiBrowserDescription:`사용 가능한 모든 API 엔드포인트를 탐색하고 테스트하세요.`,apiKeyForTesting:`테스트용 API 키`,apiKeyPlaceholder:`인증된 엔드포인트를 테스트하려면 API 키를 여기에 붙여넣으세요...`,apiKeyHint:`이 키는 요청과 함께 X-API-Key 헤더로 전송됩니다.`,deleteApiKeyTitle:`API 키 삭제`,deleteApiKeyMessage:`이 API 키를 삭제하시겠습니까? 이 키를 사용하는 모든 통합이 작동을 멈춥니다.`,deleteKey:`키 삭제`,amsDisplayThresholds:`AMS 표시 임계값`,amsThresholdsDescription:`AMS 습도 및 온도 표시기의 색상 임계값을 설정하세요.`,humidity:`습도`,goodGreen:`좋음 (녹색)`,fairOrange:`보통 (주황색)`,aboveFairBad:`보통 임계값 초과 시 빨간색 (나쁨)으로 표시`,fairAlsoDryingThreshold:`이 임계값은 자동 건조 활성화 시 트리거로도 사용됨`,fairBelowDryingFloor:`자동 건조로는 이 값에 도달할 수 없습니다. AMS는 히터가 작동하는 동안 {{floor}}% 이상을 보고하므로 각 주기가 끝나고 곧바로 다시 시작됩니다. 자동 건조를 사용한다면 {{floor}}%보다 높게 설정하세요.`,temperature:`온도`,goodBlue:`좋음 (파란색)`,aboveFairHot:`보통 임계값 초과 시 빨간색 (뜨거움)으로 표시`,tempAlarmThreshold:`알림 기준값`,tempAlarmSeparateFromBand:`알림을 보내는 것은 알림 기준값뿐입니다. 좋음과 보통은 표시 색상에만 사용됩니다. 비워 두면 기존과 같이 보통 기준값에서 알립니다.`,tempAlarmMustBePositive:`0 이하의 기준값은 무시되며, 보통 기준값으로 알립니다.`,historyRetention:`기록 보존`,keepSensorHistory:`센서 기록 보존 기간`,historyRetentionDescription:`오래된 습도 및 온도 데이터가 자동으로 삭제됩니다`,defaultPrintOptions:`기본 인쇄 옵션`,defaultPrintOptionsDescription:`새 인쇄 시작 시 기본값을 설정하세요. 인쇄 대화 상자에서 인쇄별로 재정의할 수 있습니다.`,defaultBedLevelling:`베드 레벨링`,defaultBedLevellingDesc:`인쇄 전 자동 베드 레벨링`,defaultFlowCali:`유량 캘리브레이션`,defaultFlowCaliDesc:`압출 유량 캘리브레이션`,defaultVibrationCali:`진동 캘리브레이션`,defaultVibrationCaliDesc:`링잉 아티팩트 감소`,defaultLayerInspect:`첫 번째 층 검사`,defaultLayerInspectDesc:`첫 번째 층 AI 검사`,defaultTimelapse:`타임랩스`,defaultTimelapseDesc:`타임랩스 영상 녹화`,defaultNozzleOffsetCali:`노즐 오프셋 보정`,defaultNozzleOffsetCaliDesc:`익스트루더 간 노즐 오프셋 보정`,tempFanPresetsTitle:`온도 및 팬 프리셋`,tempFanPresetsDescription:`프린터 카드의 온도 및 팬 속도 팝오버에 표시되는 빠른 선택 값을 사용자 지정합니다. 끄기 버튼은 항상 표시됩니다.`,tempFanPresetsNozzle:`노즐 온도`,tempFanPresetsBed:`베드 온도`,tempFanPresetsChamber:`챔버 온도`,tempFanPresetsFan:`팬 속도`,tempFanPresetsReset:`기본값으로 재설정`,concurrentUploadsTitle:`동시 업로드`,concurrentUploadsDescription:`대기열이 동시에 파일을 보낼 수 있는 프린터 수입니다. 프린터는 파일을 느리게 받으며(큰 출력물은 몇 분이 걸릴 수 있습니다) 각 프린터는 자기 차례를 기다립니다. 따라서 프린터가 많은 환경에서는 이 값을 높이면 배치의 마지막 프린터가 앞선 모든 전송이 끝나기를 기다리지 않아도 됩니다. 네트워크나 Bambuddy 호스트가 병렬 전송을 버거워하면 값을 낮추세요.`,concurrentUploadsLabel:`동시에 전송할 프린터 수`,concurrentUploadsHelp:`1이면 한 번에 한 대씩 전송합니다(기존 동작). 기본값은 4입니다.`,staggeredStart:`엇갈린 시작`,staggeredStartDescription:`다중 프린터 일괄 시작 시 기본 그룹 크기 및 간격. 인쇄 모달에서 배치별로 재정의할 수 있습니다.`,preheatTitle:`예열 & 히트 소크`,preheatDescription:`대기열의 각 인쇄가 시작되기 전에 베드(및 지원되는 경우 챔버)를 가열하고 온도를 유지합니다. 챔버 능동 가열이 없는 프린터에서 엔지니어링 필라멘트(PA, ABS) 인쇄에 유용합니다. 소크 타이머가 진행되는 동안 베드 복사열로 챔버가 데워집니다. 베드 목표 온도는 인쇄 파일에서 읽어오며 챔버 동작은 프린터 모델에 따라 다릅니다.`,preheatEnabled:`예열 & 소크 활성화`,preheatEnabledDesc:`꺼짐일 경우 대기열 인쇄가 즉시 시작됩니다. 각 항목은 인쇄별로 재정의할 수 있습니다.`,preheatFilamentTargetsLabel:`필라멘트별 챔버 목표 (°C)`,preheatFilamentTargetsHint:`Bambuddy는 로드된 AMS 슬롯 중 가장 높은 목표를 선택합니다. PLA만 사용하는 인쇄는 0으로 도출되어 챔버 단계를 자동으로 건너뜁니다.`,preheatFilamentTargetsReset:`기본값으로 재설정`,preheatFilamentTargetsDefaultRow:`기타 / 미매핑`,preheatMaxWait:`최대 대기 (초)`,preheatMaxWaitHelp:`소크로 전환되기 전 챔버 가열 단계의 상한.`,preheatSoak:`소크 (초)`,preheatSoakHelp:`목표 도달 또는 최대 대기 경과 후 유지 시간.`,preheatHardwareTitle:`프린터별 동작:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E는 M141으로 챔버를 능동적으로 가열합니다. X1C/P2S는 챔버 온도를 읽지만 베드 복사열로만 가열됩니다. P1S/P1P/A1/A1 Mini는 챔버 센서가 없어 소크 타이머만 적용됩니다.`,preheatPerItemDesc:`이 인쇄가 시작되기 전에 베드와 챔버를 가열합니다. 기본적으로 설정 → 워크플로의 전역 토글을 사용합니다.`,preheatOverride_inherit:`상속`,preheatOverride_on:`켜기`,preheatOverride_off:`끄기`,calibrationMode_off:`끄기`,calibrationMode_on:`켜기`,calibrationMode_auto:`자동`,preheatTargetOverride:`챔버 목표 재정의 (°C, 비우면 필라멘트 기본값)`,plateClear:`플레이트 비움 확인`,requirePlateClear:`플레이트 비움 확인 필요`,requirePlateClearDescription:`활성화하면 스케줄러가 완료된 작업이 있는 프린터에서 대기 중인 인쇄를 시작하기 전에 프린터별 플레이트 비움 확인을 기다립니다.`,keepBedWarm:`출력 사이에 베드 온도 유지`,keepBedWarmDesc:`플레이트 클리어 확인 대기 중에 아래의 온도 유지 값으로 베드를 유지하여 챔버를 따뜻하게 유지합니다. 다음 출력의 베드 온도가 더 높으면 그 값을 사용합니다. 다음 출력에 챔버 가열이 필요한 경우에만 적용됩니다(ASA, ABS, PA, PC 등). 플레이트 클리어 확인이 활성화되어 있어야 합니다.`,keepWarmBedTemp:`온도 유지 시 베드 온도 (°C)`,keepWarmBedTempHelp:`베드로 챔버를 가열해야 할 때 사용됩니다(온도 유지 중, 그리고 출력 파일에 베드 온도가 없는 경우의 예열 시). 출력 파일의 베드 온도가 더 높으면 항상 그 값이 우선합니다.`,keepWarmMaxMinutes:`온도 유지 종료 시간(분)`,keepWarmMaxMinutesHelp:`이 시간 안에 플레이트를 비우지 않으면 히터를 무기한 켜두지 않고 끕니다.`,gcodeInjection:`G코드 주입`,gcodeInjectionDescription:`자동 인쇄 시스템을 위한 인쇄 시작 및/또는 종료 시 주입할 사용자 지정 G코드를 설정하세요.`,gcodeInjectionNoPrinters:`프린터가 없습니다. G코드 스니펫을 설정하려면 프린터를 추가하세요.`,gcodeStartLabel:`시작 G코드`,gcodeEndLabel:`종료 G코드`,gcodeStartPlaceholder:`인쇄 시작 전 앞에 추가되는 G코드...`,gcodeEndPlaceholder:`인쇄 종료 후 뒤에 추가되는 G코드...`,staggerGroupSize:`그룹 크기`,staggerGroupSizeHelp:`그룹당 동시에 시작할 프린터 수`,staggerInterval:`간격 (분)`,staggerIntervalHelp:`각 그룹 시작 사이의 지연`,queueDrying:`대기열 자동 건조`,queueDryingDescription:`대기 중인 인쇄 사이에 프린터가 유휴 상태일 때 AMS 필라멘트를 자동으로 건조합니다.`,queueDryingEnabled:`자동 건조 활성화`,queueDryingEnabledDescription:`프린터가 유휴 상태이고 습도가 임계값 초과 시 자동으로 AMS 건조 시작`,queueDryingBlock:`건조 완료까지 대기`,queueDryingBlockDescription:`건조가 완료될 때까지 인쇄 대기열을 차단합니다. 끄면 인쇄가 건조보다 우선합니다.`,ambientDryingEnabled:`주변 건조`,ambientDryingEnabledDescription:`대기 중인 인쇄가 없어도 습도가 임계값을 초과하면 유휴 프린터에서 자동으로 필라멘트 건조`,printDryingEnabled:`인쇄 중 건조 계속`,printDryingEnabledDescription:`지원되는 하드웨어(H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L 최신 펌웨어)에서 인쇄 중에도 자동 건조를 계속 실행합니다. 스풀 보호를 위해 건조 온도가 유휴 프리셋보다 자동으로 5°C 낮게 제한됩니다.`,dryingPresets:`건조 프리셋`,dryingPresetsDescription:`필라멘트 유형별 온도 및 시간. AMS 2 Pro는 낮은 온도, AMS-HT는 높은 온도를 지원합니다.`,dryingFilament:`필라멘트`,humidityThresholds:`습도 임계값`,humidityThresholdsDescription:`자동 건조 및 알람용 필라멘트 유형별 습도 임계값. 한 AMS에 혼합 적재 시 가장 낮은 값을 사용합니다.`,humidityThresholdCol:`임계값`,humidityThresholdDefault:`기본값 (알 수 없는 유형)`,printModal:`인쇄 모달`,expandCustomMapping:`사용자 지정 매핑 기본 펼침`,expandCustomMappingDescription:`여러 프린터에 인쇄할 때 프린터별 AMS 매핑을 펼친 상태로 표시`,authentication:`인증`,authEnabledDescription:`인스턴스가 사용자 인증으로 보안됨`,authDisabledDescription:`로그인 필요 및 사용자 접근 관리를 위해 활성화`,authDisabledMessage:`사용자 계정 생성, 권한 관리, Bambuddy 인스턴스 보안을 위해 인증을 활성화하세요.`,enableAuthentication:`인증 활성화`,currentUser:`현재 사용자`,changePassword:`비밀번호 변경`,admin:`관리자`,users:`사용자`,addUser:`사용자 추가`,groups:`그룹`,addGroup:`그룹 추가`,system:`시스템`,noDescription:`설명 없음`,userCount:`{{count}}명의 사용자`,permissionCount:`{{count}}개 권한`,createUser:`사용자 만들기`,username:`사용자명`,enterUsername:`사용자명 입력`,password:`비밀번호`,enterPassword:`비밀번호 입력 (최소 6자)`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호 확인`,viewReleaseOnGitHub:`GitHub에서 릴리스 보기`,turnAllPlugsOn:`모든 플러그 켜기`,turnAllPlugsOff:`모든 플러그 끄기`,clearNotificationLogs:`알림 로그 지우기`,clearLogsMessage:`30일보다 오래된 모든 알림 로그를 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.`,clearLogs:`로그 지우기`,resetUiPreferences:`UI 기본 설정 초기화`,resetUiPreferencesMessage:`모든 UI 기본 설정을 기본값으로 초기화합니다: 사이드바 순서, 테마, 대시보드 레이아웃, 보기 모드, 정렬 기본 설정. 프린터, 아카이브, 서버 설정은 영향받지 않습니다. 지운 후 페이지가 새로고침됩니다.`,resetPreferences:`기본 설정 초기화`,deleteGroupTitle:`그룹 삭제`,deleteGroupMessage:`이 그룹을 삭제하시겠습니까? 이 그룹의 사용자는 이 권한을 잃게 됩니다.`,deleteGroup:`그룹 삭제`,disableAuthenticationTitle:`인증 비활성화`,disableAuthenticationMessage:`인증을 비활성화하시겠습니까? 이렇게 하면 로그인 없이 Bambuddy 인스턴스에 접근할 수 있게 됩니다. 모든 사용자는 데이터베이스에 유지되지만 인증은 비활성화됩니다.`,disableAuthentication:`인증 비활성화`,configureBambuddy:`Bambuddy 설정`,systemDefault:`시스템 기본값`,archiveSettings:`아카이브 설정`,newWindow:`새 창`,embeddedOverlay:`내장 오버레이`,preferredSlicer:`선호하는 슬라이서`,preferredSlicerDescription:`API 사이드카를 통한 앱 내 슬라이싱에 사용되는 슬라이서`,openInSlicerLabel:`슬라이서에서 열기`,openInSlicerInherit:`API 슬라이서와 동일`,openInSlicerDescription:`'슬라이서에서 열기' 버튼이 사용하는 데스크톱 슬라이서입니다. 'API 슬라이서와 동일'로 두어 상속하거나 로컬에서 사용할 다른 슬라이서를 선택하세요.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev에는 Bambu 제작 3MF 파일 슬라이싱을 차단하는 알려진 CLI 버그가 있습니다. 업스트림 수정이 출시될 때까지 Bambu Studio를 사용하는 것이 좋습니다.`,useSlicerApi:`슬라이서 API 사용`,useSlicerApiDescription:`켜면 "슬라이스" 작업이 앱 내 슬라이서 모달을 열고 슬라이서 API 사이드카를 호출합니다. 끄면 URI 스킴을 통해 데스크톱 슬라이서로 전달합니다.`,slicerCard:`슬라이서`,orcaslicerApiUrl:`OrcaSlicer 사이드카 URL`,bambuStudioApiUrl:`Bambu Studio 사이드카 URL`,slicerStallTimeout:`슬라이서 정지 시간 제한(분)`,slicerStallTimeoutDescription:`사이드카에서 이 시간 동안 진행 상황이 없으면 슬라이싱을 중단합니다. 진행 상황을 계속 보고하는 무거운 모델은 아무리 오래 걸려도 중단되지 않습니다. 진행 상황을 보고하지 않는 사이드카에서는 이 값이 전체 시간 제한으로 사용됩니다.`,slicerApiUrlDescription:`슬라이서 API 사이드카 컨테이너의 URL. SLICER_API_URL / BAMBU_STUDIO_API_URL 환경 변수 기본값을 사용하려면 비워두세요.`,externalCameras:`외부 카메라`,costTracking:`비용 추적`,billingEnabled:`결제 기능 사용`,billingEnabledDescription:`사용자에게 인쇄 비용을 청구하고 재무 기능을 사용합니다`,printerKillSwitch:`무단 인쇄 자동 중지`,printerKillSwitchDescription:`승인 없이 시작된 인쇄를 즉시 중지합니다.`,financeBudgetReset:`월별 재무 예산 초기화`,financeBudgetResetDay:`초기화 날짜`,financeBudgetResetDayHelp:`해당 날짜가 없는 짧은 달에는 그 달의 마지막 날에 초기화합니다.`,financeBudgetResetTimezone:`초기화 시간대`,financeBudgetResetTimezoneHelp:`예산 기간의 시작은 이 시간대를 기준으로 계산됩니다.`,rebuildLedger:`지갑 원장 재구성`,rebuildLedgerStarted:`원장 재구성을 시작했습니다`,rebuildLedgerConfirmTitle:`지갑 원장을 재구성하시겠습니까?`,rebuildLedgerConfirmMessage:`과거 잔액 값을 복구하기 위해 지갑 원장을 재구성합니다. 수행 내용을 정확히 아는 경우에만 실행하세요.`,rebuildLedgerInProgress:`재구성 시작 중...`,printsOnly:`인쇄만`,totalConsumption:`총 소비`,dataManagement:`데이터 관리`,storageUsage:`저장소 사용량`,storageUsageDescription:`카테고리별 데이터 사용량 분류`,storageUsageTotal:`총계`,storageUsageErrors:`오류`,storageUsageOtherBreakdown:`기타 (정적 자산, 스크립트, 구성 파일 포함)`,storageUsageSystem:`시스템`,storageUsageData:`데이터`,storageUsageUnavailable:`저장소 사용량 정보 불가`,clearNotificationLogsDescription:`30일보다 오래된 알림 로그 삭제`,resetUiPreferencesDescription:`사이드바 순서, 테마, 보기 모드, 레이아웃 기본 설정 초기화. 프린터, 아카이브, 설정은 영향받지 않습니다.`,enableHomeAssistant:`Home Assistant 활성화`,enableMqtt:`MQTT 활성화`,useTls:`TLS 사용`,enableMetricsEndpoint:`메트릭 엔드포인트 활성화`,availableMetrics:`사용 가능한 메트릭`,editUser:`사용자 편집`,deleteUserTitle:`사용자 삭제`,groupName:`그룹 이름`,leaveEmptyForAnonymous:`익명으로 두려면 비워두세요`,leaveEmptyForNoAuth:`인증 없이 두려면 비워두세요`,enterNewPassword:`새 비밀번호 입력`,confirmNewPassword:`새 비밀번호 확인`,enterGroupName:`그룹 이름 입력`,enterDescriptionOptional:`설명 입력 (선택사항)`,enterCurrentPassword:`현재 비밀번호 입력`,enterNewPasswordMin6:`새 비밀번호 입력 (최소 6자)`,toast:{keyCopied:`키가 클립보드에 복사되었습니다`,copyFailed:`키 복사 실패`,keyAddedToBrowser:`API 브라우저에 키가 추가되었습니다`,clearLogsFailed:`로그 지우기 실패`,uiPreferencesReset:`UI 기본 설정이 초기화되었습니다. 새로고침 중...`,authDisabled:`인증이 성공적으로 비활성화되었습니다`,authDisableFailed:`인증 비활성화 실패`,apiKeyCreated:`API 키가 생성되었습니다`,apiKeyDeleted:`API 키가 삭제되었습니다`,userCreated:`사용자가 성공적으로 생성되었습니다`,userUpdated:`사용자가 성공적으로 업데이트되었습니다`,userDeleted:`사용자가 성공적으로 삭제되었습니다`,groupCreated:`그룹이 성공적으로 생성되었습니다`,groupUpdated:`그룹이 성공적으로 업데이트되었습니다`,groupDeleted:`그룹이 성공적으로 삭제되었습니다`,fillRequiredFields:`모든 필수 항목을 입력하세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`,enterGroupName:`그룹 이름을 입력하세요`,settingsSaved:`설정이 저장되었습니다`,noPermissionUpdate:`설정을 변경할 권한이 없습니다`,cameraSettingsSaved:`카메라 설정이 저장되었습니다`,enterCameraUrl:`카메라 URL을 입력하세요`,passwordChanged:`비밀번호가 성공적으로 변경되었습니다`,connectionFailed:`연결 실패`,testFailed:`테스트 실패`,cameraConnected:`카메라 연결됨{{resolution}}`,cameraConnectedCoalesced:`카메라 연결됨{{resolution}} (이미 진행 중인 캡처와 공유됨)`,passwordNeedsUppercase:`비밀번호에 대문자가 최소 1개 포함되어야 합니다`,passwordNeedsLowercase:`비밀번호에 소문자가 최소 1개 포함되어야 합니다`,passwordNeedsDigit:`비밀번호에 숫자가 최소 1개 포함되어야 합니다`,passwordNeedsSpecial:`비밀번호에 특수문자가 최소 1개 포함되어야 합니다`},testConnection:`연결 테스트`,catalog:{spoolCatalog:`스풀 카탈로그`,spoolCatalogDescription:`브랜드/유형별 빈 스풀 무게. 스풀 추가 시 자동 무게 조회에 사용됩니다.`,searchCatalog:`카탈로그 검색...`,addNewEntry:`새 항목 추가`,namePlaceholder:`이름 (예: Bambu Lab - Plastic)`,weight:`무게`,type:`유형`,default:`기본`,custom:`사용자 지정`,noMatch:`검색에 일치하는 항목 없음`,empty:`카탈로그에 항목 없음`,deleteEntry:`항목 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,resetCatalog:`카탈로그 초기화`,resetConfirm:`카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 항목이 제거됩니다.`,loadFailed:`스풀 카탈로그 로드 실패`,nameWeightRequired:`이름과 무게가 필요합니다`,entryAdded:`항목이 추가되었습니다`,addFailed:`항목 추가 실패`,entryUpdated:`항목이 업데이트되었습니다`,updateFailed:`항목 업데이트 실패`,entryDeleted:`항목이 삭제되었습니다`,deleteFailed:`항목 삭제 실패`,resetSuccess:`카탈로그가 기본값으로 초기화되었습니다`,resetFailed:`카탈로그 초기화 실패`,exported:`{{count}}개 항목이 내보내졌습니다`,imported:`{{added}}개 항목 가져옴 ({{skipped}}개 건너뜀)`,importFailed:`가져오기 실패: 잘못된 JSON 형식`,exportTooltip:`JSON으로 카탈로그 내보내기`,importTooltip:`JSON에서 카탈로그 가져오기`,resetTooltip:`기본값으로 초기화`,selectedCount:`{{count}}개 선택됨`,deleteSelected:`선택 항목 삭제`,bulkDeleteConfirm:`{{count}}개 항목을 삭제하시겠습니까?`,bulkDeleted:`{{count}}개 항목이 삭제되었습니다`,bulkDeleteFailed:`항목 삭제 실패`,material:`재료`,spoolWeight:`스풀 무게`,color:`색상`,updateSpoolWeight:`스풀 무게 업데이트`,filamentUpdated:`필라멘트가 업데이트되었습니다`,filamentUpdateFailed:`필라멘트 업데이트 실패`,filamentUpdateInvalid:`잘못된 필라멘트 데이터`,keepExistingSpoolWeight:`기존 스풀에 이전 무게 유지`,keepExistingSpoolWeightDesc:`이 필라멘트 유형으로 이미 생성된 스풀은 이전 공 무게를 유지합니다. 새 스풀은 업데이트된 값을 사용합니다.`,applyToAllSpools:`모든 스풀에 적용`,applyToAllSpoolsDesc:`이 필라멘트 유형의 모든 무게 계산이 즉시 새 공 무게를 사용합니다.`},colorCatalog:{title:`색상 카탈로그`,description:`제조사/재료별 필라멘트 색상. 스풀 추가 시 자동 색상 조회에 사용됩니다.`,searchColors:`색상 검색...`,allManufacturers:`모든 제조사`,addNewColor:`새 색상 추가`,manufacturer:`제조사`,colorName:`색상 이름`,hex:`헥스`,materialOptional:`재료 (선택사항)`,showing:`{{total}}개 중 {{filtered}}개 색상 표시`,noMatch:`검색에 일치하는 색상 없음`,empty:`카탈로그에 색상 없음`,deleteColor:`색상 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,resetCatalog:`색상 카탈로그 초기화`,resetConfirm:`카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 색상이 제거됩니다.`,sync:`동기화`,starting:`시작 중...`,syncTooltip:`FilamentColors.xyz에서 동기화 (2000개 이상 색상, 약 1분 소요)`,loadFailed:`색상 카탈로그 로드 실패`,fieldsRequired:`제조사, 색상 이름, 헥스 색상이 필요합니다`,colorAdded:`색상이 추가되었습니다`,addFailed:`색상 추가 실패`,colorUpdated:`색상이 업데이트되었습니다`,updateFailed:`색상 업데이트 실패`,colorDeleted:`색상이 삭제되었습니다`,deleteFailed:`색상 삭제 실패`,resetSuccess:`색상 카탈로그가 기본값으로 초기화되었습니다`,resetFailed:`카탈로그 초기화 실패`,syncUpToDate:`이미 최신 상태 ({{count}}개 색상 확인됨)`,syncComplete:`{{added}}개 새 색상 추가됨 ({{skipped}}개 이미 존재)`,syncError:`동기화 오류`,syncFailed:`FilamentColors.xyz에서 동기화 실패`,exported:`{{count}}개 색상이 내보내졌습니다`,imported:`{{added}}개 색상 가져옴 ({{skipped}}개 건너뜀)`,importFailed:`가져오기 실패: 잘못된 JSON 형식`,selectedCount:`{{count}}개 선택됨`,deleteSelected:`선택 항목 삭제`,bulkDeleteConfirm:`{{count}}개 색상을 삭제하시겠습니까?`,bulkDeleted:`{{count}}개 색상이 삭제되었습니다`,bulkDeleteFailed:`색상 삭제 실패`},dateFormat:`날짜 형식`,dateFormatUs:`미국 (MM/DD/YYYY)`,dateFormatEu:`유럽 (DD/MM/YYYY)`,dateFormatIso:`ISO (YYYY-MM-DD)`,timeFormat:`시간 형식`,timeFormat12:`12시간 (오후 3:30)`,timeFormat24:`24시간 (15:30)`,defaultPrinter:`기본 프린터`,defaultPrinterDescription:`업로드, 재인쇄 등 작업에서 이 프린터를 미리 선택합니다.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`사이드바 레이아웃에서 항목 순서를 변경하고, 표시 상태를 초기화하고, 사용자 지정 링크를 관리하세요.`,setDefault:`기본값 설정`,sidebarOrderSetDefaultHint:`기본값 설정은 현재 메뉴 순서를 사용자 지정하지 않은 사용자에게 적용합니다.`,sidebarDefaultSet:`기본 메뉴 순서가 설정되었습니다.`,sidebarDefaultCleared:`기본 메뉴 순서가 지워졌습니다.`,sidebarDefaultFailed:`기본 메뉴 순서 설정 실패.`,reset:`초기화`,darkMode:`다크 모드`,lightMode:`라이트 모드`,active:`(활성)`,background:`배경`,accent:`강조`,style:`스타일`,bgNeutral:`중립`,bgWarm:`따뜻함`,bgCool:`시원함`,bgOled:`OLED 블랙`,bgSlate:`슬레이트 블루`,bgForest:`포레스트 그린`,accentGreen:`그린`,accentTeal:`틸`,accentBlue:`블루`,accentOrange:`오렌지`,accentPurple:`퍼플`,accentRed:`레드`,styleClassic:`클래식`,styleGlow:`글로우`,styleVibrant:`비브런트`,themeToggleHint:`사이드바의 태양/달 아이콘으로 다크 모드와 라이트 모드를 전환하세요.`,progressInTitle:`탭에 인쇄 진행률 표시`,progressInTitleDescription:`브라우저 탭에 진행 중인 인쇄의 백분율과 진행 링을 표시합니다.`,autoArchivePrints:`인쇄 자동 아카이브`,autoArchiveDescription:`인쇄 완료 시 3MF 파일 자동 저장`,saveThumbnailsDescription:`3MF 파일에서 미리보기 이미지 추출 및 저장`,captureFinishPhotoDescription:`인쇄 완료 시 프린터 카메라로 사진 촬영. Bambuddy는 인쇄 중 짧은 타임랩스를 기록하여 베드가 내려가기 전 순간에서 사진을 가져올 수 있도록 합니다. 이 인쇄에 대해 타임랩스를 활성화한 경우 타임랩스 파일이 보관되며, 그렇지 않으면 사진 촬영 후 자동으로 삭제됩니다.`,finishPhotoRestorePlate:`완료 사진을 위해 베드 올리기`,finishPhotoRestorePlateDescription:`프린터는 인쇄가 끝나면 베드를 약 100 mm 내리므로 완성된 출력물이 카메라 화각 아래에 놓입니다. Bambuddy는 베드를 마지막 인쇄 레이어 바로 위까지 다시 올려 사진을 찍은 뒤 다시 내립니다. 출력 높이를 알 수 없거나 다른 작업이 대기 중이면 건너뜁니다.`,ffmpegNotInstalled:`ffmpeg 미설치`,ffmpegRequired:`카메라 캡처에 ffmpeg가 필요합니다. macOS에서는 brew install ffmpeg, Linux에서는 apt install ffmpeg로 설치하세요.`,camera:`카메라`,cameraViewMode:`카메라 보기 모드`,cameraOverlayDescription:`카메라가 메인 화면의 크기 조절 가능한 오버레이에서 열립니다`,cameraWindowDescription:`카메라가 별도의 브라우저 창에서 열립니다`,externalCamerasDescription:`내장 프린터 카메라를 교체할 외부 카메라를 설정하세요. MJPEG 스트림, RTSP, HTTP 스냅샷, USB 카메라(V4L2)를 지원합니다.`,cameraPlaceholderUsb:`장치 경로 (/dev/video0)`,cameraPlaceholderUrl:`카메라 URL (rtsp://... 또는 http://...)`,cameraTypeMjpeg:`MJPEG 스트림`,cameraTypeRtsp:`RTSP 스트림`,cameraTypeSnapshot:`HTTP 스냅샷`,cameraTypeUsb:`USB 카메라 (V4L2)`,cameraSnapshotUrl:`스냅샷 URL (선택사항)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`알림 썸네일, 완료 사진, 타임랩스, 플레이트 감지에 사용되는 단일 프레임 URL.`,cameraRotation:`회전`,test:`테스트`,connected:`연결됨`,disconnected:`연결 끊김`,currency:`통화`,defaultFilamentCost:`기본 필라멘트 비용 (kg당)`,electricityCost:`kWh당 전기 비용`,energyDisplayMode:`에너지 표시 모드`,energyModePrintDescription:`대시보드가 인쇄 중 사용된 에너지 합계를 표시`,energyModeTotalDescription:`대시보드가 스마트 플러그의 전체 에너지를 표시`,fileManager:`파일 관리자`,createArchiveEntry:`인쇄 시 아카이브 항목 생성`,createArchiveEntryDescription:`파일 관리자에서 인쇄할 때 선택적으로 아카이브 항목 생성`,lowDiskSpaceWarning:`디스크 공간 부족 경고`,lowDiskSpaceDescription:`여유 디스크 공간이 이 임계값 아래로 떨어지면 경고 표시`,printerFirmware:`프린터 펌웨어`,checkFirmwareDescription:`Bambu Lab의 프린터 펌웨어 업데이트 확인`,bambuddySoftware:`Bambuddy 소프트웨어`,autoCheckDescription:`시작 시 자동으로 새 버전 확인`,checkNow:`지금 확인`,updateAvailableVersion:`업데이트 가능: v{{version}}`,releaseNotes:`릴리스 노트`,updateViaDocker:`Docker Compose로 업데이트:`,composeDirectory:`Compose 디렉터리`,composeDirectoryHint:`docker-compose.yml이 있는 디렉터리입니다. 비워 두면 cd를 생략합니다.`,copyUpdateCommand:`업데이트 명령 복사`,updateViaHomeAssistant:`업데이트는 Home Assistant 수퍼바이저에서 관리됩니다. Home Assistant에서 설정 → 애드온 → Bambuddy를 열어 새 버전을 설치하세요.`,updateViaWindowsInstaller:`Windows 설치본은 설치 프로그램을 다시 실행하여 업데이트합니다. 아래에서 새 버전을 다운로드하세요 — 데이터, 설정 및 프린터는 유지됩니다.`,downloadWindowsInstaller:`v{{version}} 설치 프로그램 다운로드`,installUpdate:`업데이트 설치`,latestVersionRunning:`최신 버전을 실행 중입니다`,failedToCheckUpdates:`업데이트 확인 실패: {{error}}`,backupRestore:`백업 및 복원`,backupRestoreDescription:`설정 내보내기/가져오기 및 GitHub 백업 설정`,goToBackup:`백업으로 이동`,externalUrl:`외부 URL`,externalUrlDescription:`Bambuddy에 접근할 수 있는 외부 URL. 알림 이미지 및 외부 통합에 사용됩니다.`,bambuddyUrl:`Bambuddy URL`,externalUrlHint:`프로토콜과 포트를 포함하세요 (예: http://192.168.1.100:8000)`,ftpRetry:`FTP 재시도`,ftpRetryDescription:`프린터 WiFi가 불안정할 때 FTP 작업을 재시도합니다.`,autoRetryDescription:`실패한 FTP 작업 자동 재시도`,retryAttempts:`재시도 횟수`,retryDelay:`재시도 지연`,connectionTimeout:`연결 제한 시간`,time_one:`{{count}}번`,time_other:`{{count}}번`,second_one:`{{count}}초`,second_other:`{{count}}초`,nSeconds:`{{count}}초`,increaseForWeakWifi:`WiFi가 약한 프린터에서 늘리세요`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Home Assistant의 REST API를 통해 스마트 플러그를 제어하려면 연결하세요.`,homeAssistantUrl:`Home Assistant URL`,longLivedAccessToken:`장기 액세스 토큰`,haTokenHint:`HA에서 토큰 생성: 프로필 → 장기 액세스 토큰 → 토큰 생성`,connectionSuccessful:`연결 성공`,connectionFailed:`연결 실패`,haConnectionSuccess:`Home Assistant에 성공적으로 연결되었습니다.`,haConnectionFailed:`Home Assistant 연결 실패.`,mqttPublishing:`MQTT 게시`,mqttDescription:`Node-RED, Home Assistant 등 자동화 시스템과 통합하기 위해 Bambuddy 이벤트를 외부 MQTT 브로커에 게시하세요.`,mqttEnableDescription:`외부 MQTT 브로커에 이벤트 게시`,brokerHostname:`브로커 호스트명`,port:`포트`,usernameOptional:`사용자명 (선택사항)`,passwordOptional:`비밀번호 (선택사항)`,topicPrefix:`토픽 접두사`,topicPrefixHint:`토픽은 다음과 같습니다: {{prefix}}/printers//status 등`,prometheusMetrics:`Prometheus 메트릭`,prometheusEndpointDescription:`Prometheus/Grafana 모니터링을 위해 /api/v1/metrics에서 프린터 메트릭을 노출합니다.`,bearerTokenOptional:`베어러 토큰 (선택사항)`,bearerTokenHint:`설정하면 요청에 Authorization: Bearer 을 포함해야 합니다`,metricsConnectionStatus:`연결 상태`,metricsPrinterState:`프린터 상태 (유휴/인쇄 중/등)`,metricsPrintProgress:`인쇄 진행 0-100%`,metricsBedTemp:`베드 온도`,metricsNozzleTemp:`노즐 온도`,metricsPrintsTotal:`결과별 총 인쇄 수`,metricsMore:`...및 더 많은 것 (레이어, 팬, 대기열, 필라멘트 사용량)`,smartPlugsDescription:`에너지 사용량 추적 및 프린터 전원 제어를 자동화하기 위해 스마트 플러그(Tasmota 또는 Home Assistant)를 연결하세요.`,allOn:`모두 켜기`,allOff:`모두 끄기`,addSmartPlug:`스마트 플러그 추가`,energySummary:`에너지 요약`,currentPower:`현재 전력`,plugsOnline:`{{reachable}}/{{total}}개 플러그 온라인`,today:`오늘`,yesterday:`어제`,total:`총계`,enablePlugsForSummary:`에너지 요약을 보려면 플러그를 활성화하세요`,addNotificationProvider:`추가`,systemBadge:`(시스템)`,creating:`생성 중...`,changing:`변경 중...`,deleteUserAndItems:`사용자 및 항목 삭제`,deleteUserKeepItems:`사용자 삭제, 항목 유지 (소유자 없음)`,ok:`확인`,twoFa:{totpTitle:`인증 앱 (TOTP)`,totpDesc:`Google Authenticator, Aegis, Authy 같은 인증 앱을 사용하세요.`,emailOtpTitle:`이메일 OTP`,emailOtpDesc:`로그인 시 {{email}}로 일회용 코드를 전송합니다.`,emailOtpNoEmail:`이 방법을 활성화하려면 계정에 이메일 주소를 추가하세요.`,addEmailFirst:`계정에 이메일 주소가 없습니다. 이메일 OTP를 활성화하기 전에 관리자에게 추가를 요청하세요.`,setupTotp:`인증 앱 설정`,setupAuthApp:`인증 앱 설정`,setupInstructions:`아래 QR 코드를 인증 앱으로 스캔한 후 코드로 확인하세요.`,manualEntry:`스캔할 수 없나요? 이 비밀을 수동으로 입력하세요:`,scannedContinue:`코드를 스캔했습니다 — 계속`,enterCodeToConfirm:`인증 앱의 6자리 코드를 입력하여 설정을 확인하세요.`,activate:`활성화`,disableTotp:`인증기 비활성화`,disableConfirmHint:`인증기를 비활성화하려면 유효한 TOTP 코드나 백업 코드를 입력하세요.`,totpDisabled:`인증 앱이 비활성화되었습니다.`,emailOtpEnabled:`이메일 OTP가 활성화되었습니다.`,emailOtpDisabled:`이메일 OTP가 비활성화되었습니다.`,smtpRequired:`먼저 SMTP 설정을 구성하고 테스트하세요.`,invalidCode:`잘못된 코드입니다. 다시 시도하세요.`,enableEmailOtp:`이메일 OTP 활성화`,disableEmailOtp:`이메일 OTP 비활성화`,emailSetupEnterCode:`이메일 주소로 인증 코드가 전송되었습니다. 아래에 입력하여 이 받은 편지함을 소유하고 있음을 확인하세요.`,verifyAndEnable:`확인 및 활성화`,emailDisablePasswordHint:`이메일 OTP 비활성화를 확인하려면 계정 비밀번호를 입력하세요.`,passwordPlaceholder:`비밀번호 입력`,backupCodesTitle:`백업 코드 저장`,backupCodesWarning:`이 코드를 안전한 곳에 저장하세요. 각 코드는 한 번만 사용할 수 있으며 다시 표시되지 않습니다.`,backupCodesRemaining:`{{count}}개 백업 코드 남음`,savedCodes:`코드를 저장했습니다`,regenBackup:`백업 코드 재생성`,regenBackupHint:`현재 TOTP 코드를 입력하여 10개의 새 백업 코드를 생성하세요. 기존 백업 코드는 모두 무효화됩니다.`,newBackupCodes:`새 백업 코드`,linkedAccounts:`연결된 SSO 계정`,linkedAccountsDesc:`이 외부 ID 제공자가 계정에 연결되어 있습니다.`,oidcUnlinked:`계정 연결이 해제되었습니다.`},sessionPolicy:{title:`세션 정책`,description:`신규 사용자 로그인의 최대 세션 수명입니다. 이미 발급된 토큰은 원래 만료 시간을 유지합니다.`,preset24h:`24시간`,preset7d:`7일`,preset30d:`30일`,customHoursLabel:`사용자 지정 세션 수명(시간)`,hoursSuffix:`시간`,warning:`세션이 길어질수록 자동 로그아웃 보호가 약해집니다. 신뢰할 수 있는 단일 사용자 배포에서만 권장됩니다.`},oidc:{title:`SSO / OIDC 제공자`,desc:`외부 ID 제공자를 통해 싱글 사인온을 허용하도록 OpenID Connect 제공자를 설정하세요.`,addProvider:`제공자 추가`,newProvider:`새 제공자`,empty:`아직 설정된 OIDC 제공자가 없습니다.`,created:`제공자가 생성되었습니다.`,updated:`제공자가 업데이트되었습니다.`,deleted:`제공자가 삭제되었습니다.`,deleteTitle:`제공자 삭제`,deleteMessage:`"{{name}}"을(를) 삭제하시겠습니까? 연결된 모든 사용자 계정의 연결이 해제됩니다.`,form:{name:`표시 이름`,issuerUrl:`발급자 URL`,clientId:`클라이언트 ID`,clientSecret:`클라이언트 시크릿`,scopes:`범위`,iconUrl:`아이콘 URL (선택사항)`,enabled:`활성화됨`,autoCreate:`사용자 자동 생성`,autoCreateDesc:`첫 번째 로그인 시 자동으로 로컬 계정 생성.`,autoLink:`기존 계정 자동 연결`,autoLinkDesc:`첫 번째 로그인 시 이메일 일치로 기존 로컬 계정 연결.`,secretHint:`현재 값을 유지하려면 비워두세요`,secretPlaceholder:`새 시크릿`,emailClaim:`이메일 클레임`,emailClaimDesc:`이메일 ID로 사용되는 JWT 클레임.`,emailClaimPlaceholder:`email`,emailClaimCustomClaimAutoLinkWarning:`사용자 지정 클레임은 값이 테넌트 관리인 경우에만 자동 연결에 안전합니다. IdP가 사용자가 이 클레임을 직접 주장할 수 있게 하면 자동 연결을 활성화하지 마세요.`,requireEmailVerified:`이메일 확인 필요`,requireEmailVerifiedDesc:`제공자가 확인된 것으로 표시한 경우에만 이메일 클레임을 수락합니다.`,requireEmailVerifiedWarning:`경고: 확인 없이도 이메일이 수락됩니다. 신뢰할 수 있는 제공자에만 사용하세요.`,requireEmailVerifiedAutoLink:`이 설정을 변경하려면 먼저 자동 연결을 비활성화하세요.`,defaultGroup:`기본 그룹`,defaultGroupDesc:`자동 생성된 사용자에게 할당되는 그룹. 설정되지 않으면 Viewers로 대체됩니다.`,defaultGroupViewersFallback:`Viewers (기본값)`,autologin:`자동 로그인`,autologinDesc:`인증되지 않은 방문자를 이 공급자로 바로 리디렉션합니다. 이 플래그를 가질 수 있는 공급자는 하나뿐입니다.`},refreshIcon:`아이콘 새로고침`,removeIcon:`아이콘 제거`,iconRefreshed:`아이콘이 새로고침되었습니다.`,iconRemoved:`아이콘이 제거되었습니다.`,iconFetchFailed:`공급자 URL에서 아이콘을 가져올 수 없습니다.`},encryption:{title:`MFA 암호화 상태`,enabledFromEnv:`저장 시 암호화 활성화됨 (MFA_ENCRYPTION_KEY 환경 변수에서 키)`,enabledFromFile:`저장 시 암호화 활성화됨 (데이터 디렉토리에서 키 로드됨)`,enabledGenerated:`자동 생성된 키로 저장 시 암호화 활성화됨`,notConfigured:`저장 시 암호화가 설정되지 않음`,notConfiguredDesc:`TOTP 시크릿 및 OIDC client_secret이 일반 텍스트로 저장됩니다. MFA_ENCRYPTION_KEY를 설정하거나 쓰기 가능한 데이터 디렉토리로 Bambuddy를 재시작하여 자동 생성하세요.`,allEncrypted:`모든 MFA 시크릿이 저장 시 암호화되어 있습니다.`,legacyRowsLabel:`레거시 일반 텍스트 행`,encryptedRowsLabel:`암호화된 행`,legacyRowsWarning:`{{count}}개 레거시 일반 텍스트 행이 감지되었습니다. 암호화된 저장소로 마이그레이션하려면 OIDC 제공자를 다시 저장하거나 사용자의 인증 앱을 재등록하세요.`,backupHint:`자동 생성된 키는 DATA_DIR/.mfa_encryption_key에 저장되며 로컬 백업 ZIP에 포함됩니다. 백업을 안전하게 보관하거나 MFA_ENCRYPTION_KEY를 명시적으로 설정하세요.`,decryptionBrokenTitle:`암호화 키 누락`,decryptionBrokenError:`암호화 키를 더 이상 사용할 수 없어 {{count}}개의 암호화된 레코드를 복호화할 수 없습니다.`,migrationErrorWarning:`시작 시 {{count}}개 레거시 행을 재암호화하지 못했습니다. 서버 로그를 확인하고 Bambuddy를 재시작하여 재시도하세요.`},updateEnergyCost:`전기 요금 업데이트`,updateEnergyCostDescription:`이 키가 /settings/electricity-price에 새 kWh당 전기 요금을 POST할 수 있도록 허용합니다. Home Assistant 동적 요금 자동화(Tibber, Octopus 등)에 유용합니다. API 키로 쓸 수 있는 유일한 설정 필드입니다.`,energyCostBadge:`에너지`,passwordRequirements:`최소 8자, 대문자, 소문자, 숫자, 특수문자 각 1개 이상 포함`,pipelineLimits:{title:`슬라이서 파이프라인 한도`,maxCopiesLabel:`실행당 최대 사본 수`,maxCopiesDesc:`운영자가 파이프라인 실행 시 요청할 수 있는 사본 수의 상한. 서버 측 절대 상한은 1000입니다.`},pipelines:{title:`슬라이서 파이프라인`,subtitle:`재사용 가능한 프리셋 묶음(프린터 + 프로세스 + 필라멘트 + 베드 유형). 슬라이스 대화상자에서 저장한 후 다음 파일에 한 번의 클릭으로 적용하세요.`,loading:`파이프라인 불러오는 중…`,loadError:`파이프라인을 불러오지 못했습니다.`,confirmDelete:`이 파이프라인을 삭제하시겠습니까? 되돌릴 수 없습니다.`,staleWarning:`참조된 프리셋이 더 이상 존재하지 않습니다. 슬라이스 대화상자에서 이 파이프라인을 다시 저장하여 수정하세요.`,empty:{title:`아직 파이프라인이 없습니다.`,howto:`임의의 파일에서 슬라이스 대화상자를 열고 프린터 / 프로세스 / 필라멘트 / 베드를 선택한 다음 "파이프라인으로 저장"을 클릭하세요. 저장된 파이프라인이 여기에 표시됩니다.`},field:{name:`파이프라인 이름`,description:`설명`,targetPrinter:`대상 프린터`,noTarget:`— 대상 없음 —`,targetKind:`대상 유형`,targetKindSpecific:`특정 프린터`,targetKindClass:`프린터 클래스`,targetModelClass:`프린터 모델`,fanoutStrategy:`분산 전략`,fanout:{max_parallel:`최대 병렬 — 일치하는 유휴 프린터에 분산`,round_robin:`라운드 로빈 — 적격 프린터를 순환`,fill_one_first:`하나 먼저 채우기 — 모든 사본을 한 프린터에 고정`},fanoutShort:{max_parallel:`병렬`,round_robin:`라운드 로빈`,fill_one_first:`하나 먼저`}},action:{save:`저장`,cancel:`취소`,rename:`이름 변경`,delete:`삭제`},slot:{printer:`프린터`,process:`프로세스`,filament:`필라멘트`,filamentN:`필라멘트 {{n}}`,filamentAll:`전체 {{n}} 슬롯`,bed:`베드`},group:{profiles:`프로필`,filaments:`필라멘트`},searchPlaceholder:`파이프라인 검색…`,filterTargetType:`대상 유형으로 필터`,filterTarget:`대상으로 필터`,filter:{all:`모든 대상`,noTarget:`대상 미설정`,count:`{{shown}} / {{total}}`,noMatches:`현재 필터와 일치하는 파이프라인이 없습니다.`},toast:{saved:`파이프라인이 저장되었습니다`,saveFailed:`저장 실패`,deleted:`파이프라인이 삭제되었습니다`,deleteFailed:`삭제 실패`},noTargetHint:`실행하려면 대상 프린터를 설정하세요`,noTargetWarning:`이 파이프라인을 실행하기 전에 대상 프린터를 설정하세요.`,runs:{lastRun:`마지막 실행`,status:{queued:`대기 중`,slicing:`슬라이싱 중`,dispatching:`전송 중`,in_progress:`인쇄 중`,completed:`완료됨`,failed:`실패`,partial_failure:`부분 실패`,cancelled:`취소됨`}}}},notification:{printStarted:{title:`인쇄 시작됨`,body:`{{printer}}: {{filename}} 인쇄가 시작되었습니다`},printCompleted:{title:`인쇄 완료됨`,body:`{{printer}}: {{filename}}이(가) 성공적으로 완료되었습니다`},printFailed:{title:`인쇄 실패`,body:`{{printer}}: {{filename}}이(가) 실패했습니다`},printStopped:{title:`인쇄 정지됨`,body:`{{printer}}: {{filename}}이(가) 정지되었습니다`},printProgress:{title:`인쇄 진행`,body:`{{printer}}: {{filename}} {{percent}}% 완료`},printerOffline:{title:`프린터 오프라인`,body:`{{printer}}이(가) 오프라인 상태입니다`},printerError:{title:`프린터 오류`,body:`{{printer}}: {{error}}`},filamentLow:{title:`필라멘트 부족`,body:`{{printer}}: 필라멘트가 부족합니다`},maintenanceDue:{title:`유지보수 예정`,body:`{{printer}}: {{items}} 주의 필요`}},errors:{generic:`문제가 발생했습니다`,networkError:`네트워크 오류. 연결을 확인하세요.`,notFound:`찾을 수 없습니다`,unauthorized:`권한 없음`,serverError:`서버 오류`,validationError:`입력값을 확인하세요`,printerConnectionFailed:`프린터 연결 실패`,saveFailed:`변경사항 저장 실패`,deleteFailed:`삭제 실패`,loadFailed:`데이터 로드 실패`},hmsErrors:{title:`오류 - {{name}}`,noErrors:`오류 없음`,viewOnWiki:`Bambu Lab 위키에서 보기`,mqttVerifyFailedRemedy:`프린터에서 개발자 모드를 활성화하고 프린터를 재시작한 다음 작업을 다시 시작하세요.`,unknownCode:`알 수 없는 HMS 코드 — 자세한 내용은 Bambu Lab 위키를 참조하세요.`,clearInstructions:`오류를 해제하려면 프린터에서 오류를 지우세요.`,clearErrors:`오류 지우기`,clearSuccess:`HMS 오류가 지워졌습니다`,clearFailed:`HMS 오류 지우기 실패`,actionSuccess:`프린터에 작업을 전송함`,actionFailed:`작업 전송 실패`,runoutExpectedSlot:`{{ranOut}}의 필라멘트가 소진되었습니다. 프린터가 이제 {{expected}}에 호환 필라멘트를 기다리고 있습니다. {{expected}}에 스풀을 넣은 다음 다시 시도를 선택하세요.`,runoutExpectedSlotOnly:`프린터가 {{expected}}에 호환 필라멘트를 기다리고 있습니다. 거기에 스풀을 넣은 다음 다시 시도를 선택하세요.`,runoutSlotUnknown:`필라멘트가 소진되어 인쇄가 일시정지되었습니다. Bambuddy가 프린터가 현재 요청하는 슬롯을 확인할 수 없습니다 — 프린터 화면에서 요청된 슬롯을 확인하세요.`,actions:{RESUME_PRINTING:`인쇄 재개`,RESUME_PRINTING_DEFECTS:`재개 (결함 허용)`,RESUME_PRINTING_PROBELM_SOLVED:`재개 (문제 해결됨)`,STOP_PRINTING:`인쇄 중지`,CHECK_ASSISTANT:`도우미 보기`,FILAMENT_EXTRUDED:`필라멘트 압출됨, 계속`,RETRY_FILAMENT_EXTRUDED:`아직 압출되지 않음, 다시 시도`,CONTINUE:`완료, 계속`,LOAD_VIRTUAL_TRAY:`필라멘트 로드`,OK_BUTTON:`확인`,FILAMENT_LOAD_RESUME:`필라멘트 로드됨, 재개`,JUMP_TO_LIVEVIEW:`실시간 보기`,NO_REMINDER_NEXT_TIME:`다음에 알리지 않음`,REFRESH_NOZZLE:`다시 확인`,IGNORE_NO_REMINDER_NEXT_TIME:`무시 및 다시 알리지 않음`,IGNORE_RESUME:`무시하고 재개`,PROBLEM_SOLVED_RESUME:`문제 해결됨, 재개`,TURN_OFF_FIRE_ALARM:`확인, 화재 경보 끄기`,RETRY_PROBLEM_SOLVED:`다시 시도 (문제 해결됨)`,CANCLE:`취소`,STOP_DRYING:`건조 중지`,PROCEED:`계속`,OK_JUMP_RACK:`확인`,ABORT:`중단`,DISABLE_PURIFICATION:`이 인쇄에 대해 공기 정화 비활성화`,DONT_REMIND_NEXT_TIME:`알리지 않음`,DBL_CHECK_CANCEL:`취소`,DBL_CHECK_DONE:`완료`,DBL_CHECK_RETRY:`다시 시도`,DBL_CHECK_RESUME:`재개`,DBL_CHECK_OK:`확인`,REMOVE_CLOSE_BTN:`닫기`}},mqttDebug:{title:`MQTT 디버그 로그`,searchPlaceholder:`토픽 또는 페이로드 검색...`,noMessages:`아직 기록된 메시지 없음`,startLoggingHint:`"로깅 시작"을 클릭하여 MQTT 메시지 캡처 시작`,noMessagesMatch:`필터에 일치하는 메시지 없음`,adjustFilterHint:`검색 또는 필터 기준을 조정해 보세요`,incoming:`수신`,outgoing:`송신`,loggingStopped:`로깅 정지됨`,loggingActive:`로깅 활성 - 메시지가 자동 새로고침됨`,startLogging:`로깅 시작`,stopLogging:`로깅 정지`,clearLog:`로그 지우기`,topic:`토픽`,timestamp:`타임스탬프`,direction:`방향`,all:`전체`},printerFiles:{zipStarted_one:`{{count}}개 파일의 ZIP 다운로드를 시작했습니다`,zipStarted_other:`{{count}}개 파일의 ZIP 다운로드를 시작했습니다`,zipPartial:`{{total}}개 중 {{successful}}개 파일로 ZIP 다운로드를 시작했습니다. 나머지는 가져오지 못했습니다`,downloadFailed:`다운로드 실패: {{error}}`,unknownError:`알 수 없는 오류`,shiftSelectHint:`Shift 키를 누른 채 클릭하여 범위 선택`,selectFile:`{{name}} 선택`,deselectFile:`{{name}} 선택 해제`,title:`파일 관리자`,storageUsed:`사용됨:`,storageFree:`여유:`,filterPlaceholder:`파일 필터...`,deleteButton:`삭제`,deleteFiles:`{{count}}개 파일 삭제`,deleteFileConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteFilesConfirm:`선택된 {{count}}개 파일을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,noFiles:`프린터에 파일 없음`,printerUnavailable:`프린터 파일 서비스를 사용할 수 없습니다. 프린터에 연결할 수 있을 때 다시 시도하세요.`,loadingFiles:`파일 로딩 중...`,failedToLoad:`파일 로드 실패`,toast:{filesDeleted:`{{count}}개 파일이 삭제되었습니다`,deleteFailed:`삭제 실패: {{error}}`}},confirm:{delete:`이것을 삭제하시겠습니까?`,unsavedChanges:`저장되지 않은 변경사항이 있습니다. 정말 나가시겠습니까?`,clearQueue:`대기열을 지우시겠습니까?`},login:{title:`Bambuddy 로그인`,subtitle:`계정에 로그인하세요`,username:`사용자명`,usernamePlaceholder:`사용자명을 입력하세요`,usernameOrEmail:`사용자명 또는 이메일`,usernameOrEmailPlaceholder:`사용자명 또는 @ 이메일`,password:`비밀번호`,passwordPlaceholder:`비밀번호를 입력하세요`,signIn:`로그인`,signingIn:`로그인 중...`,rememberMe:`로그인 유지`,forgotPassword:`비밀번호를 잊으셨나요?`,autologinFailed:`SSO 자동 로그인에 실패했습니다. 아래에서 계속할 공급자를 선택하세요.`,localDisabledNotice:`로컬 로그인이 비활성화되어 있습니다. 아래 SSO 공급자 중 하나를 사용하세요.`,loginSuccess:`성공적으로 로그인되었습니다`,loginFailed:`로그인 실패`,enterCredentials:`사용자명과 비밀번호를 입력하세요`,enterEmail:`이메일 주소를 입력하세요`,oidcLoginFailed:`OIDC 로그인 실패`,oidcErrors:{providerError:`ID 제공자에서 오류가 반환되었습니다`,missingParameters:`OIDC 콜백에 필수 매개변수가 없습니다`,invalidState:`OIDC 상태가 잘못되었거나 이미 사용되었습니다`,stateExpired:`OIDC 로그인 세션이 만료되었습니다 — 다시 시도하세요`,providerNotFound:`OIDC 제공자를 찾을 수 없습니다`,discoveryFailed:`OIDC 검색 문서를 가져오지 못했습니다`,invalidDiscovery:`OIDC 검색 문서가 잘못되었습니다`,networkError:`OIDC 토큰 교환 중 네트워크 오류`,badResponse:`OIDC 토큰 교환 중 예상치 못한 응답`,noIdToken:`OIDC 제공자가 ID 토큰을 반환하지 않았습니다`,validationFailed:`OIDC 토큰 검증 실패`,nonceMismatch:`OIDC 논스 불일치 — 재생 공격 가능성`,missingSubClaim:`OIDC 토큰에 sub 클레임이 없습니다`,noLinkedAccount:`OIDC ID에 연결된 로컬 계정이 없습니다`,accountInactive:`계정이 비활성 상태입니다`,userResolutionFailed:`계정 확인 실패`,internalError:`OIDC 로그인 중 내부 오류 발생`,tokenExchangeFailed:`OIDC 토큰 교환 실패`},forgotPasswordTitle:`비밀번호 찾기`,forgotPasswordMessage:`비밀번호를 잊으셨다면 시스템 관리자에게 초기화를 요청하세요.`,forgotPasswordEmailMessage:`이메일 주소를 입력하면 새 비밀번호를 전송해 드립니다.`,emailAddress:`이메일 주소`,emailPlaceholder:`your.email@example.com`,cancel:`취소`,sending:`전송 중...`,sendResetEmail:`초기화 이메일 전송`,howToReset:`비밀번호 초기화 방법:`,resetStep1:`Bambuddy 관리자에게 문의하세요`,resetStep2:`사용자 관리에서 비밀번호 초기화를 요청하세요`,resetStep3:`관리자가 임시 비밀번호를 설정해 드립니다`,resetStep4:`새 비밀번호로 로그인하고 설정에서 변경하세요`,gotIt:`확인`,resetPassword:{title:`새 비밀번호 설정`,subtitle:`아래에 새 비밀번호를 입력하고 확인하세요.`,newPassword:`새 비밀번호`,newPasswordPlaceholder:`최소 8자`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`새 비밀번호 반복`,saving:`저장 중…`,submit:`새 비밀번호 설정`,backToLogin:`로그인으로 돌아가기`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 8자여야 합니다`,resetFailed:`비밀번호 초기화 실패. 링크가 만료되었을 수 있습니다.`},twoFA:{title:`이중 인증`,subtitle:`계정이 2FA로 보호되어 있습니다. 아래에 인증 코드를 입력하세요.`,methodAuthenticator:`인증 앱`,methodEmail:`이메일 코드`,methodBackup:`백업 코드`,instructionsTotp:`인증 앱을 열고 Bambuddy의 6자리 코드를 입력하세요.`,instructionsEmail:`이메일 주소로 6자리 코드가 전송되었습니다. 10분 후 만료됩니다.`,instructionsEmailNotSent:`아래 버튼을 클릭하여 이메일로 인증 코드를 받으세요.`,instructionsBackup:`8자리 백업 복구 코드 중 하나를 입력하세요. 각 코드는 한 번만 사용할 수 있습니다.`,sendCodeButton:`이메일로 코드 전송`,sendingCode:`전송 중...`,resendCode:`코드 재전송`,codeLabel:`인증 코드`,backupCodeLabel:`백업 코드`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`확인`,verifyingButton:`확인 중...`,backToLogin:`← 로그인으로 돌아가기`,orContinueWith:`또는 계속`,signInWith:`{{provider}}로 로그인`,enterCode:`인증 코드를 입력하세요`,sendCodeFailed:`인증 코드 전송 실패`,invalidCode:`잘못된 코드입니다. 다시 시도하세요.`}},setup:{title:`Bambuddy 설정`,subtitle:`Bambuddy 인스턴스의 인증을 설정하세요`,enableAuth:`인증 활성화`,adminAccount:`관리자 계정`,adminAccountDesc:`관리자 사용자가 이미 있는 경우 기존 관리자 계정으로 인증이 활성화됩니다. 기존 관리자를 사용하려면 아래 필드를 비워두거나, 새 관리자 사용자를 만들려면 자격 증명을 입력하세요.`,adminUsername:`관리자 사용자명`,adminPassword:`관리자 비밀번호`,optionalIfAdminExists:`(관리자 사용자가 있는 경우 선택사항)`,adminUsernamePlaceholder:`관리자 사용자명 입력 (선택사항)`,adminPasswordPlaceholder:`관리자 비밀번호 입력 (선택사항)`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`관리자 비밀번호 확인`,settingUp:`설정 중...`,completeSetup:`설정 완료`,toast:{authEnabledAdminCreated:`인증 활성화 및 관리자 사용자 생성됨`,authEnabledExistingAdmins:`기존 관리자 사용자로 인증 활성화됨`,setupCompleted:`설정이 완료되었습니다`,enterBothCredentials:`관리자 사용자명과 비밀번호를 모두 입력하거나, 기존 관리자 사용자를 사용하려면 둘 다 비워두세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`}},changePassword:{title:`비밀번호 변경`,currentPassword:`현재 비밀번호`,currentPasswordPlaceholder:`현재 비밀번호 입력`,newPassword:`새 비밀번호`,newPasswordPlaceholder:`새 비밀번호 입력 (최소 6자)`,confirmPassword:`새 비밀번호 확인`,confirmPasswordPlaceholder:`새 비밀번호 확인`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`,changing:`변경 중...`,success:`비밀번호가 성공적으로 변경되었습니다`,failed:`비밀번호 변경 실패`},plateAlert:{title:`인쇄 일시정지됨!`,message:`빌드 플레이트에 객체가 감지되었습니다. 인쇄가 자동으로 일시정지되었습니다. 플레이트를 비우고 인쇄를 재개하세요.`,understand:`확인했습니다`},camera:{title:`카메라 보기`,invalidPrinterId:`유효하지 않은 프린터 ID`,live:`실시간`,snapshot:`스냅샷`,restartStream:`스트림 재시작`,refreshSnapshot:`스냅샷 새로고침`,fullscreen:`전체 화면`,exitFullscreen:`전체 화면 종료`,connectingToCamera:`카메라에 연결 중...`,capturingSnapshot:`스냅샷 캡처 중...`,connectionLost:`연결 끊김`,connectionFailed:`카메라 연결 실패`,reconnecting:`{{countdown}}초 후 재연결 중... (시도 {{attempt}}/{{max}})`,reconnectNow:`지금 재연결`,cameraUnavailable:`카메라를 사용할 수 없음`,cameraUnavailableDesc:`프린터가 켜져 있고 연결되어 있는지 확인하세요.`,noCamera:`사용 가능한 카메라 없음`,retry:`다시 시도`,cameraStream:`카메라 스트림`,zoomOut:`축소`,zoomIn:`확대`,resetZoom:`배율 초기화`,recording:`녹화 중`,startRecording:`녹화 시작`,stopRecording:`녹화 중지`,chamberLight:`챔버 조명 전환`,unavailable:`카메라 사용 불가`,diagnose:{button:`진단`,modalTitle:`카메라 진단`,running:`진단 실행 중...`,runFailed:`진단 실행 실패: {{error}}`,retry:`다시 실행`,stage:{tcp_reachable:`네트워크 연결 가능 여부`,first_frame:`프레임 캡처`,live_stream_active:`라이브 스트림 활성`},summary:{all_ok:`카메라가 정상 작동 중입니다. 모든 단계를 성공적으로 완료했습니다.`,live_stream_active_healthy:`카메라가 최근 프레임으로 스트리밍 중입니다 — 테스트가 필요 없습니다.`,printer_unreachable:`프린터에 연결할 수 없습니다. IP 주소, 네트워크 연결, 프린터 전원을 확인하세요.`,camera_port_closed:`프린터에 연결됐지만 카메라 포트가 닫혀 있습니다. 프린터 설정에서 LAN 전용 모드와 개발자 모드가 활성화되어 있는지 확인하세요.`,no_frame:`카메라에 연결됐지만 프레임이 수신되지 않았습니다. 다시 시도하거나 프린터 설정에서 카메라가 활성화되어 있는지 확인하세요.`,unknown_failure:`알 수 없는 이유로 카메라 진단에 실패했습니다. 지원 로그를 확인하세요.`},meta:{protocol:`프로토콜`,port:`포트`,profile:`프로파일`}}},groups:{title:`그룹 관리`,subtitle:`접근 제어를 위한 권한 그룹 관리`,backToSettings:`설정으로 돌아가기`,createGroup:`그룹 생성`,noPermission:`이 페이지에 접근할 권한이 없습니다.`,system:`시스템`,noDescription:`설명 없음`,usersCount:`{{count}}명의 사용자`,permissionsCount:`{{count}}개의 권한`,edit:`편집`,delete:`삭제`,toast:{created:`그룹이 성공적으로 생성되었습니다`,updated:`그룹이 성공적으로 업데이트되었습니다`,deleted:`그룹이 성공적으로 삭제되었습니다`,enterGroupName:`그룹 이름을 입력해 주세요`},modal:{editGroup:`그룹 편집`,createGroup:`그룹 생성`,cancel:`취소`,saving:`저장 중...`,creating:`생성 중...`,saveChanges:`변경 사항 저장`},form:{groupName:`그룹 이름`,groupNamePlaceholder:`그룹 이름 입력`,systemGroupWarning:`시스템 그룹 이름은 변경할 수 없습니다`,description:`설명`,descriptionPlaceholder:`설명 입력 (선택사항)`,permissions:`권한 ({{count}}개 선택됨)`},deleteModal:{title:`그룹 삭제`,message:`이 그룹을 삭제하시겠습니까? 이 그룹의 사용자는 해당 권한을 잃게 됩니다.`,confirm:`그룹 삭제`},editor:{title:`그룹 편집`,createTitle:`그룹 생성`,search:`권한 검색...`,selectAll:`모두 선택`,clearAll:`모두 해제`,permissionsSelected:`{{count}}개 선택됨`,noResults:`검색과 일치하는 권한이 없습니다`,websocketHint:`실시간 업데이트에 필요합니다. 이 권한이 없으면 인터페이스는 주기적 폴링으로 대체됩니다.`}},users:{title:`사용자 관리`,subtitle:`Bambuddy 인스턴스에 대한 사용자 및 접근 권한 관리`,backToSettings:`설정으로 돌아가기`,createUser:`사용자 생성`,noPermission:`이 페이지에 접근할 권한이 없습니다.`,admin:`관리자`,noGroups:`그룹 없음`,active:`활성`,inactive:`비활성`,edit:`편집`,delete:`삭제`,system:`시스템`,noGroupsAvailable:`사용 가능한 그룹 없음`,table:{username:`사용자 이름`,groups:`그룹`,status:`상태`,actions:`작업`},toast:{created:`사용자가 성공적으로 생성되었습니다`,updated:`사용자가 성공적으로 업데이트되었습니다`,deleted:`사용자가 성공적으로 삭제되었습니다`,fillRequired:`모든 필수 항목을 입력해 주세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자 이상이어야 합니다`,ldapProvisioned:`LDAP 사용자 "{{username}}"이(가) 생성되었습니다`},modal:{createUser:`사용자 생성`,editUser:`사용자 편집`,cancel:`취소`,creating:`생성 중...`,saving:`저장 중...`,saveChanges:`변경 사항 저장`,advancedAuthSubtitle:`고급 인증 사용`,tabsAriaLabel:`사용자 소스`,localTab:`로컬`,ldapTab:`LDAP`,ldapSearchLabel:`디렉터리 검색`,ldapSearchPlaceholder:`사용자명, 이름, 이메일을 입력하세요...`,ldapMinChars:`검색하려면 최소 2자 이상 입력하세요`,ldapTypeToSearch:`LDAP 디렉터리를 검색하려면 입력을 시작하세요`,ldapSearching:`디렉터리 검색 중...`,ldapNoResults:`디렉터리에서 일치하는 사용자가 없습니다`,ldapSearchError:`디렉터리 검색에 실패했습니다. LDAP 서버 상태를 확인하세요.`,ldapAlreadyProvisioned:`이미 생성됨`,ldapSelectedLabel:`선택됨`,ldapProvision:`사용자 생성`,ldapProvisioning:`생성 중...`,ldapErrorProvision:`생성에 실패했습니다. LDAP 서버 상태를 확인하고 다시 시도하세요.`},form:{username:`사용자 이름`,usernamePlaceholder:`사용자 이름 입력`,email:`이메일`,emailPlaceholder:`user@example.com`,password:`비밀번호`,passwordPlaceholder:`비밀번호 입력`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호 확인`,newPasswordPlaceholder:`새 비밀번호 입력`,confirmNewPasswordPlaceholder:`새 비밀번호 확인`,leaveBlankToKeep:`현재 비밀번호 유지 시 비워두기`,groups:`그룹`,optional:`선택사항`,autoGeneratedPassword:`안전한 비밀번호가 자동으로 생성되어 사용자에게 이메일로 전송됩니다.`,passwordManagedByAdvancedAuth:`비밀번호는 고급 인증에 의해 관리됩니다. "비밀번호 재설정"을 사용하여 이메일로 새 비밀번호를 전송하세요.`,resetPassword:`비밀번호 재설정`,resettingPassword:`비밀번호 재설정 중...`},deleteModal:{title:`사용자 삭제`,message:`이 사용자를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,confirm:`사용자 삭제`}},streamOverlay:{title:`스트림 오버레이`,invalidPrinterId:`유효하지 않은 프린터 ID`,cameraStream:`카메라 스트림`,progress:`진행률`,eta:`예상 완료`,printerIdle:`프린터 대기 중`,printerOffline:`프린터 오프라인`,builder:{title:`스트림 오버레이`,description:`스트림 오버레이 URL을 만듭니다. 전체 화면 카메라 영상 위에 실시간 출력 정보를 겹쳐 보여주며 OBS, 벽걸이 디스플레이 등 모든 브라우저 소스에서 쓸 수 있습니다. 원하는 항목을 고르고 URL을 복사하세요.`,printer:`프린터`,size:`글자 크기`,sizeSmall:`작게`,sizeMedium:`보통`,sizeLarge:`크게`,fps:`프레임 속도`,fpsHint:`A1 및 P1 카메라는 요청한 값과 관계없이 초당 약 5프레임이 한계입니다.`,token:`스트림 오버레이 토큰(선택)`,tokenHint:`로그인을 사용할 때만 필요합니다. OBS에는 자체 세션이 없습니다. 위에서 스트림 오버레이 범위로 발급하세요.`,tokenWarning:`이 URL에는 토큰이 들어 있습니다. URL을 읽을 수 있는 사람은 누구나 영상과 파일 이름을 볼 수 있습니다. 접근을 끊으려면 토큰을 폐기하세요.`,fields:`표시할 항목`,fieldPrinter:`프린터 이름`,fieldFilename:`파일 이름`,fieldStatus:`상태`,fieldProgress:`진행률 막대`,fieldLayers:`레이어 수`,fieldEta:`남은 시간과 완료 예정 시각`,fieldCamera:`카메라 영상`,chamberHint:`챔버 온도는 실제 센서가 있는 모델에서만 표시됩니다. P1과 A1은 의미 없는 값을 보고하므로 제외됩니다.`,urlTitle:`오버레이 URL`,open:`열기`,showPreview:`미리보기 표시`,hidePreview:`미리보기 숨기기`,previewTitle:`오버레이 미리보기`},status:{printing:`인쇄 중`,paused:`일시 중지됨`,finished:`완료됨`,failed:`실패`,idle:`대기 중`,unknown:`알 수 없음`}},profiles:{title:`프로필`,subtitle:`슬라이서 프리셋 및 압력 전진 보정 관리`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`로컬 프로필`,kprofiles:`K-프로필`},orcaCloud:{connectedAs:`연결됨`,connectedShort:`Orca Cloud에 연결됨`,logout:`연결 해제`,noLogoutPermission:`연결을 해제할 권한이 없습니다`,noConnectPermission:`Orca Cloud에 연결할 권한이 없습니다`,retry:`다시 시도`,connectButton:`Orca Cloud 연결`,connect:{title:`Orca Cloud에 연결`,description:`Orca Cloud 계정에 로그인하여 슬라이서 프로필을 Bambuddy에 동기화하세요.`},device:{title:`Orca Cloud에서 Bambuddy 승인`,instruction:`Orca Cloud를 열고 이 코드를 승인하세요. 승인하면 Bambuddy가 자동으로 연결됩니다.`,codeLabel:`페어링 코드`,openButton:`Orca Cloud 승인 페이지 열기`,manualHint:`또는 {{url}}(으)로 이동하여 위 코드를 입력하세요.`,waiting:`승인을 기다리는 중…`,cancel:`취소`},profiles:{title:`Orca Cloud 프로필 ({{count}})`,refresh:`새로고침`,empty:`Orca Cloud 계정에 아직 프로필이 없습니다.`},toast:{disconnected:`Orca Cloud 연결 해제됨`},errors:{startFailed:`Orca Cloud 로그인 흐름을 시작할 수 없습니다.`,denied:`Orca Cloud에서 페어링이 거부되었습니다.`,expired:`페어링 코드가 만료되었습니다. 연결을 클릭하여 다시 시도하세요.`,pollFailed:`승인을 기다리는 중 연결이 끊겼습니다. 다시 시도하세요.`}},localProfiles:{title:`로컬 프로필`,subtitle:`OrcaSlicer에서 슬라이서 프리셋 가져오기 및 관리`,import:`프로필 가져오기`,importDesc:`.bbscfg, .bbsflmt, .orca_filament, .zip 또는 .json 파일을 여기에 드롭하세요`,importing:`가져오는 중...`,search:`로컬 프리셋 검색...`,noPresets:`로컬 프리셋 없음`,badge:`로컬`,edit:`편집`,delete:`삭제`,cancel:`취소`,deleteConfirmTitle:`프리셋 삭제`,deleteConfirm:`이 프리셋을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,source:`출처`,inheritsFrom:`상속`,filamentType:`유형`,vendor:`제조사`,compatiblePrinters:`프린터`,nozzleTemp:`노즐 온도`,cost:`비용`,density:`밀도`,pressureAdvance:`압력 전진`,filament:`필라멘트`,process:`프로세스`,printer:`프린터`,toast:{importSuccess:`{{count}}개 프리셋 가져옴`,importSkipped:`{{count}}개 프리셋 건너뜀 (중복)`,importError:`가져오기 중 {{count}}개 오류 발생`,deleted:`프리셋 삭제됨`,updated:`프리셋 업데이트됨`},noSearchResults:`검색어와 일치하는 프리셋이 없습니다`},connectedAs:`연결된 계정`,signInExpiredTitle:`Bambu 클라우드 로그인이 만료되었습니다`,signInExpiredBody:`Bambu Lab이 저장된 토큰을 더 이상 허용하지 않습니다. 클라우드 프로필, MakerWorld 가져오기, 펌웨어 확인을 복구하려면 다시 로그인하세요.`,logout:`로그아웃`,noLogoutPermission:`로그아웃 권한이 없습니다`,failedToLoad:`프로필 불러오기 실패`,retry:`다시 시도`,time:{justNow:`방금`,minsAgo:`{{count}}분 전`,hoursAgo:`{{count}}시간 전`,daysAgo:`{{count}}일 전`},toast:{loggedOut:`로그아웃되었습니다`},login:{title:`Bambu 클라우드 연결`,subtitle:`기기 간 슬라이서 프리셋 동기화`,email:`이메일`,password:`비밀번호`,region:`지역`,regionGlobal:`글로벌`,regionChina:`중국`,verificationCode:`인증 코드`,totpCode:`인증앱 코드`,checkEmail:`이메일({{email}})로 전송된 6자리 코드를 확인하세요`,enterTotpHint:`인증앱에서 6자리 코드를 입력하세요`,accessToken:`액세스 토큰`,accessTokenHint:`Bambu Studio에서 Bambu Lab 액세스 토큰을 붙여넣으세요`,back:`뒤로`,loginButton:`로그인`,verifyButton:`인증`,setTokenButton:`토큰 설정`,useToken:`액세스 토큰 대신 사용`,captchaTitle:`Bambu Cloud가 CAPTCHA를 요구합니다`,captchaBody:`Bambu가 로그인을 처리하기 전에 네트워크에 CAPTCHA 확인을 요구하고 있으며, 이 확인은 Bambuddy에서 응답할 수 없습니다. 이메일과 비밀번호의 문제가 아닙니다. 차단은 공용 IP 주소에 연결되어 있으며 보통 몇 시간 안에 저절로 풀립니다. 반복해서 재시도하면 오히려 더 오래 지속됩니다. 지금 로그인하려면 브라우저 세션에서 가져온 액세스 토큰을 사용하세요.`,useEmail:`이메일로 로그인`,toast:{loggedIn:`성공적으로 로그인되었습니다`,codeSent:`이메일로 인증 코드가 전송되었습니다`,enterTotp:`인증앱에서 코드를 입력하세요`,tokenSet:`토큰이 성공적으로 설정되었습니다`}},presets:{myPreset:`내 프리셋 (편집 가능)`,duplicate:`복제`,editable:`편집 가능`,failedToLoadDetails:`프리셋 세부 정보 불러오기 실패`,deleteConfirm:`이 프리셋을 삭제하시겠습니까?`,deleteWarning:`Bambu 클라우드에서 "{{name}}"을(를) 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.`,noDuplicatePermission:`프리셋 복제 권한이 없습니다`,noEditPermission:`프리셋 편집 권한이 없습니다`,noDeletePermission:`프리셋 삭제 권한이 없습니다`,types:{filament:`필라멘트 프리셋`,printer:`프린터 프리셋`,process:`프로세스 프리셋`},toast:{deleted:`프리셋 삭제됨`,created:`프리셋 생성됨`,updated:`프리셋 업데이트됨`,duplicated:`프리셋 복제됨`,fieldAdded:`"{{key}}" 필드 추가됨`,exported:`프리셋 내보냄`},baseLabel:`기본: {{name}}`,currentLabel:`현재: {{name}}`,newPreset:`새 프리셋`,editPreset:`프리셋 편집`,duplicatePreset:`프리셋 복제`,createNewPreset:`새 프리셋 생성`,customizeSettings:`새 프리셋의 설정 사용자 지정`,compareWithBase:`기본 프리셋과 비교`,compare:`비교`,basePreset:`기본 프리셋`,selectBasePreset:`기본 프리셋 선택...`,presetName:`프리셋 이름`,myCustomPreset:`내 사용자 지정 프리셋`,inheritsFrom:`상속 출처`,dropJsonToImport:`JSON 파일을 드롭하여 가져오기`,tabs:{common:`공통`,allFields:`모든 필드`},availableFields:`사용 가능한 필드`,searchFieldsPlaceholder:`필드 검색...`,noMatchingFields:`일치하는 필드 없음`,allFieldsAdded:`모든 필드 추가됨`,addCustomField:`사용자 지정 필드 추가`,yourOverrides:`내 재정의`,noOverridesYet:`아직 재정의 없음`,clickFieldsToAdd:`왼쪽 필드를 클릭하여 추가`,saveAsTemplate:`템플릿으로 저장`,jsonTip:`팁: 이 모달 어디서나 .json 파일을 드래그 앤 드롭하여 설정을 가져올 수 있습니다`},cloudView:{searchPlaceholder:`프리셋 검색...`,templates:`템플릿`,refresh:`새로고침`,newPreset:`새 프리셋`,clearFilters:`필터 초기화`,compareMode:`비교 모드`,selectAnotherPreset:`다른 {{type}} 프리셋 선택`,clickTwoPresets:`같은 유형의 프리셋 두 개를 클릭하여 비교`,selectFirst:`1. 첫 번째 선택`,selectSecond:`2. 두 번째 선택`,compareNow:`지금 비교`,lastSynced:`마지막 동기화:`,showingCount:`{{total}}개 중 {{showing}}개 표시`,noPresetsFound:`프리셋을 찾을 수 없음`,columns:{filament:`필라멘트`,process:`프로세스`,printer:`프린터`},noFilamentPresets:`필라멘트 프리셋 없음`,noProcessPresets:`프로세스 프리셋 없음`,noPrinterPresets:`프린터 프리셋 없음`,filters:{type:`유형`,owner:`소유자`,printer:`프린터`,nozzle:`노즐`,filament:`필라멘트`,layer:`레이어`,all:`전체`,myPresets:`내 프리셋`,builtIn:`기본 제공`,process:`프로세스`},noTemplatesPermission:`템플릿 관리 권한이 없습니다`,noRefreshPermission:`프로필 새로고침 권한이 없습니다`,noCreatePermission:`프리셋 생성 권한이 없습니다`},templates:{title:`빠른 템플릿`,noTemplates:`아직 템플릿 없음`,createFirst:`프리셋 편집기에서 템플릿을 생성하세요`,typeFilter:`유형:`,deleteTitle:`템플릿 삭제`,deleteWarning:`이 작업은 취소할 수 없습니다`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,namePlaceholder:`템플릿 이름`,descriptionPlaceholder:`설명`,settingsJson:`설정 (JSON)`,fieldsCount:`{{count}}개 필드`,shownInModals:`모달에 표시됨`,hiddenInModals:`모달에서 숨겨짐`,apply:`적용`,toast:{deleted:`템플릿 삭제됨`,updated:`템플릿 업데이트됨`,created:`템플릿 생성됨`,applied:`템플릿 적용됨`}}},support:{debugLoggingActive:`디버그 로깅이 활성화되어 있습니다`,manageLogs:`관리`,collectItem7:`프린터 연결 및 펌웨어 버전`,collectItem8:`통합 상태 (Spoolman, MQTT, HA)`,collectItem9:`네트워크 인터페이스 (서브넷만)`,collectItem10:`Python 패키지 버전`,collectItem11:`데이터베이스 상태 확인`,collectItem12:`Docker 환경 세부 정보`,bundleGenerating:`번들 생성 중...`,bundleStepConnection:`프린터 연결 확인 실행 중`,bundleStepVirtualPrinters:`가상 프린터 설정 확인 실행 중`,bundleStepLogScan:`알려진 문제가 있는지 최근 로그 스캔 중`,bundleStepBuild:`지원 번들 ZIP 빌드 중`},fileManager:{variants:{badge:`버전 {{count}}개`,groupAction:`버전으로 그룹화`,groupTooltip:`이 파일들을 서로 다른 프린터용으로 슬라이스한 동일 작업으로 표시합니다`,grouped:`파일 {{count}}개를 버전으로 그룹화했습니다`,printAlternatives:`인쇄 (대안 {{count}}개)`},title:`파일 관리자`,subtitle:`인쇄 파일 정리 및 관리`,uploadFiles:`파일 업로드`,newFolder:`새 폴더`,folderName:`폴더 이름`,folderNamePlaceholder:`예: 기능성 부품`,renameFile:`파일 이름 바꾸기`,renameFolder:`폴더 이름 바꾸기`,invalidFilenameChar:`"{{char}}" 문자는 인쇄 파일 이름에 허용되지 않습니다. 프린터 SD 카드가 거부하는 문자: < > : " / \\ | ? *`,moveFiles:`{{count}}개 파일 이동`,rootNoFolder:`루트 (폴더 없음)`,current:`현재`,linkFolder:`폴더 연결`,linkFolderDescription:`"{{name}}"을(를) 프로젝트 또는 아카이브에 연결하여 빠른 접근.`,project:`프로젝트`,archive:`아카이브`,noProjectsFound:`프로젝트를 찾을 수 없음`,noArchivesFound:`아카이브를 찾을 수 없음`,unlink:`연결 해제`,link:`연결`,dragDropFiles:`파일을 여기에 드래그 앤 드롭`,dropFilesHere:`파일을 여기에 드롭`,releaseToUpload:`놓아서 업로드`,orClickToBrowse:`또는 클릭하여 탐색`,allFileTypesSupported:`모든 파일 형식 지원. ZIP 파일은 압축 해제됩니다.`,zipFilesDetected:`ZIP 파일 감지됨`,zipExtractOptions:`ZIP 파일이 압축 해제됩니다. 폴더 구조 처리 방법을 선택하세요:`,preserveZipStructure:`ZIP에서 폴더 구조 유지`,createFolderFromZip:`ZIP 파일 이름으로 폴더 생성`,stlThumbnailGeneration:`STL 썸네일 생성`,zipMayContainStl:`ZIP 파일에 STL 파일이 포함될 수 있습니다. 압축 해제 중 썸네일을 생성할 수 있습니다.`,thumbnailsCanBeGenerated:`STL 파일의 썸네일을 생성할 수 있습니다. 대형 모델은 처리 시간이 더 걸릴 수 있습니다.`,generateThumbnailsForStl:`STL 파일의 썸네일 생성`,threemfDetected:`3MF 파일 감지됨`,threemfExtractionInfo:`프린터 모델, 재료, 색상 및 인쇄 설정이 3MF 파일에서 자동으로 추출됩니다.`,willBeExtracted:`추출 예정`,filesExtracted:`{{count}}개 파일 추출됨`,uploadComplete:`업로드 완료: {{succeeded}}개 성공`,uploadFailed:`업로드 실패`,zipFilesFailed:`{{count}}개 파일 실패`,uploading:`업로드 중...`,changeLink:`링크 변경...`,linkTo:`연결 대상...`,linkToProjectOrArchive:`프로젝트 또는 아카이브에 연결`,generateThumbnail:`썸네일 생성`,generateThumbnails:`썸네일 생성`,generateThumbnailsForMissing:`썸네일이 없는 STL 파일의 썸네일 생성`,gridView:`격자 보기`,listView:`목록 보기`,lowDiskSpaceWarning:`디스크 공간 부족 경고`,lowDiskSpaceDetails:`전체 {{total}} 중 {{free}}만 남음. 임계값은 설정에서 {{threshold}}GB로 설정됩니다.`,files:`파일`,folders:`폴더`,size:`크기`,free:`여유`,allFiles:`모든 파일`,allExternal:`외부`,externalIsEmpty:`외부 파일 없음`,externalEmptyDescription:`연결된 외부 폴더의 파일이 여기에 표시됩니다.`,wrap:`줄 바꿈`,enableTextWrapping:`텍스트 줄 바꿈 활성화`,disableTextWrapping:`텍스트 줄 바꿈 비활성화`,collapse:`접기`,collapseFoldersByDefault:`기본적으로 폴더 접기`,expandFoldersByDefault:`기본적으로 폴더 펼치기`,folderSort:`폴더 정렬`,folderSortByName:`이름순`,folderSortByActivity:`최근 활동순`,dragToResizeTooltip:`드래그하여 크기 조정, 더블클릭하여 초기화`,searchFiles:`파일 검색...`,searchSubfoldersHint:`하위 폴더 포함`,readme:{truncated:`잘림`,show:`README 표시`,hide:`README 숨기기`,label:`README`},tags:{title:`태그`,subtitle:`파일에 가로지르는 필터용 라벨을 붙이세요 — 장난감, 어린이용, PETG 전용 등.`,manage:`태그`,manageTitle:`태그 카탈로그 관리`,add:`새 태그`,edit:`태그 이름 변경`,name:`이름`,fileCount:`파일`,empty:`아직 태그가 없습니다. 만들어서 파일에 라벨을 붙이세요.`,noMatches:`일치하는 태그가 없습니다.`,createPlaceholder:`예: 장난감, 어린이용, petg`,createButton:`만들기`,nameRequired:`이름은 필수입니다.`,searchPlaceholder:`태그 필터...`,created:`태그가 만들어졌습니다.`,updated:`태그 이름이 변경되었습니다.`,deleted:`태그가 제거되었습니다.`,saveFailed:`태그를 저장할 수 없습니다.`,deleteFailed:`태그를 제거할 수 없습니다.`,applyFailed:`태그를 적용할 수 없습니다.`,applyAdd:`태그 추가`,applyRemove:`태그 제거`,applyAddSuccess:`{{files}}개 파일에 태그 {{count}}개를 추가했습니다.`,applyRemoveSuccess:`{{files}}개 파일에서 태그 {{count}}개를 제거했습니다.`,actionAdd:`선택한 파일에 추가`,actionRemove:`선택한 파일에서 제거`,tagAction:`태그`,bulkTitle:`선택한 {{count}}개 파일에 태그 지정`,bulkTooltip:`선택한 모든 파일에 태그를 추가하거나 제거합니다.`,noPermission:`파일에 태그를 붙일 권한이 없습니다.`,filterLabel:`필터:`,clearAll:`모두 지우기`,confirmDelete:`태그 "{{name}}"을(를) 삭제하시겠습니까?`,confirmDeleteMessage:`카탈로그에서 태그를 제거합니다. 파일과 다른 태그는 그대로 유지됩니다.`,confirmDeleteInUseMessage:`이 태그는 {{count}}개 파일에 있습니다. 삭제하면 모든 파일에서 칩이 사라지지만 파일 자체는 변경되지 않습니다.`,editAria:`{{name}} 편집`,deleteAria:`{{name}} 삭제`},allTypes:`모든 유형`,prints:`인쇄물`,ascending:`오름차순`,descending:`내림차순`,showModified:`수정 날짜 표시`,hideModified:`수정 날짜 숨기기`,lastModified:`마지막 수정`,lastActivity:`마지막 활동`,resultsCount:`전체 {{total}}개 중 {{showing}}개`,selectAll:`모두 선택`,deselectAll:`모두 선택 해제`,selected:`{{count}}개 선택됨`,adding:`추가 중...`,loadingFiles:`파일 불러오는 중...`,folderIsEmpty:`폴더가 비어 있음`,noFilesYet:`파일 없음`,folderEmptyDescription:`파일을 업로드하거나 이 폴더로 이동하여 시작하세요.`,noFilesDescription:`파일을 업로드하여 인쇄 관련 파일을 정리하세요.`,noMatchingFiles:`일치하는 파일 없음`,noMatchingFilesDescription:`현재 검색 또는 필터 조건과 일치하는 파일이 없습니다.`,clearFilters:`필터 초기화`,printedCount:`{{count}}회 인쇄됨`,uploadedBy:`업로드한 사람`,deleteFolder:`폴더 삭제`,deleteFile:`파일 삭제`,deleteFilesCount:`{{count}}개 파일 삭제`,deleteFolderConfirm:`이 폴더를 삭제하시겠습니까? 안의 모든 파일도 삭제됩니다.`,deleteFileConfirm:`이 파일을 삭제하시겠습니까?`,deleteFilesConfirm:`선택한 {{count}}개 파일을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleting:`삭제 중...`,noPermissionRenameFolder:`폴더 이름 변경 권한이 없습니다`,noPermissionLinkFolder:`폴더 연결 권한이 없습니다`,noPermissionDeleteFolder:`폴더 삭제 권한이 없습니다`,onlyEmptyFoldersDeletable:`빈 폴더만 삭제할 수 있습니다`,noPermissionPrint:`인쇄 권한이 없습니다`,noPermissionAddToQueue:`대기열 추가 권한이 없습니다`,noPermissionSlice:`파일 슬라이싱 권한이 없습니다`,noPermissionDownload:`파일 다운로드 권한이 없습니다`,noPermissionPreview:`파일을 미리 볼 권한이 없습니다`,preview3d:`3D 미리보기`,noPermissionRenameFile:`파일 이름 변경 권한이 없습니다`,noPermissionGenerateThumbnail:`썸네일 생성 권한이 없습니다`,noPermissionDeleteFile:`파일 삭제 권한이 없습니다`,noPermissionCreateFolder:`폴더 생성 권한이 없습니다`,noPermissionUpload:`파일 업로드 권한이 없습니다`,noPermissionMoveFiles:`파일 이동 권한이 없습니다`,noPermissionDeleteFiles:`파일 삭제 권한이 없습니다`,linkExternal:`외부 연결`,linkExternalFolder:`외부 폴더 연결`,linkExternalFolderDescription:`호스트 디렉토리(NAS, USB, 네트워크 공유)를 파일 관리자에 마운트합니다. 파일은 복사되지 않고 원래 경로에서 직접 접근합니다.`,externalFolderNamePlaceholder:`예: NAS 인쇄물`,externalPath:`호스트 경로`,externalPathHelp:`Docker 호스트의 디렉토리 절대 경로. 컨테이너에 바인드 마운트되어야 합니다.`,readOnly:`읽기 전용`,readOnlyHelp:`업로드 및 삭제 방지`,showHiddenFiles:`숨김 파일 표시 (dotfiles)`,externalFolder:`외부 폴더`,scanFolder:`스캔`,toast:{folderCreated:`폴더 생성됨`,openInSlicerFailed:`슬라이서에서 열 수 없습니다`,folderDeleted:`폴더 삭제됨`,fileDeleted:`파일 삭제됨`,filesDeleted:`{{count}}개 파일 삭제됨`,filesMoved:`파일 이동됨`,folderLinked:`폴더 연결됨`,folderUnlinked:`폴더 연결 해제됨`,externalFolderLinked:`외부 폴더 연결 및 스캔됨`,folderScanned:`스캔 완료: {{added}}개 추가, {{removed}}개 제거`,addedToQueue:`{{count}}개 파일을 대기열에 추가함`,addedToQueuePartial:`{{added}}개 추가됨, {{failed}}개 실패`,failedToAddToQueue:`파일 추가 실패: {{error}}`,fileRenamed:`파일 이름 변경됨`,folderRenamed:`폴더 이름 변경됨`,thumbnailsGenerated:`{{count}}개 썸네일 생성됨`,thumbnailsGeneratedPartial:`{{succeeded}}개 썸네일 생성됨, {{failed}}개 실패`,noStlMissingThumbnails:`썸네일이 없는 STL 파일 없음`,failedToGenerateThumbnails:`썸네일 생성 실패: {{error}}`,thumbnailGenerated:`썸네일 생성됨`,failedToGenerateThumbnail:`썸네일 생성 실패: {{error}}`}},projects:{parentLabel:`상위 프로젝트`,parentNone:`없음 (최상위 프로젝트)`,parentHint:`이 프로젝트를 다른 프로젝트 아래에 두면 수치가 마스터 프로젝트로 합산됩니다`,partOf:`{{name}}의 일부`,subProjectCount:`하위 프로젝트 {{count}}개`,subProjectsOf:`{{name}}의 하위 프로젝트`,title:`프로젝트`,subtitle:`3D 인쇄 프로젝트 정리 및 추적`,newProject:`새 프로젝트`,editProject:`프로젝트 편집`,deleteProject:`프로젝트 삭제`,projectName:`프로젝트 이름`,description:`설명`,noProjects:`프로젝트 없음`,noProjectsFiltered:`{{status}} 프로젝트 없음`,noProjectsFilteredHelp:`{{status}} 프로젝트가 없습니다. 상태가 변경되면 여기에 표시됩니다.`,createFirst:`첫 번째 프로젝트를 만들어 관련 인쇄물을 정리하고 진행 상황을 추적하며 빌드를 관리하세요.`,createFirstButton:`첫 번째 프로젝트 만들기`,create:`만들기`,files:`파일`,prints:`인쇄물`,plates:`플레이트`,parts:`부품`,lastModified:`마지막 수정`,deleteConfirm:`이 프로젝트를 삭제하시겠습니까? 아카이브 및 대기열 항목은 연결 해제되지만 삭제되지는 않습니다.`,addFiles:`파일 추가`,removeFile:`파일 제거`,viewDetails:`세부 정보 보기`,namePlaceholder:`예: Voron 2.4 빌드`,descriptionPlaceholder:`선택적 설명...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`URL은 http:// 또는 https://로 시작해야 합니다`,openExternalUrl:`프로젝트 URL 열기`,coverImageLabel:`커버 사진`,coverImageAlt:`프로젝트 커버 사진`,coverImageUpload:`업로드`,coverImageReplace:`교체`,coverImageRemove:`제거`,color:`색상`,targetPlates:`목표 플레이트`,targetPlatesPlaceholder:`예: 25`,targetPlatesHelp:`인쇄 작업 수`,targetParts:`목표 부품`,targetPartsPlaceholder:`예: 150`,targetPartsHelp:`필요한 총 개체 수`,targetSets:`파일당 복사본 수`,targetSetsPlaceholder:`예: 10`,targetSetsHelp:`각 인쇄 가능한 파일을 인쇄할 횟수`,tagsLabel:`태그 (쉼표로 구분)`,tagsPlaceholder:`예: voron, 기능성, 선물`,dueDate:`마감일`,priority:`우선순위`,priorityLow:`낮음`,priorityNormal:`보통`,priorityHigh:`높음`,priorityUrgent:`긴급`,statusActive:`활성`,statusCompleted:`완료됨`,statusArchived:`보관됨`,done:`완료`,completed:`완료됨`,failed:`실패`,inQueue:`대기 중`,noPrintsYet:`인쇄물 없음`,printJobs:`인쇄 작업 (플레이트)`,partsPrinted:`인쇄된 부품`,failedParts:`실패한 부품`,import:`가져오기`,export:`내보내기`,importProject:`프로젝트 가져오기`,exportAll:`모든 프로젝트 내보내기`,loading:`프로젝트 불러오는 중...`,noEditPermission:`프로젝트 편집 권한이 없습니다`,noDeletePermission:`프로젝트 삭제 권한이 없습니다`,noCreatePermission:`프로젝트 생성 권한이 없습니다`,noImportPermission:`프로젝트 가져오기 권한이 없습니다`,noExportPermission:`프로젝트 내보내기 권한이 없습니다`,toast:{created:`프로젝트 생성됨`,updated:`프로젝트 업데이트됨`,deleted:`프로젝트 삭제됨`,imported:`프로젝트 가져옴`,multipleImported:`{{count}}개 프로젝트 가져옴`,importFailed:`가져오기 실패`,exported:`프로젝트 내보냄 (메타데이터만)`}},projectDetail:{notFound:`프로젝트를 찾을 수 없음`,backToProjects:`프로젝트로 돌아가기`,export:`내보내기`,exportProject:`프로젝트 내보내기`,noExportPermission:`프로젝트 내보내기 권한이 없습니다`,noEditPermission:`프로젝트 편집 권한이 없습니다`,partOf:`속한 프로젝트:`,priorityLabel:`우선순위:`,noPrints:`이 프로젝트에 아직 인쇄물이 없습니다`,status:{active:`활성`,completed:`완료됨`,archived:`보관됨`},priority:{low:`낮음`,normal:`보통`,high:`높음`,urgent:`긴급`},dueDate:{overdue:`기한 초과`,today:`오늘 마감`,daysLeft:`{{count}}일 남음`},progress:{platesProgress:`플레이트 진행률`,partsProgress:`부품 진행률`,setsProgress:`완성된 세트`,sets:`세트`,setsHint:`모든 인쇄 가능한 파일이 이 횟수에 도달하면 세트가 완성됩니다`,printJobs:`인쇄 작업`,parts:`부품`,percentComplete:`{{percent}}% 완료`,remaining:`{{count}}개 남음`},stats:{printJobs:`인쇄 작업`,total:`합계`,failed:`{{count}}개 실패`,partsPrinted:`{{count}}개 부품 인쇄됨`,printTime:`인쇄 시간`,filamentUsed:`사용된 필라멘트`},cost:{title:`비용 추적`,filamentCost:`필라멘트 비용`,energy:`에너지`,totalCost:`총 비용`,total:`합계`,includesBom:`BOM 포함`,budget:`예산`,remaining:`남은 예산`},subProjects:{title:`하위 프로젝트 ({{count}})`,jobs:`작업 {{count}}개`},rollup:{title:`하위 프로젝트 {{count}}개 포함`,progress:`전체 진행률`,percentComplete:`{{percent}}% 완료`},notes:{title:`메모`,noEditPermission:`메모 편집 권한이 없습니다`,placeholder:`이 프로젝트에 대한 메모 추가...`,empty:`아직 메모가 없습니다. 편집을 클릭하여 메모를 추가하세요.`},files:{title:`파일`,linkFolders:`파일 관리자에서 폴더 연결`,forQuickAccess:`빠른 접근을 위해 이 프로젝트에 연결합니다.`,fileCount:`{{count}}개 파일`,empty:`연결된 폴더가 없습니다. 파일 관리자로 이동하여 폴더를 이 프로젝트에 연결하세요.`,printedCount:`{{count}}회 인쇄됨`,progressTooltip:`{{target}}회 중 {{done}}회 인쇄 완료`,noFiles:`이 폴더에 파일이 없습니다.`},bom:{title:`부품 목록`,acquired:`{{total}}개 중 {{completed}}개 확보`,showAll:`전체 표시`,hideDone:`완료된 것 숨기기`,addPart:`부품 추가`,noAddPermission:`부품 추가 권한이 없습니다`,partNamePlaceholder:`부품 이름 (예: M3x8 나사)`,partName:`부품 이름`,qty:`수량`,price:`가격 ({{currency}})`,sourcingUrlPlaceholder:`구매 URL (선택사항)`,remarksPlaceholder:`비고 (선택사항)`,deletePart:`부품 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,noUpdatePermission:`부품 업데이트 권한이 없습니다`,noEditPermission:`부품 편집 권한이 없습니다`,noDeletePermission:`부품 삭제 권한이 없습니다`,totalCost:`총 비용:`,empty:`부품 목록에 부품이 없습니다. 하드웨어, 전자 부품 또는 기타 구성품을 추가하여 조달이 필요한 것을 추적하세요.`},timeline:{title:`활동 타임라인`,empty:`아직 활동이 없습니다.`},template:{saveAsTemplate:`템플릿으로 저장`,noCreatePermission:`템플릿 생성 권한이 없습니다`},queue:{title:`대기열`,viewAll:`전체 보기`,printing:`{{count}}개 인쇄 중`,queued:`{{count}}개 대기 중`},prints:{title:`인쇄물 ({{count}})`},toast:{projectUpdated:`프로젝트 업데이트됨`,partAdded:`부품 추가됨`,partRemoved:`부품 제거됨`,exportFailed:`내보내기 실패`,projectExported:`프로젝트 내보냄`,templateCreated:`템플릿 생성됨`}},system:{title:`시스템 정보`,version:`버전`,uptime:`가동 시간`,cpuUsage:`CPU 사용량`,memoryUsage:`메모리 사용량`,diskUsage:`디스크 사용량`,networkInfo:`네트워크 정보`,logs:`로그`,debugMode:`디버그 모드`,enableDebug:`디버그 로깅 활성화`,disableDebug:`디버그 로깅 비활성화`,downloadLogs:`로그 다운로드`,clearLogs:`로그 초기화`,dockerInfo:`Docker 정보`,containerName:`컨테이너 이름`,imageName:`이미지 이름`,platform:`플랫폼`,architecture:`아키텍처`},sponsors:{sectionTitle:`독립적·커뮤니티 후원`,tagline:`Bambuddy는 무료이며, 자발적으로 후원하는 사용자 덕분에 계속 무료로 유지됩니다. VC도 없고, 클라우드 종속도 없습니다.`,viewSupporters:`후원자 보기`,toastPrints:`Bambuddy로 {{count}}회 인쇄를 완료했습니다. Bambuddy는 후원자 덕분에 무료로 유지됩니다.`,toastCost:`Bambuddy로 {{total}}만큼의 필라멘트를 추적했습니다. 프로젝트를 독립적으로 유지하는 사람들을 만나보세요.`,toastArchives:`Bambuddy로 {{count}}회 인쇄를 아카이브했습니다. 독립성을 지지하는 사람들을 만나보세요.`,toastAnniversary:`Bambuddy와 함께한 지 1년입니다! 프로젝트를 독립적으로 유지하는 사람들을 만나보세요.`,toastVersionUpdate:`v{{version}}로 업데이트되었습니다. Bambuddy는 후원자 덕분에 무료로 유지됩니다.`,toastBusiness:`프린터 {{count}}대에서 Bambuddy를 운영 중이신가요? 팀을 위한 지원 플랜이 있습니다. 우선 수정, 인보이스 발행, 메인테이너와의 직접 소통을 제공합니다.`,businessCta:`비즈니스용 Bambuddy`,businessTitle:`비즈니스용 Bambuddy`,businessTagline:`프린터 {{count}}대를 운영 중입니다. 팀과 프린트 팜을 위한 우선 지원, 상용 라이선스, 인보이스 발행을 제공합니다.`},library:{title:`필라멘트 라이브러리`,addFilament:`필라멘트 추가`,editFilament:`필라멘트 편집`,deleteFilament:`필라멘트 삭제`,vendor:`제조사`,material:`재료`,color:`색상`,kFactor:`K 계수`,temperature:`온도`,noFilaments:`라이브러리에 필라멘트 없음`,deleteConfirm:`이 필라멘트를 삭제하시겠습니까?`,importFromPrinter:`프린터에서 가져오기`,exportToFile:`파일로 내보내기`,runWithPipeline:{actionLabel:`파이프라인으로 실행`,noPermission:`파이프라인을 실행할 권한이 없습니다`,modalTitle:`파이프라인으로 실행`,confirmTitle:`실행 확인`,confirmIntro:`사전 점검에서 이 실행과 관련된 문제를 발견했습니다`,sourceHint:`소스`,pipelineHint:`파이프라인`,targetHint:`대상`,pipelineListAria:`사용 가능한 파이프라인`,runAnyway:`그래도 실행`,loading:`불러오는 중…`,empty:`저장된 파이프라인이 없습니다. 슬라이스 대화상자를 열고 "파이프라인으로 저장"을 클릭하여 생성하세요.`,noTarget:`대상 프린터가 설정되지 않음`,noTargetMessage:`이 파이프라인에는 대상 프린터가 없습니다. 설정에서 열어 선택하세요.`,copies:`사본 수`,copiesHint:`최대 {{n}}`,classTarget:`임의의 {{model}}`,toast:{started:`파이프라인 실행 시작됨`,failed:`실행을 시작할 수 없습니다`},issue:{printerNotSet:`이 파이프라인에 대상 프린터가 설정되어 있지 않습니다.`,printerNotFound:`대상 프린터가 더 이상 존재하지 않습니다.`,printerDisabled:`대상 프린터가 비활성화되어 있습니다.`,printerOffline:`대상 프린터가 오프라인입니다.`,filamentType:`필라멘트 슬롯 {{slot}}: 예상 {{expected}}, AMS 실제 {{actual}}`,filamentColor:`필라멘트 슬롯 {{slot}}: 색상이 다릅니다 (예상 {{expected}}, AMS {{actual}})`,amsSlotMissing:`AMS 슬롯 {{slot}}이(가) 이 프린터에서 사용 불가`,filamentUnverified:`필라멘트 슬롯 {{slot}}은(는) 클라우드/표준 프리셋이며 정적으로 검증할 수 없습니다.`,noClassMatches:`이 설치에서 파이프라인의 대상 모델 클래스({{expected}})와 일치하는 프린터가 없습니다.`,classNotSet:`파이프라인 대상이 프린터 클래스로 설정되었지만 모델이 선택되지 않았습니다.`}}},slicerSettings:{presetValuesOutdatedSidecar:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 이 기능보다 오래되어 프리셋 값을 가져올 수 없습니다. 값을 보려면 사이드카 이미지를 업데이트하세요. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesNotConfigured:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 설정되지 않아 프리셋 값을 읽을 수 없습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesSidecarUnavailable:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 응답하지 않아 프리셋 값을 읽을 수 없습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesUnavailable:`슬라이서 기본값을 표시합니다. 선택한 프리셋의 값을 읽을 수 없었습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,filamentDefault:`기본값`,fromFile:`파일에서`,fromFileHint:`디자이너가 원본 파일에서 이 항목을 변경했습니다. 값은 {{value}}입니다.`,fromFilePrinterCoupled:`디자이너의 프린터`,fromFilePrinterCoupledHint:`이 파일이 설계된 프린터에 맞춘 값입니다. 사용 중인 프린터에서는 잘못되거나 범위를 벗어날 수 있습니다.`,fromFileOverridesPreset:`프리셋 덮어쓰기`,fromFileOverridesPresetHint:`파일은 이 값을 {{value}}(으)로 설정하지만 선택한 프리셋은 {{preset}}을(를) 사용합니다. 파일을 우선할 때만 선택하세요.`,useFromFile:`{{option}}에 원본 파일의 값 사용`,otherFromFile:`이 파일의 기타 설정`,fromFileSummary:`이 파일에서 디자이너가 프로세스 설정 {{count}}개를 변경했습니다. 체크한 항목만 적용됩니다.`,fromFileUseAll:`디자이너 설정 사용`,fromFileUseAllHint:`다른 프린터에서도 통하는 설정에 체크합니다. 디자이너의 프린터에 맞춘 설정과 선택한 프리셋을 정의하는 설정은 꺼진 채로 둡니다.`,fromFileClear:`{{count}}개 해제`,loading:`슬라이서 설정을 불러오는 중…`,mode:{simple:`간단`,advanced:`고급`,expert:`전문가`},searchPlaceholder:`설정 검색`,resetAll:`{{count}}개 초기화`,resetOption:`기본값으로 되돌리기`,noMatches:`검색과 일치하는 설정이 없습니다.`},slice:{filamentSlotUnset:`미설정`,processSettingsEmbedded:`'파일에 포함된 설정 사용'이 켜져 있는 동안에는 사용되지 않습니다. 이 슬라이스는 파일 자체의 설정을 따릅니다.`,processSettingsInactive:`비활성`,presetsHidden:`{{count}}개 숨김`,showAllPresets:`모두 표시`,showFewerPresets:`간략히 표시`,processSettings:`프로세스 설정`,processSettingsHint:`이 슬라이스에 사용할 프리셋을 조정합니다. 건드리지 않은 항목은 프리셋 정의를 그대로 따릅니다.`,processSettingsChanged:`{{count}}개 변경됨`,processSettingsUnchanged:`프리셋 기본값`,title:`모델 슬라이싱`,action:`슬라이싱`,slicing:`슬라이싱 중…`,printer:`프린터 프로필`,process:`프로세스 프로필`,filament:`필라멘트 프로필`,filamentSlot:`필라멘트 {{index}} ({{type}})`,selectPreset:`— 프리셋 선택 —`,loadingPresets:`프리셋 불러오는 중…`,analyzingPlateFilaments:`플레이트 필라멘트 분석 중…`,analyzingPlateFilamentsHint:`이 플레이트가 사용하는 AMS 슬롯을 확인하기 위해 미리보기 슬라이싱을 실행합니다. 캐시 후에는 재오픈이 즉각적입니다.`,previewToast:`{{name}} 분석 중 — {{elapsed}}`,previewWithProgress:`{{name}} 분석 중 — {{stage}} ({{percent}}%) — {{elapsed}}`,notUsedByPlate:`— 이 플레이트에서 사용되지 않음`,noPresetsForSlot:`사용 가능한 프리셋 없음`,presetsLoadFailed:`프리셋 불러오기 실패. 먼저 설정 → 프로필에서 가져오세요.`,refreshPresets:`새로 고침`,refreshPresetsTitle:`프리셋 새로 고침 — 최신 클라우드 및 번들 목록 가져오기 (Bambu Studio 또는 Bambu Handy에서 프리셋 삭제 후 사용)`,allPresetsRequired:`모든 프리셋을 선택해야 합니다`,useEmbedded:`파일에 포함된 설정 사용`,useEmbeddedHint:`위 프로필 대신 디자이너가 설정한 대로(벽, 내부 채움, 필라멘트) 슬라이싱합니다. 프린터가 파일과 일치하여 사용할 수 있습니다.`,autoOrient:`개체 방향 자동 조정`,autoOrientHint:`슬라이싱하기 전에 각 개체를 출력하기 좋은 면으로 회전시킵니다. 파일에 저장된 방향을 덮어씁니다.`,autoArrange:`플레이트에 자동 배치`,autoArrangeHint:`개체가 겹치지 않도록 슬라이서가 다시 배치합니다. 파일의 배치를 대체합니다.`,enqueuing:`슬라이싱 작업 제출 중…`,queued:`대기 중…`,failed:`슬라이싱 실패. 슬라이서 사이드카 로그를 확인하세요.`,startedToast:`백그라운드에서 {{name}} 슬라이싱 중…`,queuedToast:`대기 중: {{name}} — {{elapsed}}`,runningToast:`{{name}} 슬라이싱 중 — {{elapsed}}`,runningWithProgress:`{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,completedToast:`{{name}} 슬라이싱 완료`,externalWriteFallbackToast:`내부 라이브러리에 저장했습니다: 외부 폴더에 쓸 수 없습니다`,failedToast:`{{name}} 슬라이싱 실패: {{detail}}`,tier:{local:`가져온 것`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`표준`},cloud:{notAuthenticated:`클라우드 프리셋을 보려면 Bambu Cloud에 로그인하세요 (설정 → 프로필 → Bambu Cloud).`,expired:`Bambu Cloud 세션이 만료되었습니다 — 다시 로그인하여 클라우드 프리셋을 새로고침하세요.`,unreachable:`현재 Bambu Cloud에 연결할 수 없습니다. 로컬 및 표준 프리셋은 계속 작동합니다.`},orcaCloud:{notAuthenticated:`Orca 프리셋을 보려면 Orca Cloud (프로필 → Orca Cloud)에 로그인하세요.`,expired:`Orca Cloud 세션이 만료되었습니다 — Orca 프리셋을 새로고침하려면 다시 로그인하세요.`,unreachable:`Orca Cloud에 현재 연결할 수 없습니다. 다른 프리셋은 계속 작동합니다.`},actionAll:`{{count}}개 플레이트 모두 슬라이싱`,actionAllTitle:`모든 플레이트를 단일 다중 플레이트 출력으로 슬라이싱합니다 (단일 아카이브). 필라멘트 선택은 프로젝트가 정의하는 모든 슬롯을 포함합니다.`,allPlatesToggle:`{{count}}개 플레이트 모두 슬라이싱`,otherPrinters:`다른 프린터`,runningWithProgressMultiPlate:`플레이트 {{plateIndex}}/{{plateCount}} • {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,failedTitle:`슬라이싱 실패`,bedType:{label:`빌드 플레이트`,auto:`자동 (프로세스 프리셋 사용)`,coolPlate:`쿨 플레이트`,coolPlateSuperTack:`쿨 플레이트 슈퍼택`,engineering:`엔지니어링 플레이트`,highTemp:`고온 플레이트`,texturedPEI:`텍스처 PEI 플레이트`,smoothPEI:`매끄러운 PEI 플레이트`},pipelines:{label:`파이프라인`,applyAria:`파이프라인 적용`,applyPrompt:`파이프라인 적용…`,empty:`저장된 파이프라인이 없습니다`,saveButton:`파이프라인으로 저장`,saveTitle:`현재 네 개 슬롯의 선택을 재사용 가능한 파이프라인으로 저장합니다`,namePlaceholder:`파이프라인 이름`,nameAria:`새 파이프라인 이름`,toast:{applied:`"{{name}}" 적용됨`,saved:`파이프라인이 저장되었습니다`,saveFailed:`저장 실패`}}},spoolman:{title:`Spoolman 통합`,enabled:`Spoolman 활성화됨`,url:`Spoolman URL`,connected:`연결됨`,disconnected:`연결되지 않음`,testConnection:`연결 테스트`,sync:`동기화`,syncing:`동기화 중...`,lastSync:`마지막 동기화`,linkToSpoolman:`Spoolman에 연결`,openInSpoolman:`Spoolman에서 열기`,unlinkSpool:`스풀 연결 해제`,unlinkConfirmTitle:`스풀 할당 해제?`,unlinkConfirmMessage:`이 슬롯에서 스풀을 제거합니다. 스풀 데이터 자체는 변경되지 않습니다.`,selectSpool:`스풀 선택`,noUnlinkedSpools:`할당되지 않은 스풀 없음`,linkSuccess:`스풀이 성공적으로 할당되었습니다`,linkFailed:`스풀 할당 실패`,unlinkSuccess:`스풀이 성공적으로 할당 해제되었습니다`,unlinkFailed:`스풀 할당 해제 실패`,linkedSpool:`할당된 스풀`,spoolId:`스풀 ID`,fillSourceLabel:`(Spoolman)`,weight:`무게`,remaining:`남은 양`,disableWeightSync:`AMS 예상 무게 동기화 비활성화`,disableWeightSyncDesc:`AMS 추정치에서 남은 용량을 업데이트하지 않습니다. AMS 백분율 기반 추정 대신 Spoolman의 사용량 추적을 선호하는 경우 사용하세요. 새 스풀은 여전히 AMS 추정치를 초기 무게로 사용합니다.`,reportPartialUsage:`실패한 인쇄물에 대한 부분 사용량 보고`,reportPartialUsageDesc:`인쇄가 실패하거나 취소될 때 레이어 진행률을 기반으로 해당 시점까지 사용된 예상 필라멘트를 보고합니다.`},locations:{title:`보관 위치`,subtitle:`스풀의 선반, 서랍 등 물리적 보관 장소를 관리합니다`,add:`위치 추가`,addShort:`추가`,edit:`위치 편집`,name:`이름`,spools:`스풀`,sensors:`센서`,empty:`아직 보관 위치가 없습니다. 첫 번째 선반이나 서랍을 만드세요.`,manage:`위치`,createPlaceholder:`예: 선반 A, 서랍 1`,nameRequired:`위치 이름은 필수입니다`,created:`위치가 생성되었습니다`,updated:`위치가 업데이트되었습니다`,deleted:`위치가 삭제되었습니다`,saveFailed:`위치 저장에 실패했습니다`,deleteFailed:`위치 삭제에 실패했습니다`,deleteBlocked:`삭제하기 전에 이 위치의 모든 스풀을 옮기세요`,confirmDelete:`"{{name}}"을(를) 삭제하시겠습니까?`,confirmDeleteMessage:`이 위치가 카탈로그에서 제거됩니다. 스풀을 먼저 옮겨야 합니다.`,confirmDeleteMessageWithSensors:`이 위치가 카탈로그에서 제거됩니다. 스풀을 먼저 옮겨야 합니다. 연결된 센서도 함께 삭제됩니다.`},inventory:{title:`스풀 재고`,addToInventory:`인벤토리에 추가`,addToInventoryPending:`추가 중...`,addToInventorySuccess:`스풀이 인벤토리에 추가됨`,addToInventoryFailed:`스풀을 인벤토리에 추가하지 못함`,unknownSpoolTitle:`새 필라멘트 감지됨`,unknownSpoolMessage:`{{location}}에서 알 수 없는 RFID 태그가 있는 스풀이 감지되었습니다. 지금 인벤토리에 추가하시겠습니까?`,unknownSpoolSlot:`슬롯`,bulk:{selectAllVisible:`표시된 항목 모두 선택`,selectRow:`행 선택`,selectGroup:`그룹 선택`,selectionCount:`{{count}}개 선택됨`,edit:`편집`,printLabels:`라벨 인쇄`,resetUsage:`사용량 재설정`,restore:`복원`,archive:`보관`,delete:`삭제`,clearSelection:`선택 해제`,editTitle:`스풀 일괄 편집`,editSubtitle:`선택한 {{count}}개의 스풀에 적용됩니다. 체크한 필드만 업데이트됩니다.`,editHint:`필드에 입력하면 업데이트할 항목으로 표시됩니다 — 체크된 행만 전송됩니다. 빈 필드는 스풀을 변경하지 않습니다 (필드 비우기는 개별 스풀에서만 가능).`,useCustom:`"{{value}}" 사용`,toggleField:`이 필드의 업데이트 전환`,changeCount:`{{count}}개의 필드가 업데이트됩니다.`,applyPending:`적용 중...`,applyButton:`{{count}}개에 적용`,deleteTitle:`선택한 스풀 삭제`,archiveTitle:`선택한 스풀 보관`,restoreTitle:`선택한 스풀 복원`,resetUsageTitle:`선택한 스풀의 사용량 재설정`,deleteMessage:`{{count}}개의 스풀을 영구적으로 삭제하시겠습니까? 되돌릴 수 없습니다.`,archiveMessage:`{{count}}개의 스풀을 보관하시겠습니까? 나중에 복원할 수 있습니다.`,restoreMessage:`{{count}}개의 보관된 스풀을 복원하시겠습니까?`,resetUsageMessage:`{{count}}개의 스풀에서 "총 사용량" 카운터를 재설정하시겠습니까? 남은 무게는 보존됩니다.`,updateSuccess:`{{count}}개의 스풀 업데이트됨`,updateFailed:`일괄 업데이트 실패`,updatePartial:`{{ok}}개 업데이트, {{failed}}개 실패`,updateAllFailed:`{{count}}개의 업데이트가 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,deleteSuccess:`{{count}}개의 스풀 삭제됨`,deleteFailed:`일괄 삭제 실패`,deletePartial:`{{ok}}개 삭제, {{failed}}개 실패`,deleteAllFailed:`{{count}}개의 삭제가 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,archiveSuccess:`{{count}}개의 스풀 보관됨`,archiveFailed:`일괄 보관 실패`,archivePartial:`{{ok}}개 보관, {{failed}}개 실패`,archiveAllFailed:`{{count}}개의 보관이 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,restoreSuccess:`{{count}}개의 스풀 복원됨`,restoreFailed:`일괄 복원 실패`,restorePartial:`{{ok}}개 복원, {{failed}}개 실패`,restoreAllFailed:`{{count}}개의 복원이 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,invalidHex:`16진수 6자(RRGGBB) 또는 8자(RRGGBBAA)를 입력하세요. 그렇지 않으면 필드가 적용되지 않습니다.`},spoolmanMixedContentTitle:`HTTPS에서 Spoolman을 불러올 수 없음 — 브라우저가 혼합 콘텐츠를 차단함`,spoolmanMixedContentBody:`Bambuddy가 HTTPS로 서비스되고 있지만 Spoolman URL은 여전히 HTTP입니다. 브라우저는 보안상 혼합 콘텐츠를 차단하므로 내장된 Spoolman UI가 렌더링되지 않습니다. 이 기능이 작동하려면 Spoolman이 HTTPS로 접근 가능해야 합니다.`,spoolmanMixedContentFixReverseProxy:`Spoolman을 Bambuddy와 같은 리버스 프록시(Traefik / Nginx / Caddy) 뒤에 HTTPS로 배치한 다음 설정에서 Spoolman URL을 새 HTTPS 주소로 업데이트하세요.`,spoolmanMixedContentFixOpenNewTab:`임시 방편으로 HTTP로 새 브라우저 탭에서 Spoolman을 여세요 — 혼합 콘텐츠 규칙은 내장 프레임에만 적용되므로 독립 탭은 여전히 작동합니다.`,spoolmanOpenInNewTab:`새 탭에서 Spoolman 열기`,labels:{title:`스풀 라벨 인쇄`,selectedCount:`{{count}}개 선택됨`,pickSpools:`라벨을 인쇄할 스풀 선택:`,monochrome:`흑백 (흑백 프린터)`,monochromeHint:`색상 견본을 제거하고 텍스트를 넓힙니다`,startingPosition:`라벨 시작 위치`,startingPositionRange:`시트 템플릿만 해당: L7160은 1–21, 5160은 1–30을 지원합니다.`,startingPositionInvalid:`1에서 {{capacity}} 사이의 정수를 입력하세요.`,startingPositionFirst:`위치 1부터 인쇄를 시작합니다.`,startingPositionSkipped:`첫 번째 시트의 위치 1부터 {{lastPosition}}까지는 비워 둡니다.`,startingPositionRangeError:`이 시트의 시작 위치는 1에서 {{capacity}} 사이여야 합니다.`,searchPlaceholder:`이름, 브랜드 또는 #ID 검색`,filterByMaterial:`재료:`,allMaterials:`전체`,selectVisible:`보이는 모든 항목 선택 ({{count}})`,deselectVisible:`보이는 항목 선택 해제`,clearAll:`모두 초기화`,noSpoolsToShow:`표시할 스풀이 없습니다. 필터를 조정하고 다시 시도하세요.`,noMatches:`현재 검색 또는 필터와 일치하는 스풀이 없습니다.`,printOne:`이 스풀의 라벨 인쇄`,printLabels:`라벨 인쇄…`,bulkTitle:`현재 표시된 {{count}}개에서 라벨을 인쇄할 스풀 선택`,noSpoolsTitle:`라벨을 붙일 스풀 없음`,error:`라벨을 생성할 수 없습니다: {{msg}}`,templates:{box40x30:{label:`박스 라벨 (40 × 30 mm)`,hint:`페이지당 단일 라벨; 일반 DK/Brother 롤 크기, 필라멘트 가방 및 보관함 라벨에 적합.`},box:{label:`박스 라벨 (62 × 29 mm)`,hint:`페이지당 단일 라벨; Brother PT/QL 및 Dymo 소형 라벨에 맞는 크기.`},averyL7160:{label:`Avery L7160 — A4 시트 (38.1 × 63.5 mm × 21)`,hint:`EU 시트; A4 페이지당 21개 라벨.`},avery5160:{label:`Avery 5160 — US Letter 시트 (25.4 × 66.7 mm × 30)`,hint:`US 시트; Letter 페이지당 30개 라벨.`},amsHolderSmall:{label:`AMS 홀더 — 소형 (74 × 33 mm)`,hint:`페이지당 단일 레이블; MakerWorld 모델 752566 (AMS 필라멘트 레이블 홀더)의 인쇄 가능 레이블과 일치합니다.`},amsHolderLarge:{label:`AMS 홀더 — 대형 (75 × 55 mm)`,hint:`페이지당 단일 레이블; AMS 필라멘트 레이블 홀더의 카드스톡 삽입 변형에 맞습니다. 스와치, 브랜드, 재질, ID, QR 코드에 충분한 공간이 있습니다.`}},sortBy:{label:`정렬:`,id:`ID 순`,color:`색상 순`}},csv:{importButton:`CSV 가져오기`,exportButton:`CSV 내보내기`,modalTitle:`CSV에서 스풀 가져오기`,selectFile:`CSV 파일을 선택하거나 여기로 끌어다 놓으세요`,dragHint:`헤더: material(필수), brand, subtype, color_name, rgba, …`,parsing:`파일을 읽는 중…`,previewError:`CSV 파일을 읽을 수 없습니다`,validCount:`유효 {{count}}개`,errorCount:`오류 {{count}}개`,skippedCount:`건너뜀 {{count}}개`,colRow:`행`,colStatus:`상태`,colColor:`색상`,colorResolved:`카탈로그에서 색상 채움`,colorCrossMaterial:`다른 재료에서 색상을 가져옴 — 카탈로그에 정확히 일치하는 항목 없음`,duplicateExisting:`이 재료, 브랜드, 색상의 스풀이 이미 존재합니다 — 그래도 새 스풀로 가져옵니다`,spoolmanHint:`Spoolman 모드에서는 Spoolman의 기본 CSV 가져오기/내보내기를 사용하세요.`,importValidRows:`유효한 {{count}}개 행 가져오기`,noValidRows:`유효한 행 없음`,importing:`가져오는 중…`,importSuccess:`{{count}}개 스풀을 가져왔습니다`,importError:`가져오기 실패`,exportError:`내보내기 실패`},addSpool:`스풀 추가`,editSpool:`스풀 편집`,copySpool:`스풀 복사`,material:`재료`,selectMaterial:`재료 선택...`,subtype:`하위 유형`,brand:`브랜드`,searchBrand:`브랜드 검색...`,useCustomBrand:`"{{brand}}" 사용`,useCustomMaterial:`사용자 지정 재료 사용: {{material}}`,suggestedOptions:`추천`,allOptions:`전체`,colorName:`색상 이름`,colorNamePlaceholder:`제이드 화이트, 파이어 레드...`,color:`색상`,hexColor:`16진수 색상`,pickColor:`사용자 지정 색상 선택`,labelWeight:`라벨 무게`,coreWeight:`빈 스풀 무게`,searchSpoolWeight:`스풀 무게 검색...`,weightUsed:`사용됨`,currentWeight:`남은 무게`,measuredWeight:`측정된 무게`,spoolName:`스풀`,costPerKg:`kg당 비용`,storageLocation:`보관 위치`,temperature:`온도`,humidity:`습도`,battery:`배터리`,storageLocationPlaceholder:`예: 선반 A, 서랍 1`,openInInventory:`재고에서 열기`,measuredWeightError:`측정된 무게는 {{min}}g과 {{max}}g 사이여야 합니다.`,slicerFilament:`슬라이서 필라멘트`,slicerFilamentName:`슬라이서 프리셋 이름`,slicerPreset:`슬라이서 프리셋`,searchPresets:`필라멘트 프리셋 검색...`,selectedPreset:`선택됨`,noPresetsFound:`프리셋을 찾을 수 없음`,tempOverrides:`온도 재정의`,note:`메모`,notePlaceholder:`이 스풀에 대한 추가 메모...`,category:`카테고리`,categoryPlaceholder:`예: 생산, 프로토타입, 고객 A`,categoryNone:`미분류`,lowStockThresholdOverride:`재고 부족 임계값 (이 스풀)`,lowStockThresholdOverrideHelp:`전역 임계값({{global}}%)을 사용하려면 비워두세요.`,clearRfid:`RFID 태그 초기화`,rfidCleared:`RFID 태그가 초기화되었습니다`,archive:`보관`,restore:`복원`,noSpools:`아직 스풀이 없습니다. 첫 번째 스풀을 추가하여 시작하세요.`,noAvailableSpools:`사용 가능한 스풀이 없습니다. 재고에 스풀을 추가하거나 먼저 다른 슬롯에서 해제하세요.`,kProfiles:`K-프로필`,addKProfile:`K-프로필 추가`,assignSpool:`스풀 할당`,unassignSpool:`할당 해제`,assignSuccess:`스풀 할당 및 AMS 슬롯 구성됨`,assignPendingInsert:`할당됨. 스풀을 삽입하면 슬롯이 구성됩니다.`,assignFailed:`스풀 할당 실패`,selectSpool:`이 슬롯에 할당할 스풀 선택`,assigned:`할당됨`,assigning:`할당 중...`,searchSpools:`스풀 검색...`,showAllSpools:`모든 스풀 표시`,spoolmanSpools:`Spoolman 스풀`,allMaterials:`모든 재료`,filterByBrand:`브랜드로 필터...`,showArchived:`보관된 항목 표시`,quickAdd:`빠른 추가 (재고)`,quantity:`수량`,stock:`재고`,configured:`구성됨`,spoolsCreated:`{{count}}개 스풀 생성됨`,spoolsPartiallyCreated:`{{total}}개 중 {{created}}개 스풀 생성됨 (일부 실패)`,spoolCreated:`스풀 생성됨`,spoolUpdated:`스풀 업데이트됨`,spoolDeleted:`스풀 삭제됨`,deepLinkSpoolNotFound:`스풀을 찾을 수 없음`,deepLinkFetchFailed:`스풀을 불러올 수 없음 — 다시 시도하세요`,spoolArchived:`스풀 보관됨`,spoolRestored:`스풀 복원됨`,kProfileSaveFailed:`K-프로필 설정을 저장할 수 없습니다`,syncWeightSpoolNotFound:`스풀을 찾을 수 없음 — 삭제되었을 수 있습니다`,syncWeightSpoolmanUnreachable:`Spoolman에 연결할 수 없음 — 나중에 다시 시도하세요`,syncWeightFailed:`무게 동기화 실패`,spoolmanUnreachable:`Spoolman에 연결할 수 없습니다 — 나중에 다시 시도하세요`,deleteSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,deleteFailed:`스풀 삭제 실패`,archiveSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,archiveFailed:`스풀 보관 실패`,restoreSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,restoreFailed:`스풀 복원 실패`,saveFailed:`변경 사항 저장 실패`,tagClearFailed:`태그 초기화 실패`,deleteConfirm:`이 스풀을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,archiveConfirm:`이 스풀을 보관하시겠습니까?`,advancedSettings:`고급 설정`,filamentInfoTab:`필라멘트 정보`,paProfileTab:`PA 프로필`,filamentInfo:`필라멘트`,additional:`추가`,loadingPresets:`클라우드 프리셋 불러오는 중...`,cloudConnected:`클라우드 연결됨`,cloudNotConnected:`클라우드 연결되지 않음 (기본값 사용)`,recentColors:`최근`,searchColors:`색상 검색...`,searchResults:`검색 결과`,allColors:`모든 색상`,commonColors:`일반 색상`,showLess:`간략히 보기`,showAll:`모두 보기`,noColorsFound:`검색과 일치하는 색상 없음`,noResults:`일치하는 항목 없음`,extraColorsLabel:`추가 색상`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`2~8개의 16진수 색상값을 쉼표로 구분하여 붙여넣으세요. 그라데이션으로 렌더링됩니다.`,extraColorsInvalid:`유효하지 않은 16진수 무시됨: {{tokens}}`,colorEffectLabel:`효과`,colorEffect:{none:`없음`,sparkle:`스파클`,wood:`우드`,marble:`마블`,glow:`글로우`,matte:`매트`,silk:`실크`,galaxy:`갤럭시`,rainbow:`레인보우`,metal:`메탈`,translucent:`반투명`,gradient:`그라데이션`,dualColor:`듀얼 컬러`,triColor:`트리 컬러`,multicolor:`멀티컬러`},selectMaterialFirst:`먼저 필라멘트 정보 탭에서 재료를 선택해 주세요.`,noPrintersConfigured:`구성된 프린터 없음. PA 프로필을 사용하려면 프린터를 추가하세요.`,matchingFilter:`일치`,anyBrand:`모든 브랜드`,anyVariant:`모든 변형`,autoSelect:`자동 선택`,matches:`일치`,match:`일치`,noMatches:`일치 없음`,connected:`연결됨`,offline:`오프라인`,printerOffline:`프린터가 오프라인입니다. 연결하여 보정 프로필을 확인하세요.`,noKProfilesMatch:`선택한 필라멘트와 일치하는 K-프로필이 없습니다.`,leftNozzle:`왼쪽 노즐`,rightNozzle:`오른쪽 노즐`,profilesSelected:`보정 프로필 선택됨`,totalInventory:`총 재고`,totalConsumed:`총 소비량`,byMaterial:`재료별`,inPrinter:`프린터 내`,lowStock:`재고 부족`,sinceTracking:`추적 시작 이후`,loadedInAms:`AMS/외부에 장착됨`,remaining:`남은 양`,weightCheck:`무게 확인`,lastWeighed:`마지막 계량`,neverWeighed:`계량 기록 없음`,search:`스풀 검색...`,showing:`표시 중`,to:`~`,of:`/`,show:`표시`,spools:`스풀`,spool:`스풀`,page:`페이지`,noSpoolsMatch:`결과를 찾을 수 없음`,noSpoolsMatchDesc:`검색 또는 필터를 조정하여 원하는 항목을 찾아보세요.`,active:`활성`,archived:`보관됨`,all:`전체`,used:`사용됨`,new:`새것`,clearFilters:`필터 초기화`,table:`테이블`,cards:`카드`,net:`순`,groupSimilar:`그룹화`,groupedSpools:`동일한 스풀 {{count}}개`,groupedRows:`행`,columns:`열`,configureColumns:`열 구성`,configureColumnsDesc:`드래그하여 열 순서를 변경하거나 화살표를 사용하세요. 눈 아이콘으로 표시 여부를 전환합니다.`,visible:`표시됨`,reset:`초기화`,cancel:`취소`,applyChanges:`변경 사항 적용`,moveUp:`위로 이동`,moveDown:`아래로 이동`,hideColumn:`열 숨기기`,showColumn:`열 표시`,linkToSpool:`스풀에 연결`,tagLinked:`태그가 스풀에 연결됨`,tagLinkFailed:`태그 연결 실패`,tagAlreadyLinked:`태그가 이미 다른 스풀에 연결됨`,unknownTag:`알 수 없는 RFID 태그 감지됨`,usageHistory:`사용 기록`,noUsageHistory:`사용 기록 없음`,printName:`인쇄 이름`,weightConsumed:`소비 무게`,clearHistory:`초기화`,historyCleared:`사용 기록 초기화됨`,fillSourceLabel:`(재고)`,lowStockThresholdError:`임계값은 0.1에서 99.9 사이여야 합니다`,assignMismatchTitle:`재료 불일치`,assignMismatchMessage:`선택한 스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 트레이 재료 "{{trayMaterial}}"과(와) 일치하지 않습니다. 그래도 할당하시겠습니까?`,assignMismatchConfirm:`그래도 할당`,assignPartialMismatchMessage:`스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 "{{trayMaterial}}"과(와) 유사하지만 정확히 일치하지 않습니다. 계속하시겠습니까?`,assignProfileMismatchMessage:`스풀 프로필 "{{spoolProfile}}"이(가) {{location}}의 트레이 프로필 "{{trayProfile}}"과(와) 일치하지 않습니다. 계속하시겠습니까?`,assignReconfigureNote:`AMS 슬롯이 스풀의 프로필을 사용하도록 재구성됩니다.`,spoolmanFilamentCatalog:`Spoolman 필라멘트 카탈로그`,pickFromSpoolmanCatalog:`Spoolman 카탈로그에서 선택…`,spoolmanFilamentSelected:`Spoolman 카탈로그에서 필라멘트 선택됨`,spoolmanFilamentUnlinked:`필라멘트 카탈로그 연결 해제됨`,noSpoolmanFilaments:`Spoolman 카탈로그에서 필라멘트를 찾을 수 없음`,spoolmanFilamentColorSwatch:`필라멘트 색상`,spoolWeightManagedBySpoolman:`빈 스풀 무게는 Spoolman에서 필라멘트 유형별로 관리됩니다`,spoolmanCatalogLoadFailed:`Spoolman 필라멘트 카탈로그 불러오기 실패`,subtitle:`스풀 관리`,storageLocationNone:`위치 미설정`,resetConsumedCounter:`카운터 초기화`,resetConsumedCounterTooltip:`이 스풀의 소비된 그램 카운터를 0으로 초기화합니다. 잔여 무게는 변경되지 않습니다.`,resetConsumedCounterConfirm:`이 스풀의 소비된 그램 카운터를 0으로 초기화하시겠습니까? 이후 인쇄는 처음부터 추적됩니다. 스풀 자체, 잔여 무게 계산 및 설정은 변경되지 않습니다.`,resetAllConsumedCounters:`모든 카운터 초기화`,resetAllConsumedCountersTooltip:`모든 스풀의 소비된 그램 카운터를 0으로 초기화합니다. 잔여 무게는 변경되지 않습니다.`,resetAllConsumedCountersConfirm:`{{count}}개 스풀(아카이브 포함)의 소비된 그램 카운터를 모두 0으로 초기화하시겠습니까? 이는 "총 소비량" 통계를 지워 이후 인쇄가 처음부터 추적되도록 합니다. 스풀과 잔여 무게는 변경되지 않습니다.`,consumedCounterReset:`카운터가 초기화되었습니다`,allConsumedCountersReset:`{{count}}개 스풀의 카운터가 초기화되었습니다`,resetConsumedCounterFailed:`카운터 초기화 실패`},timelapse:{title:`타임랩스`,create:`타임랩스 만들기`,download:`다운로드`,delete:`삭제`,preview:`미리보기`,frameRate:`프레임 속도`,quality:`품질`,processing:`처리 중...`,noTimelapses:`사용 가능한 타임랩스 없음`},ams:{title:`AMS`,slot:`슬롯`,empty:`비어 있음`,emptySlot:`빈 슬롯`,unknown:`알 수 없음`,humidity:`습도`,temperature:`온도`,filamentType:`필라멘트 유형`,filamentColor:`색상`,remaining:`남은 양`,history:`AMS 기록`,noHistory:`기록 없음`,configureSlot:`슬롯 구성`,externalSpool:`외부 스풀`,profile:`프로필`,kFactor:`K 계수`,kFactorShort:`K`,fill:`채우기`,configure:`구성`,used:`사용됨`,remainingUnit:`남음`,slotEmpty:`비어 있음`,slotUnconfigured:`?`,emptySlotReset:`필라멘트가 할당되지 않음`},printModal:{variants:{editNote:`이 대안은 대기열에 추가할 때 정해집니다. 변경하려면 취소 후 다시 추가하세요.`,title:`프린터 대안`,help:`작업 하나, 대기열 한 자리. 조건이 맞는 프린터 중 먼저 비는 프린터가 해당 파일을 인쇄합니다.`,unknownModel:`알 수 없는 모델`,plateFor:`{{filename}}의 플레이트`,moveUp:`위로`,moveDown:`아래로`,queued:`대안 {{count}}개와 함께 대기열에 추가했습니다`},selectPrinter:`프린터 선택`,selectPlate:`플레이트 선택`,filamentMapping:`필라멘트 매핑`,useArchiveMapping:`매핑`,useArchiveMappingTooltip:`유형/색상으로 매칭하는 대신, 이 아카이브에 저장된 AMS 매핑(슬라이서 제공)에서 모든 슬롯을 선택합니다.`,clickToChangeSlot:`클릭하여 슬롯 할당 변경`,reRead:`다시 읽기`,plateN:`플레이트 {{n}}`,plateFilamentsUnreadable:`선택한 플레이트의 필라멘트를 읽을 수 없어 매핑할 수 없습니다. 해당 플레이트를 선택 해제하면 나머지를 대기열에 추가할 수 있습니다.`,totalCost:`총 비용:`,slotRemainingShort:` - {{grams}}g 남음`,printSettings:`인쇄 설정`,bedLeveling:`베드 레벨링`,flowCalibration:`유량 보정`,vibrationCalibration:`진동 보정`,layerInspection:`첫 번째 레이어 검사`,timelapse:`타임랩스`,cancel:`취소`,noPrintersAvailable:`사용 가능한 프린터 없음`,printerBusy:`프린터가 사용 중입니다`,printerOffline:`프린터가 오프라인입니다`,sameTypeDifferentColor:`같은 유형, 다른 색상`,filamentTypeNotLoaded:`필라멘트 유형이 장착되지 않음`,statusReady:`준비됨`,statusColorMismatch:`색상 불일치`,statusTypeNotFound:`유형을 찾을 수 없음`,requiredTooltip:`필요: {{name}} - {{color}}`,manuallySelected:`수동으로 선택됨`,autoMatched:`자동으로 일치됨`,selectSlot:`슬롯 선택`,sameTypeDifferentColorDetail:`같은 유형, 다른 색상: {{required}} 필요, 슬롯에는 {{loaded}}`,requiredTypeNotInPrinter:`필요한 필라멘트 유형을 프린터에서 찾을 수 없습니다.`,whenToPrint:`인쇄 시점`,asap:`최대한 빨리`,queue:`대기열`,schedule:`예약`,dateTime:`날짜 및 시간`,invalidDateTime:`유효한 날짜와 시간을 입력하세요`,openCalendar:`달력 열기`,requireManualStart:`수동 시작 필요`,requirePreviousSuccess:`이전 인쇄가 성공한 경우에만 시작`,autoOffAfter:`완료 후 프린터 전원 끄기`,helpAsap:`인쇄가 대기열 맨 앞에 추가되고 적합한 프린터가 유휴 상태가 되는 즉시 시작됩니다.`,helpSchedule:`프린터가 유휴 상태이면 예약된 시간에 인쇄가 시작됩니다. 사용 중이면 프린터가 사용 가능해질 때까지 대기합니다.`,helpQueue:`인쇄가 대기열 맨 뒤에 추가됩니다.`,leftNozzle:`L`,rightNozzle:`R`,leftNozzleTooltip:`왼쪽 노즐`,rightNozzleTooltip:`오른쪽 노즐`,ftsSameInletHint:`이 출력에 사용할 필라멘트가 모두 필라멘트 트랙 스위치 IN-{{inlet}}에 있습니다. 같은 입구의 필라멘트끼리 교체하면 느립니다. 하나를 반대쪽 입구의 AMS로 옮기면 빨라집니다.`,rackPosition:`랙 위치`,rackPositionTooltip:`이 필라멘트를 출력할 랙의 노즐입니다. 위치 번호는 프린터와 동일합니다.`,rackEmptyPosition:`이 랙 위치는 비어 있습니다`,rackWrongNozzle:`{{has}} 노즐이 장착되어 있습니다. 이 필라멘트에는 {{needs}}이(가) 필요합니다`,filamentOverride:`필라멘트 재정의`,filamentOverrideHint:`선택적으로 모델 기반 할당을 위해 필라멘트를 재정의합니다. 스케줄러는 원래 3MF 값 대신 선택한 필라멘트와 일치시킵니다.`,originalFilament:`원래`,overrideWith:`재정의`,resetToOriginal:`원래대로 초기화`,insufficientFilamentTitle:`필라멘트 부족`,waitingForAmsStatus:`{{printer}}의 AMS 상태를 기다리는 중…`,insufficientFilamentMessage:`일부 할당된 스풀에 이 인쇄에 필요한 것보다 적은 필라멘트가 남아 있습니다:`,insufficientFilamentLine:`{{printer}} - {{slot}}: {{required}}g 필요, {{remaining}}g 남음`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: {{required}}g 필요, 일치하는 스풀 합계 {{remaining}}g (AMS 필라멘트 백업)`,printAnyway:`그래도 인쇄`,forceColorMatch:`색상 일치 강제`,staggerPrinterStarts:`프린터 시작 분산`,staggerGroupSize:`그룹 크기`,staggerInterval:`간격 (분)`,staggerPreview:`{{printers}}대 프린터 → {{size}}대씩 {{groups}}개 그룹, 매 {{interval}}분마다 시작`,staggerLastGroup:`마지막 그룹: {{count}}`,staggerTotal:`합계: {{minutes}}분`,staggerToPrinters:`{{count}}대 프린터에 분산`,gcodeInjection:`자동 인쇄 G-code 삽입`,insufficientBudget:`예산 부족`,unlimitedNoBudget:`무제한 – 예산 한도가 설정되지 않았습니다.`,noPrintableCostCenters:`인쇄에 사용할 수 있는 활성 비용 센터가 없습니다. 관리자에게 인쇄 권한을 요청하세요.`},backup:{includesEncryptionKey:`로컬 백업에는 MFA 암호화 키 파일(DATA_DIR/.mfa_encryption_key)이 포함되어 백업 ZIP이 자체 완결됩니다. ZIP 파일을 민감하게 취급하세요 — 파일을 가진 누구나 내부에 저장된 OIDC 클라이언트 비밀과 TOTP 비밀을 복호화할 수 있습니다.`,title:`백업 및 복원`,createBackup:`백업 만들기`,restoreBackup:`백업 복원`,restoreDescription:`백업 파일에서 모든 데이터 교체`,downloadBackup:`백업 다운로드`,uploadBackup:`백업 업로드`,lastBackup:`마지막 백업`,autoBackup:`자동 백업`,backupNow:`지금 백업`,restoreWarning:`경고: 백업을 복원하면 현재 모든 데이터를 덮어씁니다.`,includeArchives:`아카이브 포함`,includeSettings:`설정 포함`,includeProfiles:`프로필 포함`,backupSuccess:`백업이 성공적으로 생성되었습니다`,restoreSuccess:`백업이 성공적으로 복원되었습니다`,backupFailed:`백업 실패`,restoreFailed:`복원 실패`,restoreNote:`복원 중 가상 프린터가 중지됩니다`,githubBackup:`Git 백업`,enabled:`활성화됨`,cloudLoginRequired:`Bambu 클라우드 로그인 필요. GitHub 백업을 활성화하려면 프로필 → 클라우드 프로필에서 로그인하세요.`,cloudLoginRequiredShort:`클라우드 로그인 필요`,githubDescription:`백업 및 버전 기록을 위해 비공개 GitHub 저장소에 프로필을 자동으로 동기화합니다.`,repositoryUrl:`저장소 URL`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`비보안 HTTP 허용`,allowInsecureHttpHint:`TLS가 없는 개인 네트워크의 자체 호스팅 인스턴스에 활성화`,personalAccessToken:`개인 액세스 토큰`,tokenSaved:`(저장됨)`,enterNewToken:`업데이트하려면 새 토큰 입력`,tokenHintGitHub:`Contents 읽기 및 쓰기 권한이 있는 세분화된 토큰 또는 repo 범위를 가진 클래식 토큰.`,tokenHintGitLab:`api 범위 또는 read_repository와 write_repository를 함께 가진 토큰.`,tokenHintGitea:`write:repository 범위를 가진 토큰.`,tokenHintForgejo:`write:repository 범위를 가진 토큰. 이 저장소 하나로만 제한된 토큰이면 충분합니다.`,branch:`브랜치`,provider:`Git 제공자`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`수동만`,hourly:`매시간`,daily:`매일`,weekly:`매주`,includeInBackup:`백업에 포함`,kProfiles:`K-프로필`,kProfilesDescription:`연결된 프린터의 압력 전진 보정`,noPrintersConnected:`연결된 프린터 없음`,printersConnected:`{{total}}개 중 {{connected}}개 연결됨`,cloudProfiles:`클라우드 프로필`,cloudProfilesDescription:`Bambu 클라우드와 Orca 클라우드의 필라멘트, 프린터 및 프로세스 프리셋`,cloudProfilesAccounts:`연결된 계정 — Bambu 클라우드: {{bambu}}, Orca 클라우드: {{orca}}`,appSettings:`앱 설정`,appSettingsDescription:`Bambuddy 구성 (전체 데이터베이스)`,spoolInventory:`스풀 재고`,spoolInventoryDescription:`필라멘트 스풀, 사용 기록 및 비용 추적`,printArchives:`인쇄 아카이브`,printArchivesDescription:`인쇄 기록 메타데이터 (gcode/3MF 파일 제외)`,lastBackupAt:`마지막 백업:`,noBackupsYet:`아직 백업 없음`,next:`다음:`,startingBackup:`백업 시작 중...`,test:`테스트`,enableBackup:`백업 활성화`,testConnection:`연결 테스트`,enterRepoUrl:`저장소 URL 입력`,enterRepoAndToken:`저장소 URL 및 액세스 토큰 입력`,repoRequired:`저장소 URL이 필요합니다`,tokenRequired:`액세스 토큰이 필요합니다`,githubBackupEnabled:`GitHub 백업 활성화됨`,tokenUpdated:`토큰 업데이트됨`,settingsSaved:`설정 저장됨`,failedToSave:`저장 실패: {{message}}`,backupCompleteFiles:`백업 완료 - {{count}}개 파일 업데이트됨`,backupSkippedNoChanges:`변경 사항 없어 백업 건너뜀`,backupFailed2:`백업 실패: {{message}}`,clearedLogs:`{{count}}개 로그 초기화됨`,failedToClearLogs:`로그 초기화 실패: {{message}}`,restoreFromGit:{button:`Git에서 복원`,title:`Git 백업에서 복원`,subtitle:`커밋과 복원할 항목을 선택하세요`,commitLabel:`백업 커밋`,latestCommit:`최신 백업 (브랜치 최신 커밋)`,categoriesLabel:`복원할 항목`,inspecting:`백업 내용을 읽고 있습니다...`,itemCount:`백업에 {{count}}개`,overwriteLabel:`기존 항목 덮어쓰기`,overwriteOn:`기존 항목이 백업 내용으로 업데이트됩니다.`,overwriteOff:`없는 항목만 추가되고 기존 항목은 그대로 유지됩니다.`,selectedCount:`{{count}}개 선택됨`,restoring:`복원 중...`,confirmTitle:`백업에서 복원하시겠습니까?`,confirmMessage:`선택한 항목을 이 커밋에서 복원합니다. 없는 항목은 추가되고 기존 항목은 그대로 유지됩니다.`,confirmMessageOverwrite:`선택한 항목을 이 커밋에서 복원하고 로컬에 이미 있는 항목을 덮어씁니다. 이 작업은 취소할 수 없습니다.`,kprofilesOverwriteCaveat:`K 프로파일은 예외입니다. 슬롯에 쓰면 프린터의 캘리브레이션이 항상 교체됩니다.`,tally:`복원 {{restored}}개, 건너뜀 {{skipped}}개, 실패 {{failed}}개`,reloadHint:`복원된 데이터가 모든 화면에 반영되도록 Bambuddy를 새로 고치세요.`,partialHint:`위에 표시된 카테고리는 완료되어 저장되었습니다. 표시되지 않은 카테고리는 실행되지 않았습니다.`,failed:`복원에 실패했습니다.`,loadFailed:`백업 저장소를 읽을 수 없습니다.`,details:{notPresent:`이 백업 커밋에는 없습니다`,unreadableJson:`읽을 수 없는 JSON: {{paths}}`,settingsNoPayload:`데이터에 설정이 없습니다`,settingsCredentialsWillSkip:`자격 증명처럼 보이는 키 {{count}}개를 건너뜁니다`,settingsCompanionWillSkip:`자격 증명처럼 보이는 키 {{count}}개를 건너뛰고, 이에 의존하는 스위치 {{companion}}개는 꺼진 상태로 둡니다`,settingsCompanionOnlyWillSkip:`스위치 {{companion}}개는 꺼진 상태로 둡니다 - 각각에 필요한 자격 증명은 백업에서 복원할 수 없습니다`,spoolsUsageCount:`사용 기록 {{count}}건 포함`,archivesMetadataOnly:`메타데이터만 - 3MF 파일과 썸네일은 Git 백업에 포함되지 않습니다`,kprofilesPrinterCount:`프린터 {{count}}대 분량`},notes:{noData:`이 백업에는 이런 종류의 데이터가 없습니다`,archivesPrinterMissing:`일부 아카이브가 더 이상 존재하지 않는 프린터를 참조했습니다 - 연결을 해제했습니다`,archivesProjectMissing:`일부 아카이브가 더 이상 존재하지 않는 프로젝트를 참조했습니다 - 연결을 해제했습니다`,archivesOwnerCleared:`일부 아카이브가 더 이상 존재하지 않는 사용자를 참조했습니다 - 소유자를 비웠으므로 관리자가 다시 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesOwnerUnmatched:`일부 아카이브가 이 인스턴스에 없는 소유자를 가리킵니다 - 백업의 사용자 ID로 추측하지 않고 소유자를 비웠으므로 관리자가 다시 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesOwnerUnknown:`일부 아카이브가 소유자 없이 복원되었습니다 - 이 백업에 소유자가 기록되어 있지 않으므로 관리자가 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesUndeleted:`백업 이후 삭제된 아카이브가 다시 표시됩니다 - 덮어쓰기가 켜져 있었습니다`,archivesMetadataOnly:`복원된 아카이브에는 메타데이터만 있습니다 - 3MF 파일과 썸네일은 Git 백업에 포함되지 않습니다`,spoolUsageUnresolved:`사용 기록 {{count}}건을 건너뛰었습니다 - 해당 스풀이 이 백업의 스풀 목록에 없어 연결할 대상이 없습니다.`,spoolUsageUnlinked:`사용 기록 {{count}}건을 출력 기록 연결 없이 복원했습니다 - 연결을 유지하려면 스풀 재고와 함께 출력 아카이브도 선택하세요.`,spoolTagKept:`스풀 태그 {{count}}개를 그대로 두었습니다 - 백업대로라면 그 사이 스캔된 태그가 지워지거나 다른 스풀로 옮겨졌을 것입니다.`,settingsCredentialsSkipped:`자격 증명처럼 보이는 키 {{count}}개를 건너뛰었습니다 - 비밀 값은 직접 다시 입력하세요`,settingsAuthSkipped:`인증 설정 {{count}}개를 건너뛰었습니다 - 잠금 검사가 계속 동작하도록 설정 > 인증에서 변경하세요`,settingsCompanionSkipped:`{{keys}}을(를) 꺼진 상태로 두었습니다 - 각 항목에 필요한 자격 증명은 백업에서 복원할 수 없고 이 인스턴스에도 저장되어 있지 않아, 켜면 연동이 인증 없이 열립니다`,settingsMqttRelayFailed:`MQTT 설정을 복원했지만 릴레이를 다시 연결하지 못했습니다 - Bambuddy를 재시작하세요`,kprofilesAlwaysOverwrite:`K 프로파일은 항상 프린터의 해당 슬롯을 덮어씁니다`,kprofilesAckUnreliable:`응답하지 않는 프린터도 복원됨으로 집계됩니다 - 프린터에서 프로파일을 확인하세요`,kprofilesPrinterMissing:`시리얼 {{serial}}인 프린터가 없습니다 - 건너뛰었습니다`,kprofilesPrinterOffline:`{{printer}}({{serial}})이(가) 연결되어 있지 않습니다 - 건너뛰었습니다`,kprofilesUnknownNozzle:`{{serial}}의 예상치 못한 노즐 직경 {{nozzle}} - 그대로 전송했습니다`,kprofilesUnmatched:`{{nozzle}}용 프로파일 {{count}}개가 {{printer}}에 대응 항목이 없습니다 - 새 프로파일로 추가했습니다`,kprofilesSendFailed:`{{nozzle}} 프로파일을 {{printer}}({{serial}})에 보내지 못했습니다`,kprofilesRefused:`{{printer}}({{serial}})이(가) {{nozzle}} 프로파일을 거부했습니다: {{reason}}`,kprofilesStepFailed:`K 프로파일 단계를 완료하지 못했습니다 - {{reason}}. 그 전에 복원된 항목은 그대로 저장되어 있습니다.`}},history:`기록`,clear:`초기화`,date:`날짜`,status:`상태`,trigger:`유형`,triggers:{manual:`백업(수동)`,scheduled:`백업(예약)`,restore:`복원`},commit:`커밋`,localBackup:`로컬 백업`,localBackupDescription:`데이터베이스, 아카이브, 업로드 및 모든 파일을 포함한 Bambuddy 데이터의 전체 백업을 만듭니다.`,downloadBackupLabel:`백업 다운로드`,completeBackupZip:`전체 백업: 데이터베이스 + 모든 파일 (ZIP)`,download:`다운로드`,preparingBackup:`백업 준비 중...`,creatingArchive:`백업 아카이브 생성 중... 대용량 아카이브의 경우 시간이 걸릴 수 있습니다.`,downloadingFile:`백업 파일 다운로드 중...`,backupDownloaded:`백업이 성공적으로 다운로드되었습니다`,failedToCreateBackup:`백업 생성 실패: {{message}}`,restore:`복원`,restoreReplacesAll:`복원은 모든 데이터를 교체합니다.`,restoreReplacesAllDetail:`현재 데이터베이스와 파일이 완전히 교체됩니다. 복원 후 재시작이 필요합니다.`,restoreConfirmTitle:`백업 복원`,restoreConfirmMessage:`"{{filename}}"에서 복원하시겠습니까? 현재 데이터베이스와 모든 파일이 완전히 교체됩니다. 복원 후 애플리케이션을 재시작해야 합니다.`,restoreConfirmButton:`백업 복원`,uploadingFile:`백업 파일 업로드 중...`,backupRestoredRestart:`백업 복원됨. Bambuddy를 재시작하세요.`,failedToRestore:`백업 복원 실패. 파일 형식을 확인하세요.`,reloadNow:`지금 새로고침`,creatingBackup:`백업 만드는 중`,restoringBackup:`백업 복원 중`,preparing:`준비 중...`,processing:`처리 중...`,doNotClosePage:`이 페이지를 닫거나 다른 곳으로 이동하지 마세요. 대용량 백업의 경우 몇 분이 걸릴 수 있습니다.`,restoring:`복원 중...`,restoreComplete:`복원 완료`,restoreFailed2:`복원 실패`,importSettings:`백업 파일에서 설정 가져오기`,pleaseWaitRestoring:`데이터가 복원되는 동안 기다려 주세요`,selectBackupFile:`백업 파일 클릭하여 선택 (.json 또는 .zip)`,duplicateHandling:`중복 처리 방법:`,matchPrinters:`프린터`,matchPrintersBy:`일련번호로 일치`,matchSmartPlugs:`스마트 플러그`,matchSmartPlugsBy:`IP 주소로 일치`,matchNotificationProviders:`알림 제공자`,matchNotificationProvidersBy:`이름으로 일치`,matchFilaments:`필라멘트`,matchFilamentsBy:`이름 + 유형 + 브랜드로 일치`,matchArchives:`아카이브`,matchArchivesBy:`콘텐츠 해시로 일치 (항상 건너뜀)`,matchPendingUploads:`대기 중인 업로드`,matchPendingUploadsBy:`파일 이름으로 일치`,matchSettingsTemplates:`설정 및 템플릿`,matchSettingsTemplatesBy:`항상 덮어씀`,replaceExisting:`기존 데이터 교체`,keepExisting:`기존 데이터 유지`,overwriteDescription:`백업 데이터로 이미 존재하는 항목 덮어쓰기`,keepDescription:`아직 존재하지 않는 항목만 복원`,overwriteCaution:`주의:`,overwriteWarning:`덮어쓰기는 현재 구성을 백업 데이터로 교체합니다. 보안상 프린터 액세스 코드는 절대 덮어쓰지 않습니다.`,cancel:`취소`,processingBackup:`백업 파일 처리 중...`,itemsRestored:`복원된 항목`,itemsSkipped:`건너뛴 항목`,restored:`복원됨`,skippedAlreadyExist:`건너뜀 (이미 존재)`,filesCategory:`파일 (3MF, 썸네일 등)`,andMore:`...및 {{count}}개 더`,newApiKeysGenerated:`새 API 키 생성됨`,keysShownOnce:`이 키는 한 번만 표시됩니다. 지금 복사하세요!`,copy:`복사`,noDataFound:`백업 파일에서 복원할 데이터를 찾을 수 없습니다.`,close:`닫기`,scheduledBackup:`예약 백업`,scheduledBackupDescription:`일정에 따라 백업 스냅샷을 자동으로 생성합니다. 출력 디렉토리를 NAS 또는 외부 저장소에 마운트할 수 있습니다.`,frequency:`주기`,backupTime:`시간`,retention:`보존`,retentionDescription:`유지할 백업 수`,outputPath:`출력 경로`,outputPathPlaceholder:`기본값: {{path}}`,outputPathDescription:`기본 위치를 사용하려면 비워두세요`,runNow:`지금 실행`,backupFiles:`백업 파일`,noScheduledBackups:`아직 백업 없음`,deleteBackup:`삭제`,deleteBackupConfirm:`이 백업 파일을 삭제하시겠습니까?`,backupRunning:`백업 진행 중...`,scheduledBackupComplete:`백업이 성공적으로 완료되었습니다`,scheduledBackupFailed:`백업 실패`,nextBackup:`다음 백업`,backupSize:`크기`,localTimeHint:`현지 시간 ({{tz}})`,defaultPathLabel:`기본값:`,pathCheck:{title:`Bambuddy가 이 디렉터리에 쓸 수 없습니다`,howToFix:`해결 방법:`,sandboxed:`Bambuddy 서비스가 {{path}}에 쓸 수 없습니다. systemd 유닛이 ProtectSystem=strict로 실행되어 설치·데이터·로그 디렉터리를 제외한 모든 디렉터리가 서비스에서는 읽기 전용입니다. 사용자 셸에서는 쓸 수 있는 디렉터리라도 마찬가지입니다.`,read_only:`{{path}}이(가) 읽기 전용 파일 시스템에 있습니다.`,permission_denied:`Bambuddy에 {{path}} 쓰기 권한이 없습니다. 디렉터리 소유자와 권한을 확인하세요.`,no_space:`{{path}}이(가) 있는 파일 시스템에 남은 공간이 없습니다.`,not_a_directory:`{{path}}이(가) 존재하지만 디렉터리가 아닙니다.`,missing:`{{path}}이(가) 존재하지 않으며 생성할 수도 없습니다.`,error:`Bambuddy가 {{path}}에 쓸 수 없습니다.`,ephemeralTitle:`이 백업은 컨테이너를 다시 만들면 사라집니다`,container_ephemeral:`{{path}}은(는) 호스트가 아니라 Bambuddy 컨테이너 내부에 있습니다. 여기에 기록된 백업은 컨테이너를 재생성하면 사라집니다. 호스트의 디렉터리를 마운트하세요:`},categories:{settings:`설정`,notification_providers:`알림 제공자`,notification_templates:`알림 템플릿`,smart_plugs:`스마트 플러그`,printers:`프린터`,filaments:`필라멘트`,maintenance_types:`유지 관리 유형`,archives:`아카이브`,projects:`프로젝트`,pending_uploads:`대기 중인 업로드`,external_links:`외부 링크`,api_keys:`API 키`},repoIsPrivate:`저장소가 비공개입니다 — 안전하게 백업할 수 있습니다.`,repoIsPublicWarning:`저장소가 공개입니다. Bambuddy 백업에는 MQTT 자격증명, Home Assistant 토큰, Prometheus 토큰, Bambu Cloud 이메일, K-프로파일을 통한 프린터 액세스 코드가 포함됩니다. 공급자 설정에서 저장소를 비공개로 변경할 때까지 저장이 차단됩니다.`,repoVisibilityUnknown:`저장소 공개 여부를 확인할 수 없습니다. Bambuddy는 비공개로 확인된 저장소에만 백업하며, 저장이 차단됩니다.`},tags:{title:`태그`,addTag:`태그 추가`,editTag:`태그 편집`,deleteTag:`태그 삭제`,tagName:`태그 이름`,tagColor:`태그 색상`,noTags:`태그 없음`,deleteConfirm:`이 태그를 삭제하시겠습니까?`,manageTags:`태그 관리`},uploadModal:{title:`3MF 파일 업로드`,dragDrop:`.3mf 파일을 여기에 드래그 앤 드롭`,or:`또는`,browseFiles:`파일 탐색`,extractionInfo:`프린터 모델은 3MF 파일 메타데이터에서 자동으로 추출됩니다.`,uploaded:`업로드됨`,failed:`실패`,uploading:`업로드 중...`,upload:`업로드`,uploadFailed:`업로드 실패`},editArchive:{title:`아카이브 편집`,name:`이름`,namePlaceholder:`인쇄 이름`,printer:`프린터`,noPrinter:`프린터 없음`,project:`프로젝트`,noProject:`프로젝트 없음`,itemsPrinted:`인쇄된 항목`,itemsPrintedHelp:`이 인쇄 작업에서 생산된 항목 수`,filamentUsed:`사용된 필라멘트 (g)`,filamentUsedPlaceholder:`예: 46.16`,filamentUsedHelp:`3MF 없이 보관된 인쇄는 직접 입력하면 필라멘트 합계에 반영됩니다. 3MF가 있는 보관 항목을 다시 스캔하면 이 값은 파일에서 다시 읽어옵니다.`,notes:`메모`,notesPlaceholder:`이 인쇄에 대한 메모 추가...`,externalLink:`외부 링크`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Printables, Thingiverse 또는 다른 출처 링크`,tags:`태그`,tagsPlaceholder:`태그 추가...`,addMoreTags:`더 많은 태그 추가...`,matchingTags:`"{{query}}"와 일치`,existingTags:`기존 태그`,clickToAdd:`(클릭하여 추가)`,status:`상태`,failureReason:`실패 원인`,selectReason:`원인 선택...`,photos:`인쇄 결과 사진`,photosHelp:`+를 클릭하여 인쇄 결과 사진 추가`,printResult:`인쇄 결과`,saving:`저장 중...`,failureReasons:{adhesionFailure:`접착 실패`,spaghettiDetached:`스파게티 / 분리`,layerShift:`레이어 시프트`,cloggedNozzle:`노즐 막힘`,filamentRunout:`필라멘트 소진`,warping:`휨`,stringing:`스트링`,underExtrusion:`압출 부족`,powerFailure:`전원 실패`,userCancelled:`사용자 취소`,other:`기타`},statuses:{completed:`완료됨`,failed:`실패`,aborted:`취소됨`,printing:`인쇄 중`}},kProfiles:{title:`K-프로필`,noPrintersConfigured:`구성된 프린터 없음`,addPrinterInSettings:`K-프로필을 관리하려면 설정에서 프린터를 추가하세요`,noActivePrinters:`활성 프린터 없음`,enablePrinterConnection:`K-프로필을 보려면 프린터 연결을 활성화하세요`,loadingProfiles:`K-프로필 불러오는 중...`,printerOffline:`프린터 오프라인`,printerOfflineDesc:`선택한 프린터가 연결되지 않았습니다. 켜서 K-프로필을 확인하세요.`,noMatchingProfiles:`일치하는 프로필 없음`,noMatchingProfilesDesc:`검색 기준과 일치하는 프로필이 없습니다`,noKProfiles:`K-프로필 없음`,noKProfilesDesc:`{{diameter}}mm 노즐에 대한 압력 전진 프로필이 없습니다`,createFirstProfile:`첫 번째 프로필 만들기`,printer:`프린터`,nozzle:`노즐`,refresh:`새로고침`,addProfile:`프로필 추가`,export:`내보내기`,import:`가져오기`,select:`선택`,selectAll:`모두 선택`,delete:`삭제`,searchPlaceholder:`이름 또는 필라멘트로 검색...`,allExtruders:`모든 압출기`,leftOnly:`왼쪽만`,rightOnly:`오른쪽만`,allFlow:`모든 유량`,hfOnly:`HF만`,sOnly:`S만`,sortName:`정렬: 이름`,sortKValue:`정렬: K값`,sortFilament:`정렬: 필라멘트`,leftExtruder:`왼쪽 압출기`,rightExtruder:`오른쪽 압출기`,modal:{addTitle:`K-프로필 추가`,editTitle:`K-프로필 편집`,profileName:`프로필 이름`,profileNamePlaceholder:`내 PLA 프로필`,kValue:`K값`,kValuePlaceholder:`0.020`,kValueHelp:`일반 범위: PLA 0.01~0.06, PETG 0.02~0.10`,filament:`필라멘트`,selectFilament:`필라멘트 선택...`,source:{local:`가져온 것`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`기본 제공`},noFilamentsHelp:`사용할 수 있는 필라먼트가 없습니다. Bambu Cloud에 로그인하거나 프로파일 → 로컬 프로파일에서 프리셋을 가져오세요.`,searchFilaments:`필라먼트 검색...`,noFilamentMatches:`검색과 일치하는 필라먼트가 없습니다`,flowType:`유량 유형`,highFlow:`고유량`,standard:`표준`,nozzleSize:`노즐 크기`,extruder:`압출기`,extruders:`압출기`,left:`왼쪽`,right:`오른쪽`,notes:`메모 (로컬 저장)`,notesPlaceholder:`이 프로필에 대한 메모 추가...`,notesHelp:`메모는 프린터가 아닌 Bambuddy에 저장됩니다`,syncing:`프린터와 동기화 중...`,savingExtruder:`압출기 {{current}}/{{total}}에 저장 중...`,pleaseWait:`기다려 주세요`},deleteConfirm:{title:`프로필 삭제`,cannotUndo:`이 작업은 취소할 수 없습니다`,message:`프린터에서 "{{name}}"을(를) 삭제하시겠습니까?`},bulkDelete:{title:`프로필 삭제`,cannotUndo:`이 작업은 취소할 수 없습니다`,message:`프린터에서 선택한 {{count}}개 프로필을 삭제하시겠습니까?`},toast:{profileSaved:`K-프로필 저장됨`,profilesSaved:`{{count}}개 압출기에 K-프로필 저장됨`,selectAtLeastOneExtruder:`적어도 하나의 압출기를 선택해 주세요`,selectFilament:`먼저 필라먼트를 선택하세요`,filamentNotResolvable:`{{name}}에 해당하는 Bambu 필라먼트 ID가 없어 프린터가 프로파일을 저장할 수 없습니다`,profileDeleted:`K-프로필 삭제됨`,profilesDeleted:`{{count}}개 프로필 삭제됨`,exportedProfiles:`{{count}}개 프로필 내보냄`,importedProfiles:`{{total}}개 중 {{count}}개 프로필 가져옴`,noProfilesToExport:`내보낼 프로필 없음`,invalidFileFormat:`유효하지 않은 파일 형식`,failedToParseImport:`가져오기 파일 파싱 실패`,failedToSaveBatch:`K-프로필 저장 실패`,noteSaved:`메모 저장됨`,failedToSaveNote:`메모 저장 실패`},permission:{noRead:`프로필 새로고침 권한이 없습니다`,noCreate:`프로필 추가 권한이 없습니다`,noUpdate:`K-프로필 업데이트 권한이 없습니다`,noDelete:`K-프로필 삭제 권한이 없습니다`,noExport:`프로필 내보내기 권한이 없습니다`,noImport:`프로필 가져오기 권한이 없습니다`}},virtualPrinter:{title:`가상 프린터`,running:`실행 중`,stopped:`중지됨`,description:{default:`Bambu Studio 및 OrcaSlicer에 표시되는 가상 프린터를 활성화합니다. 이 프린터로 전송된 파일은 인쇄 없이 바로 아카이브됩니다.`,proxy:`실제 프린터로 슬라이서 트래픽을 릴레이하는 프록시를 활성화하여 모든 네트워크에서 원격 인쇄가 가능합니다.`},enable:{title:`가상 프린터 활성화`,visibleInSlicer:`슬라이서 검색에서 "Bambuddy"로 표시됨`,proxyingTo:`{{name}}으로 프록시 중`,notActive:`활성화되지 않음`},model:{title:`프린터 모델`,description:`에뮬레이션할 프린터 모델을 선택하세요.`,restartWarning:`모델 변경 시 가상 프린터가 재시작됩니다`},accessCode:{title:`액세스 코드`,isSet:`액세스 코드가 설정됨`,notSet:`액세스 코드가 설정되지 않음 - 활성화하려면 필요`,placeholder:`8자리 코드 입력`,placeholderChange:`변경하려면 새 코드 입력`,hint:`정확히 8자여야 합니다. 슬라이서가 인증하는 데 사용됩니다.`,charCount:`({{count}}/8)`,inheritedFromTarget:`대상 프린터에서 상속됨`,derivedFromTargetHint:`대상 프린터의 액세스 코드를 사용합니다. 브리지는 슬라이서 인증을 실제 프린터로 전달하므로 코드가 일치해야 합니다 — 변경하려면 프린터 설정에서 액세스 코드를 편집하세요.`,reveal:`액세스 코드 표시`,hide:`액세스 코드 숨기기`},targetPrinter:{title:`대상 프린터`,configured:`프록시 대상 구성됨`,notConfigured:`대상 프린터가 선택되지 않음 - 프록시 모드에 필요`,placeholder:`프린터 선택...`,hint:`슬라이서 트래픽을 프록시할 프린터를 선택하세요. 프린터는 LAN 모드여야 합니다.`,noPrinters:`구성된 프린터 없음. 프록시 모드를 사용하려면 먼저 프린터를 추가하세요.`},remoteInterface:{title:`네트워크 인터페이스 재정의`,configured:`인터페이스 재정의 활성`,optional:`선택사항 - 자동 감지된 IP가 잘못된 경우 사용 (예: 여러 NIC, Docker, VPN)`,placeholder:`자동 감지 (기본값)...`,hint:`SSDP를 통해 광고되고 TLS 인증서에 사용되는 IP 주소를 재정의합니다. Bambuddy에 여러 네트워크 인터페이스가 있을 때 유용합니다.`},mode:{title:`모드`,archive:`아카이브`,archiveDesc:`파일 즉시 아카이브`,review:`검토`,reviewDesc:`아카이브 전 검토`,queue:`대기열`,queueDesc:`아카이브 후 대기열 추가`,proxy:`프록시`,proxyDesc:`실제 프린터로 릴레이`},autoDispatch:{title:`자동 발송`,description:`대기열에 추가될 때 자동으로 인쇄를 시작합니다. 꺼져 있으면 수동 발송을 기다립니다.`},queueForceColorMatch:{title:`색상 일치 강제`,description:`정확한 필라멘트 유형과 색상이 장착되지 않은 프린터에는 발송을 거부합니다. 기본적으로 꺼져 있음 — 이 옵션 없이는 대기열이 모델 전용 매칭을 사용하여 잘못된 색상이 장착된 프린터를 선택할 수 있습니다.`},saveAmsMapping:{title:`AMS 매핑 저장`,description:`슬라이서가 직접 선택한 AMS 슬롯(project_file MQTT 명령에서)을 아카이브에 저장하여, 이후 재인쇄 시 파일의 유형/색상에서 다시 유추하지 않고 동일한 실물 스풀을 재사용하도록 합니다. 기본값은 꺼짐입니다.`},gcodeInjection:{title:`G-code 주입`,description:`설정에서 모델별로 구성한 G-code 스니펫을 이 가상 프린터의 작업에 적용합니다. 기본값은 꺼짐입니다.`},tailscaleDisabled:{title:`Tailscale 통합`,description:`이 가상 프린터가 Tailscale을 통해 노출되도록 표시하려면 활성화하세요. 슬라이서에 붙여넣을 IP를 알 수 있도록 호스트의 Tailscale 주소를 표시합니다. CA 가져오기 단계는 변경되지 않음 — 이 토글은 인증서에 영향을 미치지 않습니다.`},setupRequired:{title:`설정 필요`,description:`가상 프린터 기능이 작동하려면 추가 시스템 구성이 필요합니다. 여기에는 포트 포워딩, 방화벽 규칙 및 플랫폼별 설정이 포함됩니다.`,readGuide:`활성화 전에 설정 가이드를 읽으세요`},archiveNameSource:{title:`아카이브 이름 출처`,description:`가상 프린터를 통해 파일이 도착할 때 새 아카이브의 이름 지정 방법을 선택합니다. "메타데이터"는 3MF의 슬라이서 내장 제목을 사용합니다(기본값). "파일 이름"은 Bambu Studio가 FTP를 통해 전송한 파일 이름을 사용합니다. 참고: Bambu Studio는 3MF에 제목 필드가 있을 경우 "프린터로 보내기" 대화 상자에 입력한 이름을 해당 값으로 덮어쓰므로, 두 모드 모두 동일한 문자열이 표시되는 경우가 많습니다.`,metadata:`메타데이터`,filename:`파일 이름`},howItWorks:{title:`작동 방식`,step1:`같은 LAN에서 가상 프린터는 검색을 통해 슬라이서(Bambu Studio / OrcaSlicer)에 자동으로 나타납니다. 다른 네트워크에서는 IP 주소와 액세스 코드로 수동으로 추가하세요.`,step2:`아카이브, 검토, 대기열 모드에서 슬라이서의 "전송" 버튼을 사용하여 3MF 파일을 Bambuddy에 업로드하세요. 슬라이서는 "인쇄 성공"을 표시하지만 파일은 저장되고 인쇄되지 않습니다.`,step3:`프록시 모드에서 가상 프린터는 모든 트래픽을 실제 프린터로 릴레이합니다 — 직접 연결된 것처럼 즉시 인쇄가 시작됩니다.`},status:{title:`상태 세부 정보`,printerName:`프린터 이름`,model:`모델`,serialNumber:`일련 번호`,mode:`모드`,pendingFiles:`대기 중인 파일`,targetPrinter:`대상 프린터`,ftpPort:`FTP 포트`,mqttPort:`MQTT 포트`,ftpConnections:`FTP 연결`,mqttConnections:`MQTT 연결`},toast:{updated:`가상 프린터 설정 업데이트됨`,failedToUpdate:`설정 업데이트 실패`,copyFailed:`복사 실패 — 텍스트를 수동으로 선택하여 복사해 보세요`,accessCodeRequired:`먼저 액세스 코드를 설정해 주세요`,targetPrinterRequired:`먼저 대상 프린터를 선택해 주세요`,bindIpRequired:`먼저 바인드 IP를 설정해 주세요`,accessCodeEmpty:`액세스 코드는 비워둘 수 없습니다`,accessCodeLength:`액세스 코드는 정확히 8자여야 합니다`,targetCodeChangedRebind:`액세스 코드가 새 대상 프린터에 동기화되었습니다. 새 코드를 적용하려면 슬라이서에서 이 장치를 다시 추가하세요.`,created:`가상 프린터 생성됨`,failedToCreate:`가상 프린터 생성 실패`,deleted:`가상 프린터 삭제됨`,failedToDelete:`가상 프린터 삭제 실패`},list:{title:`가상 프린터`,add:`추가`,addFirst:`가상 프린터 추가`,empty:`구성된 가상 프린터 없음. 하나를 추가하여 시작하세요.`},bindIp:{title:`바인드 인터페이스`,placeholder:`인터페이스 선택...`,hint:`이 가상 프린터가 바인딩할 네트워크 인터페이스. 프린터당 고유해야 합니다.`},proxy:{accessCodeHint:`프록시 모드에서는 슬라이서에서 대상 프린터의 액세스 코드를 사용하세요. 연결은 실제 프린터로 투명하게 전달됩니다.`},addDialog:{title:`가상 프린터 추가`,name:`이름`,hint:`생성 후 액세스 코드, 대상 프린터 및 기타 설정을 구성할 수 있습니다.`,create:`생성`},deleteConfirm:{title:`가상 프린터 삭제`,message:`"{{name}}"을(를) 삭제하시겠습니까? 이 프린터의 모든 서비스가 중지됩니다.`},caCert:{title:`슬라이서 인증서`,description:`가상 프린터는 Bambuddy CA가 서명한 TLS 인증서를 사용합니다. 이 CA 인증서를 슬라이서의 신뢰 저장소에 한 번만 가져오면 연결을 수락합니다 — 명령줄에서 복사할 필요가 없습니다.`,copy:`복사`,copied:`복사됨`,download:`다운로드`,fingerprint:`SHA-256`}},modelViewer:{openInSlicer:`슬라이서에서 열기`,openInSlicerWith:`{{slicer}}에서 열기`,moreSlicerOptions:`슬라이서 옵션 더 보기`,openInSlicerFailed:`슬라이서에서 열 수 없습니다`,tabs:{model:`3D 모델`},notAvailable:`사용 불가`,plates:`플레이트`,allPlates:`모든 플레이트`,plateNumber:`플레이트 {{number}}`,plateCount:`플레이트 {{count}}개`,plateCount_other:`플레이트 {{count}}개`,objectCount:`개체 {{count}}개`,objectCount_other:`개체 {{count}}개`,filamentCount:`필라멘트 {{count}}개`,filamentCount_other:`필라멘트 {{count}}개`,eta:`예상 {{minutes}}분`,noPreview:`이 파일에 대한 미리보기를 사용할 수 없습니다`,pagination:{pageOf:`{{total}}페이지 중 {{current}}`,prev:`이전`,next:`다음`},errors:{failedToLoad:`파일 불러오기 실패`,noMeshes:`3MF 파일에서 메쉬를 찾을 수 없음`,unsupportedFormat:`지원되지 않는 파일 형식`}},maintenanceDescriptions:{lubricateCarbonRods:`부드러운 움직임을 위해 카본 로드에 윤활유 도포`,lubricateRails:`부드러운 움직임을 위해 선형 레일에 윤활유 도포`,cleanNozzle:`막힘 방지를 위해 핫엔드와 노즐 청소`,checkBelts:`정확한 인쇄를 위해 벨트 장력 확인`,cleanBuildPlate:`접착력 향상을 위해 빌드 플레이트 청소`,checkExtruder:`마모 여부 확인을 위해 압출기 기어 점검`,checkCooling:`냉각 팬이 제대로 작동하는지 확인`,generalInspection:`전반적인 프린터 점검`,cleanCarbonRods:`마찰 감소를 위해 카본 로드 청소`,lubricateSteelRods:`부드러운 움직임을 위해 스틸 로드에 윤활유 도포`,cleanSteelRods:`마찰 감소를 위해 스틸 로드 청소`,cleanLinearRails:`먼지와 이물질 제거를 위해 선형 레일 닦기`,checkPtfeTube:`마모 또는 손상 여부 확인을 위해 PTFE 튜브 점검`,replaceHepaFilter:`공기 품질을 위해 HEPA 필터 교체`,replaceCarbonFilter:`활성탄 필터 교체`,lubricateLeftNozzleRail:`왼쪽 노즐 레일 윤활 (H2 시리즈)`},haSensors:{label:`센서`,unavailable:`사용 불가`,blocksPrints:`{{entity}} — 경고 중에는 인쇄를 보류합니다`,states:{open:`열림`,closed:`닫힘`,unlocked:`잠금 해제`,locked:`잠김`,detected:`감지됨`,clear:`없음`,wet:`젖음`,dry:`건조`,problem:`문제`,ok:`정상`,running:`작동 중`,stopped:`정지`,on:`켜짐`,off:`꺼짐`},sectionTitle:`Home Assistant 센서 (프린터)`,add:`센서 추가`,addTitle:`Home Assistant 센서 추가`,editTitle:`Home Assistant 센서 편집`,empty:`아직 센서가 없습니다. Home Assistant의 도어 센서나 온도계를 연결하면 프린터 카드에 표시됩니다.`,unknownPrinter:`알 수 없는 프린터`,badgeBlocks:`인쇄 보류`,badgeNotifies:`알림`,badgeHidden:`카드에서 숨김`,printer:`프린터`,entity:`엔터티`,searchPlaceholder:`엔터티 검색...`,noEntities:`일치하는 엔터티 없음`,name:`표시 이름`,alertWhen:`경고 조건`,alertNever:`없음 — 표시만`,alertAbove:`초과`,alertBelow:`미만`,alertHint:`경고 상태가 되면 프린터 카드에서 강조되고 아래 옵션이 활성화됩니다.`,showOnCard:`프린터 카드에 표시`,notifyOnAlert:`경고가 시작되면 알림 보내기`,blockPrint:`경고 중에는 대기 중인 인쇄를 보류`,blockPrintHint:`작업은 대기열에 남아 있다가 센서가 해제되면 자동으로 시작됩니다. Home Assistant에 연결할 수 없는 동안에는 무시됩니다.`,toast:{created:`센서를 추가했습니다`,updated:`센서를 저장했습니다`,deleted:`센서를 삭제했습니다`},error:{pickEntity:`Home Assistant 엔터티를 선택하세요`,nameRequired:`표시 이름을 입력하세요`,printerRequired:`프린터를 선택하세요`,alertRequired:`먼저 경고 조건을 설정하세요`}},locationHaSensors:{sectionTitle:`Home Assistant 센서 (보관 위치)`,sectionDescription:`Home Assistant의 온도, 습도, 배터리 센서를 보관 위치에 연결하면 필라멘트 카드와 표에 실시간 값이 표시됩니다. 위치당 카테고리별로 센서를 하나만 등록할 수 있습니다.`,add:`센서 추가`,addTitle:`Home Assistant 센서 추가`,editTitle:`Home Assistant 센서 편집`,empty:`아직 센서가 없습니다. Home Assistant의 온도나 습도 센서를 연결하면 필라멘트 카드에 표시됩니다.`,unknownLocation:`알 수 없는 위치`,location:`보관 위치`,showOnCard:`필라멘트 카드에 표시`,overwriteConfirm:{title:`기존 센서를 교체하시겠습니까?`,messageTemperature:`"{{location}}"에는 이미 연결된 온도 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`,messageHumidity:`"{{location}}"에는 이미 연결된 습도 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`,messageBattery:`"{{location}}"에는 이미 연결된 배터리 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`},autoAdd:{confirmTitle:`다른 센서도 추가할까요?`,confirmMessage:`Bambuddy가 이 위치의 다른 센서도 찾았습니다. 추가할 항목을 선택하세요.`,added:`다음도 추가됨: {{names}}`,noneFound:`이 위치에 일치하는 온도, 습도 또는 배터리 센서를 찾을 수 없습니다.`,onlyThisOne:`이것만`},options:{buttonLabel:`센서 옵션`,title:`위치 센서 옵션`,description:`이 값은 위치의 첫 번째 센서와 함께 온도, 습도 또는 배터리 센서가 자동으로 연결될 때 사용됩니다.`,generalSettings:`일반 설정`,pollInterval:`업데이트 간격(초)`,pollIntervalHint:`Bambuddy가 Home Assistant를 폴링하여 화면의 센서 값을 갱신하는 주기입니다. 최소 60초.`,colorizeValues:`경보 임계값에 따라 센서 값에 색상 표시`,aboveColor:`임계값 초과 색상`,belowColor:`임계값 미만 색상`,optimalColor:`최적값 색상`,colors:{red:`빨강`,orange:`주황`,yellow:`노랑`,green:`초록`,blue:`파랑`,purple:`보라`,pink:`분홍`},saved:`옵션이 저장되었습니다`,saveFailed:`옵션 저장에 실패했습니다`,reset:`초기화`,resetConfirm:{title:`기존 위치 센서를 모두 재설정하시겠습니까?`,message:`위에서 설정한 값으로 기존의 모든 보관 위치 온도, 습도, 배터리 센서의 경보 임계값, 알림, 카드 표시 여부를 덮어쓰고, 각 센서의 이름을 Home Assistant의 친숙한 이름으로 복원합니다. 프린터 센서는 영향을 받지 않습니다. 이 작업은 되돌릴 수 없습니다. 센서 수에 따라 시간이 다소 걸릴 수 있습니다.`},resetDone:`{{count}}개의 위치 센서에 적용되었습니다`,resetFailed:`위치 센서 재설정에 실패했습니다`},deleteAllConfirm:{title:`모든 센서를 삭제하시겠습니까?`,message:`"{{location}}"에 연결된 모든 센서({{count}}개)가 삭제됩니다. 이 작업은 되돌릴 수 없습니다.`},currentlyBound:`현재 연결됨: {{entity}}`,error:{locationRequired:`보관 위치를 선택하세요`},toast:{created:`센서를 추가했습니다`,updated:`센서를 저장했습니다`,deleted:`센서를 삭제했습니다`}},smartPlugs:{offline:`오프라인`,admin:`관리자`,openPlugAdminPage:`플러그 관리 페이지 열기`,deleteSmartPlug:`스마트 플러그 삭제`,turnOnSmartPlug:`스마트 플러그 켜기`,turnOffSmartPlug:`스마트 플러그 끄기`,turnOn:`켜기`,turnOff:`끄기`,addSmartPlug:{scanningNetwork:`네트워크 스캔 중...`,chooseEntity:`엔티티 선택...`,connectionFailed:`연결 실패`,searchEntities:`엔티티 검색...`,searchPowerSensors:`전력 센서 검색...`,searchEnergySensors:`에너지 센서 검색...`,placeholders:{plugName:`거실 플러그`,mqttStateOnValue:`ON, true, 1`,mqttSameAsPower:`전력 토픽과 같거나 다름`}},linkedTo:`연결됨:`,monitorOnly:`모니터만`,alerts:`알림`,scheduleOn:`켜기 {{time}}`,scheduleOff:`끄기 {{time}}`,on:`켜짐`,off:`꺼짐`,power:`전력`,kwhToday:`오늘 kWh`,settings:`설정`,automationSettings:`자동화 설정`,showInSwitchbar:`스위치바에 표시`,quickAccessSidebar:`사이드바에서 빠른 접근`,enabled:`활성화됨`,enableAutomation:`이 플러그의 자동화 활성화`,autoOn:`자동 켜기`,autoOnDescription:`인쇄 시작 시 켜기`,autoOff:`자동 끄기`,autoOffDescription:`인쇄 완료 시 끄기 (1회)`,autoOffPersistent:`계속 활성화`,autoOffPersistentDescription:`1회성 대신 인쇄 사이에 활성화 유지`,controlsPrinterPower:`프린터에 전원 공급`,controlsPrinterPowerDescription:`이 플러그가 액세서리(필터 팬, 조명)에만 전원을 공급한다면 끄세요. 그렇지 않으면 플러그를 끌 때 프린터가 오프라인으로 표시됩니다.`,turnOffDelayMode:`끄기 지연 모드`,time:`시간`,temp:`온도`,delayMinutes:`지연 (분)`,tempThreshold:`온도 임계값 (°C)`,tempThresholdDescription:`노즐이 이 온도 이하로 냉각될 때 끄기`,edit:`편집`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,turnOnConfirm:`"{{name}}"을(를) 켜시겠습니까?`,turnOffConfirm:`"{{name}}"을(를) 끄시겠습니까? 연결된 장치의 전원이 차단됩니다.`,failedToTurn:`"{{name}}" {{action}} 실패`,unknown:`알 수 없음`,addTitle:`스마트 플러그 추가`,editTitle:`스마트 플러그 편집`,stopScanning:`스캔 중지`,discoverTasmota:`Tasmota 장치 검색`,foundDevices:`{{count}}개 장치 발견 - 클릭하여 선택:`,noDevicesFound:`네트워크에서 Tasmota 장치를 찾을 수 없음`,haNotConfigured:`Home Assistant가 구성되지 않았습니다.`,haSettingsPath:`설정 → 네트워크 → Home Assistant`,selectEntity:`엔티티 선택 *`,ipAddress:`IP 주소 *`,nameLabel:`이름 *`,username:`사용자 이름`,password:`비밀번호`,authHint:`Tasmota 장치에 인증이 필요하지 않으면 비워두세요`,linkToPrinter:`프린터에 연결`,noPrinter:`프린터 없음 (수동 제어만)`,linkingDescription:`연결하면 인쇄 시작/완료 시 자동 켜기/끄기가 활성화됩니다`,powerAlerts:`전력 알림`,alertAbove:`초과 시 알림 (W)`,alertBelow:`미만 시 알림 (W)`,alertDescription:`전력 소비가 이 임계값을 초과할 때 알림 받기. 해당 방향을 비활성화하려면 비워두세요.`,dailySchedule:`일일 스케줄`,turnOnAt:`켜기 시각`,turnOffAt:`끄기 시각`,scheduleDescription:`매일 이 시간에 자동으로 켜기/끄기. 해당 동작을 건너뛰려면 비워두세요.`,showOnPrinterCard:`프린터 카드에 표시`,displayOnPrinterCard:`프린터 카드에 버튼 표시`,connectedResult:`연결됨!`,deviceLabel:`장치: {{name}} - `,stateLabel:`상태: {{state}}`,test:`테스트`,delete:`삭제`,save:`저장`,add:`추가`,cancel:`취소`,failedToStartScan:`스캔 시작 실패`,nameRequired:`이름이 필요합니다`,entityRequired:`Home Assistant 플러그에는 엔티티가 필요합니다`,mqttTopicRequired:`전력, 에너지 또는 상태 모니터링을 위한 MQTT 토픽이 하나 이상 구성되어야 합니다`,loadingEntities:`엔티티 불러오는 중...`,loading:`불러오는 중...`,failedToLoadEntities:`엔티티 불러오기 실패: {{error}}`,noEntitiesMatching:`"{{search}}"과 일치하는 엔티티를 찾을 수 없음`,noEntitiesAvailable:`사용 가능한 엔티티 없음`,searchingEntities:`모든 엔티티 검색 중 ({{count}}개 발견)`,showingEntities:`switch, light, input_boolean 표시 중 ({{count}}개 사용 가능)`,energyMonitoringOptional:`에너지 모니터링 (선택사항)`,energyMonitoringHint:`전력/에너지 데이터를 제공하는 센서를 검색하여 선택하세요.`,powerSensorW:`전력 센서 (W)`,energyTodayKwh:`오늘 에너지 (kWh)`,totalEnergyKwh:`총 에너지 (kWh)`,noMatchingSensors:`일치하는 센서 없음`,none:`없음`,mqttNotConfigured:`MQTT 브로커가 구성되지 않았습니다.`,mqttSettingsPath:`설정 → 네트워크 → MQTT 게시`,mqttNotConfiguredSuffix:`(게시를 활성화할 필요는 없고 브로커 세부 정보만 입력하면 됩니다).`,mqttMonitorOnlyDescription:`MQTT 플러그는 MQTT 구독을 통해 전력/에너지 데이터를 받습니다. 켜기/끄기 제어는 불가능 — MQTT 브로커나 홈 자동화 시스템을 사용하세요.`,powerMonitoring:`전력 모니터링`,energyMonitoring:`에너지 모니터링`,stateMonitoring:`상태 모니터링`,optional:`선택사항`,topic:`토픽`,jsonPath:`JSON 경로`,multiplier:`배수`,onValue:`ON 값`,mqttPowerHint:`JSON 경로는 JSON 페이로드에서 값을 추출합니다 (예: "power_l1"). 토픽이 원시 숫자 값을 게시하면 비워두세요. +Valore ON: la stringa esatta che significa "ON". Lascia vuoto per rilevamento auto (ON, true, 1).`,restControl:`Controllo`,restOnUrl:`URL accensione`,restOffUrl:`URL spegnimento`,restOnBody:`Corpo richiesta ON`,restOffBody:`Corpo richiesta OFF`,restMethod:`Metodo HTTP`,restHeaders:`Custom Headers (JSON)`,restStatusUrl:`URL stato`,restStatusPath:`Percorso JSON stato`,restStatusOnValue:`Valore ON`,restPowerUrl:`URL potenza`,restPowerPath:`Percorso JSON potenza`,restPowerMultiplier:`Moltiplicatore potenza`,restEnergyUrl:`URL energia`,restEnergyPath:`Percorso JSON energia (oggi)`,restEnergyTotalPath:`Percorso JSON energia (contatore totale)`,restEnergyTotalMultiplier:`Moltiplicatore contatore totale`,restEnergyTotalPathHint:`es. aenergy.total`,restEnergyTotalHint:`Molte prese — tutti gli Shelly fra queste — riportano solo un contatore cumulativo che non si azzera mai. Va qui, non nel campo sopra: letto come consumo di oggi non tornerebbe mai a zero a mezzanotte, e Ieri e Totale resterebbero vuoti. Bambuddy ricava Oggi e Ieri da questo valore, il che richiede uno o due giorni di letture. Uno Shelly riporta wattora, quindi usa un moltiplicatore di 0.001.`,restEnergyMultiplier:`Moltiplicatore energia`,restUrlRequired:`È richiesto almeno un URL (ON o OFF) per le prese REST`,restHeadersHint:`es. {"Authorization": "Bearer your-token"}`,restBodyHint:`es. ON, {"state": "on"}`,restStatusHint:`URL per recuperare lo stato attuale`,restPathHint:`es. state o data.power.status`,restPowerUrlHint:`URL separato per i dati di potenza (usa l'URL di stato se vuoto)`,restEnergyUrlHint:`URL separato per i dati di energia (usa l'URL di stato se vuoto)`,restEnergyHint:`Ogni valore può usare il proprio URL o ricadere sull'URL di stato. Usa i moltiplicatori per la conversione delle unità (es. 0.001 per convertire Wh in kWh).`,testConnection:`Testa connessione`,connectionSuccess:`Connessione riuscita`,noSwitchesInSwitchbar:`Nessun interruttore nella barra`,enableSwitchbarHint:`Abilita "Mostra nella barra interruttori" in Impostazioni > Smart Plugs`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`E-mail`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`Notifiche email tramite SMTP`,telegram:`Notifiche tramite bot Telegram`,discord:`Invia a un canale Discord tramite webhook`,ntfy:`Notifiche push gratuite e self-hostabili`,pushover:`Notifiche push semplici e affidabili`,callmebot:`Notifiche WhatsApp gratuite tramite CallMeBot`,webhook:`POST HTTP generico verso qualsiasi URL`,homeassistant:`Notifiche persistenti nella dashboard di Home Assistant`,bark:`Notifiche push iOS tramite Bark (auto-ospitabile)`},lastSuccess:`Ultimo: {{date}}`,error:`Errore`,printer:`Stampante:`,allPrinters:`Tutte le stampanti`,sendTestNotification:`Invia notifica di prova`,eventSettings:`Impostazioni eventi`,enabled:`Abilitato`,sendFromProvider:`Invia notifiche da questo provider`,printEvents:`Eventi di stampa`,printerStatus:`Stato stampante`,amsAlarms:`Allarmi AMS`,amsHtAlarms:`Allarmi AMS-HT`,printQueue:`Coda di stampa`,start:`Avvio`,plateCheck:`Controllo piatto`,complete:`Completato`,failed:`Fallito`,stopped:`Interrotto`,progress:`Avanzamento`,offline:`Offline`,lowFilament:`Filamento scarso`,maintenance:`Manutenzione`,amsHumidity:`Umidità AMS`,amsTemp:`Temp AMS`,amsDryingSuspended:`Asciugatura sospesa`,amsHtHumidity:`Umidità AMS-HT`,amsHtTemp:`Temp AMS-HT`,bedCooled:`Piatto raffreddato`,firstLayer:`Primo strato`,quiet:`Silenzioso`,digest:`Riepilogo {{time}}`,printStarted:`Stampa avviata`,plateNotEmpty:`Piatto non vuoto`,plateNotEmptyDescription:`Oggetti rilevati prima della stampa`,plateClearRequired:`Conferma piatto libero`,plateClearRequiredDescription:`Stampa finita, la coda attende conferma`,plateClear:`Piatto libero`,printCompleted:`Stampa completata`,bedCooledLabel:`Piatto raffreddato`,bedCooledDescription:`Piatto raffreddato sotto la soglia dopo la stampa`,firstLayerCompleteLabel:`Primo strato completato`,firstLayerCompleteDescription:`Notifica con foto al termine del primo strato`,missingSpoolAssignmentLabel:`Assegnazione bobina mancante`,billingChargeFailedLabel:`Errore di addebito`,billingChargeFailedDescription:`Notifica quando non è possibile registrare i costi di stampa`,missingSpoolAssignmentDescription:`Notifica quando una stampa parte e i vassoi richiesti non hanno una bobina assegnata`,printFailed:`Stampa fallita`,printStopped:`Stampa interrotta`,progressMilestones:`Traguardi di avanzamento`,progressMilestonesDescription:`Notifica al 25%, 50%, 75%`,printerOffline:`Stampante offline`,printerError:`Errore stampante`,aiFailureDetection:`Rilevamento guasti IA`,aiFailureDetectionDescription:`Notifica quando l'IA di Obico rileva un possibile guasto di stampa`,lowFilamentLabel:`Filamento scarso`,maintenanceDue:`Manutenzione necessaria`,maintenanceDueDescription:`Notifica quando è necessaria la manutenzione`,amsHumidityHigh:`Umidità AMS elevata`,amsHumidityHighDescription:`L'umidità dell'AMS standard supera la soglia`,amsTemperatureHigh:`Temperatura AMS elevata`,amsTemperatureHighDescription:`La temperatura dell'AMS standard supera la soglia`,amsDryingSuspendedTitle:`Asciugatura automatica sospesa`,amsDryingSuspendedDescription:`L'asciugatura automatica ha rinunciato a un'unità AMS perché l'umidità non è mai scesa sotto la soglia`,amsHtHumidityHigh:`Umidità AMS-HT elevata`,amsHtHumidityHighDescription:`L'umidità dell'AMS-HT supera la soglia`,amsHtTemperatureHigh:`Temperatura AMS-HT elevata`,amsHtTemperatureHighDescription:`La temperatura dell'AMS-HT supera la soglia`,inventoryAlerts:`Avvisi di inventario`,stockReorderAlert:`Avviso di riordino`,stockReorderAlertDescription:`Il SKU ha raggiunto il punto di riordino`,stockBreakAlert:`Avviso di esaurimento scorte`,stockBreakAlertDescription:`Le scorte si esauriranno prima dell'arrivo del rifornimento`,jobAdded:`Lavoro aggiunto`,jobAddedDescription:`Lavoro aggiunto alla coda`,jobAssigned:`Lavoro assegnato`,jobAssignedDescription:`Lavoro basato su modello assegnato alla stampante`,jobStarted:`Lavoro avviato`,jobStartedDescription:`Lavoro in coda avviato per la stampa`,jobWaiting:`Lavoro in attesa`,jobWaitingDescription:`Lavoro in attesa di filamento o stampante`,jobSkipped:`Lavoro saltato`,jobSkippedDescription:`Lavoro saltato (precedente fallito)`,jobFailed:`Lavoro fallito`,jobFailedDescription:`Avvio del lavoro fallito`,queueComplete:`Coda completata`,queueCompleteDescription:`Tutti i lavori in coda completati`,quietHours:`Ore silenziose`,noNotificationsDuring:`Nessuna notifica durante queste ore`,editProviderToChangeQuietHours:`Modifica il provider per cambiare le ore silenziose`,dailyDigest:`Riepilogo giornaliero`,batchNotifications:`Raggruppa le notifiche in un unico riepilogo giornaliero`,sendAt:`Invia alle {{time}}`,editProviderToChangeDigestTime:`Modifica il provider per cambiare l'orario del riepilogo`,edit:`Modifica`,deleteProvider:`Elimina provider di notifica`,deleteConfirm:`Sei sicuro di voler eliminare "{{name}}"? Questa azione non può essere annullata.`,delete:`Elimina`,addTitle:`Aggiungi provider di notifica`,editTitle:`Modifica provider di notifica`,nameLabel:`Nome *`,namePlaceholder:`Le mie notifiche`,providerTypeLabel:`Tipo di provider *`,configuration:`Configurazione`,testConfiguration:`Testa configurazione`,printerFilter:`Filtro stampante`,onlyFromPrinter:`Invia notifiche solo per eventi da questa stampante`,quietHoursDnd:`Ore silenziose (Non disturbare)`,quietStart:`Inizio`,quietEnd:`Fine`,dailyDigestLabel:`Riepilogo giornaliero`,sendDigestAt:`Invia riepilogo alle`,digestCollected:`Gli eventi verranno raccolti e inviati come riepilogo unico a quest'ora`,notificationEvents:`Eventi di notifica`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(dopo il completamento della stampa)`,haSensorAlert:`Avviso sensore stampante`,haSensorAlertDescription:`(un sensore Home Assistant collegato richiede attenzione)`,locationHaSensorAlert:`Avviso sensore di posizione`,locationHaSensorAlertDescription:`(un sensore Home Assistant collegato a una posizione di archiviazione richiede attenzione)`,eventPriority:{sectionTitle:`Priorità ntfy`,helpNtfy:`Scegli una priorità per ogni evento abilitato. ntfy le usa per intensificare gli avvisi (suono, visibilità, comportamento push). I livelli non impostati qui usano l'impostazione predefinita del server ntfy.`,min:`Min.`,low:`Bassa`,default:`Predefinita`,high:`Alta`,urgent:`Urgente`},cancel:`Annulla`,save:`Salva`,add:`Aggiungi`,nameRequired:`Il nome è obbligatorio`,fieldRequired:`{{field}} è obbligatorio`,haDataInvalid:`Il campo Data deve essere un oggetto JSON valido, ad es. {"priority": "high", "ttl": 0}`,phoneNumber:`Numero di telefono`,apiKey:`Chiave API`,serverUrl:`URL del server`,topic:`Argomento`,authToken:`Token di autenticazione`,userKey:`Chiave utente`,appToken:`Token applicazione`,priority:`Priorità`,pushoverRetry:`Ripetizione emergenza (s)`,pushoverExpire:`Scadenza emergenza (s)`,botToken:`Token del bot`,chatId:`ID chat`,telegramThreadId:`ID argomento forum`,telegramThreadIdHelp:`Opzionale. Invia in un singolo argomento di un gruppo forum: l'ultimo numero nel link dell'argomento (t.me/c/.../25). Lascia vuoto per l'argomento Generale.`,telegramThreadIdInvalid:`L'ID argomento forum deve essere un numero.`,smtpServer:`Server SMTP`,smtpPort:`Porta SMTP`,security:`Sicurezza`,authentication:`Autenticazione`,username:`Nome utente`,password:`Password`,fromEmail:`Email mittente`,toEmail:`Email destinatario`,webhookUrl:`URL webhook`,payloadFormat:`Formato payload`,authorization:`Autorizzazione`,titleFieldName:`Nome campo titolo`,messageFieldName:`Nome campo messaggio`,editTemplate:`Modifica modello: {{name}}`,titleLabel:`Titolo`,bodyLabel:`Corpo`,titlePlaceholder:`Titolo della notifica...`,bodyPlaceholder:`Corpo della notifica...`,availableVariables:`Variabili disponibili`,clickToInsert:`Clicca per inserire alla posizione del cursore nel corpo`,livePreview:`Anteprima live`,hide:`Nascondi`,show:`Mostra`,loadingPreview:`Caricamento anteprima...`,enterTemplateContent:`Inserisci il contenuto del modello per vedere l'anteprima`,titlePreview:`Titolo:`,bodyPreview:`Corpo:`,resetToDefault:`Ripristina predefinito`,titleRequired:`Il titolo è obbligatorio`,bodyRequired:`Il corpo è obbligatorio`,notificationLog:`Registro notifiche`,showFailedOnly:`Solo fallite`,last24Hours:`Ultime 24 ore`,last7Days:`Ultimi 7 giorni`,last30Days:`Ultimi 30 giorni`,last90Days:`Ultimi 90 giorni`,justNow:`Proprio ora`,noFailedNotifications:`Nessuna notifica fallita`,noNotificationsLogged:`Nessuna notifica registrata`,unknownProvider:`Provider sconosciuto`,logTitle:`Titolo`,logMessage:`Messaggio`,logError:`Errore`,logProvider:`Provider: {{type}}`,logTime:`Ora: {{time}}`,refresh:`Aggiorna`,clearOld:`Cancella vecchie`,statsSummary:`Ultimi {{days}} giorni:`,statsNotifications:`notifiche`,statsSent:`{{count}} inviate`,statsFailed:`{{count}} fallite`,eventTypes:{print_start:`Stampa avviata`,print_complete:`Stampa completata`,print_failed:`Stampa fallita`,print_stopped:`Stampa interrotta`,print_progress:`Avanzamento`,printer_offline:`Stampante offline`,printer_error:`Errore stampante`,filament_low:`Filamento scarso`,maintenance_due:`Manutenzione necessaria`,test:`Prova`},userEmail:{title:`Notifiche`,emailNotifications:`Notifiche via e-mail`,emailNotificationsDesc:`Ricevi notifiche via e-mail per i tuoi lavori di stampa. Le e-mail vengono inviate tramite le impostazioni SMTP configurate nell'autenticazione avanzata.`,sendingTo:`Le notifiche verranno inviate a`,noEmailWarning:`Il tuo account non ha un indirizzo e-mail. Contatta un amministratore per aggiungerne uno.`,printJobNotifications:`Notifiche lavori di stampa`,printJobNotificationsDesc:`Scegli quali eventi attivano le notifiche e-mail per i lavori di stampa che invii.`,printJobStarts:`Inizio lavoro di stampa`,printJobStartsDesc:`Ricevi una notifica quando il tuo lavoro di stampa inizia.`,printJobFinishes:`Fine lavoro di stampa`,printJobFinishesDesc:`Ricevi una notifica quando il tuo lavoro di stampa si completa correttamente.`,printErrors:`Errori di stampa`,printErrorsDesc:`Ricevi una notifica quando il tuo lavoro di stampa fallisce o incontra un errore.`,printJobStops:`Lavoro di stampa interrotto`,printJobStopsDesc:`Ricevi una notifica quando il tuo lavoro di stampa viene annullato o interrotto.`,saveSuccess:`Preferenze di notifica salvate.`,saveError:`Impossibile salvare le preferenze di notifica.`}},richTextEditor:{bold:`Grassetto`,italic:`Corsivo`,underline:`Sottolineato`,bulletList:`Elenco puntato`,numberedList:`Elenco numerato`,alignLeft:`Allinea a sinistra`,alignCenter:`Allinea al centro`,alignRight:`Allinea a destra`,addLink:`Aggiungi link`,removeLink:`Rimuovi link`},externalLinks:{title:`Link della barra laterale`,sidebarLayout:`Barra laterale`,sidebarLayoutDescription:`Mostra o nascondi le pagine integrate, aggiungi link esterni e trascina gli elementi per riordinare la navigazione laterale.`,systemPages:`Pagine Bambuddy`,externalLinks:`Link esterni`,visibleInSidebar:`Visibile nella barra laterale`,hiddenFromSidebar:`Nascosto nella barra laterale`,requiredInSidebar:`Obbligatorio nella barra laterale`,hidePage:`Nascondi pagina`,showPage:`Mostra pagina`,settingsCannotBeHidden:`Le impostazioni non possono essere nascoste`,noLinksConfigured:`Nessun link esterno configurato`,deleteLink:`Elimina link`,removeCustomIcon:`Rimuovi icona personalizzata`,openInNewTab:`Apri in nuova scheda`,placeholders:{linkName:`Il mio link`}},keyboardShortcuts:{title:`Scorciatoie da tastiera`,navigation:`Navigazione`,archivesSection:`Archivi`,kProfilesSection:`Profili K`,generalSection:`Generale`,shortcuts:{goToPrinters:`Vai a Stampanti`,goToArchives:`Vai ad Archivi`,goToQueue:`Vai a Coda`,goToStats:`Vai a Statistiche`,goToProfiles:`Vai a Profili cloud`,goToSettings:`Vai a Impostazioni`,focusSearch:`Vai alla ricerca`,openUploadModal:`Apri finestra di caricamento`,clearSelection:`Cancella selezione / deseleziona input`,contextMenu:`Menu contestuale sulle schede`,refreshProfiles:`Aggiorna profili`,newProfile:`Nuovo profilo`,exitSelectionMode:`Esci dalla modalità selezione`,showHelp:`Mostra questa guida`},footer:`Premi Esc o clicca fuori per chiudere`},notificationLog:{title:`Registro notifiche`,events:{printStarted:`Stampa avviata`,printComplete:`Stampa completata`,printFailed:`Stampa fallita`,printStopped:`Stampa interrotta`,progress:`Avanzamento`,printerOffline:`Stampante offline`,printerError:`Errore stampante`,lowFilament:`Filamento in esaurimento`,maintenanceDue:`Manutenzione in scadenza`,test:`Test`},timeAgo:{justNow:`Adesso`,minutesAgo:`{{minutes}} min fa`,hoursAgo:`{{hours}} ore fa`}},restoreBackup:{title:`Ripristina backup`,restoring:`Ripristino...`,restoreComplete:`Ripristino completato`,restoreFailed:`Ripristino fallito`,importSettings:`Importa impostazioni da un file di backup`,pleaseWait:`Attendere il ripristino dei dati`,clickToSelect:`Clicca per selezionare il file di backup (.json o .zip)`,howDuplicateHandling:`Come funziona la gestione dei duplicati:`,categories:{printers:`Stampanti`,smartPlugs:`Prese smart`,notificationProviders:`Provider di notifica`,filaments:`Filamenti`,archives:`Archivi`,pendingUploads:`Caricamenti in sospeso`,settingsTemplates:`Impostazioni e modelli`},matchingInfo:{printers:`abbinati per numero di serie`,smartPlugs:`abbinati per indirizzo IP`,notificationProviders:`abbinati per nome`,filaments:`abbinati per nome + tipo + marca`,archives:`abbinati per hash del contenuto`,pendingUploads:`abbinati per nome file`,settingsTemplates:`sempre sovrascritti`},replaceExisting:`Sostituisci dati esistenti`,keepExisting:`Mantieni dati esistenti`,replaceDescription:`Sovrascrivi gli elementi già esistenti con i dati del backup`,keepDescription:`Ripristina solo gli elementi che non esistono già`,caution:`Attenzione:`,cautionText:`La sovrascrittura sostituirà le configurazioni attuali con i dati del backup. I codici di accesso delle stampanti non vengono mai sovrascritti per sicurezza.`,itemsRestored:`Elementi ripristinati`,itemsSkipped:`Elementi saltati`,restored:`Ripristinati`,skipped:`Saltati (già esistenti)`,filesLabel:`File (3MF, miniature, ecc.)`,newApiKeysGenerated:`Nuove chiavi API generate`,newApiKeysWarning:`Queste chiavi vengono mostrate una sola volta. Copiale adesso!`,processingBackup:`Elaborazione file di backup...`,noDataFound:`Nessun dato trovato da ripristinare nel file di backup.`,failedToRestore:`Impossibile ripristinare il backup. Verificare il formato del file.`},backupExport:{title:`Esporta backup`,selectData:`Seleziona i dati da includere`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,categoryDescriptions:{settings:`Lingua, tema, preferenze di aggiornamento`,notifications:`ntfy, Pushover, Discord, ecc.`,templates:`Modelli di messaggi personalizzati`,smartPlugs:`Configurazioni prese Tasmota`,externalLinks:`Link della barra laterale a servizi esterni`,printers:`Info stampanti (codici di accesso esclusi)`,plateDetection:`Immagini di riferimento piatto vuoto`,filaments:`Tipi di filamento e costi`,maintenance:`Programmi di manutenzione personalizzati`,archives:`Tutti i dati di stampa + file (3MF, miniature, foto)`,projects:`Progetti, elementi BOM e allegati`,pendingUploads:`Caricamenti della stampante virtuale in attesa di revisione`,apiKeys:`Chiavi API webhook (nuove chiavi generate all'importazione)`},requiresPrinters:`Richiede la selezione di Stampanti`,zipFileWarning:`Verrà creato un file ZIP.`,zipFileDescription:`Include tutti i file 3MF, miniature, timelapse e foto. Potrebbe richiedere tempo e produrre un file di grandi dimensioni.`,includeAccessCodes:`Includi codici di accesso`,includeAccessCodesDescription:`Per il trasferimento su un'altra macchina`,includeAccessCodesWarning:`I codici di accesso saranno inclusi in testo semplice. Mantieni sicuro questo file di backup!`,categoriesSelected:`{{selectedCount}} categorie selezionate`},pendingUploads:{placeholders:{notes:`Aggiungi note su questa stampa...`},discardUpload:`Scarta caricamento`,archiveAllUploads:`Archivia tutti i caricamenti`,discardAllUploads:`Scarta tutti i caricamenti`,archive:`Archivia`,timeAgo:{justNow:`Adesso`,minutesAgo:`{{minutes}} min fa`,hoursAgo:`{{hours}} ore fa`,daysAgo:`{{days}} giorni fa`}},apiBrowser:{placeholders:{requestBody:`Corpo della richiesta JSON...`,searchEndpoints:`Cerca endpoint...`}},configureAmsSlot:{title:`Configura Slot AMS`,slotConfigured:`Slot configurato!`,configuringSlot:`Configurazione slot:`,slotLabel:`{{ams}} – Slot {{slot}}`,searchPresets:`Cerca preset...`,colorPlaceholder:`Nome colore o hex (es. marrone, FF8800)`,clearCustomColor:`Cancella colore personalizzato`,noCloudPresets:`Nessun preset cloud. Accedi a Bambu Cloud per sincronizzare.`,noPresetsAvailable:`Nessun preset disponibile. Accedi a Bambu Cloud o importa profili locali.`,noMatchingPresets:`Nessun preset corrispondente trovato.`,custom:`Personalizzato`,builtin:`Integrato`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`Impostazioni inviate alla stampante`,filamentProfile:`Profilo filamento`,kProfileLabel:`Profilo K (Pressure Advance)`,filteringFor:`Filtrando per: {{material}}`,noKProfile:`Nessun profilo K (usa predefinito 0.020)`,noMatchingKProfiles:`Nessun profilo K corrispondente. Verrà usato K=0.020 predefinito.`,otherKProfiles:`Altri profili K su questa stampante`,selectFilamentFirst:`Seleziona prima un profilo filamento`,kFromCalibration:`K={{value}} dalla calibrazione stampante`,customColorLabel:`Colore personalizzato (opzionale)`,presetColors:`Colori {{name}}:`,showLessColors:`Mostra meno colori`,showMoreColors:`Mostra più colori`,clear:`Cancella`,hexLabel:`Hex – #{{hex}}`,resetting:`Ripristino...`,resetSlot:`Ripristina slot`,cancel:`Annulla`,configuring:`Configurazione...`,configureSlot:`Configura slot`},githubBackup:{title:`Backup Git`,history:`Cronologia`,downloadBackup:`Scarica backup`,restoreBackup:`Ripristina backup`,noBackupsYet:`Nessun backup ancora`},emailSettings:{placeholders:{fromName:`Bambuddy`}},tagManagement:{searchTags:`Cerca tag...`,renameTag:`Rinomina tag`,deleteTag:`Elimina tag`},notificationTemplates:{placeholders:{title:`Titolo notifica...`,body:`Corpo notifica...`}},batchTag:{placeholders:{newTag:`Inserisci nuovo tag...`}},photoGallery:{deletePhoto:`Elimina foto`},filamentHoverCard:{copySpoolUuid:`Copia UUID bobina`},kProfilesView:{hasNote:`Ha una nota`,copyProfile:`Copia profilo`},layout:{openMenu:`Apri menu`,noPermissionSystemInfo:`Non hai il permesso di visualizzare le informazioni di sistema`},dashboard:{dragToReorder:`Trascina per riordinare`,hideWidget:`Nascondi widget`},notificationProviderCard:{deleteNotificationProvider:`Elimina provider di notifica`},fileManagerModal:{closeFileManager:`Chiudi gestore file`,sortFiles:`Ordina file`,goToParentFolder:`Vai alla cartella superiore`,threeView:`Vista 3D`},embeddedCameraViewer:{refreshStream:`Aggiorna stream`,close:`Chiudi`,zoomOut:`Rimpicciolisci`,resetZoom:`Reimposta zoom`,zoomIn:`Ingrandisci`,dragToResize:`Trascina per ridimensionare`},timelapseViewer:{skipBack5s:`Indietro 5s`,skipForward5s:`Avanti 5s`},notificationProviders:{descriptions:{email:`Notifiche email via SMTP`,telegram:`Notifiche tramite bot Telegram`,discord:`Invia a canale Discord tramite webhook`,ntfy:`Notifiche push gratuite e self-hostabili`,pushover:`Notifiche push semplici e affidabili`,callmebot:`Notifiche WhatsApp gratuite tramite CallMeBot`,webhook:`POST HTTP generico a qualsiasi URL`}},logViewer:{searchPlaceholder:`Cerca messaggio o nome logger...`,noLogEntries:`Nessuna voce di log trovata`},switchbarPopover:{noSwitchesInSwitchbar:`Nessun interruttore nella barra`},projectPageModal:{placeholders:{title:`Titolo`,designer:`Designer`,license:`Licenza`,description:`Inserisci descrizione...`,profileTitle:`Titolo profilo`,profileDescription:`Descrizione profilo...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`In attesa`,justNow:`Proprio ora`,now:`Ora`,minsAgo:`{{count}}m fa`,inMins:`tra {{count}}m`,hoursAgo:`{{count}}h fa`,inHours:`tra {{count}}h`,daysAgo:`{{count}}g fa`,inDays:`tra {{count}}g`},spoolbuddy:{nav:{dashboard:`Dashboard`,ams:`AMS`,inventory:`Inventario`,writeTag:`Scrivi`,settings:`Impostazioni`},status:{nfcReady:`NFC pronto`,nfcOff:`NFC spento`,offline:`Offline`,online:`Online`,noPrinters:`Nessuna stampante`,deviceOffline:`Dispositivo offline`,waitingConnection:`In attesa della connessione...`,systemReady:`Sistema pronto`,status:`Stato`},dashboard:{readyToScan:`Pronto per la scansione`,idleMessage:`Posiziona una bobina sulla bilancia per identificarla`,nfcHint:`Il tag NFC verrà letto automaticamente`,device:`Dispositivo`,syncWeight:`Sincronizza peso`,weightSynced:`Sincronizzato!`,unknownTag:`Tag sconosciuto`,newTag:`Nuovo tag rilevato`,onScale:`sulla bilancia`,linkSpool:`Collega a bobina`,linkTagTitle:`Collega tag a bobina`,linkTag:`Collega tag`,selectSpool:`Seleziona una bobina da collegare a questo tag:`,noUntagged:`Nessuna bobina senza tag trovata`,tagDetected:`Tag rilevato`,noTag:`Nessun tag`,tagId:`Etichetta`,grossWeight:`Peso lordo`,spoolSize:`Dimensione bobina`,close:`Chiudi`,currentSpool:`Bobina attuale`,plateReady:`Piatto pronto: {{name}}`,plateReadyLabel:`Piatti da liberare`,plateClearAction:`Libera`,plateClearedToast:`Piatto contrassegnato come liberato`,plateClearFailed:`Impossibile contrassegnare il piatto come liberato`},modal:{spoolDetected:`Bobina rilevata`,assignToAms:`Assegna all'AMS`,syncWeight:`Sincronizza peso`,weightSynced:`Sincronizzato!`,syncing:`Sincronizzazione...`,newTagDetected:`Nuovo tag rilevato`,addToInventory:`Aggiungi all'inventario`,assignToAmsTitle:`Assegna all'AMS`,selectSlot:`Seleziona uno slot`,assign:`Assegna`,assigning:`Assegnazione...`,assignSuccess:`Assegnato!`,assignPendingInsert:`Assegnato. Lo slot verrà configurato all'inserimento della bobina.`,assignError:`Impossibile assegnare la bobina. Riprovare.`,noPrinterSelected:`Seleziona una stampante...`,noAmsDetected:`Nessun AMS rilevato su questa stampante`,slot:`Slot`},weight:{noReading:`Nessuna lettura`,stable:`Stabile`,measuring:`Misurazione...`,tare:`Tara`,calibrate:`Calibra`},spool:{remaining:`Rimanente`,material:`Materiale`,brand:`Marca`,color:`Colore`,coreWeight:`Nucleo`,labelWeight:`Etichetta`,scaleWeight:`Bilancia`,netWeight:`Netto`,lastUsed:`Ultimo utilizzo`},ams:{noData:`Nessun AMS rilevato`,connectAms:`Collega un AMS per vedere gli slot`,noPrinter:`Nessuna stampante selezionata`,selectPrinter:`Seleziona una stampante dalla barra superiore`,printerDisconnected:`Stampante disconnessa`,humidity:`Umidità`,level:`Livello`,active:`Attivo`,slot:`Slot`,empty:`Vuoto`},inventory:{search:`Cerca bobine...`,empty:`Nessuna bobina nell'inventario`,noResults:`Nessuna bobina corrispondente`,spools:`bobine`,addSpool:`Aggiungi bobina`},settings:{tabDevice:`Dispositivo`,tabDisplay:`Display`,tabScale:`Bilancia`,tabUpdates:`Aggiornamenti`,nfcReader:`Lettore NFC`,type:`Tipo`,connection:`Connessione`,notConnected:`N/D`,deviceInfo:`Info dispositivo`,hostname:`Host`,uptime:`Tempo di attività`,brightness:`Luminosità`,saved:`Salvato`,noBacklight:`Nessuna retroilluminazione DSI rilevata. Il controllo luminosità richiede un display DSI.`,screenBlank:`Timeout spegnimento schermo`,screenBlankDesc:`Lo schermo si spegne dopo inattività. Tocca per riattivare.`,displayNote:`La luminosità viene applicata come filtro software.`,scaleCalibration:`Calibrazione bilancia`,currentWeight:`Peso attuale`,tareOffset:`Tara`,calFactor:`Fattore`,knownWeight:`Peso noto`,calStep1:`Rimuovere tutto dalla bilancia e premere Imposta zero.`,calStep2:`Posizionare il peso noto sulla bilancia.`,setZero:`Imposta zero`,calibrateNow:`Calibra`,calibrated:`Calibrato`,tareSet:`Comando tara inviato. In attesa del dispositivo...`,tareComplete:`Tara completata!`,tareTimedOut:`Tempo scaduto per la tara — il demone SpoolBuddy è in esecuzione?`,tareFailed:`Invio comando tara fallito`,zeroSet:`Punto zero impostato. Posizionare il peso noto sulla bilancia.`,calibrationDone:`Calibrazione completata!`,calibrationFailed:`Calibrazione fallita`,lastCalibrated:`Ultima calibrazione`,stable:`Stabile`,settling:`Stabilizzazione...`,firmware:`Firmware`,scale:`Bilancia`,noDevice:`Nessun dispositivo SpoolBuddy trovato`,daemonVersion:`Versione daemon`,currentVersion:`Attuale`,versionPending:`In attesa del daemon...`,checking:`Verifica...`,checkUpdates:`Verifica aggiornamenti`,updateAvailable:`Aggiornamento disponibile`,updateInstructions:`Aggiorna via SSH: esegui lo script di installazione SpoolBuddy.`,upToDate:`Aggiornato`,includeBeta:`Includi versioni beta`,systemConfig:`Backend & autenticazione`,backendUrl:`URL backend Bambuddy`,apiToken:`Token API`,apiTokenPlaceholder:`Inserisci token API`,saveConfig:`Salva configurazione`,systemQueued:`Configurazione in coda.`,systemFieldsRequired:`L'URL del backend è obbligatorio.`,nfcDiagnostic:`Diagnostica NFC`,scaleDiagnostic:`Diagnostica bilancia`,readTagDiagnostic:`Diagnostica lettura tag`,testNfc:`Test lettore`,testScale:`Test precisione`,testReadTag:`Leggi tag`},writeTag:{tabExisting:`Bobina esistente`,tabNew:`Nuova bobina`,tabReplace:`Sostituisci tag`,searchPlaceholder:`Cerca per materiale, colore, marca...`,noUntaggedSpools:`Nessuna bobina senza tag`,noTaggedSpools:`Nessuna bobina con tag`,selectSpool:`Seleziona una bobina, poi posiziona un NTAG sul lettore`,placeTag:`Posiziona un NTAG sul lettore`,tagReady:`Tag rilevato — pronto per la scrittura`,writeTag:`Scrivi tag`,replaceTag:`Sostituisci tag`,writing:`Scrittura tag...`,waiting:`In attesa di SpoolBuddy...`,writeSuccess:`Tag scritto con successo!`,writeFailed:`Scrittura fallita`,queueFailed:`Impossibile accodare il comando di scrittura`,tryAgain:`Riprova`,cancel:`Annulla`,replaceWarning:`Il vecchio tag verrà scollegato. Il nuovo tag lo sostituirà.`,deviceOffline:`SpoolBuddy è offline`,material:`Materiale`,colorName:`Nome colore`,color:`Colore`,brand:`Marca`,weight:`Peso (g)`,createSpool:`Crea bobina`,creating:`Creazione...`,spoolCreated:`Bobina creata! Pronto per la scrittura.`,createFailed:`Impossibile creare la bobina`,incompleteDataWarning:`Tag scritto con dati Spoolman incompleti`},quickMenu:{printerPower:`Alimentazione stampante`,systemControls:`Sistema`,restartDaemon:`Riavvia daemon`,restartBrowser:`Riavvia browser`,reboot:`Riavvia`,shutdown:`Spegni`,swipeToClose:`Scorri verso il basso per chiudere`,confirmTitle:`Conferma`,confirmShutdown:`Sei sicuro di voler spegnere lo SpoolBuddy? Avrai bisogno di accesso fisico per riaccenderlo.`,confirmReboot:`Sei sicuro di voler riavviare lo SpoolBuddy?`,confirmRestartDaemon:`Riavviare il daemon SpoolBuddy? NFC e bilancia saranno temporaneamente non disponibili.`,confirmRestartBrowser:`Riavviare il browser kiosk? Lo schermo diventerà brevemente nero.`,confirm:`Conferma`,confirmPlugOn:`Accendere {{name}}?`,confirmPlugOff:`Spegnere {{name}}?`,turnOn:`Accendi`,turnOff:`Spegni`}},diagnostic:{modalTitle:`Diagnostica connessione — {{name}}`,running:`Diagnostica in corso...`,runningElapsed:`Diagnostica in corso... ({{elapsed}}s)`,waitingForReportHint:`In attesa che la stampante pubblichi un report di stato — può richiedere fino a {{max}} secondi.`,runFailed:`Impossibile eseguire la diagnostica: {{error}}`,retry:`Esegui di nuovo`,runButton:`Esegui diagnostica`,sectionTitle:`Diagnostica connessione`,sectionDescription:`Verifica perché una stampante non si connette o non stampa — raggiungibilità delle porte, modalità sviluppatore LAN, modalità di rete Docker e credenziali.`,noPrinters:`Nessuna stampante configurata.`,overall:{ok:`Nessun problema rilevato — la connessione della stampante sembra a posto.`,warnings:`La stampante dovrebbe funzionare, ma alcuni aspetti richiedono attenzione.`,problems:`Sono stati rilevati problemi che spiegano perché la stampante non si connette o non stampa.`},check:{port_mqtt:{title:`Porta di controllo (MQTT 8883)`,pass:`Raggiungibile — la stampante accetta connessioni di controllo.`,fail:`La porta 8883 non è raggiungibile. La stampante è spenta, ha un altro indirizzo IP oppure un firewall la blocca. Verifica l'IP della stampante e che nulla blocchi la porta 8883.`},port_ftps:{title:`Porta trasferimento file (FTPS 990)`,pass:`Raggiungibile — l'invio dei file di stampa funzionerà.`,warn:`La porta 990 non è raggiungibile. Il monitoraggio potrebbe ancora funzionare, ma l'invio delle stampe alla stampante fallirà. Assicurati che la porta 990 non sia bloccata.`,warn_no_tls:`La porta 990 è aperta, ma il servizio file della stampante non completa l'handshake TLS. I file di stampa, le anteprime e i timelapse non possono essere scaricati, quindi gli archivi restano vuoti. Riavvia la stampante — sbloccare la porta non serve.`},external_storage:{title:`Memorizza file inviati su archiviazione esterna (passo 4 dell'installazione)`,pass:`La stampante segnala che questa opzione è attiva — i file inviati saranno memorizzati sulla scheda SD e gli archivi avranno miniature e metadati dello slicer.`,fail:`La stampante segnala che questa opzione è disattivata. Abilita "Memorizza file inviati su archiviazione esterna" — nei firmware recenti (P2S 01.02 / Bambu Studio 2.6+) l'interruttore si trova nelle Impostazioni di stampa della stampante; nelle versioni precedenti è nella scheda Dispositivo di Bambu Studio / OrcaSlicer. Senza questa opzione, ogni stampa archiviata è priva di miniatura e di metadati dello slicer.`,skip:`Non verificato — è necessaria una connessione MQTT attiva. Negli slicer più vecchi dove questa impostazione esiste solo nello slicer, la stampante non la segnala, quindi questo controllo passa anche se l'opzione è disattivata — verifica manualmente il passo 4 dell'installazione.`,skip_unsupported_model:`Questo modello ha uno slot SD ma nessun modo per attivare l'opzione — il firmware attuale della serie P1 non mostra l'interruttore in Bambu Studio e la stampante non ha uno schermo. Non c'è nulla da correggere qui; alle stampe archiviate potrebbero mancare miniature e metadati dello slicer finché Bambu Lab non aggiungerà il supporto via firmware.`,fail_no_media:`L'opzione è attiva, ma la stampante non rileva né scheda né chiavetta nel suo slot, quindi i file inviati non hanno dove andare. Inseriscine una e stampa di nuovo — fino ad allora ogni stampa archiviata sarà priva di miniatura e metadati dello slicer.`,warn_internal_storage:`L'opzione è attiva ed è presente una memoria, ma l'ultima stampa è comunque finita nella memoria interna della stampante, che Bambuddy non può leggere. Sulla serie H2 e sulla P2S il pulsante «Stampa» di Bambu Studio invia sempre lì, a prescindere da questa opzione. Le stampe vengono archiviate con nome e tempi, ma senza miniatura né metadati dello slicer. Per archivi completi, avvia le stampe da Bambuddy oppure elabora in OrcaSlicer, oppure in Bambu Studio usa «Invia» con «Esterna» e avvia la stampa dopo.`,warn_internal_history:`L'opzione è attiva e la memoria è presente, ma l'ultima stampa è partita da un file già presente sulla stampante: una ristampa dal suo schermo, un avvio da Handy o un file inviato prima. Quella libreria si trova nella memoria interna, che Bambuddy non può leggere, e nessuna impostazione lo cambia, perché per quella stampa non è stato inviato nulla. Resta archiviata con nome e tempi, ma senza miniatura né metadati dello slicer. Per archivi completi, avvia le stampe da Bambuddy o inviale dallo slicer.`},port_rtsps:{title:`Porta fotocamera ({{protocol}} {{port}})`,pass:`Raggiungibile — lo streaming della fotocamera funzionerà.`,warn:`La porta {{port}} non è raggiungibile. La visualizzazione live della fotocamera non funzionerà. Questo non influisce sulla stampa.`},network_mode:{title:`Modalità di rete Docker`,pass:`In esecuzione in modalità di rete host.`,warn:`Bambuddy è in esecuzione con la rete Docker bridge. Il rilevamento delle stampanti e la stampante virtuale richiedono la modalità di rete host — ricrea il container con "network_mode: host".`,skip:`Non in esecuzione in Docker — non applicabile.`},subnet:{title:`Sottorete`,pass:`La stampante e Bambuddy sono nella stessa sottorete.`,warn:`La stampante ({{printer_ip}}) e Bambuddy ({{host_ip}}) sono in sottoreti diverse. Potrebbero non raggiungersi a meno che non sia configurato il routing tra le sottoreti.`,skip:`Impossibile determinare la sottorete — ignorato.`},mqtt_auth:{title:`Credenziali stampante`,pass:`La stampante ha accettato la connessione.`,fail:`La stampante è raggiungibile ma Bambuddy non è connesso ad essa. Il codice di accesso o il numero di serie è molto probabilmente errato — il codice di accesso cambia ogni volta che la modalità Solo LAN o la modalità sviluppatore viene attivata/disattivata, quindi ricopialo dallo schermo della stampante. Una stampante in fase di riavvio, o che ha già raggiunto il limite di connessioni simultanee, appare allo stesso modo.`,fail_auth_rejected:`La stampante ha rifiutato le credenziali di Bambuddy. Il codice di accesso o il numero di serie è errato — il codice di accesso cambia ogni volta che la modalità Solo LAN o la modalità sviluppatore viene attivata/disattivata. Ricopialo dallo schermo della stampante e salvalo nelle impostazioni della stampante.`,skip:`Non verificato — impossibile raggiungere la stampante.`},developer_mode:{title:`Modalità sviluppatore LAN`,pass:`La modalità sviluppatore è attivata.`,fail:`La modalità sviluppatore è DISATTIVATA sulla stampante. Attivala nelle impostazioni LAN della stampante — e conferma con OK. Senza di essa le stampe non verranno avviate.`,skip:`Impossibile verificare — richiede una connessione attiva alla stampante.`},printer_publishing:{title:`La stampante pubblica lo stato`,pass:`La stampante sta pubblicando aggiornamenti di stato — AMS, filamenti e profili K saranno correttamente replicati nello slicer.`,fail:`Il broker MQTT ha accettato la connessione ma la stampante non ha pubblicato alcun report di stato. È quasi sempre un numero di serie errato o con maiuscole/minuscole sbagliate — il topic device//report distingue tra maiuscole e minuscole. Confronta il numero di serie nelle impostazioni della stampante con quello mostrato sullo schermo del dispositivo.`,skip:`Impossibile verificare — richiede una connessione attiva alla stampante.`}}},systemHealth:{sectionTitle:`Stato del sistema`,sectionDescription:`Analizza i log recenti alla ricerca di problemi noti che di solito puoi risolvere da solo, prima che diventino un ticket di assistenza.`,rescan:`Analizza di nuovo`,clean:`Nessun problema noto trovato nelle ultime {{times}} voci di log.`,logUnavailable:`La registrazione su file è disattivata, quindi i log non possono essere analizzati. Attiva la registrazione su file per usare questo controllo.`,learnMore:`Come risolvere`,fixLabel:`Soluzione:`,occurrences:`Visto {{times}}× — ultima volta alle {{lastSeen}}`,category:{layer8:`Puoi risolverlo tu`,environment:`Ambiente`,bug:`Segnalalo, per favore`},signature:{"ftp-auth-rejected":{name:`La stampante ha rifiutato il codice di accesso`,cause:`La stampante ha rifiutato l'accesso per il trasferimento file. Il codice di accesso è errato oppure è cambiato dopo aver attivato la Modalità Sviluppatore.`,fix:`Ricopia il codice di accesso dallo schermo della stampante (impostazioni LAN) e aggiornalo nelle impostazioni della stampante in Bambuddy.`},"ftp-connection-timeout":{name:`Timeout della connessione di trasferimento file`,cause:`Bambuddy non è riuscito a raggiungere la porta di trasferimento file della stampante (FTPS 990). La porta è bloccata, oppure la stampante è spenta o in un'altra sottorete.`,fix:`Assicurati che nulla blocchi la porta 990 tra Bambuddy e la stampante e che entrambi siano sulla stessa rete.`},"ftp-ssl-error":{name:`Handshake sicuro del trasferimento file non riuscito`,cause:`Il servizio file della stampante ha risposto sulla porta 990 senza TLS. Il suo server file si è bloccato: è un guasto della stampante, non un problema di firewall o firmware.`,fix:`Riavvia la stampante. Fino ad allora non è possibile scaricare file di stampa, copertine e timelapse; la stampa in sé non è interessata.`},"bambu-cloud-captcha":{name:`Bambu Cloud richiede un CAPTCHA`,cause:`Il sistema antiabuso di Bambu sta verificando questa rete, quindi nessun accesso a Bambu Cloud può andare a buon fine. Dipende dall'indirizzo IP pubblico, non dal tuo account né da questa installazione.`,fix:`Attendi: di solito si risolve entro qualche ora e i tentativi ripetuti lo prolungano. Nel frattempo accedi con un token di accesso preso da una sessione del browser.`},"mqtt-connection-flapping":{name:`La connessione alla stampante cade di continuo`,cause:`La connessione di controllo (MQTT 8883) si disconnette e si riconnette ripetutamente, di solito per una rete debole o una porta parzialmente bloccata.`,fix:`Controlla il segnale Wi-Fi vicino alla stampante, preferisci una connessione cablata e assicurati che la porta 8883 sia raggiungibile in modo affidabile.`},"camera-connection-refused":{name:`Flusso della telecamera non raggiungibile`,cause:`Non è stato possibile raggiungere la telecamera dal vivo sulla porta RTSPS 322. La porta è bloccata, oppure la telecamera o la visione dal vivo via LAN è disattivata sulla stampante.`,fix:`Attiva la telecamera e la visione dal vivo via LAN sulla stampante e assicurati che la porta 322 non sia bloccata. Questo non influisce sulla stampa.`},"database-locked":{name:`Conflitti di scrittura nel database`,cause:`Il database SQLite presenta errori "database is locked" sotto carico, comune quando si usano più stampanti contemporaneamente.`,fix:`Passa Bambuddy a un database PostgreSQL esterno. Consulta la guida PostgreSQL nella documentazione.`}}},vpDiagnostic:{title:`Controllo configurazione — {{name}}`,runButton:`Esegui controllo configurazione`,running:`Controllo configurazione in corso...`,runFailed:`Impossibile eseguire il controllo della configurazione: {{error}}`,retry:`Esegui di nuovo`,overall:{ok:`Tutti i controlli superati — questa stampante virtuale è configurata correttamente.`,warnings:`La stampante virtuale dovrebbe funzionare, ma alcuni aspetti richiedono attenzione.`,problems:`Sono stati trovati problemi che spiegano perché lo slicer non riesce a vedere o usare questa stampante virtuale.`},check:{enabled:{title:`Stampante virtuale abilitata`,fail:`Questa stampante virtuale è spenta. Attivala per renderla rilevabile.`},running:{title:`Servizi in esecuzione`,fail:`La stampante virtuale è abilitata ma i suoi servizi non sono in esecuzione. Controlla il log di Bambuddy — di solito li ferma un conflitto di IP di binding o un errore di permessi.`},bind_interface:{title:`Interfaccia di rete di binding`,fail:`L'interfaccia di binding non è impostata o non esiste più su questo host. Scegli un'interfaccia attuale nel menu "Interfaccia di binding".`},access_code:{title:`Codice di accesso impostato`,fail:`Nessun codice di accesso impostato. Allo slicer deve essere fornito lo stesso codice di accesso di 8 caratteri impostato qui.`},target_printer:{title:`Stampante di destinazione`,fail:`Nessuna stampante di destinazione selezionata. La modalità proxy richiede una stampante reale a cui inoltrare.`,warn:`La stampante di destinazione è offline in questo momento — l'inoltro riprenderà quando si riconnetterà.`},port_ftps:{title:`Servizio di caricamento file (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi lo slicer non può caricare i file. La causa abituale è un conflitto di porta su questa interfaccia.`},port_mqtt:{title:`Servizio di controllo (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi lo slicer non può connettersi o mostrare lo stato.`},port_bind:{title:`Servizio di rilevamento (porta {{port}})`,fail:`Nulla è in ascolto sulla porta {{port}} dell'IP di binding, quindi l'handshake di rilevamento dello slicer fallisce.`},privileged_ports:{title:`Binding sulle porte privilegiate`,fail:`La porta {{port}} è sotto 1024 e questo servizio non è autorizzato ad associarla: per questo sopra non risulta nulla in ascolto. Aggiungi AmbientCapabilities=CAP_NET_BIND_SERVICE in /etc/systemd/system/bambuddy.service e riavvia, oppure esegui "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))". Con Docker aggiungi cap_add: [NET_BIND_SERVICE].`},certificate:{title:`Certificato TLS`,pass:`Certificato pronto. Assicurati che il certificato CA di Bambuddy (sopra) sia importato nell'archivio attendibile del tuo slicer.`,fail:`Il certificato TLS per questa stampante virtuale è mancante. Verifica che la directory dei dati di Bambuddy sia scrivibile.`}}},bugReport:{logHealthSummary:`Trovati problemi noti nei tuoi log`,logHealthIntro:`I log recenti corrispondono a problemi noti. Controlla le soluzioni qui sotto: risolverle potrebbe sistemare il problema senza una segnalazione di bug. Puoi comunque inviare una segnalazione qui sotto.`,title:`Segnala un bug`,description:`Descrizione`,descriptionPlaceholder:`Cosa è andato storto? Descrivi il problema...`,email:`Email (opzionale)`,emailPlaceholder:`tua@email.it`,emailPrivacy:`Se fornita, la tua email sarà inclusa in una sezione compressa dell'issue GitHub per permettere al manutentore di contattarti.`,screenshot:`Schermata`,uploadOrPaste:`Carica, incolla o trascina un'immagine`,dataCollectedSummary:`Quali dati sono inclusi nel report?`,dataIncluded:`Inclusi:`,dataIncludedList:`Versione app, OS, architettura, versione Python, statistiche database (solo conteggi), modelli stampante, numero ugelli, versioni firmware, stato connessione, stato integrazioni (Spoolman, MQTT, HA), impostazioni non sensibili, conteggio interfacce di rete, dettagli Docker, versioni dipendenze.`,dataNeverIncluded:`Mai inclusi:`,dataNeverIncludedList:`Nomi stampanti, numeri di serie, codici di accesso, password, indirizzi IP, indirizzi email, chiavi API, token, URL webhook, nomi host o nomi utente.`,submit:`Invia`,startLogging:`Avvia registrazione debug`,stepEnableLogging:`Registrazione debug attivata`,stepReproduce:`Riproduci il problema ora`,stepStopLogging:`Ferma & invia rapporto`,stopAndSubmit:`Ferma & Invia`,maxDuration:`Arresto automatico dopo {{minutes}} min`,stoppingLogs:`Raccolta log & invio...`,submitting:`Invio segnalazione bug...`,submittingStepConnection:`Controlli di connettività delle stampanti in corso`,submittingStepVirtualPrinters:`Controlli di configurazione delle stampanti virtuali in corso`,submittingStepLogScan:`Analisi dei log recenti per problemi noti`,submittingStepSubmit:`Invio del report a GitHub`,submitSuccess:`Segnalazione bug inviata con successo!`,submitFailed:`Impossibile inviare la segnalazione bug`,diagnosticChecking:`Verifica delle connessioni delle stampanti...`,diagnosticHealthy:`Verifica della connessione superata — nessun problema rilevato sulle tue stampanti.`,diagnosticSummary:`{{problems}} stampanti su {{total}} hanno problemi di connessione`,diagnosticIntro:`Una o più stampanti hanno un problema di connessione che potrebbe essere la causa del tuo problema. Espandi una stampante qui sotto per vedere la soluzione — risolverla potrebbe sistemare il problema senza una segnalazione di bug. Puoi comunque inviare una segnalazione qui sotto.`,thankYou:`Grazie!`,submitted:`La tua segnalazione bug è stata inviata.`,viewIssue:`Vedi issue`,closeKeepsRecording:`Puoi chiudere questo pannello mentre riproduci il problema: la registrazione continua e riaprendolo tornerai qui.`,resumeRecording:`Segnalazione in registrazione — {{elapsed}}. Fai clic per completare.`,resumeReport:`Riprendi segnalazione`,unexpectedError:`Si è verificato un errore imprevisto`},failureDetection:{title:`Rilevamento guasti con IA`,description:`Monitora le stampe tramite un'API ML Obico auto-ospitata e agisce automaticamente sui guasti rilevati.`,mlUrl:`URL API ML Obico`,mlUrlHint:`URL base del tuo container Obico ml_api auto-ospitato (es. http://192.168.1.10:3333).`,mlToken:`Token API ML (facoltativo)`,mlTokenPlaceholder:`Lascia vuoto se il server funziona senza ML_API_TOKEN`,mlTokenHint:`Deve corrispondere alla variabile di ambiente ML_API_TOKEN del tuo container Obico ml_api. Lascia vuoto se il container funziona senza token.`,test:`Prova`,testSuccess:`API ML raggiungibile e funzionante.`,testSuccessTokenUnknown:`API ML raggiungibile e funzionante. Non è stato possibile verificare il token.`,testFailed:`Impossibile raggiungere l'API ML.`,sensitivity:`Sensibilità`,sensitivityLow:`Bassa (meno falsi positivi)`,sensitivityMedium:`Media (bilanciata)`,sensitivityHigh:`Alta (rilevamento precoce, più falsi positivi)`,sensitivityHint:`Regola le soglie di confidenza che attivano avvisi e guasti.`,action:`Azione al guasto rilevato`,actionNotify:`Solo notifica`,actionPause:`Metti in pausa`,actionPauseOff:`Pausa e stacca corrente`,pollInterval:`Intervallo di controllo (secondi)`,pollIntervalHint:`Frequenza di controllo di ogni stampante durante la stampa. Minimo 5s, massimo 120s.`,externalUrlMissing:`URL esterno non impostato.`,externalUrlHint:`L'API ML recupera l'istantanea della telecamera tramite URL. Imposta l'URL esterno nelle impostazioni generali in modo che il container API ML possa raggiungere Bambuddy.`,perPrinterTitle:`Stampanti monitorate`,perPrinterHint:`Scegli quali stampanti il servizio di rilevamento deve monitorare.`,monitorAll:`Monitora tutte le stampanti connesse`,statusTitle:`Stato`,serviceRunning:`Servizio in esecuzione`,thresholds:`Soglie bassa / alta`,activePrinters:`Stampe attive`,noActivePrints:`Nessuna stampa in corso.`,historyTitle:`Rilevamenti recenti`,noHistory:`Nessun rilevamento finora.`},makerworld:{title:`MakerWorld`,description:`Incolla un URL di un modello MakerWorld per importarlo e stamparlo direttamente da Bambuddy — senza passare dall'app Bambu Handy.`,pasteUrlHeader:`Importa da MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… o incolla qualsiasi link MakerWorld`,resolveButton:`Risolvi`,signInRequiredTitle:`Accesso Bambu Cloud richiesto per scaricare`,signInRequiredBody:`Puoi consultare i dettagli del modello in modo anonimo, ma MakerWorld richiede un account Bambu Cloud per scaricare i file 3MF.`,signInExpiredTitle:`Accesso a Bambu Cloud scaduto`,signInExpiredBody:`Hai ancora effettuato l'accesso a Bambuddy, ma Bambu Lab non accetta più il token salvato, quindi i download non riusciranno. Accedi di nuovo a Bambu Cloud.`,openCloudSettings:`Apri impostazioni Cloud`,untitledModel:`Modello senza titolo`,byCreator:`di {{name}}`,downloadsCount:`{{count}} download`,licensePrefix:`Licenza`,alreadyImported:`Già nella libreria`,openOnMakerworld:`Apri su MakerWorld`,alreadyInLibrary:`Questo modello è già nella tua libreria — lo trovi in Gestione file → MakerWorld`,importSuccess:`{{filename}} importato — salvato in Gestione file → MakerWorld`,platesHeader:`Piatti ({{count}})`,plateDefaultName:`Piatto {{n}}`,materialCount:`{{count}} filamenti`,amsRequired:`AMS richiesto`,slicedFor:`Sezionato per {{printer}}`,alsoCompatible:`Anche contrassegnato come compatibile: {{printers}}`,importToLibrary:`Salva`,sliceIn:`Salva e affetta in {{slicer}}`,disclaimer:`L'integrazione MakerWorld utilizza endpoint API documentati dalla community. Bambuddy non è affiliato né approvato da MakerWorld o Bambu Lab.`,lastImportSuccess:`Importato nella tua libreria`,lastImportAlreadyInLibrary:`Già nella tua libreria`,viewInLibrary:`Visualizza in Gestione file`,openInBambuStudio:`Apri in Bambu Studio`,openInOrcaSlicer:`Apri in OrcaSlicer`,importTo:`Importa in Gestione file`,recentImportsHeader:`Importazioni recenti`,phaseResolving:`Risoluzione`,phaseDownloading:`Download`,folderAuto:`MakerWorld (predefinita)`,importAll:`Importa tutto`,importAllProgress:`Importazione {{current}}/{{total}}`,openGallery:`Apri galleria immagini`,galleryPrev:`Immagine precedente`,galleryNext:`Immagine successiva`,deleteImport:`Rimuovi dalla libreria`,importDeleting:`Rimozione…`,importDeleted:`Rimosso dalla libreria`,confirmDelete:`Rimuovere {{filename}} dalla libreria? Il file locale verrà eliminato, ma il piatto può essere re-importato da MakerWorld.`,errors:{resolveFailed:`Impossibile risolvere questo URL MakerWorld.`,downloadFailed:`Download non riuscito. Riprova.`,deleteFailed:`Impossibile rimuovere il file dalla libreria.`}},gcodeViewer:{filamentSlot:`Filamento {{n}}`,loading:`Lettura del percorso…`,loadFailed:`Impossibile caricare il G-code di questo file.`,showTravel:`Spostamenti a vuoto`,topLayer:`Strato superiore`,bottomLayer:`Strato inferiore`,noSource:`Nessun file da visualizzare è stato indicato.`,view:{filament:`Filamento`,feature:`Elemento`,height:`Altezza`,width:`Larghezza`},feature:{wall:`Pareti`,sparseInfill:`Riempimento rado`,solidInfill:`Riempimento solido`,bridge:`Ponte / sbalzo`,support:`Supporto`,skirt:`Skirt / brim`,gapFill:`Riempimento vuoti`,ironing:`Stiratura`,primeTower:`Torre di spurgo`},back:`Indietro`,backToArchives:`Torna agli archivi di stampa`,backToFiles:`Torna al gestore file`,plates:`Piastre`,plateN:`Piastra {{n}}`},libraryTrash:{title:`Cestino`,headerButton:`Cestino`,headerTooltip:`Visualizza i file spostati nel cestino`,backToFiles:`Torna al gestore file`,subtitleAdmin:`I file eliminati restano qui per {{days}} giorni, poi vengono rimossi automaticamente. Questa vista mostra il cestino di tutti gli utenti.`,subtitleUser:`I file eliminati restano qui per {{days}} giorni, poi vengono rimossi automaticamente.`,loading:`Caricamento del cestino…`,loadError:`Impossibile caricare il cestino.`,empty:`Il cestino è vuoto.`,summary:`{{count}} file · {{size}}`,emptyTrash:`Svuota cestino`,restore:`Ripristina`,purgeNow:`Elimina ora`,autoPurgeIn:`Eliminazione automatica tra {{when}}`,days:`giorni`,retentionLabel:`Elimina automaticamente dopo`,selectAll:`Seleziona tutto`,selectOne:`Seleziona {{filename}}`,selectionCount:`{{count}} selezionati`,bulkRestore:`Ripristina selezionati`,bulkPurge:`Elimina selezionati`,col:{filename:`File`,folder:`Cartella`,size:`Dimensione`,deleted:`Spostato nel cestino`,autoPurge:`Eliminazione auto.`,owner:`Proprietario`,actions:`Azioni`},confirm:{purgeTitle:`Eliminare definitivamente?`,purgeBody:`{{filename}} verrà eliminato dal disco e non potrà essere ripristinato.`,emptyTitle:`Svuotare il cestino?`,emptyBody:`Tutti i {{count}} file verranno eliminati dal disco. Azione non annullabile.`,bulkPurgeTitle:`Eliminare definitivamente i file selezionati?`,bulkPurgeBody:`I {{count}} file selezionati verranno eliminati dal disco e non potranno essere ripristinati.`,cta:`Elimina definitivamente`},toast:{restored:`File ripristinato.`,restoreFailed:`Impossibile ripristinare il file.`,purged:`File eliminato definitivamente.`,purgeFailed:`Impossibile eliminare il file.`,emptied:`{{count}} file eliminati dal cestino.`,emptyFailed:`Impossibile svuotare il cestino.`,retentionSaved:`Eliminazione automatica impostata su {{days}} giorni.`,retentionFailed:`Impossibile salvare l'impostazione di conservazione.`,bulkRestored:`{{count}} file ripristinati.`,bulkPurged:`{{count}} file eliminati.`}},libraryPurge:{title:`Elimina file vecchi`,headerButton:`Elimina vecchi`,headerTooltip:`Sposta in blocco i file vecchi nel cestino`,description:`I file più vecchi della soglia verranno spostati nel cestino. Le cartelle esterne vengono ignorate. Puoi ripristinarli dal cestino prima dell'eliminazione automatica.`,ageLabel:`Sposta i file più vecchi di`,days:`giorni`,includeNeverPrinted:`Includi i file mai stampati`,effectsTitle:`Cosa succede quando fai clic su Pulisci`,effect1:`I file corrispondenti vengono spostati nel cestino — non sono ancora eliminati dal disco.`,effect2:`Puoi ripristinarli dal cestino in qualsiasi momento fino alla scadenza del periodo di conservazione.`,effect3:`Dopo il periodo di conservazione, lo spazzino del cestino li rimuove definitivamente.`,effect4:`I file in cartelle esterne (collegate) vengono saltati — Bambuddy non elimina mai dati che non possiede.`,previewLoading:`Verifica quanti file corrispondono…`,previewFailed:`Impossibile mostrare l'anteprima.`,previewSummary:`{{count}} file · {{size}} verrebbero spostati nel cestino`,andMore:`…e altri {{count}}`,warning:`I file vengono eliminati in modo soft — puoi ripristinarli dal cestino fino alla scadenza del periodo di conservazione.`,confirmCta:`Sposta {{count}} nel cestino`,purging:`Spostamento nel cestino…`,toast:{success:`{{count}} file spostati nel cestino.`,failed:`Impossibile eliminare i file.`}},libraryAutoPurge:{enableLabel:`Elimina automaticamente i file vecchi`,enableDescription:`Esegue l'eliminazione amministrativa una volta al giorno. I file finiscono prima nel cestino — non vengono eliminati immediatamente.`,ageLabel:`Elimina automaticamente i file più vecchi di`,ageDescription:`Minimo 7 giorni, massimo 10 anni. Usa la stessa regola di età del pulsante Elimina manuale.`,days:`giorni`,includeNeverPrinted:`Includi i file mai stampati`,saveFailed:`Impossibile salvare le impostazioni di eliminazione automatica.`},archivePurge:{headerButton:`Elimina vecchi`,headerTooltip:`Eliminazione massiva vecchi archivi`,title:`Elimina vecchi archivi`,description:`Cancella la vecchia cronologia di stampa. Ogni archivio invecchia in base alla sua ultima stampa completata — ristampare azzera l'età, quindi il lavoro attivo non viene mai eliminato.`,ageLabel:`Elimina archivi non stampati negli ultimi`,days:`giorni`,effectsTitle:`Cosa succede quando fai clic su Pulisci`,effect1:`Ogni archivio corrispondente viene nascosto dagli elenchi e i suoi file vengono rimossi dal disco (3MF, miniatura, timelapse, 3MF sorgente, F3D, foto).`,effect2:`La riga dell'archivio rimane nel database, così le Quick Stats conservano il contributo di filamento, tempo, costo ed energia — come il comportamento predefinito dell'eliminazione singola.`,effect3:`Spunta «Rimuovi anche dalle statistiche» qui sotto per eliminare anche il contributo dalle Quick Stats (equivalente all'opzione dell'eliminazione singola). Questo percorso è irreversibile.`,effect4:`Ristampare un archivio azzera il suo conteggio dell'età, quindi gli archivi attivi sono al sicuro.`,purgeStatsLabel:`Rimuovi anche dalle statistiche`,purgeStatsHint:`Rimuove gli archivi selezionati dalle Quick Stats (filamento, tempo, costo, energia). Senza questa opzione le Quick Stats conservano ogni contributo e solo i file vengono cancellati.`,previewLoading:`Verifica del numero di archivi corrispondenti…`,previewFailed:`Impossibile visualizzare l'anteprima della pulizia.`,previewSummary:`{{count}} archivi · {{size}} verrebbero rimossi`,andMore:`…e altri {{count}}`,warning:`I file vengono rimossi dal disco e non possono essere ripristinati. Scarica o aggiungi ai preferiti tutto ciò che vuoi conservare prima di continuare.`,confirmCta:`Rimuovi {{count}} archivio(i)`,purging:`Rimozione…`,toast:{success:`{{count}} archivio(i) rimosso.`,failed:`Impossibile eliminare gli archivi.`}},archiveAutoPurge:{enableLabel:`Elimina auto. vecchi archivi`,enableDescription:`Una volta al giorno nasconde dagli elenchi gli archivi non stampati entro la soglia e rimuove i loro file dal disco. Ristampare azzera il timer.`,ageLabel:`Eliminazione auto. di archivi non stampati negli ultimi`,ageDescription:`Minimo 7 giorni, massimo 10 anni. Basato sull'ultima stampa completata — ristampare azzera l'età. Rimuove 3MF, miniatura, timelapse, 3MF sorgente, F3D e foto.`,days:`giorni`,purgeStatsLabel:`Rimuovi anche dalle statistiche`,purgeStatsDescription:`Quando abilitato, lo sweeper giornaliero elimina anche il contributo di ogni archivio purgato dalle Quick Stats (filamento, tempo, costo, energia). Disabilitato per impostazione predefinita — le Quick Stats mantengono il contributo e solo i file vengono cancellati.`,runNow:`Elimina archivi ora`,saveFailed:`Impossibile salvare le impostazioni di pulizia automatica.`},cameraTokens:{scope:{camera_stream:`Flusso della telecamera`,camwall:`Muro telecamere`,overlay:`Overlay di streaming`},title:`Token API telecamera`,navTitle:`Token API telecamera`,description:`Token di lunga durata per incorporare il flusso della telecamera in Home Assistant, Frigate, schermi in modalità chiosco o qualsiasi altro strumento che richieda un indirizzo stabile. L'ambito si sceglie alla creazione; un token può essere revocato in qualsiasi momento.`,loading:`Caricamento…`,confirmRevoke:{title:`Revocare questo token?`,body:`Qualsiasi dispositivo che usa "{{name}}" perderà l'accesso immediatamente. Non può essere annullato.`,cancel:`Annulla`,confirm:`Revoca`},create:{scopeLabel:`Ambito`,hintCameraStream:`Un token del flusso della telecamera può recuperare soltanto flussi e istantanee. Usalo per Home Assistant, Frigate o qualsiasi cosa incorpori una singola telecamera.`,hintCamWall:`Un token Muro telecamere apre /camwall su uno schermo senza login. Vede nome e stato di ogni stampante e i relativi flussi della telecamera. Non vede nomi di file, indirizzi o codici di accesso.`,hintOverlay:`Un token Overlay di streaming apre /overlay/{printerId} su uno schermo senza login, per OBS o qualsiasi diretta streaming. Vede il flusso della telecamera di una stampante e il suo stato di stampa in tempo reale, incluso il nome del file mostrato sullo schermo. Non vede indirizzi o codici di accesso.`,title:`Crea nuovo token`,nameLabel:`Nome token`,namePlaceholder:`es. Home Assistant`,daysLabel:`Giorni alla scadenza`,submit:`Crea`,hint:`Durata massima 365 giorni. Il valore del token viene mostrato solo alla creazione — copialo ora.`},created:{camWallUrlTitle:`Indirizzo del muro telecamere per questo schermo`,camWallUrlHint:`Apri questo indirizzo sullo schermo. Chiunque possa leggerlo può guardare il muro, quindi trattalo come una chiave: revoca il token per escludere lo schermo.`,overlayUrlTitle:`Indirizzo overlay per OBS`,overlayUrlHint:`Aggiungi questo come Sorgente browser in OBS. Cambia il numero in /overlay/1 con il numero della tua stampante (dall'indirizzo nella pagina Stampanti). Chiunque possa leggere l'indirizzo può guardare lo streaming, quindi trattalo come una chiave: revoca il token per interrompere l'accesso.`,title:`Token creato – copialo ora`,warning:`Questa è l'unica volta in cui questo token sarà visibile. Dopo la chiusura di questa finestra non potrai più visualizzarlo.`,copy:`Copia`,dismiss:`L'ho salvato`},list:{scope:`Ambito`,myTitle:`I miei token`,allTitle:`Tutti gli utenti (vista admin)`,empty:`Nessun token ancora.`,name:`Nome`,owner:`Proprietario`,prefix:`Prefisso`,created:`Creato`,expires:`Scade`,lastUsed:`Ultimo uso`,revoke:`Revoca`,expired:`Scaduto`},toast:{created:`Token creato`,createFailed:`Creazione token fallita`,revoked:`Token revocato`,revokeFailed:`Revoca token fallita`,loadFailed:`Caricamento token fallito`,copied:`Copiato negli appunti`,copyFailed:`Copia non riuscita – seleziona e copia manualmente`}},forecast:{title:`Previsione scorte`,noSpools:`Nessuna bobina attiva trovata. Aggiungi bobine al tuo inventario per vedere i dati di previsione.`,noUsageData:`Nessun dato di utilizzo disponibile — impossibile proiettare la timeline delle scorte.`,sku:`SKU`,material:`Materiale`,stock:`Scorte`,dailyRate:`Tasso`,daysLeft:`Giorni rimanenti`,emptyBy:`Esaurimento previsto`,reorderBy:`Riordinare entro`,actions:`Azioni`,trend:`Tendenza`,estimated:`Stim.`,noData:`Nessun dato`,timeframe:`Periodo`,chartTitle:`Stock proiettato — Top 5 materiali`,dashedLinesROP:`Linee tratteggiate = punti di riordino`,stockLevel:`Livello scorte`,reorderPoint:`Punto di riordino`,safetyMargin:`Margine di sicurezza`,trendLegend:`Tendenza (basata su storico, livello servizio 95%)`,estimatedLegend:`Stimata (delta peso)`,noDataLegend:`Nessun dato`,ropLabel:`PR`,ssLabel:`SS`,safetyStockLegend:`Scorta di sicurezza`,stockArrivalLegend:`Arrivo merce`,stockoutLegend:`Esaurimento scorte`,alertCount_one:`{{count}} avviso`,alertCount_other:`{{count}} avvisi`,order:`Ordina`,globalLeadTime:`Lead time globale`,globalLeadTimeHint:`Lead time globale minimo — usato nel calcolo del punto di riordino per tutti gli SKU`,save:`Salva`,cancel:`Annulla`,settingsSaved:`Impostazioni salvate`,failedSaveSettings:`Impossibile salvare le impostazioni`,globalLeadTimeSaved:`Lead time globale salvato`,skuLeadTimeOverride:`Override lead time SKU`,skuLeadTimeHint:`0 = usa lead time globale. Imposta >0 per sovrascrivere per questo SKU.`,safetyMarginLabel:`Margine di sicurezza`,effectiveLeadTime:`Lead time effettivo`,effectiveLeadTimeHint:`max(globale {{global}}g, SKU {{sku}}g)`,reorderPointHint:`d̄ × LT + safety margin — ordina quando le scorte raggiungono questo livello`,safetyMarginHint:`Scorta di sicurezza statistica (z=1,65 × σ × √LT) + buffer definito dall'utente`,safetyMarginHintDays:`Buffer aggiunto sulla scorta di sicurezza statistica.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}}g al tasso attuale.`,safetyMarginHintG:`Buffer di peso fisso aggiunto sulla scorta di sicurezza statistica.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}}g al tasso attuale.`,individualSpools:`Bobine singole`,labelWeight:`Etichetta`,spoolCount_one:`{{count}} bobina`,spoolCount_other:`{{count}} bobine`,stockBreakRisk:`Rischio di rottura scorte`,stockBreakBefore:`Rottura scorte prima del rifornimento`,stockBreakDetail:`{{days}}g rimanenti, lead time {{lt}}g.`,reorderNow:`Riordina ora`,reorderTriggerPassed:`La data di attivazione {{date}} è passata.`,shoppingList:`Lista della spesa`,shoppingListItems_one:`({{count}} articolo)`,shoppingListItems_other:`({{count}} articoli)`,shoppingListEmpty:`La lista della spesa è vuota. Clicca sull'icona del carrello in qualsiasi riga per aggiungere articoli.`,addToCart:`Aggiungi alla lista della spesa`,alertsSnoozed:`Silenzia avvisi per questo SKU`,alertsEnabled:`Riattiva avvisi per questo SKU`,addedToCart:`Aggiunto alla lista della spesa`,failedAddItem:`Impossibile aggiungere l'articolo`,listView:`Lista`,logisticsView:`Logistica`,qty:`Qtà`,weight:`Peso`,leadTime:`Lead time`,expectedRestock:`Rifornimento previsto`,status:`Stato`,note:`Nota`,pending:`In attesa`,purchased:`Acquistato`,received:`Ricevuto`,markPurchased:`Segna come acquistato`,markReceived:`Segna come ricevuto — aggiunge bobine all'inventario`,resetToPending:`Ripristina in attesa`,remove:`Rimuovi`,clearAll:`Cancella tutto`,downloadCsv:`CSV`,addToCartTitle:`Aggiungi alla lista della spesa`,byQuantity:`Per quantità`,byDuration:`Per durata`,numberOfSpools:`Numero di bobine`,lastHowManyDays:`Per quanti giorni deve durare?`,noUsageQty:`Nessun dato di utilizzo — quantità impostata a 1.`,noteOptional:`Nota (opzionale)`,notePlaceholder:`es. per il progetto X, urgente…`,addNSpools_one:`Aggiungi {{count}} bobina`,addNSpools_other:`Aggiungi {{count}} bobine`,onArrival:`All'arrivo`,stockBreakIn:`Rottura scorte tra {{days}}g.`,stockRunsOutBefore:`Le scorte si esauriscono prima dello scadere del lead time di {{lt}}g.`,atRate:`A {{rate}}g/giorno hai bisogno di`,moreSpools_one:`{{count}} bobina in più`,moreSpools_other:`{{count}} bobine in più`,bridgeGap:`per colmare il divario.`,noReadAccess:`Non hai il permesso di visualizzare le previsioni di inventario.`,noWriteAccess:`Non hai il permesso di modificare le impostazioni di previsione.`}}},nl:{translation:{nav:{printers:`Printers`,archives:`Archieven`,queue:`Afdrukwachtrij`,stats:`Statistieken`,profiles:`Profielen`,maintenance:`Onderhoud`,projects:`Projecten`,finance:`Financiën`,inventory:`Filament`,files:`Bestandsbeheer`,makerworld:`MakerWorld`,notifications:`Meldingen`,settings:`Instellingen`,system:`Systeem`,collapseSidebar:`Zijbalk inklappen`,expandSidebar:`Zijbalk uitklappen`,update:`Bijwerken`,updateAvailable:`Update beschikbaar: v{{version}}`,updateAvailableBanner:`Versie {{version}} is beschikbaar!`,viewUpdate:`Update bekijken`,viewOnGithub:`Bekijken op GitHub`,keyboardShortcuts:`Sneltoetsen (?)`,switchToLight:`Overschakelen naar lichte modus`,switchToDark:`Overschakelen naar donkere modus`,switchToSystem:`Overschakelen naar systeemmodus`,smartSwitches:`Slimme schakelaars`,logout:`Uitloggen`,installApp:`App installeren`,installAppSuccess:`Bambuddy is geïnstalleerd`},common:{plusNMore:`+{{count}} meer`,save:`Opslaan`,saving:`Opslaan...`,cancel:`Annuleren`,delete:`Verwijderen`,edit:`Bewerken`,add:`Toevoegen`,close:`Sluiten`,confirm:`Bevestigen`,loading:`Laden...`,error:`Fout`,errorLoading:`Fout bij laden van gegevens`,retry:`Opnieuw proberen`,success:`Geslaagd`,warning:`Waarschuwing`,enabled:`Ingeschakeld`,disabled:`Uitgeschakeld`,yes:`Ja`,no:`Nee`,on:`Aan`,off:`Uit`,all:`Alle`,none:`Geen`,search:`Zoeken`,filter:`Filteren`,sort:`Sorteren`,refresh:`Vernieuwen`,download:`Downloaden`,upload:`Uploaden`,uploading:`Uploaden...`,uploadFailed:`Upload mislukt`,actions:`Acties`,status:`Status`,name:`Naam`,user:`Gebruiker`,description:`Beschrijving`,date:`Datum`,time:`Tijd`,hours:`uren`,minutes:`minuten`,seconds:`seconden`,days:`dagen`,enable:`Inschakelen`,disable:`Uitschakelen`,permissions:`Machtigingen`,noPrinters:`Geen printers geconfigureerd`,noData:`Geen gegevens beschikbaar`,linkNotFound:`Link niet gevonden`,required:`Verplicht`,optional:`Optioneel`,dismiss:`Negeren`,apply:`Toepassen`,reset:`Resetten`,export:`Exporteren`,import:`Importeren`,clear:`Wissen`,selectAll:`Alles selecteren`,deselectAll:`Alles deselecteren`,noChange:`— Geen wijziging —`,unchanged:`Ongewijzigd`,unassigned:`Niet toegewezen`,unknown:`Onbekend`,unknownError:`Onbekende fout`,today:`Vandaag`,tomorrow:`Morgen`,asap:`Zo snel mogelijk`,overdue:`Te laat`,now:`Nu`,collapse:`Inklappen`,expand:`Uitklappen`,previous:`Vorige`,next:`Volgende`,viewArchive:`Archief bekijken`,viewInFileManager:`Bekijken in Bestandsbeheer`,addedBy:`Toegevoegd door {{username}}`,prints:`afdrukken`,more:`+{{count}} meer`,ascending:`Oplopend`,descending:`Aflopend`,back:`Terug`,copy:`Kopiëren`,copied:`Gekopieerd!`,printer:`Printer`,remove:`Verwijderen`,type:`Type`,print:`Afdrukken`,rename:`Naam wijzigen`,move:`Verplaatsen`,create:`Maken`,duplicate:`Dupliceren`,left:`Links`,right:`Rechts`,run:`Uitvoeren`,running:`Bezig met uitvoeren...`},finance:{allTypes:`Alle typen`,allCostCenters:`Alle kostenplaatsen`,title:`Financiën`,subtitle:`Portemonnee, persoonlijke transacties en kostenplaatsen`,noAccess:`Je hebt geen toestemming om financiële gegevens te bekijken.`,personalView:`Persoonlijke weergave`,adminView:`Beheerdersweergave`,createCostCenter:`Kostenplaats maken`,adjustWallet:`Portemonnee aanpassen`,addManualPrint:`Handmatige afdruk toevoegen`,manageMembers:`Leden van kostenplaats beheren`,currentBalance:`Persoonlijk saldo`,transactions:`Transacties`,personalTransactions:`Persoonlijke transacties`,costCenters:`Kostenplaatsen`,availableForPrinting:`Beschikbaar voor toewijzing aan afdruk`,costCenterName:`Naam`,budgetType:`Budgettype`,monthlyBudget:`Maandbudget`,totalBudget:`Totaalbudget`,noBudget:`Geen budget`,create:`Maken`,selectUser:`Gebruiker selecteren`,transactionType:`Type`,amount:`Bedrag`,noCostCenter:`Geen kostenplaats`,descriptionOptional:`Beschrijving (optioneel)`,applyAdjustment:`Aanpassing toepassen`,memberCanPrint:`Lid mag afdrukken`,addMember:`Lid toevoegen`,canPrint:`Mag afdrukken`,noMembers:`Geen leden toegewezen.`,editCostCenter:`Kostenplaats bewerken`,myCostCenters:`Mijn kostenplaatsen`,costCentersHint:`Controleer budgetlimieten en houd kosten onder controle`,noCostCenters:`Geen kostenplaatsen gevonden.`,owner:`Eigenaar`,balance:`Rekeningsaldo`,unlimited:`Onbeperkt`,budgetPolicyHint:`Rekeningsaldi houden kosten bij. Afdrukken wordt alleen beperkt door het budget van de geselecteerde kostenplaats; zonder budget is afdrukken onbeperkt.`,budget:`Budget`,shared:`Gedeeld`,cannotEditPrivateCostCenter:`Privé-kostenplaatsen kunnen hier niet worden bewerkt`,recentTransactions:`Recente transacties`,transactionsHint:`Filteren op type en kostenplaats`,first:`Eerste`,prev:`Vorige`,next:`Volgende`,last:`Laatste`,pageNumberOf:`Pagina {{page}} van {{total}}`,noTransactions:`Geen transacties beschikbaar.`,noTransactionsForFilter:`Geen transacties komen overeen met de geselecteerde filters.`,costCenter:`Kostenplaats`,balanceAfter:`Saldo na`,userWithId:`Gebruiker #{{id}}`,partial:`Gedeeltelijk`,editTransaction:`Transactie bewerken`,selectCostCenter:`Kostenplaats selecteren...`,costCenterRequired:`Selecteer een kostenplaats`,amountExample:`bijv. 4,00`,manualAdjustmentExample:`bijv. Handmatige aanpassing`,userRequired:`Selecteer een gebruiker`,amountInvalid:`Bedrag moet een geldig getal zijn`,createdCostCenter:`Kostenplaats gemaakt`,createCostCenterFailed:`Kostenplaats maken mislukt`,transactionDeleted:`Transactie verwijderd`,deleteTransactionFailed:`Transactie verwijderen mislukt`,transactionEdited:`Transactie bijgewerkt en grootboek opnieuw berekend`,editTransactionFailed:`Transactie bewerken mislukt`,manualPrintCreated:`Handmatige afdrukkosten toegevoegd en grootboek opnieuw berekend`,manualPrintFailed:`Handmatige afdruk maken mislukt`,memberSaved:`Lid opgeslagen`,memberSaveFailed:`Lid opslaan mislukt`,memberRemoved:`Lid verwijderd`,memberRemoveFailed:`Lid verwijderen mislukt`,costCenterNameRequired:`Naam van kostenplaats is verplicht`,costCenterUpdated:`Kostenplaats bijgewerkt`,costCenterUpdateFailed:`Kostenplaats bijwerken mislukt`,confirmDeleteCostCenter:`Kostenplaats "{{name}}" verwijderen?`,costCenterDeleted:`Kostenplaats verwijderd`,costCenterDeleteFailed:`Kostenplaats verwijderen mislukt`,deleteTransactionConfirm:`Deze transactie verwijderen? Saldi worden automatisch opnieuw berekend.`,deposit:`Storten`,withdraw:`Opnemen`,printCharge:`Afdrukkosten`,deleteTransaction:`Transactie verwijderen`},printers:{title:`Printers`,addPrinter:`Printer toevoegen`,addPreflight:{checking:`Verbinding controleren...`,warning:`Sommige verbindingscontroles zijn mislukt. Deze printer kan als offline worden weergegeven. Controleer de onderstaande controles, herstel wat je kunt of sla toch op.`,back:`Terug`,saveAnyway:`Toch opslaan`},editPrinter:`Printer bewerken`,deletePrinter:`Printer verwijderen`,printerName:`Printernaam`,serialNumber:`Serienummer`,ipAddress:`IP-adres / hostnaam`,accessCode:`Toegangscode`,model:`Model`,nozzleCount:`Aantal nozzles`,autoArchive:`Automatisch archiveren`,status:{available:`Beschikbaar`,idle:`Inactief`,printing:`Bezig met afdrukken`,paused:`Gepauzeerd`,offline:`Offline`,problem:`Probleem`,error:`Fout`,finished:`Voltooid`,unknown:`Onbekend`},temperatures:{nozzle:`Nozzle`,bed:`Printbed`,chamber:`Kamer`},heaterHistory:{title:`Verwarmingsgeschiedenis`,openLabel:`Verwarmingsgeschiedenis bekijken`,nozzle:`Nozzle`,nozzle2:`Nozzle 2`,bed:`Printbed`,chamber:`Kamer`,error:`Geschiedenis laden mislukt`,empty:`Nog geen gegevens vastgelegd`},progress:`{{percent}}% voltooid`,timeRemaining:`{{time}} resterend`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen?`,maintenanceOk:`Onderhoud OK`,maintenanceWarning:`{{count}} waarschuwing`,maintenanceWarning_plural:`{{count}} waarschuwingen`,maintenanceDue:`{{count}} te doen`,maintenanceDue_plural:`{{count}} te doen`,sort:{name:`Naam`,status:`Status`,model:`Model`,location:`Locatie`,eta:`ETA`,ascending:`Oplopend sorteren`,descending:`Aflopend sorteren`},cardSize:{small:`Kleine kaarten`,medium:`Middelgrote kaarten`,large:`Grote kaarten`,extraLarge:`Extra grote kaarten`},pageView:{openCamWallPage:`Camerawand als pagina openen`,cards:`Kaarten`,camWall:`Camerawand`},camWall:{page:{tokenRejected:`Deze camerawandlink is niet meer geldig. Het token is mogelijk verlopen of ingetrokken.`,loadFailed:`Printers konden niet worden geladen.`},noPrinters:`Geen printers om weer te geven`,noSignal:`Geen signaal`,live:`Live`,snap:`Momentopname`,off:`Uit`,summary:`{{live}} live, {{snap}} momentopnamen, {{total}} totaal`,layer:`Laag {{cur}}/{{total}}`,timeLeft:`{{time}} resterend`,statusMode:{off:`Uit`,compact:`Compact`,full:`Volledig`},settings:{title:`Instellingen camerawand`,maxLive:`Max. live streams`,maxLiveHint:`Hoeveel tegels tegelijk live streamen. De overige worden vernieuwd als momentopnamen.`,snapshotInterval:`Interval momentopnamen (seconden)`,snapshotIntervalHint:`Hoe vaak niet-live tegels een nieuwe momentopname ophalen.`,statusOverlay:`Statusoverlay`,statusOverlayHint:`Compact: alleen statusbadge. Volledig: + voortgang, laag, resterende tijd.`}},hideOffline:`Offline verbergen`,nextAvailable:`Volgende beschikbare`,powerOn:`Inschakelen`,offlinePrintersWithPlugs:`Offline printers met slimme stekkers`,noPrintersConfigured:`Nog geen printers geconfigureerd`,search:`Printers zoeken...`,noSearchResults:`Geen printers komen overeen met je zoekopdracht of filters`,filter:{allStatuses:`Alle statussen`,allLocations:`Alle locaties`},toolbar:{filters:`Filters`,view:`Weergave`,actions:`Acties`},readyToPrint:`Klaar om af te drukken`,external:`Extern`,extL:`Ext-L`,extR:`Ext-R`,deleteArchives:`Afdrukarchieven verwijderen`,noLabel:`Geen label`,printPreview:`Afdrukvoorbeeld`,width:`Breedte`,height:`Hoogte`,noObjectsFound:`Geen objecten gevonden`,objectsLoadedOnPrintStart:`Objecten worden geladen wanneer een afdruk start`,willBeSkipped:`Wordt overgeslagen`,name:`Naam`,serialCannotBeChanged:`Serienummer kan niet worden gewijzigd`,locationHelp:`Gebruikt om printers te groeperen en wachtrijtaken te filteren`,wifiSignal:{veryWeak:`Zeer zwak`,weak:`Zwak`,fair:`Redelijk`,good:`Goed`,excellent:`Uitstekend`},maintenanceUpToDate:`Al het onderhoud is bijgewerkt - Klik om te bekijken`,maintenance:{title:`In onderhoud`,subtitle:`Deze printer is gepauzeerd — niet verbonden, niet beschikbaar voor de wachtrij en verzendt geen meldingen.`,pillLabel:`Onderhoud`,exitButton:`Onderhoud afsluiten`,menuEnter:`Onderhoudsmodus inschakelen`,menuExit:`Onderhoudsmodus afsluiten`,toastEntered:`{{name}} staat nu in onderhoudsmodus`,toastExited:`{{name}} is weer online`,confirmMidPrintTitle:`Onderhoudsmodus inschakelen tijdens afdrukken?`,confirmMidPrintMessage:`{{name}} is momenteel aan het afdrukken. Als je de onderhoudsmodus inschakelt, wordt MQTT verbroken en stoppen voortgangsregistratie en voltooiingsmeldingen voor deze taak. Doorgaan?`,editFieldLabel:`Onderhoudsmodus`,editFieldHelp:`Als dit is ingeschakeld, wordt deze printer gepauzeerd voor MQTT, wachtrijverwerking en meldingen — handig voor reparatie, parallelle Bambuddy-installaties of tijdelijke buitengebruikstelling.`},chamberLightOn:`Kamerverlichting inschakelen`,chamberLightOff:`Kamerverlichting uitschakelen`,files:`Bestanden`,browseFiles:`Printerbestanden bekijken`,autoOffAfterPrint:`Automatisch uitschakelen na afdruk`,autoOffExecuted:`Automatisch uitschakelen is uitgevoerd - schakel de printer in om te resetten`,hmsErrors:`HMS-fouten`,viewHmsErrors:`{{count}} HMS-fout(en) bekijken`,resume:`Hervatten`,pause:`Pauzeren`,stop:`Stoppen`,camera:`Camera`,skipObject:`Object overslaan`,reconnect:`Opnieuw verbinden`,forceRefresh:`Geforceerd vernieuwen`,forceRefreshSuccess:`Vernieuwing aangevraagd`,mqttDebug:`MQTT-debug`,printerInformation:`Printerinformatie`,copyToClipboard:`Kopiëren`,copied:`Gekopieerd!`,state:`Status`,wifiSignalLabel:`Wifi-signaal`,developerMode:`Ontwikkelaarsmodus`,enabled:`Ingeschakeld`,disabled:`Uitgeschakeld`,addedOn:`Toegevoegd`,sdCard:`SD-kaart`,inserted:`Geplaatst`,notInserted:`Niet geplaatst`,totalPrintHours:`Afdrukuren`,activeNozzle:`Actief: {{nozzle}}-nozzle`,amsSwitchInletTooltip:`Filament Track Switch IN-{{inlet}} ({{side}}) — voedt beide nozzles`,nozzleRack:`Nozzlerek`,nozzleDocked:`Gedockt`,nozzleMounted:`Gemonteerd`,nozzleActive:`Actief`,nozzleIdle:`Inactief`,nozzleDiameter:`Diameter`,nozzleType:`Type`,nozzleStatus:`Status`,nozzleFilament:`Filament`,nozzleWear:`Slijtage`,nozzleMaxTemp:`Max. temp.`,nozzleSerial:`Serienummer`,nozzleHardenedSteel:`Gehard staal`,nozzleStainlessSteel:`Roestvast staal`,nozzleTungstenCarbide:`Wolfraamcarbide`,nozzleFlow:`Flow`,nozzleHighFlow:`Hoge flow`,nozzleStandardFlow:`Standaard`,firmwareUpdate:`Firmware-update`,firmwareInstructions:`Ga op het touchscreen van de printer naar`,firmwareNav:`Navigeer naar`,settings:`Instellingen`,firmware:`Firmware`,discoverPrinters:`Printers ontdekken`,searching:`Zoeken...`,manualEntry:`Handmatige invoer`,addFromCloud:`Toevoegen vanuit cloud`,toast:{printerDeleted:`Printer verwijderd`,missingSpoolAssignment:`Afdruk gestart op {{printer}}. Spoeltoewijzing ontbreekt voor: {{slots}}`,killSwitchTriggered:`De facturerings-noodstop heeft een ongeautoriseerde afdruk op {{printer}} gestopt: {{filename}}`,billingChargeFailed:`Facturering mislukt voor {{filename}} op {{printer}}. De budgetreservering is behouden; controleer de serverlogboeken.`,assignmentVerified:`Filament geladen in sleuf {{slot}} ({{printer}})`,assignmentVerifiedNoKprofile:`Sleuf {{slot}} op {{printer}} is geladen, maar de flowkalibratie (K-profiel) is niet toegepast`,assignmentNotConfirmed:`De toewijzing voor sleuf {{slot}} op {{printer}} kon niet worden bevestigd — controleer de AMS-sleuf`,printerAdded:`Printer toegevoegd`,printerUpdated:`Printer bijgewerkt`,failedToDelete:`Printer verwijderen mislukt`,failedToAdd:`Printer toevoegen mislukt`,connectionFailedNotAdded:`Kan geen verbinding maken met de printer. Controleer het IP-adres, serienummer en de toegangscode en bevestig dat LAN-only-modus is ingeschakeld. De printer is niet toegevoegd.`,failedToUpdate:`Printer bijwerken mislukt`,commandSent:`Opdracht verzonden`,failedToSendCommand:`Opdracht verzenden mislukt`,turnedOn:`{{name}} ingeschakeld`,failedToPowerOn:`Inschakelen van {{name}} mislukt`,scriptTriggered:`Script geactiveerd`,printStopped:`Afdruk gestopt`,printPaused:`Afdruk gepauzeerd`,printResumed:`Afdruk hervat`,referenceDeleted:`Referentie verwijderd`,detectionAreaSaved:`Detectiegebied opgeslagen`,failedToRunScript:`Script uitvoeren mislukt`,failedToStopPrint:`Afdruk stoppen mislukt`,failedToPausePrint:`Afdruk pauzeren mislukt`,failedToResumePrint:`Afdruk hervatten mislukt`,failedToControlChamberLight:`Kamerverlichting bedienen mislukt`,failedToSetSpeed:`Afdruksnelheid instellen mislukt`,failedToUpdateSetting:`Instelling bijwerken mislukt`,failedToSkipObjects:`Objecten overslaan mislukt`,failedToRereadRfid:`RFID opnieuw uitlezen mislukt`,failedToCheckPlate:`Plaat controleren mislukt`,failedToUpdateLabel:`Label bijwerken mislukt`,failedToDeleteReference:`Referentie verwijderen mislukt`,failedToSaveDetectionArea:`Detectiegebied opslaan mislukt`,plateCheckEnabled:`Plaatcontrole ingeschakeld`,plateCheckDisabled:`Plaatcontrole uitgeschakeld`,calibrationSaved:`Kalibratie opgeslagen!`,calibrationFailed:`Kalibratie mislukt`,rfidRereadInitiated:`Opnieuw uitlezen van RFID gestart`,loadInitiated:`Filament laden…`,unloadInitiated:`Filament ontladen…`,failedToLoad:`Filament laden mislukt`,failedToUnload:`Filament ontladen mislukt`},connection:{connected:`Verbonden`,offline:`Offline`},plateStatus:{markCleared:`Plaat als leeg markeren`,cleared:`Plaat leeg`,notCleared:`Plaat niet leeg`,inUse:`Plaat in gebruik`},queue:{inQueue:`{{count}} afdruk in wachtrij`,inQueue_plural:`{{count}} afdrukken in wachtrij`},controls:`Bediening`,rfid:{reread:`RFID opnieuw uitlezen`},ams:{load:`Laden`,unload:`Ontladen`,feedTitle:`{{slot}} naar welke nozzle laden?`,feedPrompt:`De Filament Track Switch kan dit slot naar beide hotends leiden. Kies welke je wilt voeden.`,feedLeft:`Linker nozzle`,feedRight:`Rechter nozzle`,feedAlreadyLoaded:`Al geladen`,switchNotReady:`De Filament Track Switch is nog niet ingesteld. Wijs elke AMS toe aan een inlaat op de printer en probeer het opnieuw.`},bedJog:{limitWarning:`Bewegingslimieten worden niet afgedwongen tijdens handmatige verplaatsingen — door een bug in Bambu-firmware worden software-eindstops bij externe opdrachten genegeerd. Verplaats voorzichtig om een botsing te voorkomen.`,title:`Jog-bediening`,bed:`Printbed`,step:`Stap (mm)`,up:`Plaat omhoog bewegen`,down:`Plaat omlaag bewegen`,disabledWhilePrinting:`Uitgeschakeld tijdens afdrukken`,notHomedTitle:`Printer is niet gehomed`,notHomedMessage:`De printer is sinds de laatste afdruk niet gehomed. Voer eerst auto-home uit voor een veilige positionering (parkeert de toolhead en homet daarna X, Y en Z), of verplaats toch — soft endstops worden omzeild.`,homeZ:`Auto Home`,moveAnyway:`Toch verplaatsen`,homingStarted:`Printer automatisch homen…`},permission:{noAdd:`Je hebt geen toestemming om printers toe te voegen`,noEdit:`Je hebt geen toestemming om printers te bewerken`,noDelete:`Je hebt geen toestemming om printers te verwijderen`,noControl:`Je hebt geen toestemming om printers te bedienen`,noFiles:`Je hebt geen toestemming om printerbestanden te openen`,noAmsRfid:`Je hebt geen toestemming om AMS-RFID opnieuw uit te lezen`,noSmartPlugControl:`Je hebt geen toestemming om slimme stekkers te bedienen`,noCamera:`Je hebt geen toestemming om camera's te bekijken`},modal:{addTitle:`Printer toevoegen`,editTitle:`Printer bewerken`,myPrinter:`Mijn printer`,selectModel:`Model selecteren...`,locationGroup:`Locatie / groep (optioneel)`,locationPlaceholder:`bijv. Werkplaats, kantoor, kelder`,autoArchiveLabel:`Voltooide afdrukken automatisch archiveren`,fromPrinterSettings:`Uit printerinstellingen`,modelOptional:`Model (optioneel)`,saveChanges:`Wijzigingen opslaan`},skipObjects:{tooltip:`Objecten overslaan`,onlyWhilePrinting:`Objecten overslaan (alleen tijdens afdrukken)`,requiresMultiple:`Objecten overslaan (vereist 2+ objecten)`,title:`Objecten overslaan`,matchIdsInfo:`Stem ID's af met het printerdisplay`,printerShowsIds:`Het printerscherm toont object-ID's op de bouwplaat`,skipSelected:`Geselecteerde overslaan`,skipping:`Overslaan...`,noObjectsSelected:`Geen objecten geselecteerd`,selectObjectsToSkip:`Selecteer objecten die je in de huidige afdruk wilt overslaan`,skipped:`overgeslagen`,objectsSkipped:`Objecten overgeslagen`,activeCount:`{{count}} actief`,waitForLayer:`Wacht tot laag 2+ om objecten over te slaan (momenteel laag {{layer}})`,skip:`Overslaan`,confirmTitle:`Object overslaan?`,confirmMessage:`Weet je zeker dat je "{{name}}" wilt overslaan? Dit kan niet ongedaan worden gemaakt.`,confirmAllMessage:`Alle resterende objecten zijn geselecteerd. Hierdoor wordt de afdruktaak gestopt. Doorgaan?`,confirmMultipleMessage:`{{count}} geselecteerde objecten overslaan? Dit kan niet ongedaan worden gemaakt.`},confirm:{deleteTitle:`Printer verwijderen`,deleteMessage:`Weet je zeker dat je "{{name}}" wilt verwijderen? Hiermee worden alle verbindingsinstellingen verwijderd.`,deleteArchivesNote:`De volledige afdrukgeschiedenis van deze printer wordt permanent verwijderd.`,keepArchivesNote:`De afdrukgeschiedenis blijft bewaard, maar is niet langer aan deze printer gekoppeld.`,stopTitle:`Afdruk stoppen`,stopMessage:`Weet je zeker dat je de huidige afdruk op "{{name}}" wilt stoppen? Hiermee wordt de afdruktaak geannuleerd.`,stopButton:`Afdruk stoppen`,pauseTitle:`Afdruk pauzeren`,pauseMessage:`Weet je zeker dat je de huidige afdruk op "{{name}}" wilt pauzeren?`,pauseButton:`Afdruk pauzeren`,resumeTitle:`Afdruk hervatten`,resumeMessage:`Weet je zeker dat je de afdruk op "{{name}}" wilt hervatten?`,resumeButton:`Afdruk hervatten`,powerOnTitle:`Printer inschakelen`,powerOnMessage:`Weet je zeker dat je de stroom voor "{{name}}" wilt INSCHAKELEN?`,powerOnButton:`Inschakelen`,powerOffTitle:`Printer uitschakelen`,powerOffMessage:`Weet je zeker dat je de stroom voor "{{name}}" wilt UITSCHAKELEN?`,powerOffWarning:`WAARSCHUWING: "{{name}}" is momenteel aan het afdrukken! Weet je zeker dat je de stroom wilt UITSCHAKELEN? Dit onderbreekt de afdruk en kan de printer beschadigen.`,powerOffButton:`Uitschakelen`,haToggleTitle:`"{{name}}" omschakelen`,haToggleMessage:`Home Assistant-entiteit {{entity}} omschakelen? Hierdoor kan de stroom worden uitgeschakeld als deze momenteel aan staat.`,haToggleWarning:`WAARSCHUWING: "{{name}}" is momenteel aan het afdrukken! Het omschakelen van {{entity}} kan de stroom onderbreken en de afdruk stoppen. Doorgaan?`,haToggleButton:`Omschakelen`},bulk:{select:`Selecteren`,selectAll:`Alles selecteren`,selectByLocation:`Selecteren op locatie`,selected:`{{count}} geselecteerd`,actions:{stop:`Stoppen`,pause:`Pauzeren`,resume:`Hervatten`,clearPlate:`Printbed vrijgeven`,clearHMS:`Meldingen wissen`},confirm:{stopTitle:`{{count}} afdrukken stoppen`,stopMessage:`Hiermee worden actieve afdrukken op {{count}} printer(s) geannuleerd. Deze actie kan niet ongedaan worden gemaakt.`,stopButton:`Alles stoppen`,pauseTitle:`{{count}} afdrukken pauzeren`,pauseMessage:`Hiermee worden actieve afdrukken op {{count}} printer(s) gepauzeerd.`,pauseButton:`Alles pauzeren`,clearPlateTitle:`{{count}} printbedden vrijgeven`,clearPlateMessage:`Hiermee wordt het printbed op {{count}} printer(s) vrijgegeven en kunnen wachtrijtaken worden gestart.`,clearPlateButton:`Alles wissen`},success:`{{action}} voltooid op {{count}} printer(s)`,partial:`{{succeeded}} geslaagd, {{failed}} mislukt`,noneApplicable:`Geen van de geselecteerde printers heeft de juiste status voor deze actie`,selectByState:`Selecteren op status`},discovery:{title:`Printers ontdekken`,searching:`Zoeken...`,scanning:`Scannen...`,scanProgress:`Scannen... {{scanned}}/{{total}}`,foundPrinters:`{{count}} printer(s) gevonden`,noPrintersFound:`Geen printers gevonden`,noPrintersFoundSubnet:`Geen printers gevonden in het opgegeven subnet.`,noPrintersFoundNetwork:`Geen printers gevonden op het netwerk.`,allConfigured:`Alle ontdekte printers zijn al geconfigureerd.`,alreadyAdded:`Al toegevoegd`,select:`Selecteren`,manualEntry:`Handmatige invoer`,addFromCloud:`Toevoegen vanuit cloud`,subnetToScan:`Te scannen subnet`,dockerNote:`Docker gedetecteerd. Voer het subnet van je printer in CIDR-notatie in. Vereist network_mode: host in docker-compose.yml.`,scanSubnet:`Subnet scannen op printers`,discoverNetwork:`Printers op netwerk ontdekken`,scanningSubnet:`Subnet scannen op Bambu-printers...`,scanningNetwork:`Netwerk scannen...`,serialRequired:`Serienummer verplicht`,unknown:`Onbekend`,failedToStart:`Ontdekking starten mislukt`,customSubnetOption:`Aangepast subnet...`,customSubnetLabel:`Aangepast subnet (CIDR)`,customSubnetNote:`Gebruik een aangepast subnet als je printer zich op een ander netwerk bevindt dan deze server. De FTP-poort (990) en MQTT-poort (8883) moeten bereikbaar zijn over de routeringsgrens.`},drying:{start:`Drogen starten`,stop:`Drogen stoppen`,temperature:`Temperatuur`,duration:`Duur`,hours:`uren`,timeRemaining:`{{time}} resterend`,active:`Drogen`,targetSummary:`{{filament}} @ {{temp}}°C`,notSupported:`Drogen niet ondersteund`,powerRequired:`Sluit de AMS-voedingsadapter aan om drogen in te schakelen`,cannotDryNow:`AMS kan op dit moment niet beginnen met drogen`,startingDrying:`Drogen starten...`,toastCommandSent:`Droogopdracht verzonden`,toastStopped:`Drogen gestopt`,toastNotStarted:`De printer heeft de opdracht geaccepteerd, maar de AMS is niet begonnen met drogen. Controleer of de AMS-voedingsadapter is aangesloten en de printer inactief is.`,screenOnly:`AMS-drogen op deze printer kan alleen via het eigen scherm van de printer worden bediend (Bambu-beperking)`,stoppingDrying:`Drogen stoppen...`,rotateTray:`Spoel draaien tijdens drogen`,rotateUnavailableReason:`Niet beschikbaar — een sleuf in deze AMS is naar de toolhead geladen. De spoel wordt door de toevoerbuis geblokkeerd en kan niet draaien. Trek eerst het filament terug.`,startMode:`Starttijd`,modeNow:`Nu`,modeDelay:`Na vertraging`,modeAtTime:`Op tijdstip`,schedule:`Plannen`,scheduledFor:`Drogen gepland voor {{time}}`,scheduledAsap:`Drogen gepland (wachten op printer)`,cancelScheduled:`Gepland drogen annuleren`,scheduleFailed:`Drogen plannen mislukt`,retractFilament:`Trek het filament bij de AMS-uitgang terug om het drogen te starten`,waitingAmsNotFound:`Wachten tot de AMS wordt gedetecteerd`,waitingOffline:`Wachten tot de printer online komt`,waitingPrinterBusy:`Wachten tot de printer vrij is`,waitingAlreadyDrying:`Wachten tot de huidige droogcyclus is voltooid`,waitingInterrupted:`Onderbroken, wordt opnieuw gestart zodra de printer vrij is`,scheduleFailedReason:`Gepland drogen mislukt: {{reason}}`,scheduleFailedUnknown:`Onbekende fout`,dismissFailed:`Negeren`},amsBackup:{titleOn:`AMS Filament Backup staat AAN. Klik om uit te schakelen.`,titleOff:`AMS Filament Backup staat UIT. Klik om in te schakelen.`,titleUnknown:`Status van AMS Filament Backup is niet beschikbaar op deze printer.`,toastEnabled:`AMS Filament Backup ingeschakeld`,toastDisabled:`AMS Filament Backup uitgeschakeld`,modalTitle:`AMS Filament Backup`,modalHelp:`Wanneer de actieve sleuf leeg raakt, doorloopt de printer in deze volgorde alle overeenkomende sleuven met hetzelfde preset en dezelfde kleur.`,modalNoSlots:`Geen filament geladen.`,modalNoPairs:`Geen back-upparen — geen twee sleuven gebruiken hetzelfde filamentprofiel en dezelfde kleur.`,extruderRightShort:`R`,extruderLeftShort:`L`,stateOn:`Ingeschakeld`,stateOff:`Uitgeschakeld`,stateUnknown:`Niet ondersteund op deze printer`},activeJobSlot:{title:`Deze sleuf is filament {{n}} in de actieve afdruk`,ariaLabel:`Actieve afdruksleuf {{n}}`},expectedSlot:{title:`De printer wacht op filament in deze sleuf`,ariaLabel:`Verwachte filamentsleuf {{n}}`,label:`{{ams}} · Sleuf {{slot}}`,external:`Externe spoel`},filaments:`Filamenten`,externalSpool:{hide:`Externe spoel verbergen`,show:`Externe spoel weergeven`},openCameraOverlay:`Camera-overlay openen`,openCameraWindow:`Camera in nieuw venster openen`,firmwareUpdateAvailable:`Firmware-update beschikbaar: {{current}} → {{latest}}`,firmwareUpToDate:`Firmware {{version}} — up-to-date`,firmwareUpdateButton:`Bijwerken`,plateDetection:{noPermission:`Je hebt geen toestemming om printers bij te werken`,enabledClick:`Plaatcontrole ingeschakeld - Klik om uit te schakelen`,disabledClick:`Plaatcontrole uitgeschakeld - Klik om in te schakelen`,manageCalibration:`Kalibratie voor plaatdetectie beheren`,calibrationRequired:`Kalibratie vereist`,calibrationInstructions:`Zorg dat de bouwplaat volledig leeg is en klik daarna op Kalibreren.`,calibrationDescription:`Bij kalibratie wordt een referentiebeeld van de lege plaat vastgelegd. Toekomstige controles vergelijken hiermee om objecten te detecteren.`,calibrationTip:`Tip: Je kunt maximaal 5 kalibraties voor verschillende platen opslaan. Het systeem gebruikt bij een controle automatisch de beste overeenkomst.`,plateEmpty:`Plaat lijkt leeg`,objectsDetected:`Objecten op plaat gedetecteerd`,confidence:`Betrouwbaarheid`,difference:`Verschil`,analysisPreview:`Analysevoorbeeld:`,analysisLegend:`Groen kader = detectiegebied, rode overlay = verschillen ten opzichte van kalibratie`,savedReferences:`Opgeslagen referenties ({{count}}/{{max}})`,deleteReference:`Referentie verwijderen`,labelPlaceholder:`Label...`,clickToEdit:`{{label}} - Klik om te bewerken`,clickToAddLabel:`Klik om label toe te voegen`},speed:{title:`Afdruksnelheid`,silent:`Stil (50%)`,standard:`Standaard (100%)`,sport:`Sport (124%)`,ludicrous:`Ludicrous (166%)`},airduct:{title:`Luchtkanaalmodus`,cooling:`Koelen`,heating:`Verwarmen`},noSdCard:`Geen SD`,door:{open:`Open`,closed:`Gesloten`},fans:{partCooling:`Onderdeelkoelventilator`,auxiliary:`Hulpventilator`,leftAuxiliary:`Linker hulpventilator`,exhaust:`Afvoer`,chamber:`Kamerventilator`},clickToViewHmsErrors:`Klik om HMS-fouten te bekijken`,aiDetection:{safe:`Veilig`,warning:`Waarschuwing`,failure:`Mislukking`,idle:`Inactief`,error:`Controleert niet`,unknown:`Bezig met starten`,tooltipError:`AI-storingsdetectie controleert deze print niet: {{reason}} - klik voor details`,tooltipUnknown:`AI-storingsdetectie: wachten op het eerste resultaat - klik voor details`,errorHint:`Deze print wordt niet gecontroleerd. De detectie hervat automatisch zodra het probleem hieronder is opgelost.`,tooltip:`AI-foutdetectie: {{status}} (score {{score}}) - klik voor details`,tooltipIdle:`AI-foutdetectie ingeschakeld - bewaking start bij de volgende afdruk - klik voor details`,modalTitle:`AI-foutdetectie - {{name}}`,currentStatus:`Status`,score:`Score`,framesAnalyzed:`Geanalyseerde frames`,idleHint:`Er wordt momenteel geen afdruk bewaakt. De bewaking start automatisch bij de volgende afdruk.`,lastError:`Laatste fout`,openSettings:`Instellingen openen`},estimatedCompletion:`Geschatte voltooiingstijd`,plateNumber:`Plaat {{number}}`,slotOptions:`Sleufopties`,amsPopup:{friendlyName:`AMS-naam`,friendlyNamePlaceholder:`bijv. AMS-naam`,serialNumber:`Serienummer`,firmwareVersion:`Firmware`,save:`Opslaan`,clear:`Wissen`,noEditPermission:`Je hebt geen toestemming om AMS-eenheden te hernoemen`},firmwareModal:{title:`Firmware-update`,titleUpToDate:`Firmware-informatie`,currentVersion:`Huidig:`,latestVersion:`Nieuwste:`,releaseNotes:`Releaseopmerkingen`,checkingPrereqs:`Vereisten controleren...`,sdCardReady:`SD-kaart gereed. Klik hieronder om firmware te uploaden.`,uploadedSuccess:`Firmware geüpload naar SD-kaart!`,applyInstructions:`Om de update op je printer toe te passen:`,step1:`Ga op het touchscreen van de printer naar Instellingen`,step2:`Navigeer naar Firmware`,step3:`Selecteer Update vanaf SD-kaart`,step4:`De update duurt 10-20 minuten`,done:`Klaar`,starting:`Starten...`,uploadFirmware:`Firmware uploaden`,uploadFailed:`Upload starten mislukt: {{error}}`,uploadedToast:`Firmware geüpload! Start de update vanaf het printerscherm.`,availableVersions:`Beschikbare versies`,usable:`Bruikbaar`,unavailable:`Niet beschikbaar`,installed:`Geïnstalleerd`,newerBadge:`nieuwer`,olderBadge:`ouder`,currentBadge:`huidig`},accessCodePlaceholder:`Laat leeg om huidige waarde te behouden`,roi:{title:`Detectiegebied (ROI)`,xStart:`X-start`,yStart:`Y-start`,width:`Breedte`,height:`Hoogte`,instruction:`Pas het detectiegebied aan zodat het op de bouwplaat is gericht. Het groene kader in het voorbeeld toont het huidige gebied.`},developerModeWarning:`Developer LAN-modus is niet ingeschakeld op: {{names}}. Sommige functies werken mogelijk niet.`,howToEnable:`Inschakelen`,incompatibleFile:`Dit bestand is gesliced voor {{slicedFor}}, maar deze printer is een {{printerModel}}`,dropNotPrintable:`Alleen .gcode- en .gcode.3mf-bestanden kunnen worden afgedrukt`,dropToPrint:`Sleep hierheen om af te drukken`,dropToQueue:`Sleep hierheen voor wachtrij`},archives:{media:{title:`Afdrukvideo's`,download:`Afdrukvideo's downloaden`,searching:`Printer controleren op video's…`,searchFailed:`Printer kon niet op video's worden gecontroleerd.`,none:`Geen timelapse- of IP-camerafragmenten gevonden voor deze afdruk.`,attachedTimelapse:`Gekoppelde timelapse`,printerFiles:`Bestanden die nog op de printer staan`,downloadSelected:`Geselecteerde downloaden`,printerMissing:`Printer is niet meer geconfigureerd`,timelapseUnavailable:`De timelapse-map kon niet worden gelezen`,ipcamUnavailable:`De IP-camera-map kon niet worden gelezen`},title:`Afdrukarchieven`,no3mfBanner:{title:`Sommige recente afdrukken konden niet met miniaturen worden gearchiveerd`,body:`De slicer heeft het .gcode.3mf-bestand niet op de SD-kaart van de printer achtergelaten, waardoor Bambuddy de miniatuur of slicermetadata niet kon ophalen. Dit komt meestal doordat "Verzonden bestanden opslaan op externe opslag" is uitgeschakeld in de slicer (tabblad Apparaat in Bambu Studio / OrcaSlicer).`,docsLink:`Zie installatiestap 4`,dismissLabel:`Deze melding sluiten`,docsLinkInternalStorage:`Waarom dit gebeurt`,titleInternalStorage:`Sommige recente afdrukken bleven op de interne opslag van de printer staan`,bodyInternalStorage:`Bambu Studio plaatste het geslicede bestand op de interne opslag van de printer in plaats van op de kaart, waardoor Bambuddy via FTP niets kon uitlezen. Op H2-serie en P2S doet de knop Afdrukken dit altijd — alleen Verzenden biedt een keuze, en ook daar is Cache standaard. Die afdrukken worden nog steeds gearchiveerd met naam en timing, maar zonder miniatuur of slicermetadata. Voor volledige archieven start je de afdruk vanuit Bambuddy, slice je in OrcaSlicer, of gebruik je in Bambu Studio Verzenden met Extern geselecteerd en start je daarna de afdruk. Voor al deze opties is een kaart of USB-stick in de printer nodig.`,titleNoExternalStorage:`Sommige recente afdrukken konden niet worden gearchiveerd — geen opslag in de printer`,bodyNoExternalStorage:`De printer meldt dat er geen kaart of USB-stick in de sleuf zit, waardoor het geslicede bestand nergens kon worden opgeslagen en Bambuddy niets kon uitlezen. Plaats er een en de volgende afdruk wordt volledig gearchiveerd.`,titleInternalHistory:`Sommige recente prints zijn gestart vanaf een bestand dat al op de printer stond`,bodyInternalHistory:`Die prints liepen vanuit de eigen bibliotheek van de printer — opnieuw afdrukken via het scherm, starten vanuit Handy, of een bestand dat eerder is verstuurd en later is afgedrukt. Bambuddy leest printbestanden via FTP, dat alleen de kaart of stick aanbiedt, terwijl de printer die bibliotheek bewaart op een plek die FTP niet kan bereiken. Er was dus geen 3MF om te lezen. Geen enkele slicer-instelling verandert dit, omdat er voor deze prints niets is verstuurd. Ze worden nog steeds gearchiveerd met naam en tijden, en via Archief bewerken kun je het gebruikte filament handmatig invullen. Start de print vanuit Bambuddy of vanuit je slicer voor een volledig archief.`},searchPlaceholder:`Archieven zoeken...`,filterByPrinter:`Filteren op printer`,filterByStatus:`Filteren op status`,sortBy:`Sorteren op`,sortNewest:`Nieuwste eerst`,sortOldest:`Oudste eerst`,sortName:`Naam`,sortDuration:`Duur`,sortLargest:`Grootste eerst`,sortSmallest:`Kleinste eerst`,sortSize:`Grootte`,noArchives:`Geen archieven gevonden`,noArchivesSearch:`Geen archieven komen overeen met je zoekopdracht`,originalPrintNotVisible:`Originele afdruk niet zichtbaar - probeer filters te wissen`,noArchivesYet:`Nog geen archieven`,prints:`afdrukken`,pagination:{showing:`Weergegeven`,to:`tot`,of:`van`,show:`Tonen`,page:`Pagina`,all:`Alle`},loadingArchives:`Archieven laden...`,releaseToUpload:`Loslaten om te uploaden`,showAll:`Alles tonen`,showFavoritesOnly:`Alleen favorieten tonen`,gridView:`Rasterweergave`,listView:`Lijstweergave`,calendarView:`Kalenderweergave`,logView:`Afdruklogboek`,manageTags:`Tags beheren`,showFailedPrints:`Mislukte afdrukken tonen`,hideFailedPrints:`Mislukte afdrukken verbergen`,hideDuplicates:`Duplicaten verbergen`,viewOriginalPrint:`Klik om originele afdruk te bekijken (#{{id}})`,printTime:`Afdruktijd`,filamentUsed:`Filament gebruikt`,cost:`Kosten`,preview:`Voorbeeld`,deleteArchive:`Archief verwijderen`,deleteConfirm:`Weet je zeker dat je dit archief wilt verwijderen?`,favorite:`Favoriet`,unfavorite:`Uit favorieten verwijderen`,viewDetails:`Details bekijken`,status:{completed:`Voltooid`,failed:`Mislukt`,stopped:`Gestopt`},toast:{source3mfAttached:`Bron-3MF gekoppeld: {{filename}}`,failedUploadSource3mf:`Uploaden van bron-3MF mislukt`,source3mfRemoved:`Bron-3MF verwijderd`,failedRemoveSource3mf:`Verwijderen van bron-3MF mislukt`,f3dAttached:`F3D gekoppeld: {{filename}}`,failedUploadF3d:`Uploaden van F3D mislukt`,f3dRemoved:`F3D verwijderd`,failedRemoveF3d:`Verwijderen van F3D mislukt`,timelapseAttached:`Timelapse gekoppeld: {{filename}}`,timelapseAlreadyAttached:`Timelapse is al gekoppeld`,noMatchingTimelapse:`Geen overeenkomende timelapse gevonden`,failedScanTimelapse:`Scannen naar timelapse mislukt`,failedAttachTimelapse:`Timelapse koppelen mislukt`,timelapseRemoved:`Timelapse verwijderd`,failedRemoveTimelapse:`Timelapse verwijderen mislukt`,timelapseUploaded:`Timelapse geüpload: {{filename}}`,failedUploadTimelapse:`Timelapse uploaden mislukt`,archiveDeleted:`Archief verwijderd`,failedDeleteArchive:`Archief verwijderen mislukt`,addedToFavorites:`Toegevoegd aan favorieten`,removedFromFavorites:`Uit favorieten verwijderd`,projectUpdated:`Project bijgewerkt`,failedUpdateProject:`Project bijwerken mislukt`,linkCopied:`Link naar klembord gekopieerd`,failedCopyLink:`Link kopiëren mislukt`,photoDeleted:`Foto verwijderd`,failedDeletePhoto:`Foto verwijderen mislukt`,failedDeleteArchives:`Archieven verwijderen mislukt`,failedUpdateFavorites:`Favorieten bijwerken mislukt`,exportDownloaded:`Export gedownload`,exportFailed:`Export mislukt`},menu:{print:`Afdrukken`,openInBambuStudio:`Openen in slicer`,slice:`Slicen`,externalLink:`Externe link`,viewOnMakerWorld:`Bekijken op MakerWorld`,preview3d:`3D-voorbeeld`,viewTimelapse:`Timelapse bekijken`,scanForTimelapse:`Zoeken naar timelapse`,uploadTimelapse:`Timelapse uploaden`,removeTimelapse:`Timelapse verwijderen`,downloadSource3mf:`Bron-3MF downloaden`,uploadSource3mf:`Bron-3MF uploaden`,replaceSource3mf:`Bron-3MF vervangen`,removeSource3mf:`Bron-3MF verwijderen`,uploadF3d:`F3D uploaden`,replaceF3d:`F3D vervangen`,downloadF3d:`F3D downloaden`,removeF3d:`F3D verwijderen`,download:`Downloaden`,copyDownloadLink:`Downloadlink kopiëren`,qrCode:`QR-code`,viewPhotos:`Foto's bekijken`,viewPhotosCount:`Foto's bekijken ({{count}})`,projectPage:`Projectpagina`,addToFavorites:`Toevoegen aan favorieten`,removeFromFavorites:`Uit favorieten verwijderen`,edit:`Bewerken`,printLog:`Afdruklogboek`,goToProject:`Ga naar project: {{name}}`,addToProject:`Toevoegen aan project`,removeFromProject:`Uit project verwijderen`,loading:`Laden...`,noProjectsAvailable:`Geen projecten beschikbaar`,searchProjects:`Projecten zoeken…`,select:`Selecteren`,deselect:`Deselecteren`,delete:`Verwijderen`},permission:{noReprint:`Je hebt geen toestemming om dit archief opnieuw af te drukken`,noAddToQueue:`Je hebt geen toestemming om aan de wachtrij toe te voegen`,noUpdateArchives:`Je hebt geen toestemming om archieven bij te werken`,noUploadFiles:`Je hebt geen toestemming om bestanden te uploaden`,noDownload:`Je hebt geen toestemming om archieven te downloaden`,noCopyLink:`Je hebt geen toestemming om downloadlinks te kopiëren`,noDelete:`Je hebt geen toestemming om dit archief te verwijderen`,noEdit:`Je hebt geen toestemming om dit item te bewerken`,noCreate:`Je hebt geen toestemming om archieven te maken`},platePicker:{title:`Selecteer plaat voor voorbeeld`,hint:`Dit archief bevat meerdere platen. Kies er een om in de GCode-viewer te openen.`,plateLabel:`Plaat {{index}}`,objectCount:`{{count}} object`,objectCount_plural:`{{count}} objecten`,noGcode:`Dit archief bevat geen geslicede G-code voor een voorbeeld. Open het eerst in Bambu Studio om te slicen.`},card:{previousPlate:`Vorige plaat`,nextPlate:`Volgende plaat`,plateNumber:`Plaat {{index}}`,moreOptions:`Klik met rechts voor meer opties`,addToFavorites:`Toevoegen aan favorieten`,removeFromFavorites:`Uit favorieten verwijderen`,cancelled:`geannuleerd`,failed:`mislukt`,duplicate:`duplicaat`,duplicateTitle:`Dit model is eerder afgedrukt`,openSource3mf:`Bron-3MF openen in Bambu Studio (klik met rechts voor meer opties)`,downloadF3d:`Fusion 360-ontwerpbestand downloaden`,viewTimelapse:`Timelapse bekijken`,viewPhoto:`1 foto bekijken`,viewPhotos:`{{count}} foto's bekijken`,openFolder:`Map openen: {{name}}`,slicedFile:`Gesliced bestand - klaar om af te drukken`,sourceFile:`Alleen bronbestand - geen AMS-toewijzing beschikbaar`,gcode:`GCODE`,source:`BRON`,project:`Project: {{name}}`,runsBadge:`{{count}} afdrukken`,runsBadgeTitle:`{{count}} afdrukken totaal — {{successful}} geslaagd, {{failed}} mislukt. Klik om het volledige afdruklogboek te bekijken.`,estimated:`Geschat: {{time}}`,actual:`Werkelijk: {{time}}`,accuracy:`Nauwkeurigheid: {{percent}}%`,filament:`{{weight}}g`,layer:`{{count}} laag`,layers:`{{count}} lagen`,object:`{{count}} object`,objects:`{{count}} objecten`,slicedFor:`Gesliced voor {{model}}`,uploadedBy:`Geüpload door`,noPermissionReprint:`Je hebt geen toestemming om opnieuw af te drukken`,noFileForReprint:`Geen 3MF-bestand beschikbaar — het bestand kon niet van de printer worden gedownload toen de afdruk werd geregistreerd`,slicerAmsMapping:`AMS-toewijzing opgeslagen ({{printer}})`,slicerAmsMappingTooltip:`De eigen AMS-sleufkeuze van de slicer is opgeslagen voor {{printer}}. Tray-nummers hebben alleen betekenis op die printer, dus bij opnieuw afdrukken worden ze alleen hergebruikt als opnieuw naar {{printer}} wordt afgedrukt.`,noPermissionEdit:`Je hebt geen toestemming om archieven te bewerken`,noPermissionDelete:`Je hebt geen toestemming om archieven te verwijderen`,openInBambuStudio:`Openen in slicer`,openInBambuStudioToSlice:`Openen in slicer om te slicen`,slice:`Slicen`,externalLink:`Externe link`,makerWorld:`MakerWorld: {{designer}}`,viewProject:`Project bekijken`,noExternalLink:`Geen externe link`,preview3d:`3D-voorbeeld`,download:`Downloaden`,edit:`Bewerken`,delete:`Verwijderen`},runLog:{title:`Afdruklogboek`,modalTitle:`Afdruklogboek — {{name}}`,modalTitleFallback:`dit archief`,empty:`Nog geen afdrukgebeurtenissen geregistreerd voor dit archief.`,col:{date:`Datum`,status:`Status`,duration:`Duur`,filament:`Filament`,cost:`Kosten`},status:{completed:`Voltooid`,failed:`Mislukt`,cancelled:`Geannuleerd`,stopped:`Gestopt`,skipped:`Overgeslagen`,printing:`Bezig met afdrukken`}},modal:{deleteArchive:`Archief verwijderen`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.`,deleteButton:`Verwijderen`,deletePurgeStats:`Deze afdruk ook verwijderen uit Snelle statistieken (filament, tijd, kosten, energie)`,deleteQueueItemsWarning:`{{count}} wachtrij-item(s) gekoppeld aan dit archief worden ook verwijderd.`,deleteBlockedByPrinting:`Kan niet verwijderen — {{count}} wachtrij-item(s) zijn momenteel aan het afdrukken. Stop eerst de afdruk en probeer het daarna opnieuw.`,removeSource3mf:`Bron-3MF verwijderen`,removeSource3mfConfirm:`Weet je zeker dat je het bron-3MF-bestand uit "{{name}}" wilt verwijderen? Hiermee wordt het originele slicerprojectbestand verwijderd.`,removeButton:`Verwijderen`,removeF3d:`F3D verwijderen`,removeF3dConfirm:`Weet je zeker dat je het Fusion 360-ontwerpbestand uit "{{name}}" wilt verwijderen?`,removeTimelapse:`Timelapse verwijderen`,removeTimelapseConfirm:`Weet je zeker dat je de timelapsevideo uit "{{name}}" wilt verwijderen?`,timelapse:`{{name}} - Timelapse`,selectTimelapse:`Timelapse selecteren`,selectTimelapseDesc:`Geen automatische overeenkomst gevonden. Selecteer de timelapse voor deze afdruk:`,deleteArchives:`Archieven verwijderen`,deleteArchivesConfirm:`Weet je zeker dat je {{count}} archief/archieven wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.`,deleteCount:`{{count}} verwijderen`},page:{title:`Archieven`,printsCount:`{{filtered}} van {{total}} afdrukken`,dropFilesHere:`Sleep .3mf-bestanden hierheen`,releaseToUpload:`Loslaten om te uploaden`,only3mfSupported:`Alleen .3mf-bestanden worden ondersteund`,close:`Sluiten`,selected:`{{count}} geselecteerd`,selectAll:`Alles selecteren`,tags:`Tags`,project:`Project`,favorite:`Favoriet`,delete:`Verwijderen`,toggledFavorites:`Favorieten omgeschakeld voor {{count}} archief/archieven`,failedUpdateFavorites:`Favorieten bijwerken mislukt`,archivesDeleted:`{{count}} archief/archieven verwijderd`,failedDeleteArchives:`Archieven verwijderen mislukt`,photoDeleted:`Foto verwijderd`,failedDeletePhoto:`Foto verwijderen mislukt`},list:{name:`Naam`,printer:`Printer`,date:`Datum`,size:`Grootte`,actions:`Acties`,hasTimelapse:`Heeft timelapse`},log:{date:`Datum`,printName:`Afdruknaam`,printer:`Printer`,user:`Gebruiker`,status:`Status`,duration:`Duur`,filament:`Filament`,filamentUsed:`Filament gebruikt`,cost:`Kosten`,energy:`Energie`,energyCost:`Energiekosten`,completedAt:`Voltooid`,columns:`Kolommen`,sortBy:`Sorteren op {{column}}`,allPrinters:`Alle printers`,allUsers:`Alle gebruikers`,allStatuses:`Alle statussen`,cancelled:`Geannuleerd`,skipped:`Overgeslagen`,dateFrom:`Van`,dateTo:`Tot`,noEntries:`Geen afdruklogboekitems gevonden`,showing:`{{count}} van {{total}} items weergegeven`,rowsPerPage:`Rijen`,page:`Pagina`,prev:`Vorige`,next:`Volgende`,clearLog:`Logboek wissen`,clearLogTitle:`Afdruklogboek wissen`,clearLogConfirm:`Alle items in het afdruklogboek worden permanent verwijderd. Archieven en wachtrij-items blijven intact. Deze actie kan niet ongedaan worden gemaakt. Weet je het zeker?`,clearLogButton:`Alles wissen`,cleared:`{{count}} logboekitems gewist`,clearFailed:`Afdruklogboek wissen mislukt`,deleteEntryTitle:`Afdruklogboekitem verwijderen`,deleteEntryConfirm:`Dit item wordt uit het logboek verwijderd en de bijdragen aan filament, tijd en kosten verdwijnen uit Snelle statistieken. Het bijbehorende archief (indien aanwezig) blijft intact. Deze actie kan niet ongedaan worden gemaakt.`,entryDeleted:`Afdruklogboekitem verwijderd`,entryDeleteFailed:`Afdruklogboekitem verwijderen mislukt`,editEntryTitle:`Afdruklogboekitem bewerken`,editEntryDescription:`Classificeer deze afdrukrun. De widget Foutenanalyse groepeert op deze waarden, zodat wijzigingen direct in de statistieken worden verwerkt.`,entryUpdated:`Afdruklogboekitem bijgewerkt`,entryUpdateFailed:`Afdruklogboekitem bijwerken mislukt`,statuses:{completed:`Voltooid`,failed:`Mislukt`,stopped:`Gestopt`,cancelled:`Geannuleerd`,skipped:`Overgeslagen`}}},dispatchToast:{untitled:`Afdruktaak`,startingPrints:`Afdrukken starten`,progressSummary:`{{complete}}/{{total}} voltooid • Verwerken: {{processing}}`,expandDetails:`Verzenddetails uitklappen`,collapseDetails:`Verzenddetails inklappen`,awaitingPrinter:`Wachten op printer…`,status:{processing:`Verwerken`,completed:`Voltooid`,failed:`Mislukt`},failed:{generic:`Verzenden mislukt`,upload_failed:`Uploaden naar printer mislukt`,start_command_failed:`Printer heeft startopdracht geweigerd`},dismiss:`Negeren`},pipelineRuns:{title:`Pipeline-runs`,loading:`Laden…`,empty:`Nog geen pipeline-runs.`,filter:{pipeline:`Pipeline`,status:`Status`,target:`Doel`,all:`Alle`,allPipelines:`Alle pipelines`,allStatus:`Alle statussen`,allTargets:`Alle doelen`,clear:`Filters wissen`,noMatches:`Geen runs komen overeen met de huidige filters.`},totalCount_one:`{{n}} run`,totalCount_other:`{{n}} runs`,copies:`{{n}} kopieën`,failedCount:`{{n}} mislukt`,copyN:`Kopie {{n}}`,retryFailed:`Mislukte opnieuw proberen`,retryOf:`herhaling van #{{n}}`,pagination:`{{start}}–{{end}} van {{total}}`,cancelledByUser:`Geannuleerd door gebruiker`,toast:{cancelled:`Run geannuleerd`,cancelFailed:`Annuleren mislukt`,retryStarted:`Opnieuw proberen gestart`,retryFailed:`Mislukte opnieuw proberen`,cleared:`{{n}} runs gewist`,clearFailed:`Wissen mislukt`},clearLog:`Logboek wissen`,clearConfirmTitle:`Logboek wissen?`,clearConfirmBody:`Alle voltooide, mislukte, geannuleerde en gedeeltelijk mislukte pipeline-runs verwijderen? Lopende runs blijven behouden. Dit kan niet ongedaan worden gemaakt.`,clearConfirmAction:`Wissen`,jobStatus:{pending:`in afwachting`,awaiting_printer:`wachten op printer`,queued:`in wachtrij`,printing:`bezig met afdrukken`,completed:`voltooid`,failed:`mislukt`,cancelled:`geannuleerd`}},queue:{title:`Afdrukwachtrij`,subtitle:`Plan en beheer je afdruktaken`,filamentShort:{rowBadge:`Onvoldoende filament op de toegewezen spoel`,rowTooltip:`De verzendscheduler heeft dit item gemarkeerd. Klik op Afspelen om het tekort per sleuf te bekijken en te bepalen of je toch wilt afdrukken.`,confirmTitle:`Onvoldoende filament`,confirmIntro:`De toegewezen spoel kan minstens één sleuf niet voorzien. Toch afdrukken?`,lineItem:`Sleuf {{slot}}: vereist {{required}} g, {{remaining}} g resterend`,unknown:`onbekend`,printAnyway:`Toch afdrukken`},slicerAmsMapping:{rowBadge:`AMS-sleuven opgeslagen voor deze printer`,rowTooltip:`Dit archief bevat de exacte AMS-sleuven die de slicer heeft gekozen, opgeslagen voor de printer waarop dit item is gericht. Bij opnieuw afdrukken op deze printer kunnen die trays worden hergebruikt in plaats van opnieuw op type en kleur te matchen.`},editQueueItem:`Wachtrij-item bewerken`,selectAllPlates:`Alle {{count}} platen selecteren`,deselectAll:`Alles deselecteren`,printQueued:`Afdruk in wachtrij geplaatst`,printQueuedWillStartWhenIdle:`Start zodra de printer inactief is`,itemsQueued:`{{count}} items in wachtrij`,sending:`Verzenden...`,sendingProgress:`{{current}}/{{total}} verzenden...`,adding:`Toevoegen...`,addingProgress:`{{current}}/{{total}} toevoegen...`,savingProgress:`{{current}}/{{total}} opslaan...`,clearQueue:`Wachtrij wissen`,clearHistory:`Geschiedenis wissen`,emptyQueue:`Wachtrij is leeg`,position:`Positie`,scheduledTime:`Geplande tijd`,moveUp:`Omhoog verplaatsen`,moveDown:`Omlaag verplaatsen`,startNow:`Nu starten`,printingInProgress:`Afdrukken bezig...`,viewArchive:`Archief bekijken`,viewInFileManager:`Bekijken in Bestandsbeheer`,itemCount:`{{count}} item`,itemCount_plural:`{{count}} items`,dragToReorder:`Sleep om volgorde te wijzigen (alleen ZSM)`,reorderHint:`Positie heeft alleen invloed op ZSM-items. Geplande items draaien op hun ingestelde tijd.`,sjf:{label:`SJF`,tooltip:`Shortest Job First — scheduler geeft voorrang aan kortere afdrukken`},addedBy:`Toegevoegd door {{name}}`,nextInQueue:`Volgende in wachtrij`,clearPlateSuccess:`Plaat vrijgegeven — klaar voor volgende afdruk`,plateNumber:`Plaat {{index}}`,quantity:`Aantal`,quantityHint:`Maakt {{count}} wachtrij-items`,plateQuantityLabel:`Runs van {{plate}}`,plateQuantityTotal_one:`{{count}} run in totaal`,plateQuantityTotal_other:`{{count}} runs in totaal`,batchOrders:{title:`Batchorders`,emptyTitle:`Geen batchorders`,emptyDescription:`Plaats een bestand met meerdere platen, of meer dan één kopie van een plaat, in de wachtrij en de order verschijnt hier met de voortgang.`,filter:{active:`Actief`,completed:`Voltooid`,cancelled:`Geannuleerd`,all:`Alle`},status:{active:`Actief`,completed:`Voltooid`,cancelled:`Geannuleerd`},noTargets:`Alleen groepering`,noTargetsHint:`Aangemaakt voordat doelen per plaat bestonden, dus dit volgt de runs die in de wachtrij zijn gezet in plaats van een doel.`,dispatchRemaining:`{{count}} resterende in wachtrij plaatsen`,dispatchPlate:`Resterende in wachtrij plaatsen`,strandedPlate:`Geen instellingen meer om van te kopiëren`,strandedNotice:`Kan {{runs}} van de {{owed}} nog openstaande runs niet in de wachtrij zetten: die plaat heeft geen run in de wachtrij of voltooide run meer om instellingen van te kopiëren. Zet de plaat één keer vanuit het bestand in de wachtrij, of annuleer de order.`,dispatched:`Resterende runs voor {{name}} in wachtrij geplaatst`,plateProgress:`{{completed}} van {{target}} klaar`,remaining:`{{count}} nog te doen`,failed:`{{count}} mislukt`,printing:`{{count}} bezig met afdrukken`,wholeFile:`Hele bestand`,due:`Vervalt {{date}}`,costSoFar:`{{amount}} tot nu toe`,costRemaining:`({{amount}} te gaan)`},activeBatches:`Actieve batches`,batchProgress:`{{completed}} van {{total}} voltooid`,cancelBatch:`Resterende annuleren`,batchCancelled:`Resterende batchitems geannuleerd`,cancelBatchConfirmTitle:`Batch annuleren`,cancelBatchConfirmMessage:`Alle resterende openstaande items in deze batch annuleren?`,batch:{defaultName:`Batch`,label:`{{count}} item`,label_plural:`{{count}} items`,pendingCount:`{{count}} in afwachting`,pendingCount_plural:`{{count}} in afwachting`,expand:`Batch uitklappen`,collapse:`Batch inklappen`,groupAsBatch:`Als batch groeperen…`,groupAsBatchDescription:`Combineer de {{count}} geselecteerde items tot één inklapbare batch.`,nameLabel:`Batchnaam`,namePlaceholder:`bijv. Vrijdagcadeaus`,create:`Batch maken`,ungroup:`Groepering opheffen`,ungroupConfirmTitle:`Batchgroepering opheffen?`,ungroupConfirmMessage:`De items blijven in de wachtrij staan, maar worden niet langer als groep weergegeven.`,dragGroup:`Groep slepen`},tabs:{batches:`Batches`,queue:`Wachtrij`,history:`Geschiedenis`,timeline:`Tijdlijn`,pipelines:`Pipelines`},layout:{flatList:`Lijst`,byPrinter:`Per printer`,groupByPrinter:`Groeperen per printer`},history:{emptyTitle:`Nog geen geschiedenis`,emptyDescription:`Voltooide, geannuleerde en mislukte afdrukken verschijnen hier.`,showMore:`Meer tonen`,showingCount:`{{shown}} van {{total}} weergegeven`},dragGhost:{multiCount:`{{count}} items`,batch:`{{name}} ({{count}} kopie)`,batch_plural:`{{name}} ({{count}} kopieën)`},sections:{currentlyPrinting:`Momenteel aan het afdrukken`,queued:`In wachtrij`,history:`Geschiedenis`},status:{pending:`In afwachting`,waiting:`Wachten`,printing:`Bezig met afdrukken`,paused:`Gepauzeerd`,completed:`Voltooid`,failed:`Mislukt`,skipped:`Overgeslagen`,cancelled:`Geannuleerd`},summary:{printing:`Bezig met afdrukken`,queued:`In wachtrij`,totalTime:`Totale wachtrijtijd`,totalWeight:`Totaal wachtrijgewicht`,history:`Geschiedenis`},filter:{allPrinters:`Alle printers`,unassigned:`Niet toegewezen`,allStatus:`Alle statussen`,allLocations:`Alle locaties`,any:`Elke`},sort:{byPosition:`Sorteren op positie`,byName:`Sorteren op naam`,byPrinter:`Sorteren op printer`,bySchedule:`Sorteren op planning`,byDate:`Sorteren op datum`,ascendingOldest:`Oplopend (oudste eerst)`,descendingNewest:`Aflopend (nieuwste eerst)`},badges:{staged:`Gereed voor handmatige start`,requiresPrevious:`Vereist dat vorige taak slaagt`,autoPowerOff:`Automatisch uitschakelen`,gcodeInjection:`G-code`},empty:{title:`Geen afdrukken gepland`,description:`Plan een afdruk vanaf de pagina Archieven met de optie "Plannen" in het contextmenu, of sleep bestanden hierheen om te beginnen.`},time:{etaIfStartedNow:`Voltooiingstijd als deze taak nu zou starten`,asap:`Zo snel mogelijk`,overdue:`Te laat`,now:`Nu`,lessThanMinute:`Binnen een minuut`,inMinutes:`Over {{count}} min`,inHours:`Over {{count}} uur`},actions:{startPrint:`Afdruk starten`,stopPrint:`Afdruk stoppen`,requeue:`Opnieuw in wachtrij plaatsen`},bulkEdit:{title:`{{count}} item bewerken`,title_plural:`{{count}} items bewerken`,description:`Alleen gewijzigde instellingen worden toegepast op de geselecteerde items.`,printer:`Printer`,noChange:`— Geen wijziging —`,queueOptions:`Wachtrijopties`,staged:`Gereed voor handmatige start`,autoPowerOff:`Automatisch uitschakelen na afdruk`,requirePrevious:`Vereis dat vorige taak slaagt`,printOptions:`Afdrukopties`,bedLevelling:`Bednivellering`,flowCalibration:`Flowkalibratie`,vibrationCalibration:`Trillingskalibratie`,layerInspection:`Inspectie eerste laag`,timelapse:`Timelapse`,useAms:`AMS gebruiken`,nozzleOffsetCali:`Nozzle-offsetkalibratie`,applyChanges:`Wijzigingen toepassen`,selectAll:`Alles selecteren`,deselectAll:`Alles deselecteren`,selected:`{{count}} geselecteerd`,editSelected:`Geselecteerde bewerken`,cancelSelected:`Geselecteerde annuleren`},confirm:{cancelTitle:`Geplande afdruk annuleren`,cancelMessage:`Weet je zeker dat je "{{name}}" wilt annuleren?`,stopTitle:`Afdruk stoppen`,stopMessage:`Weet je zeker dat je de huidige afdruk "{{name}}" wilt stoppen? Hiermee wordt de afdruktaak op de printer geannuleerd.`,removeTitle:`Uit geschiedenis verwijderen`,removeMessage:`Weet je zeker dat je "{{name}}" uit de wachtrijgeschiedenis wilt verwijderen?`,clearHistoryTitle:`Geschiedenis wissen`,clearHistoryMessage:`Weet je zeker dat je alle {{count}} item(s) uit de geschiedenis wilt verwijderen?`,cancelButton:`Afdruk annuleren`,stopButton:`Afdruk stoppen`,thisPrint:`deze afdruk`,thisItem:`dit item`},toast:{cancelled:`Wachtrij-item geannuleerd`,cancelFailed:`Item annuleren mislukt`,removed:`Wachtrij-item verwijderd`,keptForOrder:`Geannuleerd in plaats van verwijderd: dit is de enige run waaruit de batchorder deze plaat opnieuw in de wachtrij kan zetten`,historyKeptForOrders:`{{kept}} bewaard die batchorders nog nodig hebben.`,removeFailed:`Item verwijderen mislukt`,stopped:`Afdruk gestopt`,stopFailed:`Afdruk stoppen mislukt`,released:`Afdruk vrijgegeven aan wachtrij`,startFailed:`Afdruk starten mislukt`,reorderFailed:`Wachtrij herschikken mislukt`,historyCleared:`{{count}} geschiedenisitem(s) gewist`,clearHistoryFailed:`Geschiedenis wissen mislukt`,updateFailed:`Items bijwerken mislukt`,bulkCancelled:`{{count}} item(s) geannuleerd`,bulkCancelFailed:`Items annuleren mislukt`,batchCreated:`Batch "{{name}}" gemaakt`,batchCreateFailed:`Batch maken mislukt`,batchUngrouped:`Groepering van {{count}} item(s) opgeheven`,batchUngroupFailed:`Batchgroepering opheffen mislukt`,resumedAfterFailure:`Wachtrij hervat — {{restored}} taak/taken teruggezet naar in afwachting`,resumeAfterFailureFailed:`Wachtrij hervatten mislukt`},resumeAfterFailure:{banner:`{{printer}} is geblokkeerd door een eerdere afdrukfout — {{count}} taak/taken overgeslagen`,bannerHint:`Los het printerprobleem op en hervat daarna om de overgeslagen taken terug te zetten en de blokkering op te heffen.`,button:`Hervatten na fout`,confirmTitle:`Wachtrij hervatten na fout?`,confirmMessage:`Zet {{count}} overgeslagen taak/taken op {{printer}} terug naar in afwachting en hef de blokkering door de vorige afdruk op. Zorg dat de printer gereed is voordat je doorgaat.`},timeline:{listView:`Lijst`,timelineView:`Tijdlijn`,unassigned:`Niet toegewezen`,noData:`Geen geplande afdrukken voor deze dag`,nothingCommitted:`Geen vastgelegde planningen in dit venster. Gereedstaande items, wachtende items en ZSM-taken op inactieve printers worden niet getoond — stel een geplande tijd in of geef een gereedstaand item vrij om het hier te zien.`,allDoneBy:`Alle afdrukken naar verwachting klaar om {{time}}`,staged:`Gereed voor handmatige start`,filterAll:`Alles tonen`,filterPrinting:`Bezig met afdrukken`,filterQueued:`In wachtrij`,time:{anyMoment:`elk moment`,minutesLeft:`{{minutes}}m resterend`,hoursLeft:`{{hours}}u resterend`,hoursMinutesLeft:`{{hours}}u {{minutes}}m resterend`},day:{previous:`Vorige dag`,next:`Volgende dag`,today:`Vandaag`},window:{back12h:`12 uur terug`,forward12h:`12 uur vooruit`,now:`Nu`},printerColumnHeader:`Printer`},permissions:{noStopPrint:`Je hebt geen toestemming om afdrukken te stoppen`,noStartPrint:`Je hebt geen toestemming om afdrukken te starten`,noEdit:`Je hebt geen toestemming om dit wachtrij-item te bewerken`,noCancel:`Je hebt geen toestemming om dit wachtrij-item te annuleren`,noRequeue:`Je hebt geen toestemming om items opnieuw in de wachtrij te plaatsen`,noRemove:`Je hebt geen toestemming om dit wachtrij-item te verwijderen`,noClearHistory:`Je hebt geen toestemming om de volledige geschiedenis te wissen`,noEditItems:`Je hebt geen toestemming om wachtrij-items te bewerken`,noCancelItems:`Je hebt geen toestemming om wachtrij-items te annuleren`}},stats:{title:`Statistieken`,subtitle:`Sleep widgets om ze opnieuw te rangschikken. Klik op het oogpictogram om te verbergen.`,overview:`Overzicht`,totalPrints:`Totaal aantal afdrukken`,successRate:`Slagingspercentage`,totalPrintTime:`Totale afdruktijd`,printTime:`Afdruktijd`,totalFilament:`Totaal filamentverbruik`,filamentUsed:`Filament gebruikt`,filamentCost:`Filamentkosten`,totalCost:`Totale kosten`,energyUsed:`Energieverbruik`,energyCost:`Energiekosten`,energyWarmingUpTooltip:`Energietracking verzamelt nog steeds uurlijkse momentopnamen. Totalen over een datumbereik worden nauwkeurig zodra er minstens één momentopname van vóór het geselecteerde bereik bestaat. Vroege waarden kunnen te laag uitvallen.`,averagePrintTime:`Gemiddelde afdruktijd`,printsPerDay:`Afdrukken per dag`,byPrinter:`Per printer`,printsByPrinter:`Afdrukken per printer`,byMaterial:`Per materiaal`,byMonth:`Per maand`,last7Days:`Laatste 7 dagen`,last30Days:`Laatste 30 dagen`,last90Days:`Laatste 90 dagen`,allTime:`Altijd`,quickStats:`Snelle statistieken`,printActivity:`Afdrukactiviteit`,filamentTypes:`Filamenttypen`,filamentTrends:`Filamenttrends`,failureAnalysis:`Foutenanalyse`,timeAccuracy:`Tijdnauwkeurigheid`,successful:`Geslaagd:`,failed:`Mislukt:`,cancelled:`Geannuleerd:`,perfectEstimate:`100% = perfecte schatting`,noTimeAccuracyData:`Nog geen gegevens over tijdnauwkeurigheid`,noFilamentData:`Geen filamentgegevens beschikbaar`,noPrinterData:`Geen printergegevens beschikbaar`,noPrintData:`Geen afdrukgegevens beschikbaar`,noPrintDataLast30Days:`Geen afdrukgegevens in de laatste 30 dagen`,failureReasons:`Oorzaken van fouten`,topFailureReasons:`Meest voorkomende foutoorzaken`,failedPrintsCount:`{{failed}} / {{total}} afdrukken mislukt`,lastWeekRate:`Vorige week: {{rate}}%`,resetLayout:`Indeling resetten`,recalculateCosts:`Kosten opnieuw berekenen`,recalculateCostsHint:`Alle archiefkosten opnieuw berekenen met de huidige filamentprijzen`,exportStats:`Statistieken exporteren`,exportAsCsv:`Exporteren als CSV`,exportAsExcel:`Exporteren als Excel`,hiddenCount:`{{count}} verborgen`,exportDownloaded:`Export gedownload`,exportFailed:`Export mislukt`,layoutReset:`Indeling gereset`,recalculatedCosts:`Kosten voor {{count}} archieven opnieuw berekend`,recalculateFailed:`Kosten opnieuw berekenen mislukt`,loadingStats:`Statistieken laden...`,noPermissionResetLayout:`Je hebt geen toestemming om de indeling te resetten`,noPermissionRecalculate:`Je hebt geen toestemming om kosten opnieuw te berekenen`,noPrintDataInRange:`Geen afdrukgegevens in het geselecteerde bereik`,periodFilament:`Filament in periode`,periodCost:`Kosten in periode`,avgPerPrint:`Gem. per afdruk`,usageOverTime:`Verbruik in de tijd`,energyOverTime:`Energie in de tijd`,filamentByWeight:`Gewicht`,printDuration:`Afdrukduur`,printerUtilization:`Printerbenutting`,filamentSuccess:`Succes per materiaal`,printHabits:`Afdrukgewoonten`,printTimeOfDay:`Afdruktijdstip`,colorDistribution:`Kleurverdeling`,noColorData:`Geen kleurgegevens beschikbaar`,records:`Records`,longestPrint:`Langste afdruk`,heaviestPrint:`Zwaarste afdruk`,mostExpensivePrint:`Duurste`,busiestDay:`Drukste dag`,successStreak:`Succesreeks`,streakPrint:`opeenvolgende afdruk`,streakPrints:`{{count}} opeenvolgende afdrukken`,printerStats:`Printerstatistieken`,hours:`uren`,avgPrints:`Gem. afdrukken`,noArchiveData:`Geen afdrukgegevens beschikbaar`,filamentByTime:`Tijd`,avgWeight:`Gem. gewicht`,avgTime:`Gem. tijd`,filamentByPrints:`Afdrukken`,timeframe:{today:`Vandaag`,"this-week":`Deze week`,"this-month":`Deze maand`,"last-7":`Laatste 7 dagen`,"last-30":`Laatste 30 dagen`,"last-90":`Laatste 90 dagen`,"this-year":`Dit jaar`,"all-time":`Altijd`,custom:`Aangepast bereik`,from:`Van`,to:`Tot`},allUsers:`Alle gebruikers`,noUser:`Geen gebruiker (systeem)`,filterByUser:`Filteren op gebruiker`},maintenance:{title:`Onderhoud`,overview:`Overzicht`,allOk:`Al het onderhoud is bijgewerkt`,dueCount:`{{count}} item te doen`,dueCount_plural:`{{count}} items te doen`,warningCount:`{{count}} waarschuwing`,warningCount_plural:`{{count}} waarschuwingen`,totalPrintTime:`Totale afdruktijd`,nextMaintenance:`Volgend onderhoud`,nothingDue:`Niets te doen`,tasks:`Taken`,lastPerformed:`Laatst uitgevoerd`,interval:`Interval`,hoursRemaining:`{{hours}}u resterend`,hoursOverdue:`{{hours}}u te laat`,markDone:`Als voltooid markeren`,performMaintenance:`Onderhoud uitvoeren`,history:`Geschiedenis`,noHistory:`Geen onderhoudsgeschiedenis`,editPrintHours:`Afdrukuren bewerken`,currentHours:`Huidige uren`,statusTab:`Status`,settingsTab:`Instellingen`,overdueCount:`{{count}} te laat`,dueSoonCount:`{{count}} binnenkort te doen`,dueSoon:`Binnenkort te doen`,allGood:`Alles goed`,overdueBy:`{{duration}} te laat`,dueIn:`Over {{duration}} te doen`,timeLeft:`{{duration}} resterend`,day:`1 dag`,days:`{{count}} dagen`,week:`1 week`,weeks:`{{count}} weken`,month:`1 maand`,months:`{{count}} maanden`,year:`1 jaar`,maintenanceTypes:`Onderhoudstypen`,maintenanceTypesDescription:`Systeemtaken en je aangepaste onderhoudstaken`,addCustomType:`Aangepast type toevoegen`,restoreDefaults:`Standaardtaken herstellen`,intervalType:`Intervaltype`,intervalValue:`Interval ({{type}})`,icon:`Pictogram`,documentationLink:`Documentatielink (optioneel)`,assignToPrinters:`Aan printers toewijzen`,selectAtLeastOnePrinter:`Selecteer minstens één printer`,addType:`Type toevoegen`,custom:`Aangepast`,printHours:`Afdrukuren`,calendarDays:`Kalenderdagen`,exampleName:`bijv. HEPA-filter vervangen`,viewDocumentation:`Documentatie bekijken`,timeBasedInterval:`Tijdsgebaseerd interval`,intervalOverrides:`Intervaloverschrijvingen`,intervalOverridesDescription:`Intervallen aanpassen voor specifieke printers`,assignedToPrinters:`Toegewezen aan printers:`,noPrintersAssigned:`Geen printers toegewezen`,addPrinterShort:`Toevoegen:`,printersAssignedClick:`{{count}} printer(s) toegewezen - klik om te beheren`,removeFromPrinter:`Van deze printer verwijderen`,types:{lubricateCarbonRods:`Koolstofstaven smeren`,lubricateRails:`Lineaire rails smeren`,cleanNozzle:`Nozzle/hotend reinigen`,checkBelts:`Riemspanning controleren`,cleanBuildPlate:`Bouwplaat reinigen`,checkExtruder:`Extrudertandwielen controleren`,checkCooling:`Koelventilatoren controleren`,generalInspection:`Algemene inspectie`,cleanCarbonRods:`Koolstofstaven reinigen`,lubricateSteelRods:`Stalen staven smeren`,cleanSteelRods:`Stalen staven reinigen`,cleanLinearRails:`Lineaire rails reinigen`,checkPtfeTube:`PTFE-buis controleren`,replaceHepaFilter:`HEPA-filter vervangen`,replaceCarbonFilter:`Koolstoffilter vervangen`,lubricateLeftNozzleRail:`Linker nozzle-rail smeren`},maintenanceComplete:`Onderhoud als voltooid gemarkeerd`,typeUpdated:`Onderhoudstype bijgewerkt`,typeDeleted:`Onderhoudstype verwijderd`,defaultsRestored:`{{count}} standaardtaak/taken hersteld`,printHoursUpdated:`Afdrukuren bijgewerkt`,printerAssigned:`Printer toegewezen`,printerRemoved:`Printer verwijderd`,deleteTypeConfirm:`"{{name}}" verwijderen?`,deleteSystemTypeTitle:`Standaard onderhoudstaak verwijderen?`,deleteSystemTypeMessage:`Weet je zeker dat je de standaard onderhoudstaak "{{name}}" wilt verwijderen?`,noPermissionUpdate:`Je hebt geen toestemming om onderhoudsitems bij te werken`,noPermissionPerform:`Je hebt geen toestemming om onderhoud uit te voeren`,noPermissionEditTypes:`Je hebt geen toestemming om onderhoudstypen te bewerken`,noPermissionDeleteTypes:`Je hebt geen toestemming om onderhoudstypen te verwijderen`,noPermissionEditHours:`Je hebt geen toestemming om afdrukuren te bewerken`,noPermissionRemovePrinter:`Je hebt geen toestemming om printertoewijzingen te verwijderen`,noPermissionAssignPrinter:`Je hebt geen toestemming om printers toe te wijzen`,noPermissionEditIntervals:`Je hebt geen toestemming om intervallen te bewerken`,configureSettings:`Onderhoudstypen en intervallen configureren`},settings:{sliceEngine:`Slice-engine`,sliceEngineSidecar:`Server-sidecar`,sliceEngineSidecarHint:`Slicen gebeurt op de server, in de slicer-sidecarcontainer.`,sliceEngineBrowser:`In browser`,sliceEngineBrowserHint:`Slicen gebeurt op dit apparaat, zonder tussenkomst van de server.`,title:`Instellingen`,general:`Algemeen`,tabs:{general:`Algemeen`,smartPlugs:`Slimme stekkers`,sensors:`Sensoren`,notifications:`Meldingen`,queue:`Workflow`,queueDispatch:`Wachtrij en verzending`,queuePipelines:`Pipelines`,filament:`Filament`,network:`Netwerk`,apiKeys:`API-sleutels`,virtualPrinter:`Virtuele printer`,spoolbuddy:`SpoolBuddy`,failureDetection:`Foutdetectie`,users:`Authenticatie`,backup:`Back-up`,emailAuth:`E-mailauthenticatie`,ldap:`LDAP`,twoFa:`Tweefactorauthenticatie`,oidc:`SSO / OIDC`,security:`Beveiliging`},spoolbuddy:{infoTitle:`SpoolBuddy-apparaten`,infoBody:`SpoolBuddy-kiosken registreren zichzelf automatisch via heartbeat. Registreer een apparaat hier af als het niet meer wordt gebruikt of als een verouderde duplicaatregistratie is achtergebleven na een daemoncrash.`,duplicatesTitle:`{{count}} apparaten geregistreerd`,duplicatesBody:`Alleen het eerst geregistreerde apparaat wordt gebruikt door de kioskinterface. Als een van deze apparaten een verouderd duplicaat na een crash is, registreer het dan af — een online apparaat registreert zichzelf opnieuw bij de volgende heartbeat.`,empty:`Nog geen SpoolBuddy-apparaten geregistreerd.`,online:`Online`,offline:`Offline`,unregister:`Registratie opheffen`,unregisterSuccess:`Apparaat afgemeld`,unregisterError:`Apparaat afmelden mislukt`,confirmTitle:`SpoolBuddy-apparaat afmelden?`,confirmBody:`Hiermee wordt "{{hostname}}" ({{deviceId}}) uit de database verwijderd. Als het apparaat online is, registreert het zichzelf opnieuw bij de volgende heartbeat.`,ipAddress:`IP-adres`,firmware:`Firmware`,lastSeen:`Laatst gezien`,daemonUptime:`Daemon-uptime`,systemUptime:`Systeem-uptime`,never:`nooit`,nfc:`NFC`,scale:`Weegschaal`,cpuTemp:`CPU-temp.`,cpuLoad:`CPU-belasting`,memory:`Geheugen`,disk:`Schijf`,update:`Bijwerken`,updateConfirmTitle:`SpoolBuddy-daemon bijwerken?`,updateConfirmBody:`Een software-update starten op "{{hostname}}"? De daemon wordt opnieuw gestart zodra de update is toegepast.`,restartBrowser:`Browser herstarten`,restartBrowserConfirmTitle:`Kioskbrowser herstarten?`,restartBrowserConfirmBody:`De kioskbrowser op "{{hostname}}" herstarten? Het scherm wordt kort zwart.`,restartDaemon:`Daemon herstarten`,restartDaemonConfirmTitle:`SpoolBuddy-daemon herstarten?`,restartDaemonConfirmBody:`De SpoolBuddy-daemon op "{{hostname}}" herstarten? Het apparaat is enkele seconden offline.`,reboot:`Opnieuw opstarten`,rebootConfirmTitle:`Apparaat opnieuw opstarten?`,rebootConfirmBody:`"{{hostname}}" opnieuw opstarten? Het apparaat is ongeveer een minuut offline.`,shutdown:`Afsluiten`,shutdownConfirmTitle:`Apparaat afsluiten?`,shutdownConfirmBody:`"{{hostname}}" afsluiten? Je hebt fysieke toegang nodig om het weer in te schakelen.`,commandConfirm:`Bevestigen`,commandQueued:`Opdracht in wachtrij geplaatst`,commandError:`Opdracht verzenden mislukt`},ldap:{title:`LDAP-authenticatie`,enabledDesc:`LDAP-authenticatie is ingeschakeld`,disabledDesc:`LDAP-authenticatie is uitgeschakeld`,disabledHint:`Configureer en sla de LDAP-instellingen hieronder op en schakel daarna in.`,enabled:`LDAP-authenticatie ingeschakeld`,disabled:`LDAP-authenticatie uitgeschakeld`,feature1:`Gebruikers kunnen inloggen met LDAP-inloggegevens`,feature2:`Lokaal beheerdersaccount blijft beschikbaar als terugvaloptie`,feature3:`LDAP-groepen worden bij inloggen gekoppeld aan BamBuddy-groepen`,serverConfig:`LDAP-serverconfiguratie`,serverUrl:`Server-URL`,serverUrlHint:`Gebruik ldaps:// voor SSL of ldap:// met StartTLS`,security:`Beveiliging`,securityHint:`StartTLS zet een gewone verbinding om naar TLS. LDAPS gebruikt TLS vanaf het begin.`,bindDn:`Bind-DN (serviceaccount)`,bindPassword:`Bind-wachtwoord`,searchBase:`Zoekbasis-DN`,userFilter:`Gebruikerszoekfilter`,userFilterHint:`{username} wordt vervangen door de inloggebruikersnaam. Gebruik (uid={username}) voor OpenLDAP.`,advanced:`Geavanceerd`,autoProvision:`Gebruikers automatisch aanmaken`,autoProvisionHint:`Automatisch een BamBuddy-account maken bij de eerste LDAP-login`,defaultGroup:`Standaardgroep`,defaultGroupNone:`— Geen (geen terugval) —`,defaultGroupHint:`Terugvalgroep die wordt toegewezen wanneer een LDAP-gebruiker zich authenticeert maar niet voorkomt in een gekoppelde LDAP-groep. Laat leeg om niet-gekoppelde gebruikers zonder machtigingen te laten.`,groupMapping:`Groepskoppeling (JSON)`,groupMappingHint:`Koppel LDAP-groep-DN's aan BamBuddy-groepen. Beschikbare groepen: `,testConnection:`Verbinding testen`,settingsSaved:`LDAP-instellingen opgeslagen`,errors:{serverRequired:`LDAP-server-URL is verplicht`,searchBaseRequired:`Zoekbasis-DN is verplicht`,enableAuthFirst:`Schakel authenticatie eerst in`,configureLdapFirst:`Sla de LDAP-instellingen eerst op`}},email:{smtpSettings:`SMTP-configuratie`,smtpHost:`SMTP-server`,smtpPort:`SMTP-poort`,security:`Beveiliging`,authentication:`Authenticatie`,username:`Gebruikersnaam`,password:`Wachtwoord`,fromEmail:`Afzender-e-mail`,fromName:`Afzendernaam`,testConnection:`SMTP-verbinding testen`,testRecipient:`E-mailadres testontvanger`,sendTest:`Testmail verzenden`,sending:`Verzenden...`,save:`Instellingen opslaan`,saving:`Opslaan...`,advancedAuth:`Geavanceerde authenticatie`,advancedAuthEnabled:`Geavanceerde authenticatie is ingeschakeld`,advancedAuthEnabledDesc:`E-mailgebaseerde functies voor gebruikersbeheer zijn actief. Nieuwe gebruikers ontvangen automatisch gegenereerde wachtwoorden per e-mail en gebruikers kunnen hun wachtwoord resetten via de functie Wachtwoord vergeten.`,advancedAuthDisabled:`Geavanceerde authenticatie is uitgeschakeld`,advancedAuthDisabledDesc:`Schakel geavanceerde authenticatie in om e-mailgebaseerde functies voor gebruikersbeheer te activeren.`,enable:`Inschakelen`,disable:`Uitschakelen`,feature1:`Wachtwoorden worden automatisch gegenereerd en naar nieuwe gebruikers gemaild`,feature2:`Gebruikers kunnen inloggen met gebruikersnaam of e-mailadres`,feature3:`De functie Wachtwoord vergeten is beschikbaar`,feature4:`Beheerders kunnen gebruikerswachtwoorden via e-mail resetten`,errors:{requiredFields:`Vul alle verplichte velden in`,usernameRequired:`Gebruikersnaam is verplicht wanneer authenticatie is ingeschakeld`,enterTestEmail:`Voer een test-e-mailadres in`,smtpServerAndEmail:`Vul SMTP-server en Afzender-e-mail in voordat je test`,usernamePasswordRequired:`Gebruikersnaam en wachtwoord zijn verplicht wanneer authenticatie is ingeschakeld`,configureSmtpFirst:`Configureer en test eerst de SMTP-instellingen`,enableAuthFirst:`Schakel authenticatie eerst in om e-mailfuncties te gebruiken.`},success:{settingsSaved:`SMTP-instellingen succesvol opgeslagen`},securityOptions:{starttls:`STARTTLS (poort 587)`,ssl:`SSL/TLS (poort 465)`,none:`Geen (poort 25)`},authOptions:{enabled:`Ingeschakeld`,disabled:`Uitgeschakeld`}},appearance:`Uiterlijk`,notifications:`Meldingen`,smartPlugs:`Slimme stekkers`,spoolman:`Spoolman`,updates:`Updates`,language:`Taal`,languageDescription:`Selecteer je voorkeurstaal`,theme:`Thema`,themeLight:`Licht`,themeDark:`Donker`,themeSystem:`Systeem`,defaultView:`Standaardweergave`,defaultViewDescription:`Pagina die wordt getoond bij het openen van de app`,checkForUpdates:`Controleren op updates`,autoUpdate:`Automatisch bijwerken`,currentVersion:`Huidige versie`,latestVersion:`Nieuwste versie`,upToDate:`Je bent up-to-date`,updateAvailable:`Update beschikbaar`,notificationLanguage:`Taal voor meldingen`,notificationLanguageDescription:`Taal voor pushmeldingen`,bedCooledThreshold:`Drempel voor afgekoeld bed`,bedCooledThresholdDescription:`Temperatuur waaronder het bed na een afdruk als afgekoeld wordt beschouwd`,userNotificationsEnabled:`Gebruikersmeldingen`,userNotificationsEnabledDescription:`Schakel het gebruikersmeldingenmenu en e-mailmeldingen voor afdrukgebeurtenissen in. Vereist Geavanceerde authenticatie.`,userNotificationsDisabledHint:`Schakel Geavanceerde authenticatie in om gebruikersmeldingen te gebruiken.`,notificationProviders:`Meldingsproviders`,addProvider:`Provider toevoegen`,editProvider:`Provider bewerken`,providerType:`Providertype`,testNotification:`Testmelding`,testSuccess:`Testmelding succesvol verzonden`,testFailed:`Testmelding verzenden mislukt`,quietHours:`Stille uren`,quietHoursDescription:`Niet storen tijdens deze uren`,quietHoursStart:`Start`,quietHoursEnd:`Einde`,events:{title:`Meldingsgebeurtenissen`,printStart:`Afdruk gestart`,printComplete:`Afdruk voltooid`,printFailed:`Afdruk mislukt`,printStopped:`Afdruk gestopt`,printProgress:`Voortgangsmijlpalen`,printProgressDescription:`Melden bij 25%, 50%, 75%`,printerOffline:`Printer offline`,printerError:`Printerfout`,filamentLow:`Weinig filament`,maintenanceDue:`Onderhoud nodig`,maintenanceDueDescription:`Melden wanneer onderhoud nodig is`},smartPlug:{title:`Slimme stekkers`,add:`Slimme stekker toevoegen`,edit:`Slimme stekker bewerken`,name:`Naam`,ipAddress:`IP-adres`,linkedPrinter:`Gekoppelde printer`,autoOn:`Automatisch inschakelen`,autoOnDescription:`Inschakelen wanneer afdruk start`,autoOff:`Automatisch uitschakelen`,autoOffDescription:`Uitschakelen nadat afdruk is voltooid`,offDelay:`Uitschakelvertraging`,offDelayMinutes:`Minuten na afdruk`,offDelayTemp:`Wanneer nozzle onder temperatuur is`,currentState:`Huidige status`,turnOn:`Inschakelen`,turnOff:`Uitschakelen`},filamentTracking:`Filamenttracking`,filamentTrackingDesc:`Kies hoe je filamentspoelen wilt bijhouden. Je kunt de ingebouwde voorraad gebruiken of een externe Spoolman-server koppelen.`,autoAddUnknownRfid:`Onbekende RFID-spoelen automatisch toevoegen`,autoAddUnknownRfidDesc:`Maak automatisch een voorraaditem wanneer een spoel met een onbekende RFID-tag wordt gedetecteerd. Schakel dit uit als je nieuwe spoelen handmatig vooraf registreert om duplicaten te voorkomen.`,filamentChecks:`Filamentcontroles`,disableFilamentWarnings:`Filamentwaarschuwingen uitschakelen`,disableFilamentWarningsDesc:`Geen waarschuwingen tonen over onvoldoende filament bij afdrukken of in wachtrij plaatsen`,preferLowestFilament:`Voorkeur voor laagste resterende hoeveelheid filament`,preferLowestFilamentDesc:`Als meerdere spoelen overeenkomen, gebruik dan de spoel met de minste resterende hoeveelheid filament`,preferLowestFilamentBackupNote:`Dit werkt alleen wanneer AMS Filament Backup op de printer is ingeschakeld — anders kan de printer niet overschakelen naar een tweede spoel wanneer de gekozen spoel leeg raakt.`,trackingModeBuiltIn:`Ingebouwde voorraad`,trackingModeBuiltInDesc:`Automatische RFID-koppeling en verbruikstracking inbegrepen`,trackingModeSpoolmanDesc:`Externe filamentbeheerserver`,builtInFeatureRfid:`Detecteert automatisch Bambu Lab RFID-spoelen in AMS`,builtInFeatureUsage:`Houdt filamentverbruik per afdruk bij`,builtInFeatureCatalog:`Spoelen, kleuren en K-factorprofielen beheren`,builtInFeatureThirdParty:`Spoelen van derden kunnen aan voorraadspoelen worden toegewezen`,amsSyncButton:`Gewichten synchroniseren vanuit AMS`,amsSyncTitle:`Spoelgewichten synchroniseren vanuit AMS`,amsSyncMessage:`Hiermee worden alle gewichten van voorraadspoelen overschreven met de huidige AMS remain%-waarden van verbonden printers. Gebruik dit om beschadigde gewichtsgegevens te herstellen. Printers moeten online zijn.`,amsSyncing:`Synchroniseren...`,amsSyncSuccess:`{{synced}} spoel(en) gesynchroniseerd, {{skipped}} overgeslagen`,amsSyncError:`Gewichten synchroniseren vanuit AMS mislukt`,spoolmanAmsSyncButton:`Spoolman-gewichten synchroniseren vanuit AMS`,spoolmanAmsSyncTitle:`Spoolman-spoelgewichten synchroniseren vanuit AMS`,spoolmanAmsSyncMessage:`Hiermee worden alle Spoolman-spoelgewichten bijgewerkt op basis van de huidige AMS remain%-waarden van verbonden printers. Printers moeten online zijn.`,spoolmanAmsSyncing:`Synchroniseren...`,spoolmanAmsSyncSuccess:`{{synced}} spoel(en) gesynchroniseerd, {{skipped}} overgeslagen`,spoolmanAmsSyncError:`Spoolman-gewichten synchroniseren vanuit AMS mislukt`,spoolmanAmsSyncErrorUnreachable:`Spoolman-gewichten synchroniseren mislukt (Spoolman niet bereikbaar)`,spoolmanAmsSyncErrorNotConfigured:`Spoolman-gewichten synchroniseren mislukt (Spoolman niet geconfigureerd)`,spoolmanNotConfigured:`Spoolman niet geconfigureerd`,spoolmanFilamentCatalogTitle:`Spoolman-filamentcatalogus`,spoolmanFilamentCatalogDesc:`Filamentnamen en taragewichten uit je Spoolman-instantie. Naam en spoelgewicht zijn hier bewerkbaar; alle andere eigenschappen worden rechtstreeks in Spoolman beheerd.`,spoolmanUrl:`Spoolman-URL`,spoolmanUrlHint:`URL van je Spoolman-server (bijv. http://localhost:7912)`,spoolmanConnected:`Verbonden`,spoolmanDisconnected:`Niet verbonden`,status:`Status`,connect:`Verbinden`,disconnect:`Verbinding verbreken`,howSyncWorks:`Hoe synchronisatie werkt`,syncInfoRfidOnly:`Alleen officiële Bambu Lab-spoelen met RFID worden gesynchroniseerd`,syncInfoAutoCreate:`Nieuwe spoelen worden bij de eerste synchronisatie automatisch in Spoolman aangemaakt`,syncInfoThirdPartySkipped:`Niet-Bambu Lab-spoelen (derden, hervuld) worden overgeslagen`,linkingExistingSpools:`Bestaande spoelen koppelen`,linkingExistingSpoolsDesc:`Om bestaande Spoolman-spoelen aan je AMS te koppelen, beweeg je over een AMS-sleuf en klik je op "Koppelen aan Spoolman".`,syncMode:`Synchronisatiemodus`,syncModeAuto:`Automatisch`,syncModeManual:`Alleen handmatig`,syncModeAutoDesc:`AMS-gegevens worden automatisch gesynchroniseerd wanneer wijzigingen worden gedetecteerd`,syncModeManualDesc:`Alleen synchroniseren wanneer handmatig gestart`,syncAmsData:`AMS-gegevens synchroniseren`,syncAmsDataDesc:`Printer-AMS-gegevens handmatig synchroniseren met Spoolman`,allPrinters:`Alle printers`,noDefaultPrinter:`Geen standaard (elke keer vragen)`,sidebarOrder:`Volgorde zijbalk`,saveThumbnails:`Miniaturen opslaan`,captureFinishPhoto:`Eindfoto vastleggen`,noPrintersConfigured:`Geen printers geconfigureerd`,archiveMode:{always:`Altijd archiefitem maken`,never:`Nooit archiefitem maken`,ask:`Elke keer vragen`},checkForUpdatesLabel:`Controleren op updates`,checkPrinterFirmware:`Printerfirmware controleren`,includeBetaUpdates:`Bètaversies opnemen`,includeBetaUpdatesDesc:`Melden over bèta- en prereleaseversies bij controle op updates`,localLogin:{disable:`Lokale login met gebruikersnaam/wachtwoord uitschakelen`,disableHint:`Wanneer ingeschakeld kunnen alleen SSO-providers inloggen. LDAP blijft onaangetast. Stel BAMBUDDY_LOCAL_LOGIN=true in op de server om een herstelmogelijkheid te behouden.`},enableRetry:`Opnieuw proberen inschakelen`,homeAssistantDescription:`Slimme stekkers bedienen via Home Assistant`,environmentManagedLabel:`(Omgevingsvariabele beheerd)`,autoEnabledViaEnv:`Automatisch ingeschakeld via omgevingsvariabelen`,urlFromEnvReadOnly:`Waarde ingesteld door omgevingsvariabele HA_URL (alleen-lezen)`,tokenFromEnvReadOnly:`Waarde ingesteld door omgevingsvariabele HA_TOKEN (alleen-lezen)`,mqttConnectedTo:`Verbonden met`,prometheusDescription:`Printergegevens beschikbaar stellen in Prometheus-formaat`,noSmartPlugsTitle:`Geen slimme stekkers geconfigureerd`,noSmartPlugsDescription:`Voeg een slimme stekker op basis van Tasmota toe om energieverbruik te volgen en stroomregeling te automatiseren.`,noProvidersTitle:`Geen providers geconfigureerd`,noProvidersDescription:`Voeg een provider toe om waarschuwingen te ontvangen.`,noTemplatesAvailable:`Geen sjablonen beschikbaar. Start de backend opnieuw om standaardsjablonen aan te maken.`,apiPermissionView:`Printerstatus en wachtrij bekijken`,apiPermissionEdit:`Items toevoegen aan en verwijderen uit de afdrukwachtrij`,apiKeysEmptyTitle:`Geen API-sleutels`,apiKeysEmptyDescription:`Maak een API-sleutel om te integreren met externe services.`,noUsersFound:`Geen gebruikers gevonden`,noGroupsFound:`Geen groepen gevonden`,noGroupsAvailable:`Geen groepen beschikbaar`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,systemGroupWarning:`Namen van systeemgroepen kunnen niet worden gewijzigd`,authDisabledTitle:`Authenticatie is uitgeschakeld`,authDisabledFeature1:`Login vereisen voor toegang tot het systeem`,authDisabledFeature2:`Meerdere gebruikers maken met groepsgebaseerde machtigingen`,authDisabledFeature3:`Toegang regelen met meer dan 50 gedetailleerde machtigingen`,userHasCreated:`Deze gebruiker heeft gemaakt:`,userItemsQuestion:`Wat wil je met deze items doen?`,deleteUserConfirm:`Weet je zeker dat je deze gebruiker wilt verwijderen?`,actionCannotBeUndone:`Deze actie kan niet ongedaan worden gemaakt.`,addFirstSmartPlug:`Je eerste slimme stekker toevoegen`,providers:`Providers`,log:`Logboek`,testAll:`Alles testen`,testResults:`Testresultaten`,testPassedCount:`{{count}} geslaagd`,testFailedCount:`{{count}} mislukt`,messageTemplates:`Berichtsjablonen`,messageTemplatesDescription:`Meldingsberichten voor elke gebeurtenis aanpassen.`,apiKeys:`API-sleutels`,apiKeysDescription:`API-sleutels maken voor externe integraties en webhooks.`,createKey:`Sleutel maken`,apiKeyCreated:`API-sleutel succesvol gemaakt`,apiKeyCopyWarning:`Kopieer deze sleutel nu - hij wordt niet opnieuw getoond!`,useInApiBrowser:`Gebruiken in API-browser`,apiKeyQrButton:`QR-code`,apiKeyQrTitle:`Scannen om te configureren`,apiKeyQrCaption:`Scan met je mobiele app om deze server en API-sleutel toe te voegen.`,apiKeyQrWarning:`Bevat je geheime API-sleutel — deel deze niet en maak geen screenshot waar anderen hem kunnen zien.`,createNewApiKey:`Nieuwe API-sleutel maken`,keyName:`Sleutelnaam`,keyNamePlaceholder:`bijv. Home Assistant, OctoPrint`,readStatus:`Status lezen`,readStatusDescription:`Printerstatus, wachtrij, bibliotheek, archieven en slicerpipelines bekijken`,manageQueue:`Wachtrij beheren`,manageQueueDescription:`Items toevoegen aan en verwijderen uit de afdrukwachtrij. Met Bibliotheek beheren kun je slicerpipelines uitvoeren`,controlPrinter:`Printer bedienen`,controlPrinterDescription:`Afdrukken pauzeren, hervatten en stoppen`,manageLibrary:`Bibliotheek beheren`,manageLibraryDescription:`Bibliotheekbestanden uploaden, hernoemen, verwijderen en slicen; modellen importeren uit MakerWorld. Met Wachtrij beheren kun je slicerpipelines uitvoeren`,manageInventory:`Voorraad beheren`,manageInventoryDescription:`Spoelen en voorraadrecords maken, bijwerken en verwijderen. Vereist voor SpoolBuddy-kiosken (NFC-scan, weegschaalmetingen, kiosksysteemopdrachten).`,manageMaintenance:`Onderhoud beheren`,manageMaintenanceDescription:`Voltooid onderhoud registreren, tellers resetten, intervallen bewerken en de catalogus met onderhoudstypen beheren. Geschikt voor Home Assistant-automatiseringen die bijvoorbeeld registreren "Ik heb de nozzle gereinigd" zonder bredere printerbediening toe te staan.`,manageArchives:`Archieven beheren`,manageArchivesDescription:`Afdrukarchieven bewerken en verwijderen, inclusief oude afdrukken en hun bijdrage aan statistieken. Geschikt voor automatiseringen die de afdrukgeschiedenis opschonen.`,manageProjects:`Projecten beheren`,manageProjectsDescription:`Projecten maken, bijwerken en verwijderen en archieven eraan toevoegen. Geschikt voor automatiseringen die afdrukken in projecten organiseren.`,libraryBadge:`Bibliotheek`,inventoryBadge:`Voorraad`,maintenanceBadge:`Onderhoud`,archivesBadge:`Archieven`,projectsBadge:`Projecten`,cloudAccess:`Cloudtoegang toestaan`,cloudAccessDescription:`Bambu Cloud-presets en filamenten namens jou lezen. Vereist dat je bent ingelogd bij Bambu Cloud.`,cloudBadge:`Cloud`,updateEnergyCost:`Elektriciteitsprijs bijwerken`,updateEnergyCostDescription:`Sta toe dat deze sleutel via POST een nieuwe elektriciteitsprijs per kWh naar /settings/electricity-price stuurt. Handig voor Home Assistant-automatiseringen met dynamische tarieven (Tibber, Octopus, enz.). Dit is het enige instellingenveld dat via een API-sleutel schrijfbaar is.`,energyCostBadge:`Energie`,legacyKey:`Verouderd`,legacyKeyTooltip:`Aangemaakt vóór eigendom per gebruiker; maak opnieuw om cloudtoegang te gebruiken`,unnamedKey:`Naamloze sleutel`,lastUsed:`Laatst gebruikt`,read:`Lezen`,control:`Bedienen`,createFirstKey:`Je eerste sleutel maken`,webhookEndpoints:`Webhook-eindpunten`,webhookApiKeyHint:`Gebruik je API-sleutel in de X-API-Key-header.`,webhook:{getAllStatus:`Status van alle printers ophalen`,getSpecificStatus:`Status van specifieke printer ophalen`,addToQueue:`Toevoegen aan afdrukwachtrij`,pausePrint:`Afdruk pauzeren`,resumePrint:`Afdruk hervatten`,stopPrint:`Afdruk stoppen`},apiBrowser:`API-browser`,apiBrowserDescription:`Alle beschikbare API-eindpunten verkennen en testen.`,apiKeyForTesting:`API-sleutel voor testen`,apiKeyPlaceholder:`Plak hier je API-sleutel om geauthenticeerde eindpunten te testen...`,apiKeyHint:`Deze sleutel wordt als X-API-Key-header met verzoeken meegestuurd.`,deleteApiKeyTitle:`API-sleutel verwijderen`,deleteApiKeyMessage:`Weet je zeker dat je deze API-sleutel wilt verwijderen? Integraties die deze sleutel gebruiken stoppen dan met werken.`,deleteKey:`Sleutel verwijderen`,amsDisplayThresholds:`AMS-weergavedrempels`,amsThresholdsDescription:`Kleurdrempels voor AMS-indicatoren voor luchtvochtigheid en temperatuur configureren.`,humidity:`Luchtvochtigheid`,goodGreen:`Goed (groen)`,fairOrange:`Redelijk (oranje)`,aboveFairBad:`Boven de redelijke drempel wordt rood (slecht) weergegeven`,fairAlsoDryingThreshold:`Deze drempel wordt ook gebruikt om automatisch drogen te starten wanneer dit is ingeschakeld`,fairBelowDryingFloor:`Automatisch drogen kan deze waarde niet bereiken: een AMS leest {{floor}}% of hoger terwijl de verwarming draait, waardoor elke cyclus direct zou eindigen en opnieuw starten. Verhoog dit tot boven {{floor}}% als automatisch drogen is ingeschakeld.`,temperature:`Temperatuur`,goodBlue:`Goed (blauw)`,aboveFairHot:`Boven de redelijke drempel wordt rood (heet) weergegeven`,tempAlarmThreshold:`Alarm boven`,tempAlarmSeparateFromBand:`Alleen de alarmdrempel verstuurt meldingen — Goed en Redelijk kleuren de weergave. Laat het leeg om te alarmeren bij de drempel Redelijk, zoals voorheen.`,tempAlarmMustBePositive:`Een drempel van 0 of lager wordt genegeerd — het alarm valt terug op de drempel Redelijk.`,historyRetention:`Bewaartermijn geschiedenis`,keepSensorHistory:`Sensorgeschiedenis bewaren gedurende`,historyRetentionDescription:`Oudere gegevens over luchtvochtigheid en temperatuur worden automatisch verwijderd`,defaultPrintOptions:`Standaard afdrukopties`,defaultPrintOptionsDescription:`Stel standaardwaarden in voor afdrukopties bij het starten van nieuwe afdrukken. Deze kunnen per afdruk in het afdrukdialoogvenster worden overschreven.`,defaultBedLevelling:`Bednivellering`,defaultBedLevellingDesc:`Bed automatisch nivelleren voor afdruk`,defaultFlowCali:`Flowkalibratie`,defaultFlowCaliDesc:`Extrusieflow kalibreren`,defaultVibrationCali:`Trillingskalibratie`,defaultVibrationCaliDesc:`Ringing-artefacten verminderen`,defaultLayerInspect:`Inspectie eerste laag`,defaultLayerInspectDesc:`AI-inspectie van de eerste laag`,defaultTimelapse:`Timelapse`,defaultTimelapseDesc:`Timelapsevideo opnemen`,defaultNozzleOffsetCali:`Nozzle-offsetkalibratie`,defaultNozzleOffsetCaliDesc:`Nozzle-offsets tussen extruders kalibreren`,tempFanPresetsTitle:`Voorinstellingen temperatuur en ventilator`,tempFanPresetsDescription:`Pas de snelkeuzewaarden aan die worden weergegeven in pop-overs voor temperatuur en ventilatorsnelheid op printerkaarten. De knop Uit wordt altijd weergegeven.`,tempFanPresetsNozzle:`Nozzletemperatuur`,tempFanPresetsBed:`Bedtemperatuur`,tempFanPresetsChamber:`Kamertemperatuur`,tempFanPresetsFan:`Ventilatorsnelheid`,tempFanPresetsReset:`Standaardwaarden herstellen`,concurrentUploadsTitle:`Gelijktijdige uploads`,concurrentUploadsDescription:`Hoeveel printers de wachtrij tegelijk bestanden mag sturen. Printers ontvangen bestanden langzaam (een grote afdruk kan enkele minuten duren) en elke printer wacht op zijn beurt — bij een groter printerpark voorkomt een hogere waarde dat de laatste printer in een batch op alle eerdere overdrachten moet wachten. Verlaag dit als je netwerk of Bambuddy-host moeite heeft met parallelle overdrachten.`,concurrentUploadsLabel:`Printers tegelijk uploaden`,concurrentUploadsHelp:`1 verstuurt naar één printer tegelijk (het oude gedrag). Standaard is 4.`,staggeredStart:`Gespreide start`,staggeredStartDescription:`Standaard groepsgrootte en interval bij gespreid starten van batches over meerdere printers. Kan per batch in het afdrukvenster worden overschreven.`,preheatTitle:`Voorverwarmen en warmtestabilisatie`,preheatDescription:`Verwarm het bed (en de kamer, indien ondersteund) en houd de temperatuur vast voordat elke afdruk uit de wachtrij start. Handig voor technische filamenten (PA, ABS) op printers zonder actieve kamerverwarming — het bed verwarmt de kamer via straling terwijl de stabilisatietimer loopt. Het beddoel wordt uit het afdrukbestand gelezen; kamerwerking hangt af van het printermodel.`,preheatEnabled:`Voorverwarmen en stabiliseren inschakelen`,preheatEnabledDesc:`Wanneer uitgeschakeld worden afdrukken uit de wachtrij direct verzonden. Elk wachtrij-item kan dit per afdruk overschrijven.`,preheatFilamentTargetsLabel:`Kamerdoel per filament (°C)`,preheatFilamentTargetsHint:`Bambuddy kiest het hoogste doel van de geladen AMS-sleuven; afdrukken met alleen PLA krijgen 0 en slaan de kamerfase automatisch over.`,preheatFilamentTargetsReset:`Standaardwaarden herstellen`,preheatFilamentTargetsDefaultRow:`Overig / niet gekoppeld`,preheatMaxWait:`Max. wachttijd (seconden)`,preheatMaxWaitHelp:`Maximale duur van de opwarmfase van de kamer voordat wordt doorgegaan.`,preheatSoak:`Stabiliseren (seconden)`,preheatSoakHelp:`Wachttijd nadat het doel is bereikt of de maximale wachttijd is verstreken.`,preheatHardwareTitle:`Gedrag per printer:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E verwarmen de kamer actief via M141. X1C/P2S lezen de kamertemperatuur maar vertrouwen op stralingswarmte van het bed. P1S/P1P/A1/A1 Mini hebben geen kamersensor — alleen de stabilisatietimer is van toepassing.`,preheatPerItemDesc:`Verwarm bed en kamer voordat deze afdruk start. Standaard wordt de globale schakelaar Instellingen → Workflow gebruikt.`,preheatOverride_inherit:`Overnemen`,preheatOverride_on:`Aan`,preheatOverride_off:`Uit`,calibrationMode_off:`Uit`,calibrationMode_on:`Aan`,calibrationMode_auto:`Auto`,preheatTargetOverride:`Kamerdoel overschrijven (°C, leeg = filamentstandaard)`,plateClear:`Bevestiging plaat vrij`,requirePlateClear:`Bevestiging vereisen dat plaat vrij is`,requirePlateClearDescription:`Wanneer ingeschakeld wacht de scheduler op een bevestiging per printer dat de plaat vrij is voordat afdrukken uit de wachtrij starten op printers met voltooide taken. Als je dit uitschakelt, worden ook de plaatstatusbadge en de knop "Plaat als leeg markeren" op printerkaarten verborgen.`,keepBedWarm:`Bed warm houden tussen afdrukken`,keepBedWarmDesc:`Tijdens het wachten op het vrijgeven van de plaat wordt het bed op de onderstaande warmhoudtemperatuur gehouden zodat de kamer warm blijft — of op de eigen bedtemperatuur van de volgende afdruk als die hoger is. Alleen van toepassing wanneer de volgende afdruk kamerverwarming nodig heeft (ASA, ABS, PA, PC enz.). Vereist dat bevestiging plaat vrij is ingeschakeld.`,keepWarmBedTemp:`Warmhoudtemperatuur bed (°C)`,keepWarmBedTempHelp:`Wordt gebruikt wanneer het bed de kamer moet verwarmen — tijdens warmhouden en bij voorverwarmen wanneer het afdrukbestand geen bedtemperatuur bevat. Een hogere bedtemperatuur uit het afdrukbestand heeft altijd voorrang.`,keepWarmMaxMinutes:`Warmhouden stoppen na (minuten)`,keepWarmMaxMinutesHelp:`Als de plaat binnen deze tijd niet is vrijgegeven, worden de verwarmingselementen uitgeschakeld in plaats van onbeperkt warm gehouden.`,gcodeInjection:`G-code-injectie`,gcodeInjectionDescription:`Configureer aangepaste G-code die aan het begin en/of einde van afdrukken wordt ingevoegd voor automatische afdruksystemen zoals Farmloop, SwapMod, AutoClear en Printflow 3D. Fragmenten worden per printermodel ingesteld en toegepast wanneer "G-code injecteren" is ingeschakeld op een wachtrij-item.`,gcodeInjectionNoPrinters:`Geen printers gevonden. Voeg printers toe om G-codefragmenten te configureren.`,gcodeStartLabel:`Start-G-code`,gcodeEndLabel:`Eind-G-code`,gcodeStartPlaceholder:`G-code die vóór de start van de afdruk wordt toegevoegd...`,gcodeEndPlaceholder:`G-code die na afloop van de afdruk wordt toegevoegd...`,staggerGroupSize:`Groepsgrootte`,staggerGroupSizeHelp:`Aantal printers dat per groep gelijktijdig start`,staggerInterval:`Interval (minuten)`,staggerIntervalHelp:`Vertraging tussen het starten van elke groep`,queueDrying:`Automatisch drogen in wachtrij`,queueDryingDescription:`Droog AMS-filament automatisch wanneer de printer tussen afdrukken in de wachtrij inactief is. Gebruikt de bovenstaande luchtvochtigheidsdrempel om het drogen te starten.`,queueDryingEnabled:`Automatisch drogen inschakelen`,queueDryingEnabledDescription:`Start AMS-drogen automatisch wanneer de printer inactief is en de luchtvochtigheid boven de drempel ligt`,queueDryingBlock:`Wachten tot drogen is voltooid`,queueDryingBlockDescription:`Blokkeer de afdrukwachtrij tot het drogen is voltooid. Wanneer uitgeschakeld hebben afdrukken voorrang op drogen.`,ambientDryingEnabled:`Drogen zonder wachtrij`,ambientDryingEnabledDescription:`Droog filament automatisch op inactieve printers wanneer de luchtvochtigheid boven de drempel komt, ook zonder afdrukken in de wachtrij.`,printDryingEnabled:`Doorgaan met drogen tijdens afdrukken`,printDryingEnabledDescription:`Sta toe dat automatisch drogen tijdens een afdruk blijft draaien op ondersteunde hardware (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L met recente firmware). De droogtemperatuur wordt automatisch begrensd op 5°C onder de inactieve preset om spoelen te beschermen.`,dryingPresets:`Droogpresets`,dryingPresetsDescription:`Temperatuur en duur per filamenttype. AMS 2 Pro gebruikt lagere temperaturen, AMS-HT ondersteunt hogere temperaturen.`,dryingFilament:`Filament`,humidityThresholds:`Luchtvochtigheidsdrempels`,humidityThresholdsDescription:`Luchtvochtigheidsdrempel per filament voor automatisch drogen en alarmen. Bij gemengde lading in één AMS wordt de laagste drempel gebruikt.`,humidityThresholdCol:`Drempel`,humidityThresholdDefault:`Standaard (onbekende typen)`,printModal:`Afdrukvenster`,expandCustomMapping:`Aangepaste toewijzing standaard uitklappen`,expandCustomMappingDescription:`Bij afdrukken naar meerdere printers de AMS-toewijzing per printer uitgeklapt tonen`,authentication:`Authenticatie`,authEnabledDescription:`Je instantie is beveiligd met gebruikersauthenticatie`,authDisabledDescription:`Schakel in om inloggen te vereisen en gebruikerstoegang te beheren`,authDisabledMessage:`Schakel authenticatie in om gebruikersaccounts te maken, machtigingen te beheren en je Bambuddy-instantie te beveiligen.`,enableAuthentication:`Authenticatie inschakelen`,currentUser:`Huidige gebruiker`,changePassword:`Wachtwoord wijzigen`,admin:`Beheerder`,users:`Gebruikers`,addUser:`Gebruiker toevoegen`,groups:`Groepen`,addGroup:`Groep toevoegen`,system:`Systeem`,noDescription:`Geen beschrijving`,userCount:`{{count}} gebruikers`,permissionCount:`{{count}} machtigingen`,createUser:`Gebruiker maken`,username:`Gebruikersnaam`,enterUsername:`Voer gebruikersnaam in`,password:`Wachtwoord`,enterPassword:`Voer wachtwoord in`,passwordRequirements:`Minstens 8 tekens, met één hoofdletter, één kleine letter, één cijfer en één speciaal teken.`,confirmPassword:`Wachtwoord bevestigen`,confirmPasswordPlaceholder:`Bevestig wachtwoord`,viewReleaseOnGitHub:`Release bekijken op GitHub`,turnAllPlugsOn:`Alle stekkers inschakelen`,turnAllPlugsOff:`Alle stekkers uitschakelen`,clearNotificationLogs:`Meldingslogboeken wissen`,clearLogsMessage:`Hiermee worden alle meldingslogboeken ouder dan 30 dagen permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt.`,clearLogs:`Logboeken wissen`,resetUiPreferences:`UI-voorkeuren resetten`,resetUiPreferencesMessage:`Hiermee worden alle UI-voorkeuren teruggezet naar de standaardwaarden: volgorde zijbalk, thema, dashboardindeling, weergavemodi en sorteervoorkeuren. Je printers, archieven en serverinstellingen worden NIET beïnvloed. De pagina wordt na het wissen opnieuw geladen.`,resetPreferences:`Voorkeuren resetten`,deleteGroupTitle:`Groep verwijderen`,deleteGroupMessage:`Weet je zeker dat je deze groep wilt verwijderen? Gebruikers in deze groep verliezen deze machtigingen.`,deleteGroup:`Groep verwijderen`,disableAuthenticationTitle:`Authenticatie uitschakelen`,disableAuthenticationMessage:`Weet je zeker dat je authenticatie wilt uitschakelen? Hierdoor wordt je Bambuddy-instantie toegankelijk zonder login. Alle gebruikers blijven in de database, maar authenticatie wordt uitgeschakeld.`,disableAuthentication:`Authenticatie uitschakelen`,configureBambuddy:`Bambuddy configureren`,systemDefault:`Systeemstandaard`,archiveSettings:`Archiefinstellingen`,newWindow:`Nieuw venster`,embeddedOverlay:`Ingebedde overlay`,preferredSlicer:`Voorkeursslicer`,preferredSlicerDescription:`Slicer die wordt gebruikt voor slicen in de app via de API-sidecar`,openInSlicerLabel:`Openen in slicer`,openInSlicerInherit:`Zelfde als API-slicer`,openInSlicerDescription:`Desktop-slicer die wordt gebruikt door de knop 'Openen in slicer'. Laat op 'Zelfde als API-slicer' staan om deze over te nemen, of kies een andere slicer voor lokaal gebruik.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev heeft bekende CLI-bugs die het slicen van veel door Bambu gemaakte 3MF's blokkeren — zie upstream issues #12426 (segfault bij gekleurde multi-extruderbestanden) en #13386 (afwijzing door strikte validatie van parameterbereik). Bambu Studio wordt aanbevolen tot de upstream fixes beschikbaar zijn.`,useSlicerApi:`Slicer-API gebruiken`,useSlicerApiDescription:`Wanneer ingeschakeld openen acties "Slicen" het slicervenster in de app en roepen ze de slicer-API-sidecar aan. Wanneer uitgeschakeld (standaard) worden ze via een URI-schema aan de desktopslicer doorgegeven.`,slicerCard:`Slicer`,orcaslicerApiUrl:`OrcaSlicer-sidecar-URL`,bambuStudioApiUrl:`Bambu Studio-sidecar-URL`,slicerStallTimeout:`Time-out slicerstagnatie (minuten)`,slicerStallTimeoutDescription:`Stop een slice na deze tijd als er geen voortgang van de sidecar is. Zware modellen die voortgang blijven melden worden nooit afgebroken, hoe lang ze ook duren. Sidecars die geen voortgang melden gebruiken dit in plaats daarvan als totale tijdslimiet.`,slicerApiUrlDescription:`URL van de slicer-API-sidecarcontainer. Laat leeg om de standaardwaarden van de omgevingsvariabelen SLICER_API_URL / BAMBU_STUDIO_API_URL te gebruiken.`,externalCameras:`Externe camera's`,costTracking:`Kostentracking`,billingEnabled:`Facturering inschakelen`,billingEnabledDescription:`Gebruikers kosten voor afdrukken in rekening brengen en financiële functies inschakelen`,printerKillSwitch:`Noodstop ongeautoriseerde afdruk`,printerKillSwitchDescription:`Stop afdrukken direct wanneer ze zonder autorisatie starten.`,financeBudgetReset:`Maandelijkse reset financieel budget`,financeBudgetResetDay:`Resetdag`,financeBudgetResetDayHelp:`Voor korte maanden wordt op de laatste dag van de maand gereset.`,financeBudgetResetTimezone:`Tijdzone voor reset`,financeBudgetResetTimezoneHelp:`Start van budgetperiode wordt in deze tijdzone berekend.")`,rebuildLedger:`Portemonnee-grootboek opnieuw opbouwen`,rebuildLedgerStarted:`Opnieuw opbouwen van grootboek gestart`,rebuildLedgerConfirmTitle:`Portemonnee-grootboek opnieuw opbouwen?`,rebuildLedgerConfirmMessage:`Hiermee wordt het portemonnee-grootboek opnieuw opgebouwd om historische saldowaarden te herstellen. Voer dit alleen uit als je weet wat je doet.`,rebuildLedgerInProgress:`Opnieuw opbouwen starten...`,printsOnly:`Alleen afdrukken`,totalConsumption:`Totaal verbruik`,dataManagement:`Gegevensbeheer`,storageUsage:`Opslaggebruik`,storageUsageDescription:`Verdeling van gegevensgebruik per categorie`,storageUsageTotal:`Totaal`,storageUsageErrors:`Fouten`,storageUsageOtherBreakdown:`Overig (inclusief statische assets, scripts en configuratiebestanden)`,storageUsageSystem:`Systeem`,storageUsageData:`Gegevens`,storageUsageUnavailable:`Informatie over opslaggebruik niet beschikbaar`,clearNotificationLogsDescription:`Meldingslogboeken ouder dan 30 dagen verwijderen`,resetUiPreferencesDescription:`Reset volgorde zijbalk, thema, weergavemodi en indelingsvoorkeuren. Printers, archieven en instellingen worden niet beïnvloed.`,enableHomeAssistant:`Home Assistant inschakelen`,enableMqtt:`MQTT inschakelen`,useTls:`TLS gebruiken`,enableMetricsEndpoint:`Metrics-eindpunt inschakelen`,availableMetrics:`Beschikbare metrics`,editUser:`Gebruiker bewerken`,deleteUserTitle:`Gebruiker verwijderen`,groupName:`Groepsnaam`,leaveEmptyForAnonymous:`Laat leeg voor anoniem`,leaveEmptyForNoAuth:`Laat leeg voor geen authenticatie`,enterNewPassword:`Voer nieuw wachtwoord in`,confirmNewPassword:`Bevestig nieuw wachtwoord`,enterGroupName:`Voer groepsnaam in`,enterDescriptionOptional:`Voer beschrijving in (optioneel)`,enterCurrentPassword:`Voer huidig wachtwoord in`,enterNewPasswordMin6:`Voer nieuw wachtwoord in (min. 6 tekens)`,toast:{keyCopied:`Sleutel naar klembord gekopieerd`,copyFailed:`Sleutel kopiëren mislukt`,keyAddedToBrowser:`Sleutel toegevoegd aan API-browser`,clearLogsFailed:`Logboeken wissen mislukt`,uiPreferencesReset:`UI-voorkeuren gereset. Vernieuwen...`,authDisabled:`Authenticatie succesvol uitgeschakeld`,authDisableFailed:`Authenticatie uitschakelen mislukt`,apiKeyCreated:`API-sleutel gemaakt`,apiKeyDeleted:`API-sleutel verwijderd`,userCreated:`Gebruiker succesvol gemaakt`,userUpdated:`Gebruiker succesvol bijgewerkt`,userDeleted:`Gebruiker succesvol verwijderd`,groupCreated:`Groep succesvol gemaakt`,groupUpdated:`Groep succesvol bijgewerkt`,groupDeleted:`Groep succesvol verwijderd`,fillRequiredFields:`Vul alle verplichte velden in`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,passwordTooShort:`Wachtwoord moet minstens 8 tekens bevatten`,passwordNeedsUppercase:`Wachtwoord moet minstens één hoofdletter bevatten`,passwordNeedsLowercase:`Wachtwoord moet minstens één kleine letter bevatten`,passwordNeedsDigit:`Wachtwoord moet minstens één cijfer bevatten`,passwordNeedsSpecial:`Wachtwoord moet minstens één speciaal teken bevatten`,enterGroupName:`Voer een groepsnaam in`,settingsSaved:`Instellingen opgeslagen`,noPermissionUpdate:`Je hebt geen toestemming om instellingen te wijzigen`,cameraSettingsSaved:`Camera-instellingen opgeslagen`,enterCameraUrl:`Voer een camera-URL in`,passwordChanged:`Wachtwoord succesvol gewijzigd`,connectionFailed:`Verbinding mislukt`,testFailed:`Test mislukt`,cameraConnected:`Camera verbonden{{resolution}}`,cameraConnectedCoalesced:`Camera verbonden{{resolution}} (gedeeld met een opname die al draait)`},testConnection:`Verbinding testen`,catalog:{spoolCatalog:`Spoelcatalogus`,spoolCatalogDescription:`Lege spoelgewichten per merk/type. Gebruikt voor automatisch opzoeken van gewicht bij het toevoegen van spoelen.`,searchCatalog:`Catalogus zoeken...`,addNewEntry:`Nieuw item toevoegen`,namePlaceholder:`Naam (bijv. Bambu Lab - Plastic)`,weight:`Gewicht`,type:`Type`,default:`Standaard`,custom:`Aangepast`,noMatch:`Geen items komen overeen met je zoekopdracht`,empty:`Geen items in catalogus`,deleteEntry:`Item verwijderen`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen?`,resetCatalog:`Catalogus resetten`,resetConfirm:`Catalogus terugzetten naar standaardwaarden? Hiermee worden alle aangepaste items verwijderd.`,loadFailed:`Spoelcatalogus laden mislukt`,nameWeightRequired:`Naam en gewicht zijn verplicht`,entryAdded:`Item toegevoegd`,addFailed:`Item toevoegen mislukt`,entryUpdated:`Item bijgewerkt`,updateFailed:`Item bijwerken mislukt`,entryDeleted:`Item verwijderd`,deleteFailed:`Item verwijderen mislukt`,resetSuccess:`Catalogus teruggezet naar standaardwaarden`,resetFailed:`Catalogus resetten mislukt`,exported:`{{count}} items geëxporteerd`,imported:`{{added}} items geïmporteerd ({{skipped}} overgeslagen)`,importFailed:`Importeren mislukt: ongeldig JSON-formaat`,exportTooltip:`Catalogus exporteren naar JSON`,importTooltip:`Catalogus importeren uit JSON`,resetTooltip:`Standaardwaarden herstellen`,selectedCount:`{{count}} geselecteerd`,deleteSelected:`Geselecteerde verwijderen`,bulkDeleteConfirm:`Weet je zeker dat je {{count}} items wilt verwijderen?`,bulkDeleted:`{{count}} items verwijderd`,bulkDeleteFailed:`Items verwijderen mislukt`,material:`Materiaal`,spoolWeight:`Spoelgewicht`,color:`Kleur`,updateSpoolWeight:`Spoelgewicht bijwerken`,filamentUpdated:`Filament bijgewerkt`,filamentUpdateFailed:`Filament bijwerken mislukt`,filamentUpdateInvalid:`Ongeldige filamentgegevens`,keepExistingSpoolWeight:`Oud gewicht behouden voor bestaande spoelen`,keepExistingSpoolWeightDesc:`Spoelen die al met dit filamenttype zijn gemaakt behouden het oude taragewicht. Nieuwe spoelen gebruiken de bijgewerkte waarde.`,applyToAllSpools:`Toepassen op alle spoelen`,applyToAllSpoolsDesc:`Alle gewichtsberekeningen voor dit filamenttype gebruiken direct het nieuwe taragewicht.`},colorCatalog:{title:`Kleurcatalogus`,description:`Filamentkleuren per fabrikant/materiaal. Gebruikt voor automatisch opzoeken van kleur bij het toevoegen van spoelen.`,searchColors:`Kleuren zoeken...`,allManufacturers:`Alle fabrikanten`,addNewColor:`Nieuwe kleur toevoegen`,manufacturer:`Fabrikant`,colorName:`Kleurnaam`,hex:`Hex`,materialOptional:`Materiaal (optioneel)`,showing:`{{filtered}} van {{total}} kleuren weergegeven`,noMatch:`Geen kleuren komen overeen met je zoekopdracht`,empty:`Geen kleuren in catalogus`,deleteColor:`Kleur verwijderen`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen?`,resetCatalog:`Kleurcatalogus resetten`,resetConfirm:`Catalogus terugzetten naar standaardwaarden? Hiermee worden alle aangepaste kleuren verwijderd.`,sync:`Synchroniseren`,starting:`Starten...`,syncTooltip:`Synchroniseren vanaf FilamentColors.xyz (2000+ kleuren, kan een minuut duren)`,loadFailed:`Kleurcatalogus laden mislukt`,fieldsRequired:`Fabrikant, kleurnaam en hexkleur zijn verplicht`,colorAdded:`Kleur toegevoegd`,addFailed:`Kleur toevoegen mislukt`,colorUpdated:`Kleur bijgewerkt`,updateFailed:`Kleur bijwerken mislukt`,colorDeleted:`Kleur verwijderd`,deleteFailed:`Kleur verwijderen mislukt`,resetSuccess:`Kleurcatalogus teruggezet naar standaardwaarden`,resetFailed:`Catalogus resetten mislukt`,syncUpToDate:`Al up-to-date ({{count}} kleuren gecontroleerd)`,syncComplete:`{{added}} nieuwe kleuren toegevoegd ({{skipped}} bestonden al)`,syncError:`Synchronisatiefout`,syncFailed:`Synchroniseren vanaf FilamentColors.xyz mislukt`,exported:`{{count}} kleuren geëxporteerd`,imported:`{{added}} kleuren geïmporteerd ({{skipped}} overgeslagen)`,importFailed:`Importeren mislukt: ongeldig JSON-formaat`,selectedCount:`{{count}} geselecteerd`,deleteSelected:`Geselecteerde verwijderen`,bulkDeleteConfirm:`Weet je zeker dat je {{count}} kleuren wilt verwijderen?`,bulkDeleted:`{{count}} kleuren verwijderd`,bulkDeleteFailed:`Kleuren verwijderen mislukt`},dateFormat:`Datumnotatie`,dateFormatUs:`VS (MM/DD/JJJJ)`,dateFormatEu:`EU (DD/MM/JJJJ)`,dateFormatIso:`ISO (JJJJ-MM-DD)`,timeFormat:`Tijdnotatie`,timeFormat12:`12-uurs (3:30 PM)`,timeFormat24:`24-uurs (15:30)`,defaultPrinter:`Standaardprinter`,defaultPrinterDescription:`Selecteer deze printer vooraf voor uploads, opnieuw afdrukken en andere bewerkingen.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`Gebruik Zijbalk om items opnieuw te ordenen, zichtbaarheid te resetten en aangepaste links te beheren.`,setDefault:`Als standaard instellen`,sidebarOrderSetDefaultHint:`Als standaard instellen past de huidige menuvolgorde toe op gebruikers die hun menu nog niet hebben aangepast.`,sidebarDefaultSet:`Standaard menuvolgorde is ingesteld.`,sidebarDefaultCleared:`Standaard menuvolgorde is gewist.`,sidebarDefaultFailed:`Standaard menuvolgorde instellen mislukt.`,reset:`Resetten`,darkMode:`Donkere modus`,lightMode:`Lichte modus`,active:`(actief)`,background:`Achtergrond`,accent:`Accent`,style:`Stijl`,bgNeutral:`Neutraal`,bgWarm:`Warm`,bgCool:`Koel`,bgOled:`OLED-zwart`,bgSlate:`Leisteenblauw`,bgForest:`Bosgroen`,accentGreen:`Groen`,accentTeal:`Blauwgroen`,accentBlue:`Blauw`,accentOrange:`Oranje`,accentPurple:`Paars`,accentRed:`Rood`,styleClassic:`Klassiek`,styleGlow:`Gloed`,styleVibrant:`Levendig`,themeToggleHint:`Schakel met het pictogram in de zijbalk tussen donkere, lichte en systeemmodus.`,progressInTitle:`Afdrukvoortgang in tabblad`,progressInTitleDescription:`Toon het percentage van de actieve afdruk en een voortgangsring in het browsertabblad.`,autoArchivePrints:`Afdrukken automatisch archiveren`,autoArchiveDescription:`3MF-bestanden automatisch opslaan wanneer afdrukken zijn voltooid`,saveThumbnailsDescription:`Voorbeeldafbeeldingen uit 3MF-bestanden extraheren en opslaan`,captureFinishPhotoDescription:`Maak een foto met de printercamera wanneer de afdruk is voltooid. Bambuddy neemt tijdens de afdruk een korte timelapse op zodat de foto kan worden genomen van het moment voordat het bed zakt; het timelapsebestand blijft behouden als je timelapse voor deze afdruk hebt ingeschakeld, anders wordt het automatisch verwijderd nadat de foto is vastgelegd.`,finishPhotoRestorePlate:`Plaat herstellen voor eindfoto`,finishPhotoRestorePlateDescription:`De printer laat de bouwplaat ongeveer 100 mm zakken wanneer een afdruk eindigt, waardoor de voltooide afdruk onder het camerabeeld komt. Bambuddy brengt de plaat terug tot net boven de laatst geprinte laag, maakt de foto en laat hem daarna weer zakken. Wordt overgeslagen wanneer de afdrukhoogte onbekend is of er een andere taak in de wachtrij staat.`,ffmpegNotInstalled:`ffmpeg niet geïnstalleerd`,ffmpegRequired:`Camera-opname vereist ffmpeg. Installeer dit via brew install ffmpeg (macOS) of apt install ffmpeg (Linux).`,camera:`Camera`,cameraViewMode:`Cameraweergavemodus`,cameraOverlayDescription:`Camera opent in een schaalbare overlay op het hoofdscherm`,cameraWindowDescription:`Camera opent in een apart browservenster`,externalCamerasDescription:`Configureer externe camera's ter vervanging van de ingebouwde printercamera. Ondersteunt MJPEG-streams, RTSP, HTTP-momentopnamen en USB-camera's (V4L2). Wanneer ingeschakeld wordt de externe camera gebruikt voor liveweergave en eindfoto's.`,cameraPlaceholderUsb:`Apparaatpad (/dev/video0)`,cameraPlaceholderUrl:`Camera-URL (rtsp://... of http://...)`,cameraTypeMjpeg:`MJPEG-stream`,cameraTypeRtsp:`RTSP-stream`,cameraTypeSnapshot:`HTTP-momentopname`,cameraTypeUsb:`USB-camera (V4L2)`,cameraSnapshotUrl:`Momentopname-URL (optioneel)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`URL voor één frame, gebruikt voor miniaturen in meldingen, eindfoto's, frames van laagtimelapses en plaatdetectie. Timelapse en plaatdetectie vereisen elk hun eigen schakelaar per printer — deze URL is alleen de afbeeldingsbron die ze gebruiken wanneer actief. Laat leeg om beelden uit de bovenstaande livestream vast te leggen. Handig voor go2rtc (/api/frame.jpeg) en IP-camera's met een speciaal snapshot-eindpunt.`,cameraRotation:`Rotatie`,test:`Testen`,connected:`Verbonden`,disconnected:`Niet verbonden`,currency:`Valuta`,defaultFilamentCost:`Standaard filamentkosten (per kg)`,electricityCost:`Elektriciteitskosten per kWh`,energyDisplayMode:`Weergavemodus energie`,energyModePrintDescription:`Dashboard toont de som van energie die tijdens afdrukken is gebruikt`,energyModeTotalDescription:`Dashboard toont het totale energieverbruik van slimme stekkers over de hele levensduur`,fileManager:`Bestandsbeheer`,createArchiveEntry:`Archiefitem maken bij afdrukken`,createArchiveEntryDescription:`Bij afdrukken vanuit Bestandsbeheer optioneel een archiefitem maken`,lowDiskSpaceWarning:`Waarschuwing weinig schijfruimte`,lowDiskSpaceDescription:`Waarschuwing tonen wanneer vrije schijfruimte onder deze drempel komt`,printerFirmware:`Printerfirmware`,checkFirmwareDescription:`Controleren op printerfirmware-updates van Bambu Lab`,bambuddySoftware:`Bambuddy-software`,autoCheckDescription:`Automatisch controleren op nieuwe versies bij opstarten`,checkNow:`Nu controleren`,updateAvailableVersion:`Update beschikbaar: v{{version}}`,releaseNotes:`Releaseopmerkingen`,updateViaDocker:`Bijwerken via Docker Compose:`,composeDirectory:`Compose-map`,composeDirectoryHint:`Map met je docker-compose.yml. Laat leeg om cd weg te laten.`,copyUpdateCommand:`Update-opdracht kopiëren`,updateViaHomeAssistant:`Updates worden beheerd door de Home Assistant Supervisor. Open Instellingen → Add-ons → Bambuddy in Home Assistant om de nieuwe versie te installeren.`,updateViaWindowsInstaller:`Windows-installaties worden bijgewerkt door het installatieprogramma opnieuw uit te voeren. Download hieronder de nieuwe versie — je gegevens, instellingen en printers blijven behouden.`,downloadWindowsInstaller:`Installatieprogramma voor v{{version}} downloaden`,installUpdate:`Update installeren`,latestVersionRunning:`Je gebruikt de nieuwste versie`,failedToCheckUpdates:`Controleren op updates mislukt: {{error}}`,backupRestore:`Back-up en herstel`,backupRestoreDescription:`Instellingen exporteren/importeren en GitHub-back-up configureren`,goToBackup:`Ga naar Back-up`,externalUrl:`Externe URL`,externalUrlDescription:`De externe URL waarop Bambuddy bereikbaar is. Wordt gebruikt voor afbeeldingen in meldingen en externe integraties.`,bambuddyUrl:`Bambuddy-URL`,externalUrlHint:`Inclusief protocol en poort (bijv. http://192.168.1.100:8000)`,ftpRetry:`FTP opnieuw proberen`,ftpRetryDescription:`FTP-bewerkingen opnieuw proberen wanneer de wifi van de printer onbetrouwbaar is. Geldt voor 3MF-downloads, afdrukuploads, timelapse-downloads en firmware-updates.`,autoRetryDescription:`Mislukte FTP-bewerkingen automatisch opnieuw proberen`,retryAttempts:`Aantal pogingen`,retryDelay:`Vertraging tussen pogingen`,connectionTimeout:`Verbindingstime-out`,time_one:`{{count}} keer`,time_other:`{{count}} keer`,second_one:`{{count}} seconde`,second_other:`{{count}} seconden`,nSeconds:`{{count}} seconden`,increaseForWeakWifi:`Verhoog dit voor printers met zwakke wifi`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Verbind met Home Assistant om slimme stekkers via de REST-API van HA te bedienen. Ondersteunt switch-, light-, input_boolean- en script-entiteiten.`,homeAssistantUrl:`Home Assistant-URL`,longLivedAccessToken:`Long-Lived Access Token`,haTokenHint:`Maak een token in HA: Profiel → Long-Lived Access Tokens → Token maken`,connectionSuccessful:`Verbinding geslaagd`,connectionFailed:`Verbinding mislukt`,haConnectionSuccess:`Succesvol verbonden met Home Assistant.`,haConnectionFailed:`Verbinding met Home Assistant mislukt.`,mqttPublishing:`MQTT-publicatie`,mqttDescription:`Publiceer BamBuddy-gebeurtenissen naar een externe MQTT-broker voor integratie met Node-RED, Home Assistant en andere automatiseringssystemen.`,mqttEnableDescription:`Gebeurtenissen publiceren naar externe MQTT-broker`,brokerHostname:`Hostnaam broker`,port:`Poort`,usernameOptional:`Gebruikersnaam (optioneel)`,passwordOptional:`Wachtwoord (optioneel)`,topicPrefix:`Topic-prefix`,topicPrefixHint:`Topics worden: {{prefix}}/printers//status, enz.`,prometheusMetrics:`Prometheus-metrics`,prometheusEndpointDescription:`Printermetrics beschikbaar stellen op /api/v1/metrics voor bewaking met Prometheus/Grafana.`,bearerTokenOptional:`Bearer-token (optioneel)`,bearerTokenHint:`Indien ingesteld moeten verzoeken Authorization: Bearer bevatten`,metricsConnectionStatus:`Verbindingsstatus`,metricsPrinterState:`Printerstatus (inactief/afdrukken/enz.)`,metricsPrintProgress:`Afdrukvoortgang 0-100%`,metricsBedTemp:`Bedtemperatuur`,metricsNozzleTemp:`Nozzletemperatuur`,metricsPrintsTotal:`Totaal aantal afdrukken per resultaat`,metricsMore:`...en meer (lagen, ventilatoren, wachtrij, filamentverbruik)`,smartPlugsDescription:`Verbind slimme stekkers (Tasmota of Home Assistant) om stroomregeling te automatiseren en energieverbruik van je printers te volgen.`,allOn:`Alles aan`,allOff:`Alles uit`,addSmartPlug:`Slimme stekker toevoegen`,energySummary:`Energieoverzicht`,currentPower:`Huidig vermogen`,plugsOnline:`{{reachable}}/{{total}} stekkers online`,today:`Vandaag`,yesterday:`Gisteren`,total:`Totaal`,enablePlugsForSummary:`Schakel stekkers in om energieoverzicht te zien`,addNotificationProvider:`Toevoegen`,systemBadge:`(Systeem)`,creating:`Maken...`,changing:`Wijzigen...`,deleteUserAndItems:`Gebruiker EN diens items verwijderen`,deleteUserKeepItems:`Gebruiker verwijderen, items behouden (worden eigenaarloos)`,ok:`OK`,twoFa:{totpTitle:`Authenticator-app (TOTP)`,totpDesc:`Gebruik een authenticator-app zoals Google Authenticator, Aegis of Authy.`,emailOtpTitle:`E-mail-OTP`,emailOtpDesc:`Stuur bij inloggen een eenmalige code naar {{email}}.`,emailOtpNoEmail:`Voeg een e-mailadres toe aan je account om deze methode in te schakelen.`,addEmailFirst:`Je account heeft geen e-mailadres. Vraag een beheerder om er een toe te voegen voordat je E-mail-OTP inschakelt.`,setupTotp:`Authenticator-app instellen`,setupAuthApp:`Authenticator-app instellen`,setupInstructions:`Scan onderstaande QR-code met je authenticator-app en bevestig daarna met een code.`,manualEntry:`Kun je niet scannen? Voer dit geheim handmatig in:`,scannedContinue:`Ik heb de code gescand — doorgaan`,enterCodeToConfirm:`Voer de 6-cijferige code uit je authenticator-app in om de installatie te bevestigen.`,activate:`Activeren`,disableTotp:`Authenticator uitschakelen`,disableConfirmHint:`Voer een geldige TOTP-code of back-upcode in om de authenticator uit te schakelen.`,totpDisabled:`Authenticator-app uitgeschakeld.`,emailOtpEnabled:`E-mail-OTP ingeschakeld.`,emailOtpDisabled:`E-mail-OTP uitgeschakeld.`,smtpRequired:`Configureer en test eerst de SMTP-instellingen.`,invalidCode:`Ongeldige code. Probeer het opnieuw.`,enableEmailOtp:`E-mail-OTP inschakelen`,disableEmailOtp:`E-mail-OTP uitschakelen`,emailSetupEnterCode:`Er is een verificatiecode naar je e-mailadres gestuurd. Voer deze hieronder in om te bevestigen dat deze inbox van jou is.`,verifyAndEnable:`Verifiëren en inschakelen`,emailDisablePasswordHint:`Voer je accountwachtwoord in om het uitschakelen van e-mail-OTP te bevestigen.`,passwordPlaceholder:`Voer je wachtwoord in`,backupCodesTitle:`Bewaar je back-upcodes`,backupCodesWarning:`Bewaar deze codes op een veilige plek. Elke code kan maar één keer worden gebruikt en wordt niet opnieuw getoond.`,backupCodesRemaining:`{{count}} back-upcodes resterend`,savedCodes:`Ik heb mijn codes opgeslagen`,regenBackup:`Back-upcodes opnieuw genereren`,regenBackupHint:`Voer je huidige TOTP-code in om 10 nieuwe back-upcodes te genereren. Alle bestaande back-upcodes worden ongeldig.`,newBackupCodes:`Nieuwe back-upcodes`,linkedAccounts:`Gekoppelde SSO-accounts`,linkedAccountsDesc:`Deze externe identiteitsproviders zijn gekoppeld aan je account.`,oidcUnlinked:`Account ontkoppeld.`},sessionPolicy:{title:`Sessiebeleid`,description:`Maximale sessieduur voor nieuwe gebruikerslogins. Reeds uitgegeven tokens behouden hun oorspronkelijke vervaldatum.`,preset24h:`24 uur`,preset7d:`7 dagen`,preset30d:`30 dagen`,customHoursLabel:`Aangepaste sessieduur in uren`,hoursSuffix:`uren`,warning:`Langere sessies verminderen de bescherming door automatisch uitloggen. Alleen aanbevolen voor vertrouwde installaties met één gebruiker.`},oidc:{title:`SSO / OIDC-providers`,desc:`Configureer OpenID Connect-providers om single sign-on via externe identiteitsproviders toe te staan.`,addProvider:`Provider toevoegen`,newProvider:`Nieuwe provider`,empty:`Nog geen OIDC-providers geconfigureerd.`,created:`Provider gemaakt.`,updated:`Provider bijgewerkt.`,deleted:`Provider verwijderd.`,refreshIcon:`Pictogram vernieuwen`,removeIcon:`Pictogram verwijderen`,iconRefreshed:`Pictogram vernieuwd.`,iconRemoved:`Pictogram verwijderd.`,iconFetchFailed:`Pictogram kon niet worden opgehaald van de provider-URL.`,deleteTitle:`Provider verwijderen`,deleteMessage:`"{{name}}" verwijderen? Alle gekoppelde gebruikersaccounts worden ontkoppeld.`,form:{name:`Weergavenaam`,issuerUrl:`Issuer-URL`,clientId:`Client-ID`,clientSecret:`Client Secret`,scopes:`Scopes`,iconUrl:`Pictogram-URL (optioneel)`,enabled:`Ingeschakeld`,autoCreate:`Gebruikers automatisch maken`,autoCreateDesc:`Automatisch een lokaal account maken bij de eerste login.`,autoLink:`Bestaande accounts automatisch koppelen`,autoLinkDesc:`Bestaande lokale accounts bij de eerste login koppelen op basis van een overeenkomend e-mailadres.`,secretHint:`laat leeg om huidige waarde te behouden`,secretPlaceholder:`nieuw geheim`,emailClaim:`E-mailclaim`,emailClaimDesc:`JWT-claim die als e-mailidentiteit wordt gebruikt. Gebruik 'preferred_username' of 'upn' voor Azure Entra ID (dat email_verified niet meestuurt). Gebruik alleen vertrouwde claimnamen.`,emailClaimPlaceholder:`email`,emailClaimCustomClaimAutoLinkWarning:`Aangepaste claims zijn alleen veilig voor automatische koppeling wanneer de waarde door de tenantbeheerder wordt beheerd (bijv. Azure Entra ID upn / preferred_username). Schakel automatisch koppelen niet in als je IdP gebruikers deze claim zelf laat opgeven.`,requireEmailVerified:`Geverifieerd e-mailadres vereisen`,requireEmailVerifiedDesc:`Accepteer de e-mailclaim alleen wanneer de provider deze als geverifieerd markeert.`,requireEmailVerifiedWarning:`Waarschuwing: e-mail wordt ook zonder verificatie geaccepteerd. Gebruik dit alleen met vertrouwde providers.`,requireEmailVerifiedAutoLink:`Schakel automatisch koppelen eerst uit om deze instelling te wijzigen.`,defaultGroup:`Standaardgroep`,defaultGroupDesc:`Groep die aan automatisch gemaakte gebruikers wordt toegewezen. Valt terug op Kijkers indien niet ingesteld.`,defaultGroupViewersFallback:`Kijkers (standaard)`,autologin:`Automatisch inloggen`,autologinDesc:`Stuur niet-geauthenticeerde bezoekers rechtstreeks door naar deze provider. Slechts één provider kan deze vlag hebben.`}},encryption:{title:`MFA-versleutelingsstatus`,enabledFromEnv:`Versleuteling in opslag ingeschakeld (sleutel uit omgevingsvariabele MFA_ENCRYPTION_KEY)`,enabledFromFile:`Versleuteling in opslag ingeschakeld (sleutel geladen uit gegevensmap)`,enabledGenerated:`Versleuteling in opslag ingeschakeld met automatisch gegenereerde sleutel`,notConfigured:`Versleuteling in opslag niet geconfigureerd`,notConfiguredDesc:`TOTP-geheimen en OIDC client_secrets worden als platte tekst opgeslagen. Stel MFA_ENCRYPTION_KEY in of start Bambuddy opnieuw met een schrijfbare gegevensmap om automatisch een sleutel te genereren.`,allEncrypted:`Alle MFA-geheimen zijn versleuteld opgeslagen.`,legacyRowsLabel:`Verouderde rijen met platte tekst`,encryptedRowsLabel:`Versleutelde rijen`,legacyRowsWarning:`{{count}} verouderde rij(en) met platte tekst gedetecteerd. Sla de OIDC-provider opnieuw op of registreer de authenticator-app van de gebruiker opnieuw om naar versleutelde opslag te migreren.`,backupHint:`De automatisch gegenereerde sleutel wordt opgeslagen in DATA_DIR/.mfa_encryption_key en zit in lokale back-up-ZIP's. Bewaar je back-ups veilig of stel MFA_ENCRYPTION_KEY expliciet in.`,decryptionBrokenTitle:`Versleutelingssleutel ontbreekt`,decryptionBrokenError:`{{count}} versleutelde record(s) kunnen niet worden ontsleuteld omdat de versleutelingssleutel niet meer beschikbaar is. Herstel de vorige MFA_ENCRYPTION_KEY of DATA_DIR/.mfa_encryption_key om te herstellen.`,migrationErrorWarning:`{{count}} verouderde rij(en) konden bij het opstarten niet opnieuw worden versleuteld. Controleer de serverlogboeken en start Bambuddy opnieuw om het opnieuw te proberen.`},pipelineLimits:{title:`Limieten slicerpipeline`,maxCopiesLabel:`Max. kopieën per run`,maxCopiesDesc:`Bovengrens voor het aantal kopieën dat operators kunnen aanvragen bij het uitvoeren van een pipeline. Harde serverlimiet is 1000.`},pipelines:{title:`Slicerpipelines`,subtitle:`Herbruikbare bundels met presets (printer + proces + filamenten + bedtype). Sla er een op vanuit het Slice-dialoogvenster en pas deze met één klik toe op het volgende bestand.`,loading:`Pipelines laden…`,loadError:`Pipelines konden niet worden geladen.`,confirmDelete:`Deze pipeline verwijderen? Dit kan niet ongedaan worden gemaakt.`,staleWarning:`Een of meer gekoppelde presets bestaan niet meer. Sla deze pipeline opnieuw op vanuit het Slice-dialoogvenster om dit te herstellen.`,empty:{title:`Nog geen pipelines.`,howto:`Open het Slice-dialoogvenster voor een bestand, kies printer / proces / filamenten / bedtype en klik daarna op "Opslaan als pipeline". Je opgeslagen pipelines verschijnen hier.`},field:{name:`Pipelinenaam`,description:`Beschrijving`,targetPrinter:`Doelprinter`,noTarget:`— Geen doel —`,targetKind:`Doeltype`,targetKindSpecific:`Specifieke printer`,targetKindClass:`Printerklasse`,targetModelClass:`Printermodel`,fanoutStrategy:`Verdelingsstrategie`,fanout:{max_parallel:`Maximaal parallel — verdelen over elke inactieve overeenkomende printer`,round_robin:`Round robin — rouleren door geschikte printers`,fill_one_first:`Eerst één vullen — alle kopieën aan één printer koppelen`},fanoutShort:{max_parallel:`parallel`,round_robin:`round robin`,fill_one_first:`eerst één vullen`}},action:{save:`Opslaan`,cancel:`Annuleren`,rename:`Naam wijzigen`,delete:`Verwijderen`},slot:{printer:`Printer`,process:`Proces`,filament:`Filament`,filamentN:`Filament {{n}}`,filamentAll:`Alle {{n}} sleuven`,bed:`Printbed`},group:{profiles:`Profielen`,filaments:`Filamenten`},searchPlaceholder:`Pipelines zoeken…`,filterTargetType:`Filteren op doeltype`,filterTarget:`Filteren op doel`,filter:{all:`Alle doelen`,noTarget:`Geen doel ingesteld`,count:`{{shown}} / {{total}}`,noMatches:`Geen pipelines komen overeen met de huidige filters.`},toast:{saved:`Pipeline opgeslagen`,saveFailed:`Opslaan mislukt`,deleted:`Pipeline verwijderd`,deleteFailed:`Verwijderen mislukt`},noTargetHint:`Stel een doelprinter in om dit uit te voeren`,noTargetWarning:`Stel een doelprinter in voordat je deze pipeline uitvoert.`,runs:{lastRun:`Laatste run`,status:{queued:`in wachtrij`,slicing:`slicen`,dispatching:`verzenden`,in_progress:`bezig met afdrukken`,completed:`voltooid`,failed:`mislukt`,partial_failure:`gedeeltelijke fout`,cancelled:`geannuleerd`}}}},notification:{printStarted:{title:`Afdruk gestart`,body:`{{printer}}: {{filename}} is begonnen met afdrukken`},printCompleted:{title:`Afdruk voltooid`,body:`{{printer}}: {{filename}} succesvol voltooid`},printFailed:{title:`Afdruk mislukt`,body:`{{printer}}: {{filename}} is mislukt`},printStopped:{title:`Afdruk gestopt`,body:`{{printer}}: {{filename}} is gestopt`},printProgress:{title:`Afdrukvoortgang`,body:`{{printer}}: {{filename}} is {{percent}}% voltooid`},printerOffline:{title:`Printer offline`,body:`{{printer}} is offline`},printerError:{title:`Printerfout`,body:`{{printer}}: {{error}}`},filamentLow:{title:`Weinig filament`,body:`{{printer}}: Filament raakt bijna op`},maintenanceDue:{title:`Onderhoud nodig`,body:`{{printer}}: {{items}} vereisen aandacht`}},errors:{generic:`Er is iets misgegaan`,networkError:`Netwerkfout. Controleer je verbinding.`,notFound:`Niet gevonden`,unauthorized:`Niet geautoriseerd`,serverError:`Serverfout`,validationError:`Controleer je invoer`,printerConnectionFailed:`Verbinding met printer mislukt`,saveFailed:`Wijzigingen opslaan mislukt`,deleteFailed:`Verwijderen mislukt`,loadFailed:`Gegevens laden mislukt`},hmsErrors:{title:`Fouten - {{name}}`,noErrors:`Geen fouten`,viewOnWiki:`Bekijken op Bambu Lab Wiki`,mqttVerifyFailedRemedy:`Schakel Developer Mode op de printer in, start de printer opnieuw en start daarna de taak opnieuw.`,unknownCode:`Onbekende HMS-code — zie de Bambu Lab-wiki voor details.`,clearInstructions:`Wis fouten op de printer om ze hier te verwijderen.`,clearErrors:`Fouten wissen`,clearSuccess:`HMS-fouten gewist`,clearFailed:`HMS-fouten wissen mislukt`,actionSuccess:`Actie naar printer verzonden`,actionFailed:`Actie verzenden mislukt`,runoutExpectedSlot:`Filament is op in {{ranOut}}. De printer wacht nu op compatibel filament in {{expected}}. Plaats een spoel in {{expected}} en selecteer daarna Opnieuw proberen.`,runoutExpectedSlotOnly:`De printer wacht op compatibel filament in {{expected}}. Plaats daar een spoel en selecteer daarna Opnieuw proberen.`,runoutSlotUnknown:`Filament is op en de afdruk is gepauzeerd. Bambuddy kon niet bepalen welke sleuf de printer nu verwacht — controleer het printerscherm voor de gevraagde sleuf.`,actions:{RESUME_PRINTING:`Afdrukken hervatten`,RESUME_PRINTING_DEFECTS:`Hervatten (defecten acceptabel)`,RESUME_PRINTING_PROBELM_SOLVED:`Hervatten (probleem opgelost)`,STOP_PRINTING:`Afdrukken stoppen`,CHECK_ASSISTANT:`Assistent controleren`,FILAMENT_EXTRUDED:`Filament geëxtrudeerd, doorgaan`,RETRY_FILAMENT_EXTRUDED:`Nog niet geëxtrudeerd, opnieuw proberen`,CONTINUE:`Voltooid, doorgaan`,LOAD_VIRTUAL_TRAY:`Filament laden`,OK_BUTTON:`OK`,FILAMENT_LOAD_RESUME:`Filament geladen, hervatten`,JUMP_TO_LIVEVIEW:`Liveweergave bekijken`,NO_REMINDER_NEXT_TIME:`Volgende keer niet herinneren`,REFRESH_NOZZLE:`Opnieuw controleren`,IGNORE_NO_REMINDER_NEXT_TIME:`Negeren. Volgende keer niet herinneren`,IGNORE_RESUME:`Negeren en hervatten`,PROBLEM_SOLVED_RESUME:`Probleem opgelost en hervatten`,TURN_OFF_FIRE_ALARM:`Begrepen, brandalarm uitschakelen.`,RETRY_PROBLEM_SOLVED:`Opnieuw proberen (probleem opgelost)`,CANCLE:`Annuleren`,STOP_DRYING:`Drogen stoppen`,PROCEED:`Doorgaan`,OK_JUMP_RACK:`OK`,ABORT:`Afbreken`,DISABLE_PURIFICATION:`Luchtreiniging voor deze afdruk uitschakelen`,DONT_REMIND_NEXT_TIME:`Niet meer herinneren`,DBL_CHECK_CANCEL:`Annuleren`,DBL_CHECK_DONE:`Klaar`,DBL_CHECK_RETRY:`Opnieuw proberen`,DBL_CHECK_RESUME:`Hervatten`,DBL_CHECK_OK:`Bevestigen`,REMOVE_CLOSE_BTN:`Sluiten`}},mqttDebug:{title:`MQTT-debuglogboek`,searchPlaceholder:`Topic of payload zoeken...`,noMessages:`Nog geen berichten gelogd`,startLoggingHint:`Klik op "Loggen starten" om MQTT-berichten vast te leggen`,noMessagesMatch:`Geen berichten komen overeen met je filter`,adjustFilterHint:`Probeer je zoekopdracht of filtercriteria aan te passen`,incoming:`Inkomend`,outgoing:`Uitgaand`,loggingStopped:`Loggen gestopt`,loggingActive:`Loggen actief - berichten worden automatisch vernieuwd`,startLogging:`Loggen starten`,stopLogging:`Loggen stoppen`,clearLog:`Logboek wissen`,topic:`Topic`,timestamp:`Tijdstempel`,direction:`Richting`,all:`Alle`},printerFiles:{zipStarted_one:`ZIP-download gestart voor {{count}} bestand`,zipStarted_other:`ZIP-download gestart voor {{count}} bestanden`,zipPartial:`ZIP-download gestart met {{successful}} van {{total}} bestanden; de overige konden niet worden opgehaald`,downloadFailed:`Download mislukt: {{error}}`,unknownError:`Onbekende fout`,shiftSelectHint:`Shift-klik om een bereik te selecteren`,selectFile:`{{name}} selecteren`,deselectFile:`{{name}} deselecteren`,title:`Bestandsbeheer`,storageUsed:`Gebruikt:`,storageFree:`Vrij:`,filterPlaceholder:`Bestanden filteren...`,deleteButton:`Verwijderen`,deleteFiles:`{{count}} bestanden verwijderen`,deleteFileConfirm:`"{{name}}" verwijderen? Dit kan niet ongedaan worden gemaakt.`,deleteFilesConfirm:`{{count}} geselecteerde bestanden verwijderen? Dit kan niet ongedaan worden gemaakt.`,noFiles:`Geen bestanden op printer`,printerUnavailable:`De bestandsservice van de printer is niet beschikbaar. Probeer het opnieuw wanneer de printer bereikbaar is.`,loadingFiles:`Bestanden laden...`,failedToLoad:`Bestanden laden mislukt`,toast:{filesDeleted:`{{count}} bestand(en) verwijderd`,deleteFailed:`Verwijderen mislukt: {{error}}`}},confirm:{delete:`Weet je zeker dat je dit wilt verwijderen?`,unsavedChanges:`Je hebt niet-opgeslagen wijzigingen. Weet je zeker dat je wilt vertrekken?`,clearQueue:`Weet je zeker dat je de wachtrij wilt wissen?`},login:{title:`Bambuddy-login`,subtitle:`Log in op je account`,username:`Gebruikersnaam`,usernamePlaceholder:`Voer je gebruikersnaam in`,usernameOrEmail:`Gebruikersnaam of e-mail`,usernameOrEmailPlaceholder:`Gebruikersnaam of @ e-mail`,password:`Wachtwoord`,passwordPlaceholder:`Voer je wachtwoord in`,signIn:`Inloggen`,signingIn:`Inloggen...`,rememberMe:`Onthoud mij`,forgotPassword:`Wachtwoord vergeten?`,autologinFailed:`Automatisch inloggen via SSO is mislukt. Kies hieronder een provider om door te gaan.`,localDisabledNotice:`Lokaal inloggen is uitgeschakeld. Gebruik een van de onderstaande SSO-providers.`,loginSuccess:`Succesvol ingelogd`,loginFailed:`Inloggen mislukt`,enterCredentials:`Voer gebruikersnaam en wachtwoord in`,enterEmail:`Voer je e-mailadres in`,oidcLoginFailed:`OIDC-login mislukt`,oidcErrors:{providerError:`De identiteitsprovider heeft een fout geretourneerd`,missingParameters:`OIDC-callback mist vereiste parameters`,invalidState:`OIDC-status is ongeldig of is al gebruikt`,stateExpired:`OIDC-inlogsessie verlopen — probeer het opnieuw`,providerNotFound:`OIDC-provider niet gevonden`,discoveryFailed:`OIDC-discoverydocument ophalen mislukt`,invalidDiscovery:`OIDC-discoverydocument is ongeldig`,networkError:`Netwerkfout tijdens OIDC-tokenuitwisseling`,badResponse:`Onverwachte reactie tijdens OIDC-tokenuitwisseling`,noIdToken:`OIDC-provider heeft geen ID-token geretourneerd`,validationFailed:`OIDC-tokenvalidatie mislukt`,nonceMismatch:`OIDC-nonce komt niet overeen — mogelijke replay-aanval`,missingSubClaim:`OIDC-token mist de sub-claim`,noLinkedAccount:`Er is geen lokaal account gekoppeld aan deze OIDC-identiteit`,accountInactive:`Je account is inactief`,userResolutionFailed:`Je account kon niet worden bepaald`,internalError:`Er is een interne fout opgetreden tijdens OIDC-login`,tokenExchangeFailed:`OIDC-tokenuitwisseling mislukt`},forgotPasswordTitle:`Wachtwoord vergeten`,forgotPasswordMessage:`Als je je wachtwoord bent vergeten, neem dan contact op met je systeembeheerder om het te laten resetten.`,forgotPasswordEmailMessage:`Voer je e-mailadres in en we sturen je een nieuw wachtwoord.`,emailAddress:`E-mailadres`,emailPlaceholder:`jouw.email@voorbeeld.nl`,cancel:`Annuleren`,sending:`Verzenden...`,sendResetEmail:`Resetmail verzenden`,howToReset:`Zo reset je je wachtwoord:`,resetStep1:`Neem contact op met je Bambuddy-beheerder`,resetStep2:`Vraag om je wachtwoord te resetten in Gebruikersbeheer`,resetStep3:`De beheerder kan een nieuw tijdelijk wachtwoord voor je instellen`,resetStep4:`Log in met het nieuwe wachtwoord en wijzig het in Instellingen`,gotIt:`Begrepen`,resetPassword:{title:`Nieuw wachtwoord instellen`,subtitle:`Voer hieronder je nieuwe wachtwoord in en bevestig het.`,newPassword:`Nieuw wachtwoord`,newPasswordPlaceholder:`Minstens 8 tekens`,confirmPassword:`Wachtwoord bevestigen`,confirmPasswordPlaceholder:`Herhaal nieuw wachtwoord`,saving:`Opslaan…`,submit:`Nieuw wachtwoord instellen`,backToLogin:`Terug naar login`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,passwordTooShort:`Wachtwoord moet minstens 8 tekens bevatten`,resetFailed:`Wachtwoord resetten mislukt. De link is mogelijk verlopen.`},twoFA:{title:`Tweefactorauthenticatie`,subtitle:`Je account is beveiligd met 2FA. Voer hieronder de verificatiecode in.`,methodAuthenticator:`Authenticator-app`,methodEmail:`E-mailcode`,methodBackup:`Back-upcode`,instructionsTotp:`Open je authenticator-app en voer de 6-cijferige code voor Bambuddy in.`,instructionsEmail:`Er is een 6-cijferige code naar je e-mailadres gestuurd. Deze verloopt over 10 minuten.`,instructionsEmailNotSent:`Klik op de knop hieronder om een verificatiecode per e-mail te ontvangen.`,instructionsBackup:`Voer een van je 8-teken lange back-upherstelcodes in. Elke code kan maar één keer worden gebruikt.`,sendCodeButton:`Code per e-mail verzenden`,sendingCode:`Verzenden...`,resendCode:`Code opnieuw verzenden`,codeLabel:`Verificatiecode`,backupCodeLabel:`Back-upcode`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`Verifiëren`,verifyingButton:`Verifiëren...`,backToLogin:`← Terug naar login`,orContinueWith:`of doorgaan met`,signInWith:`Inloggen met {{provider}}`,enterCode:`Voer de verificatiecode in`,sendCodeFailed:`Verificatiecode verzenden mislukt`,invalidCode:`Ongeldige code. Probeer het opnieuw.`}},setup:{title:`Bambuddy-installatie`,subtitle:`Authenticatie configureren voor je Bambuddy-instantie`,enableAuth:`Authenticatie inschakelen`,adminAccount:`Beheerdersaccount`,adminAccountDesc:`Als er al beheerders bestaan, wordt authenticatie ingeschakeld met de bestaande beheerdersaccounts. Laat de onderstaande velden leeg om bestaande beheerders te gebruiken, of voer nieuwe gegevens in om een nieuwe beheerder te maken.`,adminUsername:`Gebruikersnaam beheerder`,adminPassword:`Wachtwoord beheerder`,optionalIfAdminExists:`(optioneel als er beheerders bestaan)`,adminUsernamePlaceholder:`Voer gebruikersnaam beheerder in (optioneel)`,adminPasswordPlaceholder:`Voer wachtwoord beheerder in (optioneel)`,confirmPassword:`Wachtwoord bevestigen`,confirmPasswordPlaceholder:`Bevestig wachtwoord beheerder`,settingUp:`Instellen...`,completeSetup:`Installatie voltooien`,toast:{authEnabledAdminCreated:`Authenticatie ingeschakeld en beheerdersgebruiker gemaakt`,authEnabledExistingAdmins:`Authenticatie ingeschakeld met bestaande beheerders`,setupCompleted:`Installatie voltooid`,enterBothCredentials:`Voer zowel gebruikersnaam als wachtwoord van de beheerder in, of laat beide leeg om bestaande beheerders te gebruiken`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,passwordTooShort:`Wachtwoord moet minstens 6 tekens bevatten`}},changePassword:{title:`Wachtwoord wijzigen`,currentPassword:`Huidig wachtwoord`,currentPasswordPlaceholder:`Voer huidig wachtwoord in`,newPassword:`Nieuw wachtwoord`,newPasswordPlaceholder:`Voer nieuw wachtwoord in (min. 6 tekens)`,confirmPassword:`Nieuw wachtwoord bevestigen`,confirmPasswordPlaceholder:`Bevestig nieuw wachtwoord`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,passwordTooShort:`Wachtwoord moet minstens 6 tekens bevatten`,changing:`Wijzigen...`,success:`Wachtwoord succesvol gewijzigd`,failed:`Wachtwoord wijzigen mislukt`},plateAlert:{title:`Afdruk gepauzeerd!`,message:`Objecten gedetecteerd op de bouwplaat. De afdruk is automatisch gepauzeerd. Maak de plaat vrij en hervat de afdruk.`,understand:`Ik begrijp het`},camera:{title:`Cameraweergave`,invalidPrinterId:`Ongeldige printer-ID`,live:`Live`,snapshot:`Momentopname`,restartStream:`Stream opnieuw starten`,refreshSnapshot:`Momentopname vernieuwen`,fullscreen:`Volledig scherm`,exitFullscreen:`Volledig scherm afsluiten`,connectingToCamera:`Verbinding maken met camera...`,capturingSnapshot:`Momentopname vastleggen...`,connectionLost:`Verbinding verbroken`,connectionFailed:`Cameraverbinding mislukt`,reconnecting:`Opnieuw verbinden over {{countdown}}s... (poging {{attempt}}/{{max}})`,reconnectNow:`Nu opnieuw verbinden`,cameraUnavailable:`Camera niet beschikbaar`,cameraUnavailableDesc:`Zorg dat de printer is ingeschakeld en verbonden.`,noCamera:`Geen camera beschikbaar`,retry:`Opnieuw proberen`,cameraStream:`Camerastream`,zoomOut:`Uitzoomen`,zoomIn:`Inzoomen`,resetZoom:`Zoom resetten`,recording:`Opnemen`,startRecording:`Opname starten`,stopRecording:`Opname stoppen`,chamberLight:`Kamerverlichting omschakelen`,unavailable:`Camera niet beschikbaar`,diagnose:{button:`Diagnose`,modalTitle:`Cameradiagnose`,running:`Diagnose uitvoeren...`,runFailed:`Diagnose kon niet worden uitgevoerd: {{error}}`,retry:`Opnieuw uitvoeren`,stage:{tcp_reachable:`Netwerkbereikbaarheid`,first_frame:`Frame vastleggen`,live_stream_active:`Livestream actief`},summary:{all_ok:`Camera werkt. De diagnose heeft alle stappen succesvol voltooid.`,live_stream_active_healthy:`Camera streamt momenteel met recente frames — geen test nodig.`,printer_unreachable:`Printer is niet bereikbaar. Controleer het IP-adres, de netwerkverbinding en of de printer is ingeschakeld.`,camera_port_closed:`Printer is bereikbaar maar de camerapoort is gesloten. Zorg dat LAN-only-modus en Developer Mode zijn ingeschakeld in de printerinstellingen.`,no_frame:`Verbonden met de camera, maar er zijn geen frames ontvangen. Probeer opnieuw of controleer of de camera is ingeschakeld in de printerinstellingen.`,unknown_failure:`Cameradiagnose is om onbekende reden mislukt. Controleer het supportlogboek voor details.`},meta:{protocol:`Protocol`,port:`Poort`,profile:`Profiel`}}},groups:{title:`Groepsbeheer`,subtitle:`Machtigingsgroepen beheren voor toegangscontrole`,backToSettings:`Terug naar Instellingen`,createGroup:`Groep maken`,noPermission:`Je hebt geen toestemming om deze pagina te openen.`,system:`Systeem`,noDescription:`Geen beschrijving`,usersCount:`{{count}} gebruikers`,permissionsCount:`{{count}} machtigingen`,edit:`Bewerken`,delete:`Verwijderen`,toast:{created:`Groep succesvol gemaakt`,updated:`Groep succesvol bijgewerkt`,deleted:`Groep succesvol verwijderd`,enterGroupName:`Voer een groepsnaam in`},modal:{editGroup:`Groep bewerken`,createGroup:`Groep maken`,cancel:`Annuleren`,saving:`Opslaan...`,creating:`Maken...`,saveChanges:`Wijzigingen opslaan`},form:{groupName:`Groepsnaam`,groupNamePlaceholder:`Voer groepsnaam in`,systemGroupWarning:`Namen van systeemgroepen kunnen niet worden gewijzigd`,description:`Beschrijving`,descriptionPlaceholder:`Voer beschrijving in (optioneel)`,permissions:`Machtigingen ({{count}} geselecteerd)`},deleteModal:{title:`Groep verwijderen`,message:`Weet je zeker dat je deze groep wilt verwijderen? Gebruikers in deze groep verliezen deze machtigingen.`,confirm:`Groep verwijderen`},editor:{title:`Groep bewerken`,createTitle:`Groep maken`,search:`Machtigingen zoeken...`,selectAll:`Alles selecteren`,clearAll:`Alles wissen`,permissionsSelected:`{{count}} geselecteerd`,noResults:`Geen machtigingen komen overeen met je zoekopdracht`,websocketHint:`Vereist voor live-updates. Zonder dit valt de interface terug op periodieke polling.`}},users:{title:`Gebruikersbeheer`,subtitle:`Gebruikers en hun toegang tot je Bambuddy-instantie beheren`,backToSettings:`Terug naar Instellingen`,createUser:`Gebruiker maken`,noPermission:`Je hebt geen toestemming om deze pagina te openen.`,admin:`Beheerder`,noGroups:`Geen groepen`,active:`Actief`,inactive:`Inactief`,edit:`Bewerken`,delete:`Verwijderen`,system:`Systeem`,noGroupsAvailable:`Geen groepen beschikbaar`,table:{username:`Gebruikersnaam`,groups:`Groepen`,status:`Status`,actions:`Acties`},toast:{created:`Gebruiker succesvol gemaakt`,updated:`Gebruiker succesvol bijgewerkt`,deleted:`Gebruiker succesvol verwijderd`,fillRequired:`Vul alle verplichte velden in`,passwordsDoNotMatch:`Wachtwoorden komen niet overeen`,passwordTooShort:`Wachtwoord moet minstens 6 tekens bevatten`,ldapProvisioned:`LDAP-gebruiker "{{username}}" ingericht`},modal:{createUser:`Gebruiker maken`,editUser:`Gebruiker bewerken`,cancel:`Annuleren`,creating:`Maken...`,saving:`Opslaan...`,saveChanges:`Wijzigingen opslaan`,advancedAuthSubtitle:`met Geavanceerde authenticatie`,tabsAriaLabel:`Gebruikersbron`,localTab:`Lokaal`,ldapTab:`LDAP`,ldapSearchLabel:`Directory zoeken`,ldapSearchPlaceholder:`Typ een gebruikersnaam, naam of e-mailadres...`,ldapMinChars:`Typ minstens 2 tekens om te zoeken`,ldapTypeToSearch:`Begin te typen om in de LDAP-directory te zoeken`,ldapSearching:`Directory doorzoeken...`,ldapNoResults:`Geen overeenkomende gebruikers in de directory`,ldapSearchError:`Zoeken in directory mislukt. Controleer de status van de LDAP-server.`,ldapAlreadyProvisioned:`Al ingericht`,ldapSelectedLabel:`Geselecteerd`,ldapProvision:`Gebruiker inrichten`,ldapProvisioning:`Inrichten...`,ldapErrorProvision:`Inrichten mislukt. Controleer de status van de LDAP-server en probeer opnieuw.`},form:{username:`Gebruikersnaam`,usernamePlaceholder:`Voer gebruikersnaam in`,email:`E-mail`,emailPlaceholder:`user@example.com`,password:`Wachtwoord`,passwordPlaceholder:`Voer wachtwoord in`,confirmPassword:`Wachtwoord bevestigen`,confirmPasswordPlaceholder:`Bevestig wachtwoord`,newPasswordPlaceholder:`Voer nieuw wachtwoord in`,confirmNewPasswordPlaceholder:`Bevestig nieuw wachtwoord`,leaveBlankToKeep:`laat leeg om huidige waarde te behouden`,groups:`Groepen`,optional:`optioneel`,autoGeneratedPassword:`Een veilig wachtwoord wordt automatisch gegenereerd en per e-mail naar de gebruiker gestuurd.`,passwordManagedByAdvancedAuth:`Wachtwoord wordt beheerd door Geavanceerde authenticatie. Gebruik "Wachtwoord resetten" om via e-mail een nieuw wachtwoord naar de gebruiker te sturen.`,resetPassword:`Wachtwoord resetten`,resettingPassword:`Wachtwoord resetten...`},deleteModal:{title:`Gebruiker verwijderen`,message:`Weet je zeker dat je deze gebruiker wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.`,confirm:`Gebruiker verwijderen`}},streamOverlay:{title:`Streamoverlay`,invalidPrinterId:`Ongeldige printer-ID`,cameraStream:`Camerastream`,progress:`Voortgang`,eta:`ETA`,printerIdle:`Printer is inactief`,printerOffline:`Printer offline`,builder:{title:`Streamingoverlay`,description:`Bouw de URL voor een streamingoverlay — een camerabeeld op volledig scherm met live afdrukgegevens eroverheen, voor OBS, een wanddisplay of elke browserbron. Kies de velden die je wilt en kopieer de URL.`,printer:`Printer`,size:`Tekstgrootte`,sizeSmall:`Klein`,sizeMedium:`Middelgroot`,sizeLarge:`Groot`,fps:`Framesnelheid`,fpsHint:`A1- en P1-camera's halen maximaal ongeveer 5 fps, ongeacht wat je instelt.`,token:`Token voor streamingoverlay (optioneel)`,tokenHint:`Alleen nodig wanneer login is ingeschakeld: OBS heeft geen eigen sessie. Maak hierboven een token met het bereik Streamingoverlay.`,tokenWarning:`Deze URL bevat een token — iedereen die hem kan lezen kan de stream bekijken en de bestandsnaam zien. Trek het token in om de toegang te stoppen.`,fields:`Velden om te tonen`,fieldPrinter:`Printernaam`,fieldFilename:`Bestandsnaam`,fieldStatus:`Status`,fieldProgress:`Voortgangsbalk`,fieldLayers:`Aantal lagen`,fieldEta:`Resterende tijd en ETA`,fieldCamera:`Camerabeeld`,chamberHint:`Kamertemperatuur verschijnt alleen op modellen met een echte kamersensor — P1- en A1-printers melden een betekenisloze waarde, daarom wordt die daar weggelaten.`,urlTitle:`Overlay-URL`,open:`Open`,showPreview:`Voorbeeld tonen`,hidePreview:`Voorbeeld verbergen`,previewTitle:`Overlayvoorbeeld`},status:{printing:`Bezig met afdrukken`,paused:`Gepauzeerd`,finished:`Voltooid`,failed:`Mislukt`,idle:`Inactief`,unknown:`Onbekend`}},profiles:{title:`Profielen`,subtitle:`Beheer je slicerpresets en pressure-advance-kalibraties`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`Lokale profielen`,kprofiles:`K-profielen`},orcaCloud:{connectedAs:`Verbonden als`,connectedShort:`Verbonden met Orca Cloud`,logout:`Verbinding verbreken`,noLogoutPermission:`Je hebt geen toestemming om de verbinding te verbreken`,noConnectPermission:`Je hebt geen toestemming om verbinding te maken met Orca Cloud`,retry:`Opnieuw proberen`,connectButton:`Orca Cloud verbinden`,connect:{title:`Verbinden met Orca Cloud`,description:`Log in op je Orca Cloud-account om je slicerprofielen met Bambuddy te synchroniseren.`},device:{title:`Bambuddy goedkeuren in Orca Cloud`,instruction:`Open Orca Cloud en keur deze code goed. Bambuddy maakt automatisch verbinding zodra je goedkeurt.`,codeLabel:`Je koppelcode`,openButton:`Orca Cloud-goedkeuringspagina openen`,manualHint:`Of ga naar {{url}} en voer bovenstaande code in.`,waiting:`Wachten op je goedkeuring…`,cancel:`Annuleren`},profiles:{title:`Je Orca Cloud-profielen ({{count}})`,refresh:`Vernieuwen`,empty:`Nog geen profielen gevonden in je Orca Cloud-account.`},toast:{disconnected:`Verbinding met Orca Cloud verbroken`},errors:{startFailed:`Koppelen met Orca Cloud kon niet worden gestart.`,denied:`De koppeling is geweigerd in Orca Cloud.`,expired:`De koppelcode is verlopen. Klik op Verbinden om opnieuw te proberen.`,pollFailed:`De verbinding ging verloren tijdens het wachten op goedkeuring. Probeer het opnieuw.`}},localProfiles:{title:`Lokale profielen`,subtitle:`Slicepresets importeren en beheren vanuit OrcaSlicer`,import:`Profielen importeren`,importDesc:`Sleep .bbscfg-, .bbsflmt-, .orca_filament-, .zip- of .json-bestanden hierheen`,importing:`Importeren...`,search:`Lokale presets zoeken...`,noPresets:`Nog geen lokale presets`,noSearchResults:`Geen presets komen overeen met je zoekopdracht`,badge:`Lokaal`,edit:`Bewerken`,delete:`Verwijderen`,cancel:`Annuleren`,deleteConfirmTitle:`Preset verwijderen`,deleteConfirm:`Weet je zeker dat je deze preset wilt verwijderen? Dit kan niet ongedaan worden gemaakt.`,source:`Bron`,inheritsFrom:`Erft van`,filamentType:`Type`,vendor:`Leverancier`,compatiblePrinters:`Printers`,nozzleTemp:`Nozzletemp.`,cost:`Kosten`,density:`Dichtheid`,pressureAdvance:`Pressure Advance`,filament:`Filament`,process:`Proces`,printer:`Printer`,toast:{importSuccess:`{{count}} preset(s) geïmporteerd`,importSkipped:`{{count}} preset(s) overgeslagen (duplicaten)`,importError:`{{count}} fout(en) tijdens importeren`,deleted:`Preset verwijderd`,updated:`Preset bijgewerkt`}},connectedAs:`Verbonden als`,signInExpiredTitle:`Bambu Cloud-login verlopen`,signInExpiredBody:`Bambu Lab accepteert het opgeslagen token niet meer. Log opnieuw in om cloudprofielen, MakerWorld-imports en firmwarecontroles te herstellen.`,logout:`Uitloggen`,noLogoutPermission:`Je hebt geen toestemming om uit te loggen`,failedToLoad:`Profielen laden mislukt`,retry:`Opnieuw proberen`,time:{justNow:`Zojuist`,minsAgo:`{{count}}m geleden`,hoursAgo:`{{count}}u geleden`,daysAgo:`{{count}}d geleden`},toast:{loggedOut:`Uitgelogd`},login:{title:`Verbinden met Bambu Cloud`,subtitle:`Synchroniseer je slicerpresets tussen apparaten`,email:`E-mail`,password:`Wachtwoord`,region:`Regio`,regionGlobal:`Wereldwijd`,regionChina:`China`,verificationCode:`Verificatiecode`,totpCode:`Authenticatorcode`,checkEmail:`Controleer je e-mail ({{email}}) op een 6-cijferige code`,enterTotpHint:`Voer de 6-cijferige code uit je authenticator-app in`,accessToken:`Toegangstoken`,accessTokenHint:`Plak je Bambu Cloud-toegangstoken. Accounts in de China-regio moeten deze methode gebruiken (telefoongebonden — inloggen via e-mail niet beschikbaar). Zie de wiki voor het ophalen van het token uit MakerWorld-cookies.`,back:`Terug`,loginButton:`Inloggen`,verifyButton:`Verifiëren`,setTokenButton:`Token instellen`,useToken:`In plaats daarvan toegangstoken gebruiken`,captchaTitle:`Bambu Cloud vraagt om een CAPTCHA`,captchaBody:`Bambu controleert je netwerk voordat inloggen wordt geaccepteerd en deze controle kan niet vanuit Bambuddy worden beantwoord. Je e-mailadres en wachtwoord zijn niet het probleem. De blokkering is gekoppeld aan je openbare IP-adres en verdwijnt normaal vanzelf binnen enkele uren — herhaaldelijk opnieuw proberen laat de blokkering langer duren. Gebruik om nu in te loggen een toegangstoken uit een browsersessie.`,useEmail:`In plaats daarvan inloggen met e-mail`,toast:{loggedIn:`Succesvol ingelogd`,codeSent:`Verificatiecode naar je e-mail gestuurd`,enterTotp:`Voer code uit je authenticator-app in`,tokenSet:`Token succesvol ingesteld`}},presets:{myPreset:`Mijn preset (bewerkbaar)`,duplicate:`Dupliceren`,editable:`Bewerkbaar`,failedToLoadDetails:`Presetdetails laden mislukt`,deleteConfirm:`Deze preset verwijderen?`,deleteWarning:`Hiermee wordt "{{name}}" permanent uit Bambu Cloud verwijderd. Dit kan niet ongedaan worden gemaakt.`,noDuplicatePermission:`Je hebt geen toestemming om presets te dupliceren`,noEditPermission:`Je hebt geen toestemming om presets te bewerken`,noDeletePermission:`Je hebt geen toestemming om presets te verwijderen`,types:{filament:`Filamentpreset`,printer:`Printerpreset`,process:`Procespreset`},toast:{deleted:`Preset verwijderd`,created:`Preset gemaakt`,updated:`Preset bijgewerkt`,duplicated:`Preset gedupliceerd`,fieldAdded:`Veld "{{key}}" toegevoegd`,exported:`Preset geëxporteerd`},baseLabel:`Basis: {{name}}`,currentLabel:`Huidig: {{name}}`,newPreset:`Nieuwe preset`,editPreset:`Preset bewerken`,duplicatePreset:`Preset dupliceren`,createNewPreset:`Nieuwe preset maken`,customizeSettings:`Instellingen voor je nieuwe preset aanpassen`,compareWithBase:`Vergelijken met basispreset`,compare:`Vergelijken`,basePreset:`Basispreset`,selectBasePreset:`Basispreset selecteren...`,presetName:`Presetnaam`,myCustomPreset:`Mijn aangepaste preset`,inheritsFrom:`Erft van`,dropJsonToImport:`Sleep JSON om te importeren`,tabs:{common:`Algemeen`,allFields:`Alle velden`},availableFields:`Beschikbare velden`,searchFieldsPlaceholder:`Velden zoeken...`,noMatchingFields:`Geen overeenkomende velden`,allFieldsAdded:`Alle velden toegevoegd`,addCustomField:`Aangepast veld toevoegen`,yourOverrides:`Je overschrijvingen`,noOverridesYet:`Nog geen overschrijvingen`,clickFieldsToAdd:`Klik links op velden om ze toe te voegen`,saveAsTemplate:`Opslaan als sjabloon`,jsonTip:`Tip: sleep een .json-bestand ergens in dit venster om instellingen te importeren`},cloudView:{searchPlaceholder:`Presets zoeken...`,templates:`Sjablonen`,refresh:`Vernieuwen`,newPreset:`Nieuwe preset`,clearFilters:`Filters wissen`,compareMode:`Vergelijkingsmodus`,selectAnotherPreset:`Selecteer een andere {{type}}-preset`,clickTwoPresets:`Klik op twee presets van hetzelfde type om te vergelijken`,selectFirst:`1. Selecteer eerste`,selectSecond:`2. Selecteer tweede`,compareNow:`Nu vergelijken`,lastSynced:`Laatst gesynchroniseerd:`,showingCount:`{{showing}} van {{total}} presets weergegeven`,noPresetsFound:`Geen presets gevonden`,columns:{filament:`Filament`,process:`Proces`,printer:`Printer`},noFilamentPresets:`Geen filamentpresets`,noProcessPresets:`Geen procespresets`,noPrinterPresets:`Geen printerpresets`,filters:{type:`Type`,owner:`Eigenaar`,printer:`Printer`,nozzle:`Nozzle`,filament:`Filament`,layer:`Laag`,all:`Alle`,myPresets:`Mijn presets`,builtIn:`Ingebouwd`,process:`Proces`},noTemplatesPermission:`Je hebt geen toestemming om sjablonen te beheren`,noRefreshPermission:`Je hebt geen toestemming om profielen te vernieuwen`,noCreatePermission:`Je hebt geen toestemming om presets te maken`},templates:{title:`Snelle sjablonen`,noTemplates:`Nog geen sjablonen`,createFirst:`Maak sjablonen vanuit de preseteditor`,typeFilter:`Type:`,deleteTitle:`Sjabloon verwijderen`,deleteWarning:`Deze actie kan niet ongedaan worden gemaakt`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen?`,namePlaceholder:`Sjabloonnaam`,descriptionPlaceholder:`Beschrijving`,settingsJson:`Instellingen (JSON)`,fieldsCount:`{{count}} velden`,shownInModals:`Getoond in vensters`,hiddenInModals:`Verborgen in vensters`,apply:`Toepassen`,toast:{deleted:`Sjabloon verwijderd`,updated:`Sjabloon bijgewerkt`,created:`Sjabloon gemaakt`,applied:`Sjabloon toegepast`}}},support:{debugLoggingActive:`Debuglogboekregistratie is actief`,manageLogs:`Beheren`,collectItem7:`Printerverbinding en firmwareversies`,collectItem8:`Integratiestatus (Spoolman, MQTT, HA)`,collectItem9:`Netwerkinterfaces (alleen subnetten)`,collectItem10:`Python-pakketversies`,collectItem11:`Databasegezondheidscontroles`,collectItem12:`Docker-omgevingsdetails`,bundleGenerating:`Bundel genereren...`,bundleStepConnection:`Printerverbindingscontroles uitvoeren`,bundleStepVirtualPrinters:`Installatiecontroles virtuele printer uitvoeren`,bundleStepLogScan:`Recente logboeken scannen op bekende problemen`,bundleStepBuild:`Supportbundel-ZIP maken`},fileManager:{variants:{badge:`{{count}} versies`,groupAction:`Als versies groeperen`,groupTooltip:`Markeer deze bestanden als dezelfde taak, gesliced voor verschillende printers`,grouped:`{{count}} bestanden als versies gegroepeerd`,printAlternatives:`Afdrukken ({{count}} alternatieven)`},title:`Bestandsbeheer`,subtitle:`Organiseer en beheer je afdrukbestanden`,uploadFiles:`Bestanden uploaden`,newFolder:`Nieuwe map`,folderName:`Mapnaam`,folderNamePlaceholder:`bijv. Functionele onderdelen`,renameFile:`Bestand hernoemen`,renameFolder:`Map hernoemen`,invalidFilenameChar:`Het teken "{{char}}" is niet toegestaan in bestandsnamen voor afdrukken. De SD-kaart van de printer weigert: < > : " / \\ | ? *`,moveFiles:`{{count}} bestand(en) verplaatsen`,rootNoFolder:`Hoofdmap (geen map)`,current:`huidig`,linkFolder:`Map koppelen`,linkFolderDescription:`Koppel "{{name}}" aan een project of archief voor snelle toegang.`,project:`Project`,archive:`Archief`,noProjectsFound:`Geen projecten gevonden`,noArchivesFound:`Geen archieven gevonden`,unlink:`Ontkoppelen`,link:`Koppelen`,dragDropFiles:`Sleep bestanden hierheen`,dropFilesHere:`Zet bestanden hier neer`,releaseToUpload:`Loslaten om te uploaden`,orClickToBrowse:`of klik om te bladeren`,allFileTypesSupported:`Alle bestandstypen worden ondersteund. ZIP-bestanden worden uitgepakt.`,zipFilesDetected:`ZIP-bestanden gedetecteerd`,zipExtractOptions:`ZIP-bestanden worden uitgepakt. Kies hoe de mapstructuur moet worden verwerkt:`,preserveZipStructure:`Mapstructuur uit ZIP behouden`,createFolderFromZip:`Map maken op basis van ZIP-bestandsnaam`,stlThumbnailGeneration:`STL-miniaturen genereren`,zipMayContainStl:`ZIP-bestanden kunnen STL-bestanden bevatten. Miniaturen kunnen tijdens het uitpakken worden gegenereerd.`,thumbnailsCanBeGenerated:`Voor STL-bestanden kunnen miniaturen worden gegenereerd. Grote modellen kunnen langer duren om te verwerken.`,generateThumbnailsForStl:`Miniaturen genereren voor STL-bestanden`,threemfDetected:`3MF-bestanden gedetecteerd`,threemfExtractionInfo:`Printermodel, materiaal, kleur en afdrukinstellingen worden automatisch uit 3MF-bestanden gehaald.`,willBeExtracted:`Wordt uitgepakt`,filesExtracted:`{{count}} bestanden uitgepakt`,uploadComplete:`Upload voltooid: {{succeeded}} geslaagd`,uploadFailed:`Upload mislukt`,zipFilesFailed:`{{count}} bestanden mislukt`,uploading:`Uploaden...`,changeLink:`Koppeling wijzigen...`,linkTo:`Koppelen aan...`,linkToProjectOrArchive:`Koppelen aan project of archief`,generateThumbnail:`Miniatuur genereren`,generateThumbnails:`Miniaturen genereren`,generateThumbnailsForMissing:`Miniaturen genereren voor STL-bestanden die ze missen`,gridView:`Rasterweergave`,listView:`Lijstweergave`,lowDiskSpaceWarning:`Waarschuwing weinig schijfruimte`,lowDiskSpaceDetails:`Slechts {{free}} vrij van {{total}} totaal. De drempel is in de instellingen ingesteld op {{threshold}} GB.`,files:`Bestanden`,folders:`Mappen`,size:`Grootte`,free:`Vrij`,allFiles:`Alle bestanden`,allExternal:`Extern`,externalIsEmpty:`Geen externe bestanden`,externalEmptyDescription:`Bestanden in je gekoppelde externe mappen verschijnen hier.`,wrap:`Regelafbreking`,enableTextWrapping:`Tekstterugloop inschakelen`,disableTextWrapping:`Tekstterugloop uitschakelen`,collapse:`Inklappen`,collapseFoldersByDefault:`Mappen standaard inklappen`,expandFoldersByDefault:`Mappen standaard uitklappen`,folderSort:`Mappen sorteren`,folderSortByName:`Op naam`,folderSortByActivity:`Op recente activiteit`,dragToResizeTooltip:`Sleep om grootte te wijzigen, dubbelklik om te resetten`,searchFiles:`Bestanden zoeken...`,searchSubfoldersHint:`Inclusief submappen`,readme:{truncated:`Afgekapt`,show:`README tonen`,hide:`README verbergen`,label:`README`},tags:{title:`Tags`,subtitle:`Label bestanden voor flexibele filtering — speelgoed, kindveilig, alleen PETG, wat je maar wilt.`,manage:`Tags`,manageTitle:`Tagcatalogus beheren`,add:`Nieuwe tag`,edit:`Tag hernoemen`,name:`Naam`,fileCount:`Bestanden`,empty:`Nog geen tags. Maak er een om bestanden te gaan labelen.`,noMatches:`Geen overeenkomende tags.`,createPlaceholder:`bijv. speelgoed, kindveilig, petg`,createButton:`Maken`,nameRequired:`Naam is verplicht.`,searchPlaceholder:`Tags filteren...`,created:`Tag gemaakt.`,updated:`Tag hernoemd.`,deleted:`Tag verwijderd.`,saveFailed:`Tag kon niet worden opgeslagen.`,deleteFailed:`Tag kon niet worden verwijderd.`,applyFailed:`Tags konden niet worden toegepast.`,applyAdd:`Tags toevoegen`,applyRemove:`Tags verwijderen`,applyAddSuccess:`{{count}} tag(s) toegevoegd aan {{files}} bestand(en).`,applyRemoveSuccess:`{{count}} tag(s) verwijderd van {{files}} bestand(en).`,actionAdd:`Toevoegen aan geselecteerde bestanden`,actionRemove:`Verwijderen van geselecteerde bestanden`,tagAction:`Tag`,bulkTitle:`{{count}} geselecteerde bestand(en) taggen`,bulkTooltip:`Tags toevoegen aan of verwijderen van elk geselecteerd bestand.`,noPermission:`Je hebt geen toestemming om bestanden te taggen.`,filterLabel:`Filteren op:`,clearAll:`Alles wissen`,confirmDelete:`Tag "{{name}}" verwijderen?`,confirmDeleteMessage:`Hiermee wordt de tag uit de catalogus verwijderd. Bestanden behouden hun andere tags.`,confirmDeleteInUseMessage:`Deze tag staat op {{count}} bestand(en). Bij verwijderen verdwijnt het label van al deze bestanden; de bestanden zelf blijven intact.`,editAria:`{{name}} bewerken`,deleteAria:`{{name}} verwijderen`},allTypes:`Alle typen`,prints:`Afdrukken`,ascending:`Oplopend`,descending:`Aflopend`,showModified:`Wijzigingsdatums tonen`,hideModified:`Wijzigingsdatums verbergen`,lastModified:`Laatst gewijzigd`,lastActivity:`Laatste activiteit`,resultsCount:`{{showing}} van {{total}} bestanden`,selectAll:`Alles selecteren`,deselectAll:`Alles deselecteren`,selected:`{{count}} geselecteerd`,adding:`Toevoegen...`,loadingFiles:`Bestanden laden...`,folderIsEmpty:`Map is leeg`,noFilesYet:`Nog geen bestanden`,folderEmptyDescription:`Upload bestanden of verplaats bestanden naar deze map om te beginnen.`,noFilesDescription:`Upload bestanden om je afdrukgerelateerde bestanden te organiseren.`,noMatchingFiles:`Geen overeenkomende bestanden`,noMatchingFilesDescription:`Geen bestanden komen overeen met je huidige zoek- of filtercriteria.`,clearFilters:`Filters wissen`,printedCount:`{{count}}x afgedrukt`,uploadedBy:`Geüpload door`,deleteFolder:`Map verwijderen`,deleteFile:`Bestand verwijderen`,deleteFilesCount:`{{count}} bestanden verwijderen`,deleteFolderConfirm:`Weet je zeker dat je deze map wilt verwijderen? Alle bestanden erin worden ook verwijderd.`,deleteFileConfirm:`Weet je zeker dat je dit bestand wilt verwijderen?`,deleteFilesConfirm:`Weet je zeker dat je {{count}} geselecteerde bestanden wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.`,deleting:`Verwijderen...`,noPermissionRenameFolder:`Je hebt geen toestemming om mappen te hernoemen`,noPermissionLinkFolder:`Je hebt geen toestemming om mappen te koppelen`,noPermissionDeleteFolder:`Je hebt geen toestemming om mappen te verwijderen`,onlyEmptyFoldersDeletable:`Je kunt alleen lege mappen verwijderen`,noPermissionPrint:`Je hebt geen toestemming om af te drukken`,noPermissionAddToQueue:`Je hebt geen toestemming om aan de wachtrij toe te voegen`,noPermissionSlice:`Je hebt geen toestemming om bestanden te slicen`,noPermissionDownload:`Je hebt geen toestemming om bestanden te downloaden`,noPermissionPreview:`Je hebt geen toestemming om bestanden te bekijken`,preview3d:`3D-voorbeeld`,noPermissionRenameFile:`Je hebt geen toestemming om dit bestand te hernoemen`,noPermissionGenerateThumbnail:`Je hebt geen toestemming om miniaturen te genereren`,noPermissionDeleteFile:`Je hebt geen toestemming om dit bestand te verwijderen`,noPermissionCreateFolder:`Je hebt geen toestemming om mappen te maken`,noPermissionUpload:`Je hebt geen toestemming om bestanden te uploaden`,noPermissionMoveFiles:`Je hebt geen toestemming om bestanden te verplaatsen`,noPermissionDeleteFiles:`Je hebt geen toestemming om bestanden te verwijderen`,linkExternal:`Extern koppelen`,linkExternalFolder:`Externe map koppelen`,linkExternalFolderDescription:`Koppel een hostmap (NAS, USB, netwerkshare) aan Bestandsbeheer. Bestanden worden niet gekopieerd — ze worden rechtstreeks vanaf het oorspronkelijke pad benaderd.`,externalFolderNamePlaceholder:`bijv. NAS-afdrukken`,externalPath:`Hostpad`,externalPathHelp:`Absoluut pad naar de map op de Docker-host. Moet als bind-mount in de container zijn gekoppeld.`,readOnly:`Alleen-lezen`,readOnlyHelp:`voorkomt uploads en verwijderingen`,showHiddenFiles:`Verborgen bestanden tonen (dotfiles)`,externalFolder:`Externe map`,scanFolder:`Scannen`,toast:{folderCreated:`Map gemaakt`,openInSlicerFailed:`Kon niet openen in slicer`,folderDeleted:`Map verwijderd`,fileDeleted:`Bestand verwijderd`,filesDeleted:`{{count}} bestanden verwijderd`,filesMoved:`Bestanden verplaatst`,folderLinked:`Map gekoppeld`,folderUnlinked:`Map ontkoppeld`,externalFolderLinked:`Externe map gekoppeld en gescand`,folderScanned:`Scan voltooid: {{added}} toegevoegd, {{removed}} verwijderd`,addedToQueue:`{{count}} bestand(en) aan wachtrij toegevoegd`,addedToQueuePartial:`{{added}} bestand(en) toegevoegd, {{failed}} mislukt`,failedToAddToQueue:`Bestanden toevoegen mislukt: {{error}}`,fileRenamed:`Bestand hernoemd`,folderRenamed:`Map hernoemd`,thumbnailsGenerated:`{{count}} miniatuur/miniaturen gegenereerd`,thumbnailsGeneratedPartial:`{{succeeded}} miniatuur/miniaturen gegenereerd, {{failed}} mislukt`,noStlMissingThumbnails:`Geen STL-bestanden zonder miniaturen`,failedToGenerateThumbnails:`Miniaturen genereren mislukt: {{error}}`,thumbnailGenerated:`Miniatuur gegenereerd`,failedToGenerateThumbnail:`Miniatuur genereren mislukt: {{error}}`}},projects:{parentLabel:`Bovenliggend project`,parentNone:`Geen (project op hoogste niveau)`,parentHint:`Plaats dit project onder een ander project zodat de cijfers worden opgeteld in een hoofdproject`,partOf:`Onderdeel van {{name}}`,subProjectCount:`{{count}} subprojecten`,subProjectsOf:`Subprojecten van {{name}}`,title:`Projecten`,subtitle:`Organiseer en volg je 3D-printprojecten`,newProject:`Nieuw project`,editProject:`Project bewerken`,deleteProject:`Project verwijderen`,projectName:`Projectnaam`,description:`Beschrijving`,noProjects:`Nog geen projecten`,noProjectsFiltered:`Geen {{status}} projecten`,noProjectsFilteredHelp:`Je hebt geen {{status}} projecten. Projecten verschijnen hier wanneer hun status verandert.`,createFirst:`Maak je eerste project om gerelateerde afdrukken te organiseren, voortgang bij te houden en je builds te beheren.`,createFirstButton:`Maak je eerste project`,create:`Maken`,files:`Bestanden`,prints:`Afdrukken`,plates:`platen`,parts:`onderdelen`,lastModified:`Laatst gewijzigd`,deleteConfirm:`Weet je zeker dat je dit project wilt verwijderen? Archieven en wachtrij-items worden ontkoppeld maar niet verwijderd.`,addFiles:`Bestanden toevoegen`,removeFile:`Bestand verwijderen`,viewDetails:`Details bekijken`,namePlaceholder:`bijv. Voron 2.4 Build`,descriptionPlaceholder:`Optionele beschrijving...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`URL moet beginnen met http:// of https://`,openExternalUrl:`Project-URL openen`,coverImageLabel:`Omslagfoto`,coverImageAlt:`Projectomslagfoto`,coverImageUpload:`Uploaden`,coverImageReplace:`Vervangen`,coverImageRemove:`Verwijderen`,color:`Kleur`,targetPlates:`Doelaantal platen`,targetPlatesPlaceholder:`bijv. 25`,targetPlatesHelp:`Aantal afdruktaken`,targetParts:`Doelaantal onderdelen`,targetPartsPlaceholder:`bijv. 150`,targetPartsHelp:`Totaal aantal benodigde objecten`,targetSets:`Kopieën per bestand`,targetSetsPlaceholder:`bijv. 10`,targetSetsHelp:`Aantal keren dat elk afdrukbaar bestand moet worden afgedrukt`,tagsLabel:`Tags (door komma's gescheiden)`,tagsPlaceholder:`bijv. voron, functioneel, cadeau`,dueDate:`Einddatum`,priority:`Prioriteit`,priorityLow:`Laag`,priorityNormal:`Normaal`,priorityHigh:`Hoog`,priorityUrgent:`Urgent`,statusActive:`Actief`,statusCompleted:`Voltooid`,statusArchived:`Gearchiveerd`,done:`Klaar`,completed:`voltooid`,failed:`mislukt`,inQueue:`in wachtrij`,noPrintsYet:`Nog geen afdrukken`,printJobs:`Afdruktaken (platen)`,partsPrinted:`Afgedrukte onderdelen`,failedParts:`Mislukte onderdelen`,import:`Importeren`,export:`Exporteren`,importProject:`Project importeren`,exportAll:`Alle projecten exporteren`,loading:`Projecten laden...`,noEditPermission:`Je hebt geen toestemming om projecten te bewerken`,noDeletePermission:`Je hebt geen toestemming om projecten te verwijderen`,noCreatePermission:`Je hebt geen toestemming om projecten te maken`,noImportPermission:`Je hebt geen toestemming om projecten te importeren`,noExportPermission:`Je hebt geen toestemming om projecten te exporteren`,toast:{created:`Project gemaakt`,updated:`Project bijgewerkt`,deleted:`Project verwijderd`,imported:`Project geïmporteerd`,multipleImported:`{{count}} projecten geïmporteerd`,importFailed:`Importeren mislukt`,exported:`Projecten geëxporteerd (alleen metadata)`}},projectDetail:{notFound:`Project niet gevonden`,backToProjects:`Terug naar Projecten`,export:`Exporteren`,exportProject:`Project exporteren`,noExportPermission:`Je hebt geen toestemming om projecten te exporteren`,noEditPermission:`Je hebt geen toestemming om projecten te bewerken`,partOf:`Onderdeel van:`,priorityLabel:`Prioriteit:`,noPrints:`Nog geen afdrukken in dit project`,status:{active:`Actief`,completed:`Voltooid`,archived:`Gearchiveerd`},priority:{low:`Laag`,normal:`Normaal`,high:`Hoog`,urgent:`Urgent`},dueDate:{overdue:`Te laat`,today:`Vandaag te doen`,daysLeft:`{{count}} dagen resterend`},progress:{platesProgress:`Voortgang platen`,partsProgress:`Voortgang onderdelen`,setsProgress:`Volledige sets`,sets:`sets`,setsHint:`Een set is compleet zodra elk afdrukbaar bestand dit aantal heeft bereikt`,printJobs:`afdruktaken`,parts:`onderdelen`,percentComplete:`{{percent}}% voltooid`,remaining:`{{count}} resterend`},stats:{printJobs:`Afdruktaken`,total:`totaal`,failed:`{{count}} mislukt`,partsPrinted:`{{count}} onderdelen afgedrukt`,printTime:`Afdruktijd`,filamentUsed:`Filament gebruikt`},cost:{title:`Kostentracking`,filamentCost:`Filamentkosten`,energy:`Energie`,totalCost:`Geschatte kosten`,total:`Totaal`,includesBom:`incl. materiaallijst`,budget:`Budget`,remaining:`Resterend`},subProjects:{title:`Subprojecten ({{count}})`,jobs:`{{count}} taken`},rollup:{title:`Inclusief {{count}} subprojecten`,progress:`Totale voortgang`,percentComplete:`{{percent}}% voltooid`},notes:{title:`Notities`,noEditPermission:`Je hebt geen toestemming om notities te bewerken`,placeholder:`Voeg notities over dit project toe...`,empty:`Nog geen notities. Klik op Bewerken om notities toe te voegen.`},files:{title:`Bestanden`,linkFolders:`Koppel mappen vanuit Bestandsbeheer`,forQuickAccess:`aan dit project voor snelle toegang.`,fileCount:`{{count}} bestand(en)`,empty:`Geen mappen gekoppeld. Ga naar Bestandsbeheer en koppel een map aan dit project.`,printedCount:`{{count}} keer afgedrukt`,progressTooltip:`{{done}} van {{target}} voltooide afdrukken`,noFiles:`Geen bestanden in deze map.`},bom:{title:`Materiaallijst`,acquired:`{{completed}}/{{total}} aangeschaft`,showAll:`Alles tonen`,hideDone:`Voltooide verbergen`,addPart:`Onderdeel toevoegen`,noAddPermission:`Je hebt geen toestemming om onderdelen toe te voegen`,partNamePlaceholder:`Onderdeelnaam (bijv. M3x8-schroeven)`,partName:`Onderdeelnaam`,qty:`Aantal`,price:`Prijs ({{currency}})`,sourcingUrlPlaceholder:`Inkoop-URL (optioneel)`,remarksPlaceholder:`Opmerkingen (optioneel)`,deletePart:`Onderdeel verwijderen`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen?`,noUpdatePermission:`Je hebt geen toestemming om onderdelen bij te werken`,noEditPermission:`Je hebt geen toestemming om onderdelen te bewerken`,noDeletePermission:`Je hebt geen toestemming om onderdelen te verwijderen`,totalCost:`Totale kosten:`,empty:`Geen onderdelen in de materiaallijst. Voeg hardware, elektronica of andere componenten toe om bij te houden wat nog moet worden ingekocht.`},timeline:{title:`Activiteitentijdlijn`,empty:`Nog geen activiteit.`},template:{saveAsTemplate:`Opslaan als sjabloon`,noCreatePermission:`Je hebt geen toestemming om sjablonen te maken`},queue:{title:`Wachtrij`,viewAll:`Alles bekijken`,printing:`{{count}} bezig met afdrukken`,queued:`{{count}} in wachtrij`},prints:{title:`Afdrukken ({{count}})`},toast:{projectUpdated:`Project bijgewerkt`,partAdded:`Onderdeel toegevoegd`,partRemoved:`Onderdeel verwijderd`,exportFailed:`Export mislukt`,projectExported:`Project geëxporteerd`,templateCreated:`Sjabloon gemaakt`}},system:{title:`Systeeminformatie`,version:`Versie`,uptime:`Uptime`,cpuUsage:`CPU-gebruik`,memoryUsage:`Geheugengebruik`,diskUsage:`Schijfgebruik`,networkInfo:`Netwerkinformatie`,logs:`Logboeken`,debugMode:`Debugmodus`,enableDebug:`Debuglogboekregistratie inschakelen`,disableDebug:`Debuglogboekregistratie uitschakelen`,downloadLogs:`Logboeken downloaden`,clearLogs:`Logboeken wissen`,dockerInfo:`Docker-informatie`,containerName:`Containernaam`,imageName:`Imagenaam`,platform:`Platform`,architecture:`Architectuur`},sponsors:{sectionTitle:`Onafhankelijk en door de community gefinancierd`,tagline:`Bambuddy is gratis en blijft dat omdat mensen ervoor kiezen het te ondersteunen. Geen durfkapitaal, geen cloud-lock-in.`,viewSupporters:`Supporters bekijken`,toastPrints:`Je hebt {{count}} afdrukken voltooid met Bambuddy. Bambuddy blijft gratis dankzij zijn supporters.`,toastCost:`Je hebt {{total}} aan filament bijgehouden met Bambuddy. Bekijk wie het project onafhankelijk houdt.`,toastArchives:`{{count}} afdrukken gearchiveerd met Bambuddy. Bekijk wie het onafhankelijk houdt.`,toastAnniversary:`Eén jaar met Bambuddy! Bekijk wie het project onafhankelijk houdt.`,toastVersionUpdate:`Bijgewerkt naar v{{version}}. Bambuddy blijft gratis dankzij zijn supporters.`,toastBusiness:`Gebruik je Bambuddy met {{count}} printers? Er is een supportplan voor teams — prioriteitsoplossingen, facturering en direct contact met de beheerder.`,businessCta:`Bambuddy voor bedrijven`,businessTitle:`Bambuddy voor bedrijven`,businessTagline:`Je gebruikt {{count}} printers. Prioriteitssupport, commerciële licenties en facturering zijn beschikbaar voor teams en printfarms.`},library:{title:`Filamentbibliotheek`,addFilament:`Filament toevoegen`,editFilament:`Filament bewerken`,deleteFilament:`Filament verwijderen`,vendor:`Leverancier`,material:`Materiaal`,color:`Kleur`,kFactor:`K-factor`,temperature:`Temperatuur`,noFilaments:`Geen filamenten in bibliotheek`,deleteConfirm:`Weet je zeker dat je dit filament wilt verwijderen?`,importFromPrinter:`Importeren vanaf printer`,exportToFile:`Exporteren naar bestand`,runWithPipeline:{actionLabel:`Uitvoeren met pipeline`,noPermission:`Je hebt geen toestemming om pipelines uit te voeren`,modalTitle:`Uitvoeren met pipeline`,confirmTitle:`Run bevestigen`,confirmIntro:`Pre-flight heeft problemen met deze run gevonden`,sourceHint:`Bron`,pipelineHint:`Pipeline`,targetHint:`Doel`,pipelineListAria:`Beschikbare pipelines`,runAnyway:`Toch uitvoeren`,loading:`Laden…`,empty:`Nog geen pipelines opgeslagen. Open het Slice-dialoogvenster en klik op "Opslaan als pipeline" om er een te maken.`,noTarget:`Geen doelprinter ingesteld`,noTargetMessage:`Deze pipeline heeft geen doelprinter ingesteld. Open hem in Instellingen om er een te kiezen.`,copies:`Kopieën`,copiesHint:`max. {{n}}`,classTarget:`Elke {{model}}`,toast:{started:`Pipeline-run gestart`,failed:`Run starten mislukt`},issue:{printerNotSet:`Geen doelprinter ingesteld voor deze pipeline.`,printerNotFound:`Doelprinter bestaat niet meer.`,printerDisabled:`Doelprinter is uitgeschakeld.`,printerOffline:`Doelprinter is offline.`,filamentType:`Filamentsleuf {{slot}}: verwacht {{expected}}, AMS heeft {{actual}}`,filamentColor:`Filamentsleuf {{slot}}: kleur wijkt af (verwacht {{expected}}, AMS heeft {{actual}})`,amsSlotMissing:`AMS-sleuf {{slot}} is niet beschikbaar op deze printer`,filamentUnverified:`Filamentsleuf {{slot}} komt uit een cloud-/standaardpreset en kon niet statisch worden geverifieerd.`,noClassMatches:`Geen printers in deze installatie komen overeen met de doelmodelklasse van de pipeline ({{expected}}).`,classNotSet:`Pipelinedoel is ingesteld op een printerklasse, maar er is geen model gekozen.`}}},slicerSettings:{presetValuesOutdatedSidecar:`Slicerstandaarden weergegeven: je slicer-sidecar is ouder dan deze functie en kan de waarden van een preset niet rapporteren. Werk de sidecar-image bij om ze te zien. Alles wat je niet wijzigt blijft de preset gebruiken.`,presetValuesNotConfigured:`Slicerstandaarden weergegeven: er is geen slicer-sidecar geconfigureerd, dus de waarden van een preset kunnen niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.`,presetValuesSidecarUnavailable:`Slicerstandaarden weergegeven: de slicer-sidecar antwoordde niet, dus de waarden van een preset kunnen niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.`,presetValuesUnavailable:`Slicerstandaarden weergegeven: de eigen waarden van de gekozen preset konden niet worden gelezen. Alles wat je niet wijzigt blijft de preset gebruiken.`,filamentDefault:`Standaard`,fromFile:`uit bestand`,fromFileHint:`De ontwerper heeft dit in het bronbestand gewijzigd. De waarde is {{value}}.`,fromFilePrinterCoupled:`printer van ontwerper`,fromFilePrinterCoupledHint:`Afgestemd op de printer waarvoor dit bestand is ontworpen -- kan op jouw printer verkeerd of buiten bereik zijn.`,fromFileOverridesPreset:`overschrijft preset`,fromFileOverridesPresetHint:`Het bestand stelt dit in op {{value}}, terwijl de gekozen preset {{preset}} gebruikt. Vink dit alleen aan als het bestand voorrang moet krijgen.`,useFromFile:`Waarde uit het bronbestand gebruiken voor {{option}}`,otherFromFile:`Andere instellingen uit dit bestand`,fromFileSummary:`De ontwerper heeft {{count}} procesinstellingen in dit bestand gewijzigd. Alleen de instellingen die je aanvinkt worden gebruikt.`,fromFileUseAll:`Instellingen van de ontwerper gebruiken`,fromFileUseAllHint:`Vinkt de instellingen aan die tussen printers overdraagbaar zijn. Instellingen die zijn afgestemd op de eigen printer van de ontwerper en instellingen die de gekozen preset definiëren blijven uitgeschakeld.`,fromFileClear:`{{count}} wissen`,loading:`Slicerinstellingen laden…`,mode:{simple:`Eenvoudig`,advanced:`Geavanceerd`,expert:`Expert`},searchPlaceholder:`Instellingen zoeken`,resetAll:`{{count}} resetten`,resetOption:`Terugzetten naar standaard`,noMatches:`Geen instellingen komen overeen met deze zoekopdracht.`},slice:{filamentSlotUnset:`niet ingesteld`,processSettingsEmbedded:`Niet gebruikt zolang "Ingebouwde instellingen van het bestand gebruiken" is ingeschakeld -- de eigen instellingen van het bestand sturen deze slice aan.`,processSettingsInactive:`Inactief`,presetsHidden:`{{count}} verborgen`,showAllPresets:`Alles tonen`,showFewerPresets:`Minder tonen`,processSettings:`Procesinstellingen`,processSettingsHint:`Pas de gekozen preset aan voor deze slice. Alles wat je niet aanraakt blijft zoals de preset het definieert.`,processSettingsChanged:`{{count}} gewijzigd`,processSettingsUnchanged:`Presetstandaarden`,title:`Model slicen`,action:`Slicen`,actionAll:`Alle {{count}} platen slicen`,actionAllTitle:`Slice elke plaat naar één uitvoer met meerdere platen (één archief). Filamentselectie omvat elke sleuf die het project definieert.`,allPlatesToggle:`Alle {{count}} platen slicen`,slicing:`Slicen…`,printer:`Printerprofiel`,process:`Procesprofiel`,filament:`Filamentprofiel`,filamentSlot:`Filament {{index}} ({{type}})`,selectPreset:`— Selecteer een preset —`,loadingPresets:`Presets laden…`,analyzingPlateFilaments:`Filamenten op plaat analyseren…`,analyzingPlateFilamentsHint:`Een voorbeeldslice uitvoeren om te ontdekken welke AMS-sleuven deze plaat gebruikt. Daarna gecachet — opnieuw openen is direct.`,previewToast:`{{name}} analyseren — {{elapsed}}`,previewWithProgress:`{{name}} analyseren — {{stage}} ({{percent}}%) — {{elapsed}}`,notUsedByPlate:`— niet gebruikt door deze plaat`,noPresetsForSlot:`Geen presets beschikbaar`,otherPrinters:`Andere printers`,presetsLoadFailed:`Presets laden mislukt. Open eerst Instellingen → Profielen om ze te importeren.`,refreshPresets:`Vernieuwen`,refreshPresetsTitle:`Presets vernieuwen — haal de nieuwste cloud- en meegeleverde lijsten op (gebruik na het verwijderen van een preset in Bambu Studio of Bambu Handy)`,allPresetsRequired:`Alle presets moeten worden geselecteerd`,useEmbedded:`Ingebouwde instellingen van het bestand gebruiken`,useEmbeddedHint:`Slice zoals de ontwerper het heeft ingesteld (wanden, infill, filament) in plaats van met bovenstaande profielen. Beschikbaar omdat je printer overeenkomt met die van het bestand.`,autoOrient:`Objecten automatisch oriënteren`,autoOrientHint:`Laat de slicer elk object eerst naar de beste afdrukzijde draaien. Overschrijft de oriëntatie uit het bestand.`,autoArrange:`Automatisch op de plaat rangschikken`,autoArrangeHint:`Laat de slicer de objecten positioneren zodat ze niet meer overlappen. Vervangt de indeling uit het bestand.`,enqueuing:`Slicetaak indienen…`,queued:`In wachtrij…`,failed:`Slicen mislukt. Controleer de logboeken van de slicer-sidecar.`,startedToast:`{{name}} op de achtergrond slicen…`,queuedToast:`In wachtrij: {{name}} — {{elapsed}}`,runningToast:`{{name}} slicen — {{elapsed}}`,runningWithProgress:`{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,runningWithProgressMultiPlate:`Plaat {{plateIndex}} van {{plateCount}} • {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,completedToast:`{{name}} gesliced`,externalWriteFallbackToast:`Opgeslagen in de interne bibliotheek: er kon niet naar de externe map worden geschreven`,failedTitle:`Slicen mislukt`,failedToast:`Slicen van {{name}} mislukt: {{detail}}`,tier:{local:`Geïmporteerd`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`Standaard`},cloud:{notAuthenticated:`Log in op Bambu Cloud (Instellingen → Profielen → Bambu Cloud) om je cloudpresets te zien.`,expired:`Bambu Cloud-sessie verlopen — log opnieuw in om je cloudpresets te vernieuwen.`,unreachable:`Bambu Cloud is momenteel niet bereikbaar. Lokale en standaardpresets blijven werken.`},orcaCloud:{notAuthenticated:`Log in op Orca Cloud (Profielen → Orca Cloud) om je Orca-presets te zien.`,expired:`Orca Cloud-sessie verlopen — log opnieuw in om je Orca-presets te vernieuwen.`,unreachable:`Orca Cloud is momenteel niet bereikbaar. Andere presets blijven werken.`},bedType:{label:`Bouwplaat`,auto:`Auto (procespreset gebruiken)`,coolPlate:`Cool Plate`,coolPlateSuperTack:`Cool Plate SuperTack`,engineering:`Engineering Plate`,highTemp:`High Temp Plate`,texturedPEI:`Textured PEI Plate`,smoothPEI:`Smooth PEI Plate`},pipelines:{label:`Pipeline`,applyAria:`Pipeline toepassen`,applyPrompt:`Pipeline toepassen…`,empty:`Geen opgeslagen pipelines`,saveButton:`Opslaan als pipeline`,saveTitle:`Sla de huidige selectie van vier sleuven op als herbruikbare pipeline`,namePlaceholder:`Pipelinenaam`,nameAria:`Nieuwe pipelinenaam`,toast:{applied:`"{{name}}" toegepast`,saved:`Pipeline opgeslagen`,saveFailed:`Opslaan mislukt`}}},spoolman:{title:`Spoolman-integratie`,enabled:`Spoolman ingeschakeld`,url:`Spoolman-URL`,connected:`Verbonden`,disconnected:`Niet verbonden`,testConnection:`Verbinding testen`,sync:`Synchroniseren`,syncing:`Synchroniseren...`,lastSync:`Laatste synchronisatie`,linkToSpoolman:`Koppelen aan Spoolman`,openInSpoolman:`Openen in Spoolman`,unlinkSpool:`Spoel ontkoppelen`,unlinkConfirmTitle:`Spoeltoewijzing verwijderen?`,unlinkConfirmMessage:`Hiermee wordt de spoel uit deze sleuf verwijderd. De spoelgegevens zelf blijven ongewijzigd.`,selectSpool:`Spoel selecteren`,noUnlinkedSpools:`Geen niet-toegewezen spoelen beschikbaar`,linkSuccess:`Spoel succesvol toegewezen`,linkFailed:`Spoel toewijzen mislukt`,unlinkSuccess:`Spoeltoewijzing succesvol verwijderd`,unlinkFailed:`Spoeltoewijzing verwijderen mislukt`,linkedSpool:`Toegewezen spoel`,spoolId:`Spoel-ID`,fillSourceLabel:`(Spoolman)`,weight:`Gewicht`,remaining:`Resterend`,disableWeightSync:`Synchronisatie van geschat AMS-gewicht uitschakelen`,disableWeightSyncDesc:`Werk de resterende capaciteit niet bij op basis van AMS-schattingen. Gebruik dit als je de verbruikstracking van Spoolman verkiest boven AMS-schattingen op basis van percentages. Nieuwe spoelen gebruiken nog steeds de AMS-schatting als startgewicht.`,reportPartialUsage:`Gedeeltelijk verbruik rapporteren voor mislukte afdrukken`,reportPartialUsageDesc:`Wanneer een afdruk mislukt of wordt geannuleerd, rapporteer dan het geschatte filamentverbruik tot dat moment op basis van de laagvoortgang.`},locations:{title:`Opslaglocaties`,subtitle:`Beheer planken, laden en andere fysieke opslagplekken voor je spoelen`,add:`Locatie toevoegen`,addShort:`Toevoegen`,edit:`Locatie bewerken`,name:`Naam`,spools:`Spoelen`,sensors:`Sensoren`,empty:`Nog geen opslaglocaties. Maak je eerste plank of lade.`,manage:`Locaties`,createPlaceholder:`bijv. Plank A, Lade 1`,nameRequired:`Locatienaam is verplicht`,created:`Locatie gemaakt`,updated:`Locatie bijgewerkt`,deleted:`Locatie verwijderd`,saveFailed:`Locatie opslaan mislukt`,deleteFailed:`Locatie verwijderen mislukt`,deleteBlocked:`Verwijder alle spoelen uit deze locatie voordat je deze verwijdert`,confirmDelete:`"{{name}}" verwijderen?`,confirmDeleteMessage:`Deze locatie wordt uit de catalogus verwijderd. Spoelen moeten eerst worden verplaatst.`,confirmDeleteMessageWithSensors:`Deze locatie wordt uit de catalogus verwijderd. Spoelen moeten eerst worden verplaatst. Gekoppelde sensoren worden ook verwijderd.`},inventory:{title:`Spoelvoorraad`,subtitle:`Beheer je spoelen`,addToInventory:`Aan voorraad toevoegen`,addToInventoryPending:`Toevoegen...`,addToInventorySuccess:`Spoel aan voorraad toegevoegd`,addToInventoryFailed:`Spoel aan voorraad toevoegen mislukt`,unknownSpoolTitle:`Nieuw filament gedetecteerd`,unknownSpoolMessage:`Een spoel met een onbekende RFID-tag is gedetecteerd bij {{location}}. Nu aan je voorraad toevoegen?`,unknownSpoolSlot:`Sleuf`,bulk:{selectAllVisible:`Alle zichtbare selecteren`,selectRow:`Rij selecteren`,selectGroup:`Groep selecteren`,selectionCount:`{{count}} geselecteerd`,edit:`Bewerken`,printLabels:`Labels afdrukken`,resetUsage:`Verbruik resetten`,restore:`Herstellen`,archive:`Archief`,delete:`Verwijderen`,clearSelection:`Selectie wissen`,editTitle:`Spoelen in bulk bewerken`,editSubtitle:`Van toepassing op {{count}} geselecteerde spoelen. Alleen velden die je aanvinkt worden bijgewerkt.`,editHint:`Typ in een veld om het voor bijwerken te markeren — alleen aangevinkte rijen worden verzonden. Een leeg veld laat de spoelen ongewijzigd (velden wissen kan alleen per spoel).`,useCustom:`"{{value}}" gebruiken`,toggleField:`Bijwerken voor dit veld omschakelen`,changeCount:`{{count}} velden worden bijgewerkt.`,applyPending:`Toepassen...`,applyButton:`Toepassen op {{count}} spoelen`,deleteTitle:`Geselecteerde spoelen verwijderen`,archiveTitle:`Geselecteerde spoelen archiveren`,restoreTitle:`Geselecteerde spoelen herstellen`,resetUsageTitle:`Verbruik van geselecteerde spoelen resetten`,deleteMessage:`{{count}} spoelen permanent verwijderen? Dit kan niet ongedaan worden gemaakt.`,archiveMessage:`{{count}} spoelen archiveren? Ze kunnen later worden hersteld.`,restoreMessage:`{{count}} gearchiveerde spoelen herstellen?`,resetUsageMessage:`De teller "Totaal verbruikt" op {{count}} spoelen resetten? Resterend gewicht blijft behouden.`,updateSuccess:`{{count}} spoelen bijgewerkt`,updateFailed:`Bulkupdate mislukt`,updatePartial:`{{ok}} spoelen bijgewerkt, {{failed}} mislukt`,updateAllFailed:`Alle {{count}} spoelupdates zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen`,deleteSuccess:`{{count}} spoelen verwijderd`,deleteFailed:`Bulkverwijdering mislukt`,deletePartial:`{{ok}} spoelen verwijderd, {{failed}} mislukt`,deleteAllFailed:`Alle {{count}} spoelverwijderingen zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen`,archiveSuccess:`{{count}} spoelen gearchiveerd`,archiveFailed:`Bulkarchivering mislukt`,archivePartial:`{{ok}} spoelen gearchiveerd, {{failed}} mislukt`,archiveAllFailed:`Alle {{count}} spoelarchiveringen zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen`,restoreSuccess:`{{count}} spoelen hersteld`,restoreFailed:`Bulkherstel mislukt`,restorePartial:`{{ok}} spoelen hersteld, {{failed}} mislukt`,restoreAllFailed:`Alle {{count}} spoelherstelacties zijn mislukt — selectie blijft behouden zodat je opnieuw kunt proberen`,invalidHex:`Voer 6 hextekens (RRGGBB) of 8 (RRGGBBAA) in. Anders wordt het veld niet toegepast.`},spoolmanMixedContentTitle:`Spoolman kan niet via HTTPS laden — mixed content wordt door je browser geblokkeerd`,spoolmanMixedContentBody:`Bambuddy wordt via HTTPS aangeboden (via je reverse proxy), maar je Spoolman-URL gebruikt nog gewone HTTP. Browsers blokkeren mixed content om veiligheidsredenen, waardoor de ingebedde Spoolman-interface niet kan worden weergegeven. Spoolman moet via HTTPS bereikbaar zijn om dit te laten werken.`,spoolmanMixedContentFixReverseProxy:`Plaats Spoolman achter dezelfde reverse proxy als Bambuddy (Traefik / Nginx / Caddy) met HTTPS en werk daarna de Spoolman-URL in Instellingen bij naar het nieuwe HTTPS-adres.`,spoolmanMixedContentFixOpenNewTab:`Als tijdelijke oplossing kun je Spoolman in een nieuw browsertabblad via HTTP openen — mixed-contentregels gelden alleen voor ingebedde frames, dus een zelfstandig tabblad werkt wel.`,spoolmanOpenInNewTab:`Spoolman in nieuw tabblad openen`,labels:{title:`Spoellabels afdrukken`,selectedCount:`{{count}} geselecteerd`,pickSpools:`Kies voor welke spoelen je labels wilt afdrukken:`,monochrome:`Monochroom (zwart-witprinter)`,monochromeHint:`Verwijdert het kleurvlak en maakt de tekst breder`,startingPosition:`Startpositie van etiket`,startingPositionRange:`Alleen vellensjablonen: L7160 ondersteunt 1–21; 5160 ondersteunt 1–30.`,startingPositionInvalid:`Voer een heel getal van 1 tot {{capacity}} in.`,startingPositionFirst:`Het afdrukken begint op positie 1.`,startingPositionSkipped:`Posities 1 tot en met {{lastPosition}} blijven leeg op het eerste vel.`,startingPositionRangeError:`De startpositie moet voor dit vel tussen 1 en {{capacity}} liggen.`,searchPlaceholder:`Zoek op naam, merk of #ID`,filterByMaterial:`Materiaal:`,allMaterials:`Alle`,selectVisible:`Alle zichtbare selecteren ({{count}})`,deselectVisible:`Zichtbare deselecteren`,clearAll:`Alles wissen`,noSpoolsToShow:`Geen spoelen om te tonen. Pas je filter aan en probeer opnieuw.`,noMatches:`Geen spoelen komen overeen met de huidige zoekopdracht of het filter.`,printOne:`Label voor deze spoel afdrukken`,printLabels:`Labels afdrukken…`,bulkTitle:`Kies spoelen voor labels uit de {{count}} die momenteel worden weergegeven`,noSpoolsTitle:`Geen spoelen om te labelen`,error:`Labels genereren mislukt: {{msg}}`,sortBy:{label:`Sorteren:`,id:`Op ID`,color:`Op kleur`},templates:{amsHolderSmall:{label:`AMS-houder — klein (74 × 33 mm)`,hint:`Eén label per pagina; past bij het printbare label van MakerWorld-model 752566 (AMS Filament Label Holder).`},amsHolderLarge:{label:`AMS-houder — groot (75 × 55 mm)`,hint:`Eén label per pagina; past bij de kartonnen insteekvariant van de AMS Filament Label Holder. Ruim genoeg voor kleurvlak, merk, materiaal, ID en QR-code.`},box40x30:{label:`Dooslabel (40 × 30 mm)`,hint:`Eén label per pagina; veelgebruikt DK/Brother-rolformaat, geschikt voor filamentzakken en opslagbakken.`},box:{label:`Dooslabel (62 × 29 mm)`,hint:`Eén label per pagina; formaat voor kleine labels van Brother PT/QL en Dymo.`},averyL7160:{label:`Avery L7160 — A4-vel (38,1 × 63,5 mm × 21)`,hint:`EU-vellen; 21 labels per A4-pagina.`},avery5160:{label:`Avery 5160 — US Letter-vel (25,4 × 66,7 mm × 30)`,hint:`Amerikaanse vellen; 30 labels per Letter-pagina.`}}},csv:{importButton:`CSV importeren`,exportButton:`CSV exporteren`,modalTitle:`Spoelen importeren uit CSV`,selectFile:`Kies een CSV-bestand of sleep het hierheen`,dragHint:`Koptekst: material (verplicht), brand, subtype, color_name, rgba, …`,parsing:`Bestand lezen…`,previewError:`CSV-bestand kon niet worden gelezen`,validCount:`{{count}} geldig`,errorCount:`{{count}} fout`,skippedCount:`{{count}} overgeslagen`,colRow:`Rij`,colStatus:`Status`,colColor:`Kleur`,colorResolved:`Kleur ingevuld vanuit catalogus`,colorCrossMaterial:`Kleur overgenomen van ander materiaal — geen exacte overeenkomst in catalogus`,duplicateExisting:`Er bestaat al een spoel met dit materiaal, merk en deze kleur — deze wordt toch als nieuwe spoel geïmporteerd`,spoolmanHint:`Gebruik in Spoolman-modus de ingebouwde CSV-import/-export van Spoolman.`,importValidRows:`{{count}} geldige rijen importeren`,noValidRows:`Geen geldige rijen`,importing:`Importeren…`,importSuccess:`{{count}} spoelen geïmporteerd`,importError:`Importeren mislukt`,exportError:`Export mislukt`},addSpool:`Spoel toevoegen`,editSpool:`Spoel bewerken`,copySpool:`Spoel kopiëren`,material:`Materiaal`,selectMaterial:`Materiaal selecteren...`,subtype:`Subtype`,brand:`Merk`,searchBrand:`Merk zoeken...`,useCustomBrand:`"{{brand}}" gebruiken`,useCustomMaterial:`Aangepast materiaal gebruiken: {{material}}`,suggestedOptions:`Voorgesteld`,allOptions:`Alle`,colorName:`Kleurnaam`,colorNamePlaceholder:`Jade White, Fire Red...`,color:`Kleur`,hexColor:`Hexkleur`,pickColor:`Aangepaste kleur kiezen`,labelWeight:`Labelgewicht`,coreWeight:`Leeg spoelgewicht`,searchSpoolWeight:`Spoelgewicht zoeken...`,weightUsed:`Gebruikt`,currentWeight:`Resterend gewicht`,measuredWeight:`Gemeten gewicht`,spoolName:`Spoel`,costPerKg:`Kosten per kg`,storageLocation:`Opslaglocatie`,temperature:`Temperatuur`,humidity:`Luchtvochtigheid`,battery:`Batterij`,storageLocationPlaceholder:`bijv. Plank A, Lade 1`,openInInventory:`Openen in Voorraad`,measuredWeightError:`Gemeten gewicht moet tussen {{min}}g en {{max}}g liggen.`,slicerFilament:`Slicerfilament`,slicerFilamentName:`Naam slicerpreset`,slicerPreset:`Slicer-preset`,searchPresets:`Filamentpresets zoeken...`,selectedPreset:`Geselecteerd`,noPresetsFound:`Geen presets gevonden`,tempOverrides:`Temperatuuroverschrijvingen`,note:`Notitie`,notePlaceholder:`Eventuele extra notities over deze spoel...`,category:`Categorie`,categoryPlaceholder:`bijv. Productie, Prototype, Klant A`,categoryNone:`Niet gecategoriseerd`,storageLocationNone:`Geen locatie ingesteld`,lowStockThresholdOverride:`Drempel lage voorraad (deze spoel)`,lowStockThresholdOverrideHelp:`Laat leeg om de globale drempel ({{global}}%) te gebruiken.`,clearRfid:`RFID-tag wissen`,rfidCleared:`RFID-tag gewist`,archive:`Archief`,restore:`Herstellen`,noSpools:`Nog geen spoelen. Voeg je eerste spoel toe om te beginnen.`,noAvailableSpools:`Geen spoelen beschikbaar. Voeg eerst een spoel toe aan je voorraad of maak de toewijzing van een andere sleuf ongedaan.`,kProfiles:`K-profielen`,addKProfile:`K-profiel toevoegen`,assignSpool:`Spoel toewijzen`,unassignSpool:`Toewijzing opheffen`,assignSuccess:`Spoel toegewezen en AMS-sleuf geconfigureerd`,assignPendingInsert:`Toegewezen. Sleuf wordt geconfigureerd zodra je de spoel plaatst.`,assignFailed:`Spoel toewijzen mislukt`,selectSpool:`Selecteer een spoel om aan deze sleuf toe te wijzen`,assigned:`Toegewezen`,assigning:`Toewijzen...`,searchSpools:`Spoelen zoeken...`,showAllSpools:`Alle spoelen tonen`,spoolmanSpools:`Spoolman-spoelen`,allMaterials:`Alle materialen`,filterByBrand:`Filteren op merk...`,showArchived:`Gearchiveerde tonen`,quickAdd:`Snel toevoegen (voorraad)`,quantity:`Aantal`,stock:`Voorraad`,configured:`Geconfigureerd`,spoolsCreated:`{{count}} spoelen gemaakt`,spoolsPartiallyCreated:`{{created}} van {{total}} spoelen gemaakt (sommige mislukt)`,spoolCreated:`Spoel gemaakt`,spoolUpdated:`Spoel bijgewerkt`,spoolDeleted:`Spoel verwijderd`,deepLinkSpoolNotFound:`Spoel niet gevonden`,deepLinkFetchFailed:`Spoel kon niet worden geladen — probeer opnieuw`,spoolArchived:`Spoel gearchiveerd`,spoolRestored:`Spoel hersteld`,kProfileSaveFailed:`K-profielinstellingen konden niet worden opgeslagen`,syncWeightSpoolNotFound:`Spoel niet gevonden — mogelijk verwijderd`,syncWeightSpoolmanUnreachable:`Spoolman is niet bereikbaar — probeer het later opnieuw`,syncWeightFailed:`Gewicht synchroniseren mislukt`,spoolmanUnreachable:`Spoolman is niet bereikbaar — probeer het later opnieuw`,deleteSpoolNotFound:`Spoel niet gevonden — mogelijk al verwijderd`,deleteFailed:`Spoel verwijderen mislukt`,archiveSpoolNotFound:`Spoel niet gevonden — mogelijk al verwijderd`,archiveFailed:`Spoel archiveren mislukt`,restoreSpoolNotFound:`Spoel niet gevonden — mogelijk al verwijderd`,restoreFailed:`Spoel herstellen mislukt`,saveFailed:`Wijzigingen opslaan mislukt`,tagClearFailed:`Tag wissen mislukt`,deleteConfirm:`Weet je zeker dat je deze spoel wilt verwijderen? Dit kan niet ongedaan worden gemaakt.`,archiveConfirm:`Weet je zeker dat je deze spoel wilt archiveren?`,advancedSettings:`Geavanceerde instellingen`,filamentInfoTab:`Filamentinformatie`,paProfileTab:`PA-profiel`,filamentInfo:`Filament`,additional:`Aanvullend`,loadingPresets:`Cloudpresets laden...`,cloudConnected:`Cloud verbonden`,cloudNotConnected:`Cloud niet verbonden (standaardwaarden worden gebruikt)`,recentColors:`Recent`,searchColors:`Kleuren zoeken...`,searchResults:`Zoekresultaten`,allColors:`Alle kleuren`,commonColors:`Veelgebruikte kleuren`,showLess:`Minder tonen`,showAll:`Alles tonen`,noColorsFound:`Geen kleuren komen overeen met je zoekopdracht`,noResults:`Geen overeenkomsten gevonden`,extraColorsLabel:`Extra kleuren`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`Plak 2 tot 8 hexwaarden, gescheiden door komma's. Wordt als verloop weergegeven.`,extraColorsInvalid:`Ongeldige hex genegeerd: {{tokens}}`,colorEffectLabel:`Effect`,colorEffect:{none:`Geen`,sparkle:`Sprankelend`,wood:`Hout`,marble:`Marmer`,glow:`Gloed`,matte:`Mat`,silk:`Zijde`,galaxy:`Galaxy`,rainbow:`Regenboog`,metal:`Metaal`,translucent:`Transparant`,gradient:`Verloop`,dualColor:`Tweekleurig`,triColor:`Driekleurig`,multicolor:`Meerkleurig`},selectMaterialFirst:`Selecteer eerst een materiaal op het tabblad Filamentinformatie.`,noPrintersConfigured:`Geen printers geconfigureerd. Voeg printers toe om PA-profielen te gebruiken.`,matchingFilter:`Overeenkomend`,anyBrand:`Elk merk`,anyVariant:`Elke variant`,autoSelect:`Automatisch selecteren`,matches:`overeenkomsten`,match:`overeenkomst`,noMatches:`Geen overeenkomsten`,connected:`Verbonden`,offline:`Offline`,printerOffline:`Printer is offline. Maak verbinding om kalibratieprofielen te bekijken.`,noKProfilesMatch:`Geen K-profielen komen overeen met het geselecteerde filament.`,leftNozzle:`Linker nozzle`,rightNozzle:`Rechter nozzle`,profilesSelected:`kalibratieprofiel(en) geselecteerd`,totalInventory:`Totale voorraad`,totalConsumed:`Totaal verbruikt`,byMaterial:`Per materiaal`,inPrinter:`In printer`,lowStock:`Lage voorraad`,sinceTracking:`Sinds tracking is gestart`,resetConsumedCounter:`Teller resetten`,resetConsumedCounterTooltip:`Zet de teller voor verbruikte grammen van deze spoel op nul. Resterend gewicht verandert niet.`,resetConsumedCounterConfirm:`Teller voor verbruikte grammen van deze spoel resetten naar 0? Toekomstige afdrukken tellen dan weer vanaf nul. De spoel zelf, de berekening van resterend gewicht en je instellingen veranderen niet.`,resetAllConsumedCounters:`Alle tellers resetten`,resetAllConsumedCountersTooltip:`Zet de teller voor verbruikte grammen op elke spoel op nul. Resterende gewichten veranderen niet.`,resetAllConsumedCountersConfirm:`De teller voor verbruikte grammen op alle {{count}} spoelen (inclusief gearchiveerde) resetten naar 0? Hiermee wordt de statistiek "Totaal verbruikt" gewist zodat toekomstige afdrukken weer vanaf nul tellen. Spoelen en resterende gewichten veranderen niet.`,consumedCounterReset:`Teller gereset`,allConsumedCountersReset:`Teller gereset voor {{count}} spoel(en)`,resetConsumedCounterFailed:`Teller resetten mislukt`,loadedInAms:`Geladen in AMS/Ext`,remaining:`Resterend`,weightCheck:`Gewichtscontrole`,lastWeighed:`Laatst gewogen`,neverWeighed:`Nooit gewogen`,search:`Spoelen zoeken...`,showing:`Weergegeven`,to:`tot`,of:`van`,show:`Tonen`,spools:`spoelen`,spool:`spoel`,page:`Pagina`,noSpoolsMatch:`Geen resultaten gevonden`,noSpoolsMatchDesc:`Pas je zoekopdracht of filters aan om te vinden wat je zoekt.`,active:`Actief`,archived:`Gearchiveerd`,all:`Alle`,used:`Gebruikt`,new:`Nieuw`,clearFilters:`Filters wissen`,table:`Tabel`,cards:`Kaarten`,net:`Netto`,groupSimilar:`Groeperen`,groupedSpools:`{{count}} identieke spoelen`,groupedRows:`rijen`,columns:`Kolommen`,configureColumns:`Kolommen configureren`,configureColumnsDesc:`Sleep om kolommen te herschikken of gebruik de pijlen. Schakel zichtbaarheid met het oogpictogram.`,visible:`zichtbaar`,reset:`Resetten`,cancel:`Annuleren`,applyChanges:`Wijzigingen toepassen`,moveUp:`Omhoog verplaatsen`,moveDown:`Omlaag verplaatsen`,hideColumn:`Kolom verbergen`,showColumn:`Kolom tonen`,linkToSpool:`Koppelen aan spoel`,tagLinked:`Tag aan spoel gekoppeld`,tagLinkFailed:`Tag koppelen mislukt`,tagAlreadyLinked:`Tag is al aan een andere spoel gekoppeld`,unknownTag:`Onbekende RFID-tag gedetecteerd`,usageHistory:`Verbruiksgeschiedenis`,noUsageHistory:`Nog geen verbruik geregistreerd`,printName:`Afdruknaam`,weightConsumed:`Verbruikt gewicht`,clearHistory:`Wissen`,historyCleared:`Verbruiksgeschiedenis gewist`,fillSourceLabel:`(Voorraad)`,lowStockThresholdError:`Drempel moet tussen 0,1 en 99,9 liggen`,assignMismatchTitle:`Materiaal komt niet overeen`,assignMismatchMessage:`Het materiaal van de geselecteerde spoel "{{spoolMaterial}}" komt niet overeen met het materiaal van de tray "{{trayMaterial}}" voor {{location}}. Toch toewijzen?`,assignMismatchConfirm:`Toch toewijzen`,assignPartialMismatchMessage:`Het spoelmateriaal "{{spoolMaterial}}" lijkt op maar komt niet exact overeen met "{{trayMaterial}}" in {{location}}. Wil je doorgaan?`,assignProfileMismatchMessage:`Het spoelprofiel "{{spoolProfile}}" komt niet overeen met het trayprofiel "{{trayProfile}}" in {{location}}. Wil je doorgaan?`,assignReconfigureNote:`De AMS-sleuf wordt opnieuw geconfigureerd om het profiel van de spoel te gebruiken.`,spoolmanFilamentCatalog:`Spoolman-filamentcatalogus`,pickFromSpoolmanCatalog:`Kies uit Spoolman-catalogus…`,spoolmanFilamentSelected:`Filament geselecteerd uit Spoolman-catalogus`,spoolmanFilamentUnlinked:`Koppeling met filamentcatalogus gewist`,noSpoolmanFilaments:`Geen filamenten gevonden in Spoolman-catalogus`,spoolmanFilamentColorSwatch:`Filamentkleur`,spoolWeightManagedBySpoolman:`Leeg spoelgewicht wordt per filamenttype beheerd in Spoolman`,spoolmanCatalogLoadFailed:`Spoolman-filamentcatalogus laden mislukt`},timelapse:{title:`Timelapse`,create:`Timelapse maken`,download:`Downloaden`,delete:`Verwijderen`,preview:`Voorbeeld`,frameRate:`Framesnelheid`,quality:`Kwaliteit`,processing:`Verwerken...`,noTimelapses:`Geen timelapses beschikbaar`},ams:{title:`AMS`,slot:`Sleuf`,empty:`Leeg`,emptySlot:`Lege sleuf`,slotEmpty:`Leeg`,slotUnconfigured:`?`,emptySlotReset:`Geen filament toegewezen`,unknown:`Onbekend`,humidity:`Luchtvochtigheid`,temperature:`Temperatuur`,filamentType:`Filamenttype`,filamentColor:`Kleur`,remaining:`Resterend`,history:`AMS-geschiedenis`,noHistory:`Geen geschiedenis beschikbaar`,configureSlot:`Sleuf configureren`,externalSpool:`Externe spoel`,profile:`Profiel`,kFactor:`K-factor`,kFactorShort:`K`,fill:`Vullen`,configure:`Configureren`,used:`gebruikt`,remainingUnit:`resterend`},printModal:{variants:{editNote:`Deze alternatieven zijn ingesteld toen de taak in de wachtrij werd geplaatst. Annuleer en plaats opnieuw in de wachtrij om ze te wijzigen.`,title:`Printeralternatieven`,help:`Eén taak, één wachtrijpositie. De eerste passende printer die vrijkomt voert zijn bestand uit.`,unknownModel:`Onbekend model`,plateFor:`Plaat voor {{filename}}`,moveUp:`Omhoog verplaatsen`,moveDown:`Omlaag verplaatsen`,queued:`In wachtrij met {{count}} alternatieven`},selectPrinter:`Printer selecteren`,selectPlate:`Plaat selecteren`,filamentMapping:`Filamenttoewijzing`,useArchiveMapping:`Toewijzing`,useArchiveMappingTooltip:`Selecteer elke sleuf uit de AMS-toewijzing die met dit archief is opgeslagen (vanuit de slicer), in plaats van te matchen op type/kleur.`,clickToChangeSlot:`Klik om sleuftoewijzing te wijzigen`,reRead:`Opnieuw uitlezen`,plateN:`Plaat {{n}}`,plateFilamentsUnreadable:`De filamenten van een geselecteerde plaat konden niet worden gelezen en kunnen daarom niet worden toegewezen. Deselecteer deze plaat om de andere in de wachtrij te plaatsen.`,totalCost:`Totale kosten:`,slotRemainingShort:` - {{grams}}g resterend`,printSettings:`Afdrukinstellingen`,bedLeveling:`Bednivellering`,flowCalibration:`Flowkalibratie`,vibrationCalibration:`Trillingskalibratie`,layerInspection:`Inspectie eerste laag`,timelapse:`Timelapse`,cancel:`Annuleren`,noPrintersAvailable:`Geen printers beschikbaar`,printerBusy:`Printer is bezig`,printerOffline:`Printer is offline`,sameTypeDifferentColor:`Zelfde type, andere kleur`,filamentTypeNotLoaded:`Filamenttype niet geladen`,statusReady:`Gereed`,statusColorMismatch:`Kleur komt niet overeen`,statusTypeNotFound:`Type niet gevonden`,requiredTooltip:`Vereist: {{name}} - {{color}}`,manuallySelected:`Handmatig geselecteerd`,autoMatched:`Automatisch gekoppeld`,selectSlot:`Sleuf selecteren`,sameTypeDifferentColorDetail:`Zelfde type, andere kleur: vereist {{required}}, sleuf bevat {{loaded}}`,requiredTypeNotInPrinter:`Vereist filamenttype niet gevonden in printer.`,whenToPrint:`Wanneer afdrukken`,asap:`Zo snel mogelijk`,queue:`Wachtrij`,schedule:`Plannen`,dateTime:`Datum en tijd`,invalidDateTime:`Voer een geldige datum en tijd in`,openCalendar:`Kalender openen`,requireManualStart:`Handmatige start vereisen`,requirePreviousSuccess:`Alleen starten als vorige afdruk is geslaagd`,autoOffAfter:`Printer uitschakelen wanneer klaar`,helpAsap:`Afdruk wordt bovenaan de wachtrij geplaatst en start zodra een geschikte printer inactief is.`,helpSchedule:`Afdruk start op het geplande tijdstip als de printer inactief is. Als deze bezig is, wacht de taak tot de printer beschikbaar is.`,helpQueue:`Afdruk wordt achteraan de wachtrij geplaatst.`,leftNozzle:`L`,rightNozzle:`R`,leftNozzleTooltip:`Linker nozzle`,rightNozzleTooltip:`Rechter nozzle`,ftsSameInletHint:`Alle filamenten voor deze afdruk zitten op Filament Track Switch IN-{{inlet}}. Wisselen tussen filamenten op dezelfde ingang is langzamer — verplaats er één naar een AMS op de andere ingang om dit te versnellen.`,rackPosition:`Rekpositie`,rackPositionTooltip:`Welke nozzle op het rek dit filament afdrukt. Posities zijn genummerd zoals op de printer.`,rackEmptyPosition:`Deze rekpositie is leeg`,rackWrongNozzle:`Bevat een {{has}}-nozzle; dit filament vereist {{needs}}`,filamentOverride:`Filament overschrijven`,filamentOverrideHint:`Overschrijf filamenten optioneel voor modelgebaseerde toewijzing. De scheduler matcht op je geselecteerde filamenten in plaats van de oorspronkelijke 3MF-waarden.`,originalFilament:`Origineel`,overrideWith:`Overschrijven met`,resetToOriginal:`Terugzetten naar origineel`,insufficientFilamentTitle:`Niet genoeg filament`,waitingForAmsStatus:`Wachten op AMS-status van {{printer}}…`,insufficientFilamentMessage:`Sommige toegewezen spoelen bevatten minder filament dan deze afdruk nodig heeft:`,insufficientFilamentLine:`{{printer}} - {{slot}}: vereist {{required}}g, {{remaining}}g resterend`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: vereist {{required}}g, {{remaining}}g beschikbaar over overeenkomende spoelen (AMS Filament Backup)`,printAnyway:`Toch afdrukken`,forceColorMatch:`Kleurmatch afdwingen`,staggerPrinterStarts:`Printerstarts spreiden`,staggerGroupSize:`Groepsgrootte`,staggerInterval:`Interval (min)`,staggerPreview:`{{printers}} printers → {{groups}} groepen van {{size}}, starten elke {{interval}} min`,staggerLastGroup:`laatste groep: {{count}}`,staggerTotal:`totaal: {{minutes}} min`,staggerToPrinters:`Spreiden over {{count}} printers`,gcodeInjection:`Auto-print-G-code injecteren`,insufficientBudget:`Onvoldoende budget`,unlimitedNoBudget:`Onbeperkt – er is geen budgetlimiet ingesteld.`,noPrintableCostCenters:`Er is geen actieve kostenplaats beschikbaar voor afdrukken. Vraag een beheerder om je afdruktoegang te geven.`},backup:{includesEncryptionKey:`Lokale back-ups bevatten het MFA-versleutelingssleutelbestand (DATA_DIR/.mfa_encryption_key), zodat een back-up-ZIP op zichzelf compleet is. Behandel de ZIP als gevoelig — iedereen met het bestand kan de opgeslagen OIDC-clientgeheimen en TOTP-geheimen ontsleutelen.`,title:`Back-up en herstel`,createBackup:`Back-up maken`,restoreBackup:`Back-up herstellen`,restoreDescription:`Alle gegevens vervangen vanuit een back-upbestand`,downloadBackup:`Back-up downloaden`,uploadBackup:`Back-up uploaden`,lastBackup:`Laatste back-up`,autoBackup:`Automatische back-up`,backupNow:`Nu back-up maken`,restoreWarning:`Waarschuwing: het herstellen van een back-up overschrijft alle huidige gegevens.`,includeArchives:`Archieven opnemen`,includeSettings:`Instellingen opnemen`,includeProfiles:`Profielen opnemen`,backupSuccess:`Back-up succesvol gemaakt`,restoreSuccess:`Back-up succesvol hersteld`,backupFailed:`Back-up mislukt`,restoreFailed:`Herstellen mislukt`,restoreNote:`Virtuele printer wordt tijdens het herstellen gestopt`,githubBackup:`Git-back-up`,enabled:`Ingeschakeld`,cloudLoginRequired:`Bambu Cloud-login vereist. Log in onder Profielen → Cloudprofielen om GitHub-back-up in te schakelen.`,cloudLoginRequiredShort:`Cloudlogin vereist`,githubDescription:`Synchroniseer je profielen automatisch met een privé-GitHub-repository voor back-up en versiegeschiedenis.`,repoIsPrivate:`Repository is privé — veilig voor back-up.`,repoIsPublicWarning:`Repository is OPENBAAR. Bambuddy-back-ups bevatten MQTT-inloggegevens, Home Assistant-tokens, Prometheus-tokens, je Bambu Cloud-e-mailadres en printertoegangscodes via K-profielen. Opslaan is geblokkeerd totdat je de repository privé maakt in de instellingen van je provider.`,repoVisibilityUnknown:`De zichtbaarheid van de repository kon niet worden bepaald. Bambuddy weigert een back-up naar iets dat niet als privé is bevestigd; opslaan wordt geblokkeerd.`,repositoryUrl:`Repository-URL`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`Onveilige HTTP toestaan`,allowInsecureHttpHint:`Inschakelen voor zelfgehoste instanties op privénetwerken zonder TLS`,personalAccessToken:`Personal Access Token`,tokenSaved:`(opgeslagen)`,enterNewToken:`Voer nieuw token in om bij te werken`,tokenHintGitHub:`Fine-grained token met lees- en schrijftoegang tot Contents, of een klassiek token met de repo-scope.`,tokenHintGitLab:`Token met de api-scope, of read_repository en write_repository samen.`,tokenHintGitea:`Token met de write:repository-scope.`,tokenHintForgejo:`Token met de write:repository-scope. Een token beperkt tot alleen deze repository is voldoende.`,branch:`Branch`,provider:`Git-provider`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`Alleen handmatig`,hourly:`Elk uur`,daily:`Dagelijks`,weekly:`Wekelijks`,includeInBackup:`Opnemen in back-up`,kProfiles:`K-profielen`,kProfilesDescription:`Pressure-advance-kalibratie van verbonden printers`,noPrintersConnected:`Geen printers verbonden`,printersConnected:`{{connected}}/{{total}} verbonden`,cloudProfiles:`Cloudprofielen`,cloudProfilesDescription:`Filament-, printer- en procespresets uit Bambu Cloud en Orca Cloud`,cloudProfilesAccounts:`Verbonden accounts — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}`,appSettings:`App-instellingen`,appSettingsDescription:`Bambuddy-configuratie (volledige database)`,spoolInventory:`Spoelvoorraad`,spoolInventoryDescription:`Filamentspoelen, verbruiksgeschiedenis en kostentracking`,printArchives:`Afdrukarchieven`,printArchivesDescription:`Metadata van afdrukgeschiedenis (geen gcode/3MF-bestanden)`,lastBackupAt:`Laatste back-up:`,noBackupsYet:`Nog geen back-ups`,next:`Volgende:`,startingBackup:`Back-up starten...`,test:`Testen`,enableBackup:`Back-up inschakelen`,testConnection:`Verbinding testen`,enterRepoUrl:`Voer repository-URL in`,enterRepoAndToken:`Voer repository-URL en toegangstoken in`,repoRequired:`Repository-URL is verplicht`,tokenRequired:`Toegangstoken is verplicht`,githubBackupEnabled:`GitHub-back-up ingeschakeld`,tokenUpdated:`Token bijgewerkt`,settingsSaved:`Instellingen opgeslagen`,failedToSave:`Opslaan mislukt: {{message}}`,backupCompleteFiles:`Back-up voltooid - {{count}} bestanden bijgewerkt`,backupSkippedNoChanges:`Back-up overgeslagen - geen wijzigingen`,backupFailed2:`Back-up mislukt: {{message}}`,clearedLogs:`{{count}} logboeken gewist`,failedToClearLogs:`Logboeken wissen mislukt: {{message}}`,restoreFromGit:{button:`Herstellen vanuit Git`,title:`Herstellen vanuit Git-back-up`,subtitle:`Kies een commit en wat je wilt herstellen`,commitLabel:`Back-upcommit`,latestCommit:`Nieuwste back-up (top van branch)`,categoriesLabel:`Wat herstellen`,inspecting:`Inhoud van back-up lezen...`,itemCount:`{{count}} in back-up`,overwriteLabel:`Bestaande items overschrijven`,overwriteOn:`Bestaande items worden bijgewerkt vanuit de back-up.`,overwriteOff:`Alleen ontbrekende items worden toegevoegd; bestaande blijven ongewijzigd.`,selectedCount:`{{count}} geselecteerd`,restoring:`Herstellen...`,confirmTitle:`Herstellen vanuit back-up?`,confirmMessage:`De geselecteerde categorieën worden uit deze commit hersteld. Ontbrekende items worden toegevoegd; bestaande blijven zoals ze zijn.`,confirmMessageOverwrite:`De geselecteerde categorieën worden uit deze commit hersteld en bestaande lokale items worden overschreven. Dit kan niet ongedaan worden gemaakt.`,kprofilesOverwriteCaveat:`K-profielen zijn de uitzondering: het schrijven van een sleuf vervangt altijd de kalibratie op de printer.`,tally:`{{restored}} hersteld, {{skipped}} overgeslagen, {{failed}} mislukt`,reloadHint:`Herlaad Bambuddy zodat de herstelde gegevens overal verschijnen.`,partialHint:`De hierboven vermelde categorieën zijn voltooid en staan op schijf. Ontbrekende categorieën zijn niet uitgevoerd.`,failed:`Herstellen mislukt.`,loadFailed:`Back-uprepository kon niet worden gelezen.`,details:{notPresent:`Niet aanwezig in deze back-upcommit`,unreadableJson:`Onleesbare JSON: {{paths}}`,settingsNoPayload:`Geen instellingen in payload`,settingsCredentialsWillSkip:`{{count}} sleutel(s) die op inloggegevens lijken worden overgeslagen`,settingsCompanionWillSkip:`{{count}} sleutel(s) die op inloggegevens lijken worden overgeslagen, en {{companion}} schakelaar(s) die daarvan afhankelijk zijn blijven uitgeschakeld`,settingsCompanionOnlyWillSkip:`{{companion}} schakelaar(s) blijven uitgeschakeld - de benodigde inloggegevens kunnen niet uit een back-up worden hersteld`,spoolsUsageCount:`inclusief {{count}} verbruiksrecord(s)`,archivesMetadataOnly:`Alleen metadata - 3MF-bestanden en miniaturen zitten niet in een Git-back-up`,kprofilesPrinterCount:`over {{count}} printer(s)`},notes:{noData:`Geen gegevens van dit type in deze back-up`,archivesPrinterMissing:`Sommige archieven verwezen naar printers die niet meer bestaan - koppeling gewist`,archivesProjectMissing:`Sommige archieven verwezen naar projecten die niet meer bestaan - koppeling gewist`,archivesOwnerCleared:`Sommige archieven verwezen naar gebruikers die niet meer bestaan - eigenaar gewist, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst`,archivesOwnerUnmatched:`Sommige archieven noemen een eigenaar die deze instantie niet heeft - eigenaar gewist in plaats van te gokken op basis van het gebruikers-ID uit de back-up, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst`,archivesOwnerUnknown:`Sommige archieven zijn zonder eigenaar hersteld - deze back-up registreert er geen, waardoor ze alleen zichtbaar zijn voor gebruikers met de machtiging archives:read_all totdat een beheerder ze opnieuw toewijst`,archivesUndeleted:`Archief/archieven die sinds de back-up waren verwijderd zijn weer zichtbaar - overschrijven stond aan`,archivesMetadataOnly:`Herstelde archieven bevatten alleen metadata - de 3MF- en miniatuurbestanden zitten niet in een Git-back-up`,spoolUsageUnresolved:`{{count}} verbruiksrecord(s) overgeslagen - hun spoel staat niet in de spoellijst van deze back-up, dus er is niets om ze aan te koppelen.`,spoolUsageUnlinked:`{{count}} verbruiksrecord(s) hersteld zonder koppeling met afdrukgeschiedenis - selecteer Afdrukarchieven samen met Spoelvoorraad om deze te behouden.`,spoolTagKept:`{{count}} spoeltag(s) gelaten zoals ze zijn - de back-up zou een tag hebben gewist die sindsdien is gescand, of een tag naar een tweede spoel hebben verplaatst.`,settingsCredentialsSkipped:`{{count}} sleutel(s) die op inloggegevens lijken overgeslagen - voer geheimen handmatig opnieuw in`,settingsAuthSkipped:`{{count}} authenticatie-instelling(en) overgeslagen - wijzig deze onder Instellingen > Authenticatie zodat vergrendelingscontroles blijven werken`,settingsCompanionSkipped:`{{keys}} blijven uitgeschakeld - de benodigde inloggegevens kunnen niet uit een back-up worden hersteld en deze instantie heeft er geen opgeslagen, dus inschakelen zou de integratie zonder authenticatie achterlaten`,settingsMqttRelayFailed:`MQTT-instellingen hersteld, maar de relay kon niet opnieuw verbinden - start Bambuddy opnieuw`,kprofilesAlwaysOverwrite:`K-profielen overschrijven altijd de overeenkomende sleuf op de printer`,kprofilesAckUnreliable:`Een printer die niet antwoordt telt nog steeds als hersteld - controleer de profielen op de printer`,kprofilesPrinterMissing:`Geen printer met serienummer {{serial}} - overgeslagen`,kprofilesPrinterOffline:`{{printer}} ({{serial}}) is niet verbonden - overgeslagen`,kprofilesUnknownNozzle:`Onverwachte nozzlediameter {{nozzle}} voor {{serial}} - ongewijzigd verzonden`,kprofilesUnmatched:`{{count}} profiel(en) voor {{nozzle}} hadden geen tegenhanger op {{printer}} - als nieuwe profielen toegevoegd`,kprofilesSendFailed:`Verzenden van {{nozzle}}-profielen naar {{printer}} ({{serial}}) mislukt`,kprofilesRefused:`{{printer}} ({{serial}}) weigerde de {{nozzle}}-profielen: {{reason}}`,kprofilesStepFailed:`De K-profielstap kon niet worden voltooid - {{reason}}. Alles wat daarvoor is hersteld blijft opgeslagen.`}},history:`Geschiedenis`,clear:`Wissen`,date:`Datum`,status:`Status`,trigger:`Type`,triggers:{manual:`Back-up (handmatig)`,scheduled:`Back-up (gepland)`,restore:`Herstellen`},commit:`Commit`,localBackup:`Lokale back-up`,localBackupDescription:`Maak een volledige back-up van je Bambuddy-gegevens inclusief database, archieven, uploads en alle bestanden.`,downloadBackupLabel:`Back-up downloaden`,completeBackupZip:`Volledige back-up: database + alle bestanden (ZIP)`,download:`Downloaden`,preparingBackup:`Back-up voorbereiden...`,creatingArchive:`Back-uparchief maken... Dit kan even duren bij grote archieven.`,downloadingFile:`Back-upbestand downloaden...`,backupDownloaded:`Back-up succesvol gedownload`,failedToCreateBackup:`Back-up maken mislukt: {{message}}`,restore:`Herstellen`,restoreReplacesAll:`Herstellen vervangt alle gegevens.`,restoreReplacesAllDetail:`Je huidige database en bestanden worden volledig vervangen. Na herstel is een herstart vereist.`,restoreConfirmTitle:`Back-up herstellen`,restoreConfirmMessage:`Weet je zeker dat je wilt herstellen vanuit "{{filename}}"? Hiermee worden je huidige database en alle bestanden volledig vervangen. De applicatie moet daarna opnieuw worden gestart.`,restoreConfirmButton:`Back-up herstellen`,uploadingFile:`Back-upbestand uploaden...`,backupRestoredRestart:`Back-up hersteld. Start Bambuddy opnieuw.`,failedToRestore:`Back-up herstellen mislukt. Controleer het bestandsformaat.`,reloadNow:`Nu herladen`,creatingBackup:`Back-up maken`,restoringBackup:`Back-up herstellen`,preparing:`Voorbereiden...`,processing:`Verwerken...`,doNotClosePage:`Sluit deze pagina niet en navigeer niet weg. Deze bewerking kan bij grote back-ups enkele minuten duren.`,restoring:`Herstellen...`,restoreComplete:`Herstel voltooid`,restoreFailed2:`Herstel mislukt`,importSettings:`Instellingen importeren uit een back-upbestand`,pleaseWaitRestoring:`Wacht terwijl je gegevens worden hersteld`,selectBackupFile:`Klik om een back-upbestand te selecteren (.json of .zip)`,duplicateHandling:`Zo werkt afhandeling van duplicaten:`,matchPrinters:`Printers`,matchPrintersBy:`gekoppeld op serienummer`,matchSmartPlugs:`Slimme stekkers`,matchSmartPlugsBy:`gekoppeld op IP-adres`,matchNotificationProviders:`Meldingsproviders`,matchNotificationProvidersBy:`gekoppeld op naam`,matchFilaments:`Filamenten`,matchFilamentsBy:`gekoppeld op naam + type + merk`,matchArchives:`Archieven`,matchArchivesBy:`gekoppeld op inhoudshash (altijd overgeslagen)`,matchPendingUploads:`Openstaande uploads`,matchPendingUploadsBy:`gekoppeld op bestandsnaam`,matchSettingsTemplates:`Instellingen en sjablonen`,matchSettingsTemplatesBy:`altijd overschreven`,replaceExisting:`Bestaande gegevens vervangen`,keepExisting:`Bestaande gegevens behouden`,overwriteDescription:`Items die al bestaan overschrijven met gegevens uit de back-up`,keepDescription:`Alleen items herstellen die nog niet bestaan`,overwriteCaution:`Let op:`,overwriteWarning:`Overschrijven vervangt je huidige configuraties met gegevens uit de back-up. Printertoegangscodes worden om veiligheidsredenen nooit overschreven.`,cancel:`Annuleren`,processingBackup:`Back-upbestand verwerken...`,itemsRestored:`Items hersteld`,itemsSkipped:`Items overgeslagen`,restored:`Hersteld`,skippedAlreadyExist:`Overgeslagen (bestaan al)`,filesCategory:`Bestanden (3MF, miniaturen, enz.)`,andMore:`...en {{count}} meer`,newApiKeysGenerated:`Nieuwe API-sleutels gegenereerd`,keysShownOnce:`Deze sleutels worden maar één keer getoond. Kopieer ze nu!`,copy:`Kopiëren`,noDataFound:`Er zijn geen gegevens gevonden om uit het back-upbestand te herstellen.`,close:`Sluiten`,scheduledBackup:`Geplande back-ups`,scheduledBackupDescription:`Maak automatisch back-upsnapshots volgens een schema. De uitvoermap kan aan een NAS of externe opslag worden gekoppeld.`,frequency:`Frequentie`,backupTime:`Tijd`,retention:`Bewaartermijn`,retentionDescription:`Aantal back-ups om te bewaren`,outputPath:`Uitvoerpad`,outputPathPlaceholder:`Standaard: {{path}}`,outputPathDescription:`Laat leeg voor standaardlocatie`,runNow:`Nu uitvoeren`,backupFiles:`Back-upbestanden`,noScheduledBackups:`Nog geen back-ups`,deleteBackup:`Verwijderen`,deleteBackupConfirm:`Dit back-upbestand verwijderen?`,backupRunning:`Back-up bezig...`,scheduledBackupComplete:`Back-up succesvol voltooid`,scheduledBackupFailed:`Back-up mislukt`,nextBackup:`Volgende back-up`,backupSize:`Grootte`,localTimeHint:`Lokale tijd ({{tz}})`,defaultPathLabel:`Standaard:`,pathCheck:{title:`Bambuddy kan niet naar deze map schrijven`,howToFix:`Oplossing:`,sandboxed:`De Bambuddy-service kan niet naar {{path}} schrijven. De systemd-unit draait met ProtectSystem=strict, waardoor elke map buiten de installatie-, data- en logmappen alleen-lezen is voor de service - zelfs als je er vanuit je eigen shell wel naar kunt schrijven.`,read_only:`{{path}} staat op een alleen-lezen bestandssysteem.`,permission_denied:`Bambuddy mag niet schrijven naar {{path}}. Controleer de eigenaar en machtigingen van de map.`,no_space:`Het bestandssysteem waarop {{path}} staat is vol.`,not_a_directory:`{{path}} bestaat, maar is geen map.`,missing:`{{path}} bestaat niet en kon niet worden aangemaakt.`,error:`Bambuddy kan niet schrijven naar {{path}}.`,ephemeralTitle:`Deze back-ups blijven niet behouden na een herstart van de container`,container_ephemeral:`{{path}} bevindt zich in de Bambuddy-container, niet op de host. Back-ups die daar worden opgeslagen gaan verloren wanneer de container opnieuw wordt aangemaakt. Koppel de map vanaf de host:`},categories:{settings:`Instellingen`,notification_providers:`Meldingsproviders`,notification_templates:`Meldingssjablonen`,smart_plugs:`Slimme stekkers`,printers:`Printers`,filaments:`Filamenten`,maintenance_types:`Onderhoudstypen`,archives:`Archieven`,projects:`Projecten`,pending_uploads:`Openstaande uploads`,external_links:`Externe links`,api_keys:`API-sleutels`}},tags:{title:`Tags`,addTag:`Tag toevoegen`,editTag:`Tag bewerken`,deleteTag:`Tag verwijderen`,tagName:`Tagnaam`,tagColor:`Tagkleur`,noTags:`Geen tags`,deleteConfirm:`Weet je zeker dat je deze tag wilt verwijderen?`,manageTags:`Tags beheren`},uploadModal:{title:`3MF-bestanden uploaden`,dragDrop:`Sleep .3mf-bestanden hierheen`,or:`of`,browseFiles:`Bestanden bladeren`,extractionInfo:`Het printermodel wordt automatisch uit de metadata van het 3MF-bestand gehaald.`,uploaded:`geüpload`,failed:`mislukt`,uploading:`Uploaden...`,upload:`Uploaden`,uploadFailed:`Upload mislukt`},editArchive:{title:`Archief bewerken`,name:`Naam`,namePlaceholder:`Afdruknaam`,printer:`Printer`,noPrinter:`Geen printer`,project:`Project`,noProject:`Geen project`,itemsPrinted:`Afgedrukte items`,itemsPrintedHelp:`Aantal items dat met deze afdruktaak is geproduceerd`,filamentUsed:`Gebruikt filament (g)`,filamentUsedPlaceholder:`bijv. 46.16`,filamentUsedHelp:`Stel dit handmatig in wanneer een afdruk zonder 3MF is gearchiveerd, zodat deze toch meetelt in de filamenttotalen. Bij het opnieuw scannen van een archief met een 3MF wordt de waarde weer uit het bestand gelezen.`,notes:`Notities`,notesPlaceholder:`Voeg notities over deze afdruk toe...`,externalLink:`Externe link`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Link naar Printables, Thingiverse of een andere bron`,tags:`Tags`,tagsPlaceholder:`Tags toevoegen...`,addMoreTags:`Meer tags toevoegen...`,matchingTags:`Komt overeen met "{{query}}"`,existingTags:`Bestaande tags`,clickToAdd:`(klik om toe te voegen)`,status:`Status`,failureReason:`Reden van mislukking`,selectReason:`Selecteer reden...`,photos:`Foto's van het afdrukresultaat`,photosHelp:`Klik op + om foto's van je afdrukresultaat toe te voegen`,printResult:`Afdrukresultaat`,saving:`Opslaan...`,failureReasons:{adhesionFailure:`Hechtingsprobleem`,spaghettiDetached:`Spaghetti / losgeraakt`,layerShift:`Laagverschuiving`,cloggedNozzle:`Verstopte nozzle`,filamentRunout:`Filament op`,warping:`Kromtrekken`,stringing:`Draadvorming`,underExtrusion:`Onderextrusie`,powerFailure:`Stroomuitval`,userCancelled:`Door gebruiker geannuleerd`,other:`Overig`},statuses:{completed:`Voltooid`,failed:`Mislukt`,aborted:`Geannuleerd`,printing:`Bezig met afdrukken`}},kProfiles:{title:`K-profielen`,noPrintersConfigured:`Geen printers geconfigureerd`,addPrinterInSettings:`Voeg in Instellingen een printer toe om K-profielen te beheren`,noActivePrinters:`Geen actieve printers`,enablePrinterConnection:`Schakel een printerverbinding in om de K-profielen te bekijken`,loadingProfiles:`K-profielen laden...`,printerOffline:`Printer offline`,printerOfflineDesc:`De geselecteerde printer is niet verbonden. Schakel hem in om de K-profielen te bekijken.`,noMatchingProfiles:`Geen overeenkomende profielen`,noMatchingProfilesDesc:`Geen profielen komen overeen met je zoekcriteria`,noKProfiles:`Geen K-profielen`,noKProfilesDesc:`Geen pressure-advance-profielen gevonden voor een nozzle van {{diameter}} mm`,createFirstProfile:`Eerste profiel aanmaken`,printer:`Printer`,nozzle:`Nozzle`,refresh:`Vernieuwen`,addProfile:`Profiel toevoegen`,export:`Exporteren`,import:`Importeren`,select:`Selecteren`,selectAll:`Alles selecteren`,delete:`Verwijderen`,searchPlaceholder:`Zoeken op naam of filament...`,allExtruders:`Alle extruders`,leftOnly:`Alleen links`,rightOnly:`Alleen rechts`,allFlow:`Alle flowtypen`,hfOnly:`Alleen HF`,sOnly:`Alleen S`,sortName:`Sorteren: naam`,sortKValue:`Sorteren: K-waarde`,sortFilament:`Sorteren: filament`,leftExtruder:`Linker extruder`,rightExtruder:`Rechter extruder`,modal:{addTitle:`K-profiel toevoegen`,editTitle:`K-profiel bewerken`,profileName:`Profielnaam`,profileNamePlaceholder:`Mijn PLA-profiel`,kValue:`K-waarde`,kValuePlaceholder:`0.020`,kValueHelp:`Typisch bereik: 0.01 - 0.06 voor PLA, 0.02 - 0.10 voor PETG`,filament:`Filament`,selectFilament:`Selecteer filament...`,source:{local:`Geïmporteerd`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`Ingebouwd`},noFilamentsHelp:`Geen filamenten beschikbaar. Meld je aan bij Bambu Cloud of importeer presets via Profielen → Lokale profielen.`,searchFilaments:`Filamenten zoeken...`,noFilamentMatches:`Geen filament komt overeen met die zoekopdracht`,flowType:`Flowtype`,highFlow:`Hoge flow`,standard:`Standaard`,nozzleSize:`Nozzlegrootte`,extruder:`Extruder`,extruders:`Extruders`,left:`Links`,right:`Rechts`,notes:`Notities (lokaal opgeslagen)`,notesPlaceholder:`Voeg notities over dit profiel toe...`,notesHelp:`Notities worden opgeslagen in Bambuddy, niet op de printer`,syncing:`Synchroniseren met printer...`,savingExtruder:`Opslaan naar extruder {{current}}/{{total}}...`,pleaseWait:`Even geduld`},deleteConfirm:{title:`Profiel verwijderen`,cannotUndo:`Dit kan niet ongedaan worden gemaakt`,message:`Weet je zeker dat je "{{name}}" van de printer wilt verwijderen?`},bulkDelete:{title:`Profielen verwijderen`,cannotUndo:`Dit kan niet ongedaan worden gemaakt`,message:`Weet je zeker dat je {{count}} geselecteerde profielen van de printer wilt verwijderen?`},toast:{profileSaved:`K-profiel opgeslagen`,profilesSaved:`K-profiel opgeslagen naar {{count}} extruders`,selectAtLeastOneExtruder:`Selecteer ten minste één extruder`,selectFilament:`Selecteer eerst een filament`,filamentNotResolvable:`Geen Bambu-filament-ID voor {{name}} — de printer kan hiervoor geen profiel opslaan`,profileDeleted:`K-profiel verwijderd`,profilesDeleted:`{{count}} profielen verwijderd`,exportedProfiles:`{{count}} profielen geëxporteerd`,importedProfiles:`{{count}} van {{total}} profielen geïmporteerd`,noProfilesToExport:`Geen profielen om te exporteren`,invalidFileFormat:`Ongeldig bestandsformaat`,failedToParseImport:`Importbestand kon niet worden verwerkt`,failedToSaveBatch:`K-profielen opslaan mislukt`,noteSaved:`Notitie opgeslagen`,failedToSaveNote:`Notitie opslaan mislukt`},permission:{noRead:`Je hebt geen toestemming om profielen te vernieuwen`,noCreate:`Je hebt geen machtiging om profielen toe te voegen`,noUpdate:`Je hebt geen machtiging om K-profielen bij te werken`,noDelete:`Je hebt geen machtiging om K-profielen te verwijderen`,noExport:`Je hebt geen machtiging om profielen te exporteren`,noImport:`Je hebt geen machtiging om profielen te importeren`}},virtualPrinter:{title:`Virtuele printer`,running:`Actief`,stopped:`Gestopt`,description:{default:`Schakel een virtuele printer in die zichtbaar wordt in Bambu Studio en OrcaSlicer. Bestanden die naar deze printer worden gestuurd, worden direct gearchiveerd zonder te worden afgedrukt.`,proxy:`Schakel een proxy in die slicerverkeer doorstuurt naar een echte printer, zodat je via elk netwerk op afstand kunt afdrukken.`},enable:{title:`Virtuele printer inschakelen`,visibleInSlicer:`Zichtbaar als "Bambuddy" in slicerdetectie`,proxyingTo:`Proxy naar {{name}}`,notActive:`Niet actief`},model:{title:`Printermodel`,description:`Selecteer welk printermodel moet worden geëmuleerd.`,restartWarning:`Als je het model wijzigt, wordt de virtuele printer opnieuw gestart`},accessCode:{title:`Toegangscode`,isSet:`Toegangscode is ingesteld`,notSet:`Geen toegangscode ingesteld - vereist om in te schakelen`,placeholder:`Voer een code van 8 tekens in`,placeholderChange:`Voer een nieuwe code in om te wijzigen`,hint:`Moet precies 8 tekens zijn. Wordt door slicers gebruikt voor authenticatie.`,charCount:`({{count}}/8)`,inheritedFromTarget:`Overgenomen van doelprinter`,derivedFromTargetHint:`Gebruikt de toegangscode van de doelprinter. De bridge stuurt de slicerauthenticatie door naar de echte printer, dus de codes moeten overeenkomen — bewerk de toegangscode van de printer om deze waarde te wijzigen.`,reveal:`Toegangscode tonen`,hide:`Toegangscode verbergen`},targetPrinter:{title:`Doelprinter`,configured:`Proxydoel geconfigureerd`,notConfigured:`Geen doelprinter geselecteerd - vereist voor proxymodus`,placeholder:`Selecteer een printer...`,hint:`Selecteer de printer waarnaar slicerverkeer via de proxy moet worden doorgestuurd. De printer moet in LAN-modus staan.`,noPrinters:`Geen printers geconfigureerd. Voeg eerst een printer toe om de proxymodus te gebruiken.`},remoteInterface:{title:`Overschrijving netwerkinterface`,configured:`Interface-overschrijving actief`,optional:`Optioneel - gebruik dit als het automatisch gedetecteerde IP-adres onjuist is (bijv. meerdere NIC's, Docker, VPN)`,placeholder:`Automatisch detecteren (standaard)...`,hint:`Overschrijf het IP-adres dat via SSDP wordt geadverteerd en in het TLS-certificaat wordt gebruikt. Handig wanneer Bambuddy meerdere netwerkinterfaces heeft.`},mode:{title:`Modus`,archive:`Archief`,archiveDesc:`Bestanden direct archiveren`,review:`Beoordelen`,reviewDesc:`Beoordelen vóór archiveren`,queue:`Wachtrij`,queueDesc:`Archiveren en aan wachtrij toevoegen`,proxy:`Proxy`,proxyDesc:`Doorsturen naar echte printer`},autoDispatch:{title:`Automatisch verzenden`,description:`Start afdrukken automatisch wanneer ze aan de wachtrij worden toegevoegd. Als dit uitstaat, wachten afdrukken op handmatige verzending.`},queueForceColorMatch:{title:`Kleurmatch afdwingen`,description:`Weiger een taak te verzenden naar een printer waarop niet exact het juiste filamenttype en de juiste kleur zijn geladen. Standaard uit — zonder dit gebruikt de wachtrij alleen modelmatching en kan een printer worden gekozen waarop de verkeerde kleur is geladen.`},saveAmsMapping:{title:`AMS-toewijzing opslaan`,description:`Sla de AMS-slotkeuze van de slicer zelf (uit de MQTT-opdracht project_file) op in het archief, zodat bij later opnieuw afdrukken exact dezelfde fysieke spoel wordt gebruikt in plaats van opnieuw een keuze af te leiden uit type/kleur van het bestand. Standaard uit.`},gcodeInjection:{title:`G-code-injectie`,description:`Pas de per model ingestelde G-codefragmenten uit Instellingen toe op taken van deze VP. Standaard uit.`},tailscaleDisabled:{title:`Tailscale-integratie`,description:`Schakel dit in om deze VP als via Tailscale beschikbaar te markeren. Toont het Tailscale-adres van de host, zodat je weet welk IP-adres je in de slicer moet invoeren. De stap voor het importeren van de CA blijft hetzelfde — deze schakelaar heeft geen invloed op certificaten.`},setupRequired:{title:`Installatie vereist`,description:`Voor de functie virtuele printer is aanvullende systeemconfiguratie nodig voordat deze werkt. Dit omvat port forwarding, firewallregels en platformspecifieke instellingen.`,readGuide:`Lees de installatiehandleiding voordat je dit inschakelt`},archiveNameSource:{title:`Bron voor archiefnaam`,description:`Kies hoe nieuwe archieven worden genoemd wanneer bestanden via de virtuele printer binnenkomen. "Metadata" gebruikt de in de slicer opgenomen Titel uit de 3MF (standaard). "Bestandsnaam" gebruikt de bestandsnaam die Bambu Studio via FTP heeft verzonden. Let op: Bambu Studio overschrijft de naam die je in het dialoogvenster "naar printer verzenden" invoert met het Titel-veld van de 3MF wanneer dat aanwezig is, waardoor beide modi vaak dezelfde tekst opleveren.`,metadata:`Metadata`,filename:`Bestandsnaam`},caCert:{title:`Slicercertificaat`,description:`Virtuele printers gebruiken een TLS-certificaat dat is ondertekend door de Bambuddy-CA. Importeer dit CA-certificaat eenmalig in de trust store van je slicer zodat de verbinding wordt geaccepteerd — je hoeft het niet via de opdrachtregel te kopiëren.`,copy:`Kopiëren`,copied:`Gekopieerd`,download:`Downloaden`,fingerprint:`SHA-256`},howItWorks:{title:`Hoe het werkt`,step1:`Op hetzelfde LAN verschijnen virtuele printers automatisch in je slicer (Bambu Studio / OrcaSlicer) via detectie. Vanaf andere netwerken voeg je ze handmatig toe met IP-adres en toegangscode.`,step2:`Gebruik in de modi Archief, Beoordelen en Wachtrij de knop "Verzenden" in je slicer om 3MF-bestanden naar Bambuddy te uploaden. De slicer toont "Afdruk geslaagd" — het bestand wordt opgeslagen, niet afgedrukt.`,step3:`In proxymodus stuurt de virtuele printer al het verkeer door naar een echte printer — afdrukken starten direct alsof je rechtstreeks verbonden bent.`},status:{title:`Statusdetails`,printerName:`Printernaam`,model:`Model`,serialNumber:`Serienummer`,mode:`Modus`,pendingFiles:`Bestanden in behandeling`,targetPrinter:`Doelprinter`,ftpPort:`FTP-poort`,mqttPort:`MQTT-poort`,ftpConnections:`FTP-verbindingen`,mqttConnections:`MQTT-verbindingen`},toast:{updated:`Instellingen virtuele printer bijgewerkt`,failedToUpdate:`Instellingen bijwerken mislukt`,copyFailed:`Kopiëren mislukt — probeer de tekst handmatig te selecteren`,accessCodeRequired:`Stel eerst een toegangscode in`,targetPrinterRequired:`Selecteer eerst een doelprinter`,bindIpRequired:`Stel eerst een bind-IP in`,accessCodeEmpty:`Toegangscode mag niet leeg zijn`,accessCodeLength:`Toegangscode moet precies 8 tekens zijn`,targetCodeChangedRebind:`De toegangscode komt nu overeen met de nieuwe doelprinter. Voeg dit apparaat opnieuw toe in je slicer om de nieuwe code te gebruiken.`,created:`Virtuele printer aangemaakt`,failedToCreate:`Virtuele printer aanmaken mislukt`,deleted:`Virtuele printer verwijderd`,failedToDelete:`Virtuele printer verwijderen mislukt`},list:{title:`Virtuele printers`,add:`Toevoegen`,addFirst:`Virtuele printer toevoegen`,empty:`Geen virtuele printers geconfigureerd. Voeg er een toe om te beginnen.`},bindIp:{title:`Bind-interface`,placeholder:`Selecteer interface...`,hint:`Netwerkinterface waaraan deze virtuele printer wordt gekoppeld. Moet uniek zijn per printer.`},proxy:{accessCodeHint:`Gebruik in proxymodus de toegangscode van je doelprinter in de slicer. De verbinding wordt transparant doorgestuurd naar de echte printer.`},addDialog:{title:`Virtuele printer toevoegen`,name:`Naam`,hint:`Je kunt de toegangscode, doelprinter en andere instellingen na het aanmaken configureren.`,create:`Maken`},deleteConfirm:{title:`Virtuele printer verwijderen`,message:`Weet je zeker dat je "{{name}}" wilt verwijderen? Hiermee worden alle services voor deze printer gestopt.`}},modelViewer:{openInSlicer:`Openen in slicer`,openInSlicerWith:`Openen in {{slicer}}`,moreSlicerOptions:`Meer sliceropties`,openInSlicerFailed:`Kon niet openen in slicer`,tabs:{model:`3D-model`},notAvailable:`niet beschikbaar`,plates:`Platen`,allPlates:`Alle platen`,plateNumber:`Plaat {{number}}`,plateCount:`{{count}} plaat`,plateCount_other:`{{count}} platen`,objectCount:`{{count}} object`,objectCount_other:`{{count}} objecten`,filamentCount:`{{count}} filament`,filamentCount_other:`{{count}} filamenten`,eta:`ETA {{minutes}} min`,noPreview:`Geen voorbeeld beschikbaar voor dit bestand`,pagination:{pageOf:`Pagina {{current}} van {{total}}`,prev:`Vorige`,next:`Volgende`},errors:{failedToLoad:`Bestand laden mislukt`,noMeshes:`Geen meshes gevonden in 3MF-bestand`,unsupportedFormat:`Niet-ondersteund bestandsformaat`}},maintenanceDescriptions:{lubricateCarbonRods:`Breng smeermiddel aan op de carbonstangen voor soepele beweging`,lubricateRails:`Breng smeermiddel aan op de lineaire rails voor soepele beweging`,cleanNozzle:`Reinig hotend en nozzle om verstoppingen te voorkomen`,checkBelts:`Controleer de riemspanning voor nauwkeurige afdrukken`,cleanBuildPlate:`Reinig de bouwplaat voor betere hechting`,checkExtruder:`Controleer de extrudertandwielen op slijtage`,checkCooling:`Controleer of de koelventilatoren goed werken`,generalInspection:`Algemene printerinspectie`,cleanCarbonRods:`Reinig de carbonstangen om wrijving te verminderen`,lubricateSteelRods:`Breng smeermiddel aan op de stalen stangen voor soepele beweging`,cleanSteelRods:`Reinig de stalen stangen om wrijving te verminderen`,cleanLinearRails:`Veeg de lineaire rails schoon om stof en vuil te verwijderen`,checkPtfeTube:`Controleer de PTFE-buis op slijtage of beschadiging`,replaceHepaFilter:`Vervang het HEPA-filter voor een goede luchtkwaliteit`,replaceCarbonFilter:`Vervang het actieve-koolfilter`,lubricateLeftNozzleRail:`Smeer de linker nozzlerail (H2-serie)`},haSensors:{label:`Sensoren`,unavailable:`Niet beschikbaar`,blocksPrints:`{{entity}} — houdt afdrukken tegen en geeft een melding`,states:{open:`Open`,closed:`Gesloten`,unlocked:`Ontgrendeld`,locked:`Vergrendeld`,detected:`Gedetecteerd`,clear:`Wissen`,wet:`Nat`,dry:`Droog`,problem:`Probleem`,ok:`OK`,running:`Actief`,stopped:`Gestopt`,on:`Aan`,off:`Uit`},sectionTitle:`Home Assistant-sensoren`,add:`Sensor toevoegen`,addTitle:`Home Assistant-sensor toevoegen`,editTitle:`Home Assistant-sensor bewerken`,empty:`Nog geen sensoren. Koppel een deurcontact of thermometer uit Home Assistant om deze op een printerkaart te tonen.`,unknownPrinter:`Onbekende printer`,badgeBlocks:`Houdt afdrukken tegen`,badgeNotifies:`Meldt`,badgeHidden:`Verborgen op kaart`,printer:`Printer`,entity:`Entiteit`,searchPlaceholder:`Entiteiten zoeken...`,noEntities:`Geen overeenkomende entiteiten`,name:`Weergavenaam`,alertWhen:`Waarschuwen wanneer`,alertNever:`Nooit — alleen weergeven`,alertAbove:`Boven`,alertBelow:`Onder`,alertHint:`De alarmstatus markeert de sensor op de printerkaart en schakelt de onderstaande opties in.`,showOnCard:`Tonen op printerkaart`,notifyOnAlert:`Stuur een melding wanneer een alarm begint`,blockPrint:`Houd afdrukken in de wachtrij tegen zolang er een alarm is`,blockPrintHint:`Taken blijven in de wachtrij en starten vanzelf zodra de sensor weer normaal is. Wordt genegeerd als Home Assistant niet bereikbaar is.`,toast:{created:`Sensor toegevoegd`,updated:`Sensor opgeslagen`,deleted:`Sensor verwijderd`},error:{pickEntity:`Kies een Home Assistant-entiteit`,nameRequired:`Voer een weergavenaam in`,printerRequired:`Kies een printer`,alertRequired:`Stel eerst een alarmvoorwaarde in`}},locationHaSensors:{sectionTitle:`Home Assistant-sensoren (opslaglocaties)`,sectionDescription:`Koppel temperatuur-, luchtvochtigheids- of batterijsensoren uit Home Assistant aan je opslaglocaties om live waarden te tonen op de filamentkaart en in de tabel. Per locatie is één sensor per categorie toegestaan.`,add:`Sensor toevoegen`,addTitle:`Home Assistant-sensor toevoegen`,editTitle:`Home Assistant-sensor bewerken`,empty:`Nog geen sensoren. Koppel een temperatuur- of luchtvochtigheidssensor uit Home Assistant om deze op de filamentkaart te tonen.`,unknownLocation:`Onbekende locatie`,location:`Opslaglocatie`,showOnCard:`Tonen op filamentkaart`,overwriteConfirm:{title:`Bestaande sensor vervangen?`,messageTemperature:`"{{location}}" heeft al een temperatuursensor gekoppeld: {{name}}. Doorgaan vervangt deze.`,messageHumidity:`"{{location}}" heeft al een luchtvochtigheidssensor gekoppeld: {{name}}. Doorgaan vervangt deze.`,messageBattery:`"{{location}}" heeft al een batterijsensor gekoppeld: {{name}}. Doorgaan vervangt deze.`},autoAdd:{confirmTitle:`De andere sensoren ook toevoegen?`,confirmMessage:`Bambuddy heeft ook andere sensoren voor deze locatie gevonden. Kies welke je ook wilt toevoegen.`,added:`Ook toegevoegd: {{names}}`,noneFound:`Geen bijpassende temperatuur-, luchtvochtigheids- of batterijsensoren gevonden voor deze locatie.`,onlyThisOne:`Alleen deze`},options:{buttonLabel:`Sensoropties`,title:`Opties voor locatiesensoren`,description:`Deze waarden worden gebruikt wanneer een temperatuur-, luchtvochtigheids- of batterijsensor automatisch wordt gekoppeld naast de eerste sensor van een locatie.`,generalSettings:`Algemene instellingen`,pollInterval:`Bijwerkinterval (seconden)`,pollIntervalHint:`Hoe vaak Bambuddy Home Assistant raadpleegt en sensorwaarden op het scherm ververst. Minimaal 60 seconden.`,colorizeValues:`Sensorwaarden inkleuren op basis van hun alarmdrempels`,aboveColor:`Kleur boven drempel`,belowColor:`Kleur onder drempel`,optimalColor:`Kleur bij optimale waarde`,colors:{red:`Rood`,orange:`Oranje`,yellow:`Geel`,green:`Groen`,blue:`Blauw`,purple:`Paars`,pink:`Roze`},saved:`Opties opgeslagen`,saveFailed:`Opslaan van opties mislukt`,reset:`Herstellen`,resetConfirm:{title:`Alle bestaande locatiesensoren herstellen?`,message:`Dit overschrijft de alarmdrempels, meldingen en kaartzichtbaarheid van elke bestaande temperatuur-, luchtvochtigheids- en batterijsensor van opslaglocaties met de hierboven ingestelde waarden, en herstelt de naam van elke sensor naar de vriendelijke naam uit Home Assistant — printersensoren blijven ongewijzigd. Dit kan niet ongedaan worden gemaakt. Afhankelijk van het aantal sensoren kan dit even duren.`},resetDone:`Toegepast op {{count}} locatiesensoren`,resetFailed:`Herstellen van locatiesensoren mislukt`},deleteAllConfirm:{title:`Alle sensoren verwijderen?`,message:`Hiermee worden alle {{count}} sensoren verwijderd die aan "{{location}}" zijn gekoppeld. Dit kan niet ongedaan worden gemaakt.`},currentlyBound:`Momenteel gekoppeld: {{entity}}`,error:{locationRequired:`Kies een opslaglocatie`},toast:{created:`Sensor toegevoegd`,updated:`Sensor opgeslagen`,deleted:`Sensor verwijderd`}},smartPlugs:{offline:`Offline`,admin:`Beheerder`,openPlugAdminPage:`Beheerpagina van stekker openen`,deleteSmartPlug:`Slimme stekker verwijderen`,turnOnSmartPlug:`Slimme stekker inschakelen`,turnOffSmartPlug:`Slimme stekker uitschakelen`,turnOn:`Inschakelen`,turnOff:`Uitschakelen`,addSmartPlug:{scanningNetwork:`Netwerk scannen...`,chooseEntity:`Kies een entiteit...`,connectionFailed:`Verbinding mislukt`,searchEntities:`Entiteiten zoeken...`,searchPowerSensors:`Vermogenssensoren zoeken...`,searchEnergySensors:`Energiesensoren zoeken...`,placeholders:{plugName:`Woonkamerstekker`,mqttStateOnValue:`AAN, true, 1`,mqttSameAsPower:`Hetzelfde als vermogensonderwerp, of anders`}},linkedTo:`Gekoppeld aan:`,monitorOnly:`Alleen bewaken`,alerts:`Waarschuwingen`,scheduleOn:`Aan {{time}}`,scheduleOff:`Uit {{time}}`,on:`Aan`,off:`Uit`,power:`Vermogen`,kwhToday:`kWh vandaag`,settings:`Instellingen`,automationSettings:`Automatiseringsinstellingen`,showInSwitchbar:`Tonen in schakelbalk`,quickAccessSidebar:`Snelle toegang vanuit de zijbalk`,enabled:`Ingeschakeld`,enableAutomation:`Automatisering voor deze stekker inschakelen`,autoOn:`Automatisch aan`,autoOnDescription:`Inschakelen wanneer afdruk start`,autoOff:`Automatisch uit`,autoOffDescription:`Uitschakelen wanneer afdruk is voltooid (eenmalig)`,autoOffPersistent:`Ingeschakeld houden`,autoOffPersistentDescription:`Ingeschakeld blijven tussen afdrukken in plaats van eenmalig`,controlsPrinterPower:`Voedt de printer`,controlsPrinterPowerDescription:`Schakel dit uit als deze stekker alleen een accessoire voedt (filterventilator, verlichting). Anders wordt de printer als offline gemarkeerd wanneer je hem uitschakelt.`,autoOffAfterDrying:`Automatisch uitschakelen na drogen`,autoOffAfterDryingDescription:`Uitschakelen wanneer AMS-drogen is voltooid`,delayAfterDryingMinutes:`Droogvertraging (minuten)`,turnOffDelayMode:`Modus uitschakelvertraging`,time:`Tijd`,temp:`Temp`,delayMinutes:`Vertraging (minuten)`,tempThreshold:`Temperatuurdrempel (°C)`,tempThresholdDescription:`Schakelt uit wanneer de nozzle onder deze temperatuur is afgekoeld`,edit:`Bewerken`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.`,turnOnConfirm:`Weet je zeker dat je "{{name}}" wilt inschakelen?`,turnOffConfirm:`Weet je zeker dat je "{{name}}" wilt uitschakelen? Hierdoor wordt de stroom naar het aangesloten apparaat onderbroken.`,failedToTurn:`"{{name}}" {{action}} schakelen mislukt`,unknown:`Onbekend`,addTitle:`Slimme stekker toevoegen`,editTitle:`Slimme stekker bewerken`,stopScanning:`Scannen stoppen`,discoverTasmota:`Tasmota-apparaten zoeken`,foundDevices:`{{count}} apparaat/apparaten gevonden - klik om te selecteren:`,noDevicesFound:`Geen Tasmota-apparaten gevonden op je netwerk`,haNotConfigured:`Home Assistant is niet geconfigureerd. Stel dit in via`,haSettingsPath:`Instellingen → Netwerk → Home Assistant`,selectEntity:`Selecteer entiteit *`,ipAddress:`IP-adres *`,nameLabel:`Naam *`,username:`Gebruikersnaam`,password:`Wachtwoord`,authHint:`Laat leeg als je Tasmota-apparaat geen authenticatie vereist`,linkToPrinter:`Koppelen aan printer`,noPrinter:`Geen printer (alleen handmatige bediening)`,linkingDescription:`Koppelen maakt automatisch in-/uitschakelen mogelijk wanneer afdrukken starten/voltooien`,powerAlerts:`Vermogenswaarschuwingen`,alertAbove:`Waarschuwen indien boven (W)`,alertBelow:`Waarschuwen indien onder (W)`,alertDescription:`Ontvang een melding wanneer het stroomverbruik deze drempels overschrijdt. Laat leeg om die richting uit te schakelen.`,dailySchedule:`Dagelijks schema`,turnOnAt:`Inschakelen om`,turnOffAt:`Uitschakelen om`,scheduleDescription:`Schakel de stekker dagelijks automatisch op deze tijden in/uit. Laat leeg om die actie over te slaan.`,showOnPrinterCard:`Tonen op printerkaart`,displayOnPrinterCard:`Knop op printerkaart weergeven`,connectedResult:`Verbonden!`,deviceLabel:`Apparaat: {{name}} - `,stateLabel:`Status: {{state}}`,test:`Testen`,delete:`Verwijderen`,save:`Opslaan`,add:`Toevoegen`,cancel:`Annuleren`,failedToStartScan:`Scan starten mislukt`,nameRequired:`Naam is verplicht`,entityRequired:`Entiteit is verplicht voor Home Assistant-stekkers`,mqttTopicRequired:`Ten minste één MQTT-topic moet zijn geconfigureerd voor bewaking van vermogen, energie of status`,loadingEntities:`Entiteiten laden...`,loading:`Laden...`,failedToLoadEntities:`Entiteiten laden mislukt: {{error}}`,noEntitiesMatching:`Geen entiteiten gevonden die overeenkomen met "{{search}}"`,noEntitiesAvailable:`Geen entiteiten beschikbaar`,searchingEntities:`Alle entiteiten doorzoeken ({{count}} gevonden)`,showingEntities:`Toont switch, light, input_boolean ({{count}} beschikbaar)`,energyMonitoringOptional:`Energiemonitoring (optioneel)`,energyMonitoringHint:`Zoek en selecteer sensoren die vermogens-/energiegegevens leveren.`,powerSensorW:`Vermogenssensor (W)`,energyTodayKwh:`Energie vandaag (kWh)`,totalEnergyKwh:`Totale energie (kWh)`,noMatchingSensors:`Geen overeenkomende sensoren`,none:`Geen`,mqttNotConfigured:`MQTT-broker niet geconfigureerd. Stel het brokeradres in via`,mqttSettingsPath:`Instellingen → Netwerk → MQTT-publicatie`,mqttNotConfiguredSuffix:`(je hoeft publicatie niet in te schakelen; vul alleen de brokergegevens in).`,mqttMonitorOnlyDescription:`MQTT-stekkers ontvangen vermogens-/energiegegevens via een MQTT-abonnement. In-/uitschakelen is niet beschikbaar - gebruik je MQTT-broker of domoticasysteem.`,powerMonitoring:`Vermogensbewaking`,energyMonitoring:`Energiemonitoring`,stateMonitoring:`Statusbewaking`,optional:`optioneel`,topic:`Topic`,jsonPath:`JSON-pad`,multiplier:`Vermenigvuldigingsfactor`,onValue:`AAN-waarde`,mqttPowerHint:`JSON-pad haalt de waarde uit een JSON-payload (bijv. "power_l1"). Laat leeg als het topic ruwe numerieke waarden publiceert. +Gebruik vermenigvuldigingsfactor 0.001 voor mW→W, 1000 voor kW→W.`,mqttEnergyHint:`JSON-pad haalt de waarde uit een JSON-payload. Laat leeg voor ruwe waarden. +Gebruik vermenigvuldigingsfactor 0.001 voor Wh→kWh, 1000 voor MWh→kWh.`,mqttStateHint:`JSON-pad haalt de waarde uit een JSON-payload. Laat leeg voor ruwe waarden. +AAN-waarde: de exacte tekenreeks die "AAN" betekent. Laat leeg voor automatische detectie (ON, true, 1).`,restControl:`Bedienen`,restOnUrl:`URL voor AAN`,restOffUrl:`URL voor UIT`,restOnBody:`Requestbody AAN`,restOffBody:`Requestbody UIT`,restMethod:`HTTP-methode`,restHeaders:`Aangepaste headers (JSON)`,restStatusUrl:`Status-URL`,restStatusPath:`JSON-pad status`,restStatusOnValue:`AAN-waarde`,restPowerUrl:`Vermogens-URL`,restPowerPath:`JSON-pad vermogen`,restPowerMultiplier:`Vermenigvuldigingsfactor vermogen`,restEnergyUrl:`Energie-URL`,restEnergyPath:`JSON-pad energie (vandaag)`,restEnergyTotalPath:`JSON-pad energie (totaal)`,restEnergyTotalMultiplier:`Vermenigvuldigingsfactor totaal`,restEnergyTotalPathHint:`bijv. aenergy.total`,restEnergyTotalHint:`Veel stekkers — waaronder alle Shelly's — rapporteren alleen een totale teller die nooit wordt gereset. Die hoort hier en niet in het veld hierboven: als je hem als verbruik van vandaag leest, wordt hij om middernacht niet gereset en blijven Gisteren en Totaal leeg. Bambuddy berekent Vandaag en Gisteren hieruit; het duurt één of twee dagen aan metingen voordat die gevuld zijn. Een Shelly rapporteert wattuur, dus gebruik een vermenigvuldigingsfactor van 0.001.`,restEnergyMultiplier:`Vermenigvuldigingsfactor energie`,restUrlRequired:`Ten minste één URL (AAN of UIT) is vereist voor REST-stekkers`,restHeadersHint:`bijv. {"Authorization": "Bearer your-token"}`,restBodyHint:`bijv. ON, {"state": "on"}`,restStatusHint:`URL om de huidige status op te vragen`,restPathHint:`bijv. state of data.power.status`,restPowerUrlHint:`Afzonderlijke URL voor vermogensgegevens (gebruikt Status-URL als deze leeg is)`,restEnergyUrlHint:`Afzonderlijke URL voor energiegegevens (gebruikt Status-URL als deze leeg is)`,restEnergyHint:`Elke waarde kan een eigen URL gebruiken of terugvallen op de Status-URL. Gebruik vermenigvuldigingsfactoren voor eenheidsconversie (bijv. 0.001 om Wh naar kWh om te rekenen).`,testConnection:`Verbinding testen`,connectionSuccess:`Verbinding geslaagd`,noSwitchesInSwitchbar:`Geen schakelaars in de schakelbalk`,enableSwitchbarHint:`Schakel "Tonen in schakelbalk" in via Instellingen > Slimme stekkers`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`E-mail`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`SMTP-e-mailmeldingen`,telegram:`Meldingen via Telegram-bot`,discord:`Versturen naar Discord-kanaal via webhook`,ntfy:`Gratis, zelf te hosten pushmeldingen`,pushover:`Eenvoudige, betrouwbare pushmeldingen`,callmebot:`Gratis WhatsApp-meldingen via CallMeBot`,webhook:`Algemene HTTP POST naar elke URL`,homeassistant:`Blijvende meldingen in het Home Assistant-dashboard`,bark:`iOS-pushmeldingen via Bark (zelf te hosten)`},lastSuccess:`Laatste: {{date}}`,error:`Fout`,printer:`Printer:`,allPrinters:`Alle printers`,sendTestNotification:`Testmelding verzenden`,eventSettings:`Gebeurtenisinstellingen`,enabled:`Ingeschakeld`,sendFromProvider:`Meldingen via deze provider verzenden`,printEvents:`Afdrukgebeurtenissen`,printerStatus:`Printerstatus`,amsAlarms:`AMS-alarmen`,amsHtAlarms:`AMS-HT-alarmen`,printQueue:`Afdrukwachtrij`,start:`Start`,plateCheck:`Plaatcontrole`,complete:`Voltooid`,failed:`Mislukt`,stopped:`Gestopt`,progress:`Voortgang`,offline:`Offline`,lowFilament:`Weinig filament`,maintenance:`Onderhoud`,amsHumidity:`AMS-luchtvochtigheid`,amsTemp:`AMS-temp`,amsDryingSuspended:`Drogen onderbroken`,amsHtHumidity:`AMS-HT-luchtvochtigheid`,amsHtTemp:`AMS-HT-temp`,bedCooled:`Bed afgekoeld`,firstLayer:`Eerste laag`,quiet:`Stil`,digest:`Samenvatting {{time}}`,printStarted:`Afdruk gestart`,plateNotEmpty:`Plaat niet leeg`,plateNotEmptyDescription:`Objecten gedetecteerd vóór afdrukken`,plateClearRequired:`Bevestiging lege plaat vereist`,plateClearRequiredDescription:`Afdruk voltooid, wachtrij wacht op bevestiging van de plaat`,plateClear:`Plaat leeg`,printCompleted:`Afdruk voltooid`,bedCooledLabel:`Bed afgekoeld`,bedCooledDescription:`Bed na afdruk afgekoeld tot onder drempel`,firstLayerCompleteLabel:`Eerste laag voltooid`,firstLayerCompleteDescription:`Melden met momentopname wanneer de eerste laag is voltooid`,missingSpoolAssignmentLabel:`Ontbrekende spoeltoewijzing`,billingChargeFailedLabel:`Kostenregistratie mislukt`,billingChargeFailedDescription:`Melden wanneer afdrukkosten niet konden worden geregistreerd`,missingSpoolAssignmentDescription:`Melden wanneer een afdruk start en vereiste trays geen toegewezen spoel hebben`,printFailed:`Afdruk mislukt`,printStopped:`Afdruk gestopt`,progressMilestones:`Voortgangsmijlpalen`,progressMilestonesDescription:`Melden bij 25%, 50%, 75%`,printerOffline:`Printer offline`,printerError:`Printerfout`,aiFailureDetection:`AI-foutdetectie`,aiFailureDetectionDescription:`Melden wanneer Obico AI een mogelijke afdrukfout detecteert`,lowFilamentLabel:`Weinig filament`,maintenanceDue:`Onderhoud nodig`,maintenanceDueDescription:`Melden wanneer onderhoud nodig is`,amsHumidityHigh:`AMS-luchtvochtigheid hoog`,amsHumidityHighDescription:`Luchtvochtigheid van normale AMS overschrijdt drempel`,amsTemperatureHigh:`AMS-temperatuur hoog`,amsTemperatureHighDescription:`Temperatuur van normale AMS overschrijdt drempel`,amsDryingSuspendedTitle:`Automatisch drogen gestopt`,amsDryingSuspendedDescription:`Automatisch drogen heeft een AMS-eenheid opgegeven omdat de luchtvochtigheid niet onder de drempel kwam`,amsHtHumidityHigh:`AMS-HT-luchtvochtigheid hoog`,amsHtHumidityHighDescription:`AMS-HT-luchtvochtigheid overschrijdt drempel`,amsHtTemperatureHigh:`AMS-HT-temperatuur hoog`,amsHtTemperatureHighDescription:`AMS-HT-temperatuur overschrijdt drempel`,inventoryAlerts:`Voorraadwaarschuwingen`,stockReorderAlert:`Bestelwaarschuwing`,stockReorderAlertDescription:`SKU heeft het bestelpunt bereikt`,stockBreakAlert:`Voorraadtekortwaarschuwing`,stockBreakAlertDescription:`Voorraad raakt op voordat aanvulling arriveert`,jobAdded:`Taak toegevoegd`,jobAddedDescription:`Taak toegevoegd aan wachtrij`,jobAssigned:`Taak toegewezen`,jobAssignedDescription:`Modelgebaseerde taak toegewezen aan printer`,jobStarted:`Taak gestart`,jobStartedDescription:`Wachtrijtaak begonnen met afdrukken`,jobWaiting:`Taak wacht`,jobWaitingDescription:`Taak wacht op filament of printer`,jobSkipped:`Taak overgeslagen`,jobSkippedDescription:`Taak overgeslagen (vorige mislukt)`,jobFailed:`Taak mislukt`,jobFailedDescription:`Taak kon niet starten`,queueComplete:`Wachtrij voltooid`,queueCompleteDescription:`Alle wachtrijtaken voltooid`,quietHours:`Stille uren`,noNotificationsDuring:`Geen meldingen tijdens deze uren`,editProviderToChangeQuietHours:`Bewerk provider om stille uren te wijzigen`,dailyDigest:`Dagelijkse samenvatting`,batchNotifications:`Bundel meldingen in één dagelijkse samenvatting`,sendAt:`Verzenden om {{time}}`,editProviderToChangeDigestTime:`Bewerk provider om tijdstip van samenvatting te wijzigen`,edit:`Bewerken`,deleteProvider:`Meldingsprovider verwijderen`,deleteConfirm:`Weet je zeker dat je "{{name}}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.`,delete:`Verwijderen`,addTitle:`Meldingsprovider toevoegen`,editTitle:`Meldingsprovider bewerken`,nameLabel:`Naam *`,namePlaceholder:`Mijn meldingen`,providerTypeLabel:`Providertype *`,configuration:`Configuratie`,testConfiguration:`Configuratie testen`,printerFilter:`Printerfilter`,onlyFromPrinter:`Alleen meldingen verzenden voor gebeurtenissen van deze printer`,quietHoursDnd:`Stille uren (Niet storen)`,quietStart:`Start`,quietEnd:`Einde`,dailyDigestLabel:`Dagelijkse samenvatting`,sendDigestAt:`Samenvatting verzenden om`,digestCollected:`Gebeurtenissen worden verzameld en op dit tijdstip als één samenvatting verzonden`,notificationEvents:`Meldingsgebeurtenissen`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(nadat de afdruk is voltooid)`,haSensorAlert:`Sensorwaarschuwing`,haSensorAlertDescription:`(een gekoppelde Home Assistant-sensor vereist aandacht)`,locationHaSensorAlert:`Sensoralarm opslaglocatie`,locationHaSensorAlertDescription:`(een Home Assistant-sensor die aan een opslaglocatie is gekoppeld vereist aandacht)`,eventPriority:{sectionTitle:`ntfy-prioriteit`,helpNtfy:`Kies een prioriteit voor elke ingeschakelde gebeurtenis. ntfy gebruikt deze om waarschuwingen op te schalen (geluid, zichtbaarheid, pushgedrag). Niveaus die hier niet zijn ingesteld gebruiken de standaardwaarde van de ntfy-server.`,min:`Min`,low:`Laag`,default:`Standaard`,high:`Hoog`,urgent:`Urgent`},cancel:`Annuleren`,save:`Opslaan`,add:`Toevoegen`,nameRequired:`Naam is verplicht`,fieldRequired:`{{field}} is verplicht`,haDataInvalid:`Het veld Data moet een geldig JSON-object zijn, bijv. {"priority": "high", "ttl": 0}`,phoneNumber:`Telefoonnummer`,apiKey:`API-sleutel`,serverUrl:`Server-URL`,topic:`Topic`,authToken:`Authenticatietoken`,userKey:`Gebruikerssleutel`,appToken:`App-token`,priority:`Prioriteit`,pushoverRetry:`Noodherhaling (s)`,pushoverExpire:`Noodverval (s)`,botToken:`Bottoken`,chatId:`Chat-ID`,telegramThreadId:`Forumtopic-ID`,telegramThreadIdHelp:`Optioneel. Plaatst in één specifiek topic van een forumgroep — het laatste nummer in de topiclink (t.me/c/.../25). Laat leeg voor het algemene topic.`,telegramThreadIdInvalid:`Forumtopic-ID moet een getal zijn.`,smtpServer:`SMTP-server`,smtpPort:`SMTP-poort`,security:`Beveiliging`,authentication:`Authenticatie`,username:`Gebruikersnaam`,password:`Wachtwoord`,fromEmail:`Afzender-e-mail`,toEmail:`Naar e-mailadres`,webhookUrl:`Webhook-URL`,payloadFormat:`Payloadformaat`,authorization:`Autorisatie`,titleFieldName:`Naam titelveld`,messageFieldName:`Naam berichtveld`,editTemplate:`Sjabloon bewerken: {{name}}`,titleLabel:`Titel`,bodyLabel:`Inhoud`,titlePlaceholder:`Meldingstitel...`,bodyPlaceholder:`Meldingsinhoud...`,availableVariables:`Beschikbare variabelen`,clickToInsert:`Klik om op de cursorpositie in de inhoud in te voegen`,livePreview:`Livevoorbeeld`,hide:`Verbergen`,show:`Tonen`,loadingPreview:`Voorbeeld laden...`,enterTemplateContent:`Voer sjablooninhoud in om een voorbeeld te zien`,titlePreview:`Titel:`,bodyPreview:`Inhoud:`,resetToDefault:`Terugzetten naar standaard`,titleRequired:`Titel is verplicht`,bodyRequired:`Inhoud is verplicht`,notificationLog:`Meldingslogboek`,showFailedOnly:`Alleen mislukt`,last24Hours:`Laatste 24 uur`,last7Days:`Laatste 7 dagen`,last30Days:`Laatste 30 dagen`,last90Days:`Laatste 90 dagen`,justNow:`Zojuist`,noFailedNotifications:`Geen mislukte meldingen`,noNotificationsLogged:`Geen meldingen geregistreerd`,unknownProvider:`Onbekende provider`,logTitle:`Titel`,logMessage:`Bericht`,logError:`Fout`,logProvider:`Provider: {{type}}`,logTime:`Tijd: {{time}}`,refresh:`Vernieuwen`,clearOld:`Oude wissen`,statsSummary:`Laatste {{days}} dagen:`,statsNotifications:`meldingen`,statsSent:`{{count}} verzonden`,statsFailed:`{{count}} mislukt`,eventTypes:{print_start:`Afdruk gestart`,print_complete:`Afdruk voltooid`,print_failed:`Afdruk mislukt`,print_stopped:`Afdruk gestopt`,print_progress:`Voortgang`,printer_offline:`Printer offline`,printer_error:`Printerfout`,filament_low:`Weinig filament`,maintenance_due:`Onderhoud nodig`,test:`Testen`},userEmail:{title:`Meldingen`,emailNotifications:`E-mailmeldingen`,emailNotificationsDesc:`Ontvang e-mailmeldingen voor je eigen afdruktaken. E-mails worden verzonden via de SMTP-instellingen van het systeem die zijn geconfigureerd onder Geavanceerde authenticatie.`,sendingTo:`Meldingen worden verzonden naar`,noEmailWarning:`Je account heeft geen e-mailadres. Neem contact op met een beheerder om er een toe te voegen.`,printJobNotifications:`Meldingen voor afdruktaken`,printJobNotificationsDesc:`Kies welke gebeurtenissen e-mailmeldingen activeren voor afdruktaken die je indient.`,printJobStarts:`Afdruktaak start`,printJobStartsDesc:`Ontvang een melding wanneer je afdruktaak begint.`,printJobFinishes:`Afdruktaak voltooid`,printJobFinishesDesc:`Ontvang een melding wanneer je afdruktaak succesvol is voltooid.`,printErrors:`Afdrukfouten`,printErrorsDesc:`Ontvang een melding wanneer je afdruktaak mislukt of een fout tegenkomt.`,printJobStops:`Afdruktaak gestopt`,printJobStopsDesc:`Ontvang een melding wanneer je afdruktaak wordt geannuleerd of gestopt.`,saveSuccess:`Meldingsvoorkeuren opgeslagen.`,saveError:`Meldingsvoorkeuren opslaan mislukt.`}},richTextEditor:{bold:`Vet`,italic:`Cursief`,underline:`Onderstrepen`,bulletList:`Opsomming`,numberedList:`Genummerde lijst`,alignLeft:`Links uitlijnen`,alignCenter:`Centreren`,alignRight:`Rechts uitlijnen`,addLink:`Link toevoegen`,removeLink:`Link verwijderen`},externalLinks:{title:`Zijbalklinks`,sidebarLayout:`Zijbalk`,sidebarLayoutDescription:`Toon of verberg ingebouwde pagina's, voeg externe links toe en sleep items om de navigatie in de zijbalk te herschikken.`,systemPages:`Bambuddy-pagina's`,externalLinks:`Externe links`,visibleInSidebar:`Zichtbaar in zijbalk`,hiddenFromSidebar:`Verborgen in zijbalk`,requiredInSidebar:`Verplicht in zijbalk`,hidePage:`Pagina verbergen`,showPage:`Pagina tonen`,settingsCannotBeHidden:`Instellingen kunnen niet worden verborgen`,noLinksConfigured:`Geen externe links geconfigureerd`,deleteLink:`Link verwijderen`,removeCustomIcon:`Aangepast pictogram verwijderen`,openInNewTab:`Openen in nieuw tabblad`,placeholders:{linkName:`Mijn link`}},keyboardShortcuts:{title:`Sneltoetsen`,navigation:`Navigatie`,archivesSection:`Archieven`,kProfilesSection:`K-profielen`,generalSection:`Algemeen`,shortcuts:{goToPrinters:`Ga naar Printers`,goToArchives:`Ga naar Archieven`,goToQueue:`Ga naar Wachtrij`,goToStats:`Ga naar Statistieken`,goToProfiles:`Ga naar Cloudprofielen`,goToSettings:`Ga naar Instellingen`,focusSearch:`Zoeken activeren`,openUploadModal:`Uploadvenster openen`,clearSelection:`Selectie wissen / invoerveld verlaten`,contextMenu:`Contextmenu op kaarten`,refreshProfiles:`Profielen vernieuwen`,newProfile:`Nieuw profiel`,exitSelectionMode:`Selectiemodus afsluiten`,showHelp:`Deze hulp tonen`},footer:`Druk op Esc of klik buiten het venster om te sluiten`},notificationLog:{title:`Meldingslogboek`,events:{printStarted:`Afdruk gestart`,printComplete:`Afdruk voltooid`,printFailed:`Afdruk mislukt`,printStopped:`Afdruk gestopt`,progress:`Voortgang`,printerOffline:`Printer offline`,printerError:`Printerfout`,lowFilament:`Weinig filament`,maintenanceDue:`Onderhoud nodig`,test:`Testen`},timeAgo:{justNow:`Zojuist`,minutesAgo:`{{minutes}}m geleden`,hoursAgo:`{{hours}}u geleden`}},restoreBackup:{title:`Back-up herstellen`,restoring:`Herstellen...`,restoreComplete:`Herstel voltooid`,restoreFailed:`Herstel mislukt`,importSettings:`Instellingen importeren uit een back-upbestand`,pleaseWait:`Wacht terwijl je gegevens worden hersteld`,clickToSelect:`Klik om een back-upbestand te selecteren (.json of .zip)`,howDuplicateHandling:`Zo werkt afhandeling van duplicaten:`,categories:{printers:`Printers`,smartPlugs:`Slimme stekkers`,notificationProviders:`Meldingsproviders`,filaments:`Filamenten`,archives:`Archieven`,pendingUploads:`Openstaande uploads`,settingsTemplates:`Instellingen en sjablonen`},matchingInfo:{printers:`gekoppeld op serienummer`,smartPlugs:`gekoppeld op IP-adres`,notificationProviders:`gekoppeld op naam`,filaments:`gekoppeld op naam + type + merk`,archives:`overeenkomst op inhoudshash`,pendingUploads:`gekoppeld op bestandsnaam`,settingsTemplates:`altijd overschreven`},replaceExisting:`Bestaande gegevens vervangen`,keepExisting:`Bestaande gegevens behouden`,replaceDescription:`Items die al bestaan overschrijven met gegevens uit de back-up`,keepDescription:`Alleen items herstellen die nog niet bestaan`,caution:`Let op:`,cautionText:`Overschrijven vervangt je huidige configuraties door de back-upgegevens. Toegangscodes van printers worden om veiligheidsredenen nooit overschreven.`,itemsRestored:`Items hersteld`,itemsSkipped:`Items overgeslagen`,restored:`Hersteld`,skipped:`Overgeslagen (bestaan al)`,filesLabel:`Bestanden (3MF, miniaturen, enz.)`,newApiKeysGenerated:`Nieuwe API-sleutels gegenereerd`,newApiKeysWarning:`Deze sleutels worden maar één keer getoond. Kopieer ze nu!`,processingBackup:`Back-upbestand verwerken...`,noDataFound:`Er zijn geen gegevens gevonden om uit het back-upbestand te herstellen.`,failedToRestore:`Back-up herstellen mislukt. Controleer het bestandsformaat.`},backupExport:{title:`Back-up exporteren`,selectData:`Selecteer gegevens om op te nemen`,selectAll:`Alles selecteren`,selectNone:`Niets selecteren`,categoryDescriptions:{settings:`Taal, thema, updatevoorkeuren`,notifications:`ntfy, Pushover, Discord, enz.`,templates:`Aangepaste berichtsjablonen`,smartPlugs:`Tasmota-stekkerconfiguraties`,externalLinks:`Zijbalklinks naar externe services`,printers:`Printerinformatie (toegangscodes uitgesloten)`,plateDetection:`Referentieafbeeldingen van lege plaat`,filaments:`Filamenttypen en kosten`,maintenance:`Aangepaste onderhoudsschema's`,archives:`Alle afdrukgegevens + bestanden (3MF, miniaturen, foto's)`,projects:`Projecten, BOM-items en bijlagen`,pendingUploads:`Uploads van virtuele printer die op beoordeling wachten`,apiKeys:`Webhook-API-sleutels (nieuwe sleutels worden gegenereerd bij import)`},requiresPrinters:`Vereist dat Printers is geselecteerd`,zipFileWarning:`Er wordt een ZIP-bestand aangemaakt.`,zipFileDescription:`Bevat alle 3MF-bestanden, miniaturen, timelapses en foto's. Dit kan enige tijd duren en een groot bestand opleveren.`,includeAccessCodes:`Toegangscodes opnemen`,includeAccessCodesDescription:`Voor overdracht naar een andere machine`,includeAccessCodesWarning:`Toegangscodes worden als platte tekst opgenomen. Bewaar dit back-upbestand veilig!`,categoriesSelected:`{{selectedCount}} categorieën geselecteerd`},pendingUploads:{placeholders:{notes:`Voeg notities over deze afdruk toe...`},discardUpload:`Upload verwijderen`,archiveAllUploads:`Alle uploads archiveren`,discardAllUploads:`Alle uploads verwijderen`,archive:`Archief`,timeAgo:{justNow:`Zojuist`,minutesAgo:`{{minutes}}m geleden`,hoursAgo:`{{hours}}u geleden`,daysAgo:`{{days}}d geleden`}},apiBrowser:{placeholders:{requestBody:`JSON-requestbody...`,searchEndpoints:`Endpoints zoeken...`}},configureAmsSlot:{title:`AMS-slot configureren`,slotConfigured:`Slot geconfigureerd!`,configuringSlot:`Slot configureren:`,slotLabel:`{{ams}} Slot {{slot}}`,searchPresets:`Presets zoeken...`,colorPlaceholder:`Kleurnaam of hex (bijv. brown, FF8800)`,clearCustomColor:`Aangepaste kleur wissen`,noCloudPresets:`Geen cloudpresets. Meld je aan bij Bambu Cloud om te synchroniseren.`,noPresetsAvailable:`Geen presets beschikbaar. Meld je aan bij Bambu Cloud of importeer lokale profielen.`,noMatchingPresets:`Geen overeenkomende presets gevonden.`,custom:`Aangepast`,builtin:`Ingebouwd`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`Instellingen naar printer verzonden`,filamentProfile:`Filamentprofiel`,kProfileLabel:`K-profiel (Pressure Advance)`,filteringFor:`Filteren op: {{material}}`,noKProfile:`Geen K-profiel (gebruik standaard 0.020)`,noMatchingKProfiles:`Geen overeenkomende K-profielen gevonden. Standaard K=0.020 wordt gebruikt.`,otherKProfiles:`Andere K-profielen op deze printer`,selectFilamentFirst:`Selecteer eerst een filamentprofiel`,kFromCalibration:`K={{value}} uit printerkalibratie`,customColorLabel:`Aangepaste kleur (optioneel)`,presetColors:`{{name}} kleuren:`,showLessColors:`Minder kleuren tonen`,showMoreColors:`Meer kleuren tonen`,clear:`Wissen`,hexLabel:`Hex: #{{hex}}`,resetting:`Resetten...`,resetSlot:`Slot resetten`,cancel:`Annuleren`,configuring:`Configureren...`,configureSlot:`Sleuf configureren`},githubBackup:{title:`Git-back-up`,history:`Geschiedenis`,downloadBackup:`Back-up downloaden`,restoreBackup:`Back-up herstellen`,noBackupsYet:`Nog geen back-ups`},emailSettings:{placeholders:{fromName:`BamBuddy`}},tagManagement:{searchTags:`Tags zoeken...`,renameTag:`Tag hernoemen`,deleteTag:`Tag verwijderen`},notificationTemplates:{placeholders:{title:`Meldingstitel...`,body:`Meldingsinhoud...`}},batchTag:{placeholders:{newTag:`Nieuwe tag invoeren...`}},photoGallery:{deletePhoto:`Foto verwijderen`},filamentHoverCard:{copySpoolUuid:`Spoel-UUID kopiëren`},kProfilesView:{hasNote:`Heeft notitie`,copyProfile:`Profiel kopiëren`},layout:{openMenu:`Menu openen`,noPermissionSystemInfo:`Je hebt geen machtiging om systeeminformatie te bekijken`},dashboard:{dragToReorder:`Sleep om te herschikken`,hideWidget:`Widget verbergen`},notificationProviderCard:{deleteNotificationProvider:`Meldingsprovider verwijderen`},fileManagerModal:{closeFileManager:`Bestandsbeheer sluiten`,sortFiles:`Bestanden sorteren`,goToParentFolder:`Ga naar bovenliggende map`,threeView:`3D-weergave`},embeddedCameraViewer:{refreshStream:`Stream vernieuwen`,close:`Sluiten`,zoomOut:`Uitzoomen`,resetZoom:`Zoom resetten`,zoomIn:`Inzoomen`,dragToResize:`Sleep om formaat te wijzigen`},timelapseViewer:{skipBack5s:`5 sec terug`,skipForward5s:`5 sec vooruit`},notificationProviders:{descriptions:{email:`SMTP-e-mailmeldingen`,telegram:`Meldingen via Telegram-bot`,discord:`Versturen naar Discord-kanaal via webhook`,ntfy:`Gratis, zelf te hosten pushmeldingen`,pushover:`Eenvoudige, betrouwbare pushmeldingen`,callmebot:`Gratis WhatsApp-meldingen via CallMeBot`,webhook:`Algemene HTTP POST naar elke URL`}},logViewer:{searchPlaceholder:`Zoek bericht of loggernaam...`,noLogEntries:`Geen logboekitems gevonden`},switchbarPopover:{noSwitchesInSwitchbar:`Geen schakelaars in de schakelbalk`},projectPageModal:{placeholders:{title:`Titel`,designer:`Ontwerper`,license:`Licentie`,description:`Voer beschrijving in...`,profileTitle:`Profieltitel`,profileDescription:`Profielbeschrijving...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`Wachten`,justNow:`Zojuist`,now:`Nu`,minsAgo:`{{count}}m geleden`,inMins:`over {{count}}m`,hoursAgo:`{{count}}u geleden`,inHours:`over {{count}}u`,daysAgo:`{{count}}d geleden`,inDays:`over {{count}}d`},spoolbuddy:{nav:{dashboard:`Dashboard`,ams:`AMS`,inventory:`Voorraad`,writeTag:`Schrijven`,settings:`Instellingen`},status:{nfcReady:`NFC gereed`,nfcOff:`NFC uit`,offline:`Offline`,online:`Online`,noPrinters:`Geen printers`,deviceOffline:`Apparaat offline`,waitingConnection:`Wachten op apparaatverbinding...`,systemReady:`Systeem gereed`,status:`Status`},dashboard:{readyToScan:`Gereed om te scannen`,idleMessage:`Plaats een spoel op de weegschaal om deze te identificeren`,nfcHint:`NFC-tag wordt automatisch gelezen`,device:`Apparaat`,syncWeight:`Gewicht synchroniseren`,weightSynced:`Gesynchroniseerd!`,unknownTag:`Onbekende tag`,newTag:`Nieuwe tag gedetecteerd`,onScale:`op weegschaal`,linkSpool:`Koppelen aan spoel`,linkTagTitle:`Tag aan spoel koppelen`,linkTag:`Tag koppelen`,selectSpool:`Selecteer een spoel om deze tag aan te koppelen:`,noUntagged:`Geen spoelen zonder tags gevonden`,tagDetected:`Tag gedetecteerd`,noTag:`Geen tag`,tagId:`Tag`,grossWeight:`Brutogewicht`,spoolSize:`Spoelgrootte`,close:`Sluiten`,currentSpool:`Huidige spoel`,plateReady:`Plaat gereed: {{name}}`,plateReadyLabel:`Platen gereed om vrij te geven`,plateClearAction:`Wissen`,plateClearedToast:`Plaat gemarkeerd als vrij`,plateClearFailed:`Plaat kon niet als vrij worden gemarkeerd`},modal:{spoolDetected:`Spoel gedetecteerd`,assignToAms:`Aan AMS toewijzen`,syncWeight:`Gewicht synchroniseren`,weightSynced:`Gesynchroniseerd!`,syncing:`Synchroniseren...`,newTagDetected:`Nieuwe tag gedetecteerd`,addToInventory:`Aan voorraad toevoegen`,assignToAmsTitle:`Aan AMS toewijzen`,selectSlot:`Selecteer een slot`,assign:`Toewijzen`,assigning:`Toewijzen...`,assignSuccess:`Toegewezen!`,assignPendingInsert:`Toegewezen. Sleuf wordt geconfigureerd zodra je de spoel plaatst.`,assignError:`Spoel toewijzen mislukt. Probeer het opnieuw.`,noPrinterSelected:`Selecteer een printer...`,noAmsDetected:`Geen AMS gedetecteerd op deze printer`,slot:`Sleuf`},weight:{noReading:`Geen meting`,stable:`Stabiel`,measuring:`Meten...`,tare:`Tarreren`,calibrate:`Kalibreren`},spool:{remaining:`Resterend`,material:`Materiaal`,brand:`Merk`,color:`Kleur`,coreWeight:`Kern`,labelWeight:`Label`,scaleWeight:`Weegschaal`,netWeight:`Netto`,lastUsed:`Laatst gebruikt`},ams:{noData:`Geen AMS gedetecteerd`,connectAms:`Sluit een AMS aan om filamentslots te zien`,noPrinter:`Geen printer geselecteerd`,selectPrinter:`Selecteer een printer in de bovenste balk`,printerDisconnected:`Printer niet verbonden`,humidity:`Luchtvochtigheid`,level:`Niveau`,active:`Actief`,slot:`Sleuf`,empty:`Leeg`},inventory:{search:`Spoelen zoeken...`,empty:`Geen spoelen in voorraad`,noResults:`Geen overeenkomende spoelen`,spools:`spoelen`,addSpool:`Spoel toevoegen`},settings:{tabDevice:`Apparaat`,tabDisplay:`Weergave`,tabScale:`Weegschaal`,tabUpdates:`Updates`,nfcReader:`NFC-lezer`,type:`Type`,connection:`Verbinding`,notConnected:`N.v.t.`,deviceInfo:`Apparaatinformatie`,hostname:`Host`,uptime:`Uptime`,systemConfig:`Backend & authenticatie`,backendUrl:`Bambuddy-backend-URL`,apiToken:`API-token`,apiTokenPlaceholder:`Voer API-token in`,saveConfig:`Configuratie opslaan`,systemQueued:`Configuratie in wachtrij geplaatst.`,nfcDiagnostic:`NFC-diagnose`,scaleDiagnostic:`Weegschaaldiagnose`,readTagDiagnostic:`Tagleesdiagnose`,testNfc:`Lezer testen`,testScale:`Nauwkeurigheid testen`,testReadTag:`Tag lezen`,systemFieldsRequired:`Backend-URL is verplicht.`,brightness:`Helderheid`,saved:`Opgeslagen`,noBacklight:`Geen DSI-achtergrondverlichting gedetecteerd. Helderheidsregeling vereist een DSI-display.`,screenBlank:`Time-out schermuitschakeling`,screenBlankDesc:`Scherm schakelt uit na inactiviteit. Raak aan om te activeren.`,displayNote:`Helderheid wordt toegepast als softwarefilter.`,scaleCalibration:`Weegschaalkalibratie`,currentWeight:`Huidig gewicht`,tareOffset:`Tarreren`,calFactor:`Factor`,knownWeight:`Bekend gewicht`,calStep1:`Verwijder alle items van de weegschaal en druk op Nulpunt instellen.`,calStep2:`Plaats een bekend gewicht op de weegschaal.`,setZero:`Nulpunt instellen`,calibrateNow:`Kalibreren`,calibrated:`Gekalibreerd`,tareSet:`Tareeropdracht verzonden. Wachten op apparaat...`,tareComplete:`Tarreren voltooid!`,tareTimedOut:`Time-out bij tarreren — draait de SpoolBuddy-daemon?`,tareFailed:`Tareeropdracht verzenden mislukt`,zeroSet:`Nulpunt ingesteld. Plaats een bekend gewicht op de weegschaal.`,calibrationDone:`Kalibratie voltooid!`,calibrationFailed:`Kalibratie mislukt`,lastCalibrated:`Laatst gekalibreerd`,stable:`Stabiel`,settling:`Stabiliseren...`,firmware:`Firmware`,scale:`Weegschaal`,noDevice:`Geen SpoolBuddy-apparaat gevonden`,daemonVersion:`Daemonversie`,currentVersion:`Huidig`,versionPending:`Wachten op daemon...`,checking:`Controleren...`,checkUpdates:`Controleren op updates`,updateAvailable:`Update beschikbaar`,updateInstructions:`Bijwerken via SSH: voer het SpoolBuddy-installatiescript uit om te upgraden.`,upToDate:`Up-to-date`,includeBeta:`Bètaversies opnemen`},writeTag:{tabExisting:`Bestaande spoel`,tabNew:`Nieuwe spoel`,tabReplace:`Tag vervangen`,searchPlaceholder:`Zoeken op materiaal, kleur, merk...`,noUntaggedSpools:`Geen spoelen zonder tags`,noTaggedSpools:`Geen spoelen met tags`,selectSpool:`Selecteer een spoel en plaats daarna een lege NTAG op de lezer`,placeTag:`Plaats een NTAG op de lezer`,tagReady:`Tag gedetecteerd — gereed om te schrijven`,writeTag:`Tag schrijven`,replaceTag:`Tag vervangen`,writing:`Tag schrijven...`,waiting:`Wachten op SpoolBuddy...`,writeSuccess:`Tag succesvol geschreven!`,writeFailed:`Schrijven mislukt`,queueFailed:`Schrijfopdracht in wachtrij plaatsen mislukt`,tryAgain:`Opnieuw proberen`,cancel:`Annuleren`,replaceWarning:`Oude tag wordt ontkoppeld. Nieuwe tag vervangt deze.`,deviceOffline:`SpoolBuddy is offline`,material:`Materiaal`,colorName:`Kleurnaam`,color:`Kleur`,brand:`Merk`,weight:`Gewicht (g)`,createSpool:`Spoel aanmaken`,creating:`Maken...`,spoolCreated:`Spoel aangemaakt! Gereed om te schrijven.`,createFailed:`Spoel aanmaken mislukt`,incompleteDataWarning:`Tag geschreven met onvolledige Spoolman-gegevens`},quickMenu:{printerPower:`Printervoeding`,systemControls:`Systeem`,restartDaemon:`Daemon herstarten`,restartBrowser:`Browser herstarten`,reboot:`Opnieuw opstarten`,shutdown:`Afsluiten`,swipeToClose:`Veeg omlaag om te sluiten`,confirmTitle:`Bevestigen`,confirmShutdown:`Weet je zeker dat je SpoolBuddy wilt uitschakelen? Je hebt fysieke toegang nodig om hem weer in te schakelen.`,confirmReboot:`Weet je zeker dat je SpoolBuddy opnieuw wilt opstarten?`,confirmRestartDaemon:`SpoolBuddy-daemon opnieuw starten? NFC en de weegschaal zijn tijdelijk niet beschikbaar.`,confirmRestartBrowser:`Kioskbrowser opnieuw starten? Het scherm wordt kort zwart.`,confirm:`Bevestigen`,confirmPlugOn:`{{name}} inschakelen?`,confirmPlugOff:`{{name}} uitschakelen?`,turnOn:`Inschakelen`,turnOff:`Uitschakelen`}},diagnostic:{modalTitle:`Verbindingsdiagnose — {{name}}`,running:`Diagnose uitvoeren...`,runningElapsed:`Diagnose uitvoeren... ({{elapsed}}s)`,waitingForReportHint:`Wachten totdat de printer een statusrapport publiceert — dit kan maximaal {{max}} seconden duren.`,runFailed:`Diagnose kon niet worden uitgevoerd: {{error}}`,retry:`Opnieuw uitvoeren`,runButton:`Diagnose uitvoeren`,sectionTitle:`Verbindingsdiagnose`,sectionDescription:`Controleer waarom een printer geen verbinding maakt of niet afdrukt — bereikbaarheid van poorten, LAN Developer Mode, Docker-netwerkmodus en inloggegevens.`,noPrinters:`Geen printers geconfigureerd.`,overall:{ok:`Geen problemen gevonden — de printerverbinding ziet er gezond uit.`,warnings:`De printer zou moeten werken, maar sommige punten vereisen aandacht.`,problems:`Problemen gevonden die verklaren waarom de printer geen verbinding maakt of niet afdrukt.`},check:{port_mqtt:{title:`Besturingspoort (MQTT 8883)`,pass:`Bereikbaar — de printer accepteert besturingsverbindingen.`,fail:`Poort 8883 is niet bereikbaar. De printer is uitgeschakeld, heeft een ander IP-adres of een firewall blokkeert de poort. Controleer het IP-adres van de printer en of niets poort 8883 blokkeert.`},port_ftps:{title:`Bestandsoverdrachtpoort (FTPS 990)`,pass:`Bereikbaar — het verzenden van afdrukbestanden werkt.`,warn:`Poort 990 is niet bereikbaar. Monitoring kan nog werken, maar het verzenden van afdrukken naar de printer mislukt. Zorg dat poort 990 niet wordt geblokkeerd.`,warn_no_tls:`Poort 990 is open, maar de bestandsservice van de printer voltooit geen TLS-handshake. Afdrukbestanden, covers en timelapses kunnen niet worden opgehaald, waardoor archieven leeg blijven. Start de printer opnieuw — alleen de poort vrijgeven helpt niet.`},external_storage:{title:`Verzonden bestanden op externe opslag bewaren (installatiestap 4)`,pass:`De printer meldt dat deze optie aanstaat — verzonden bestanden worden op de SD-kaart opgeslagen en archieven bevatten miniaturen en slicermetadata.`,fail:`De printer meldt dat deze optie uitstaat. Schakel "Verzonden bestanden op externe opslag bewaren" in — op nieuwere firmware (P2S 01.02 / Bambu Studio 2.6+) staat de schakelaar in de Afdrukinstellingen van de printer; op oudere versies in het tabblad Apparaat van Bambu Studio / OrcaSlicer. Zonder deze optie mist elke gearchiveerde afdruk zijn miniatuur en slicermetadata.`,skip:`Niet gecontroleerd — hiervoor is een actieve MQTT-verbinding nodig. Bij oudere slicers, waar deze instelling alleen in de slicer staat, rapporteert de printer hem nooit. Daardoor kan deze controle slagen terwijl de optie uitstaat — controleer installatiestap 4 handmatig.`,skip_unsupported_model:`Dit model heeft een SD-slot maar geen manier om de optie in te schakelen — de huidige P1-seriefirmware toont de schakelaar niet in Bambu Studio en de printer heeft geen scherm. Hier is niets te herstellen; gearchiveerde afdrukken kunnen miniaturen en slicermetadata missen totdat Bambu Lab firmwareondersteuning toevoegt.`,fail_no_media:`De optie staat aan, maar de printer meldt dat er geen kaart of stick in het slot zit, waardoor verzonden bestanden nergens kunnen worden opgeslagen. Plaats er een en druk opnieuw af — tot die tijd mist elke gearchiveerde afdruk zijn miniatuur en slicermetadata.`,warn_internal_storage:`De optie staat aan en opslag is aanwezig, maar de laatste afdruk ging toch naar de interne opslag van de printer, die Bambuddy niet kan lezen. Bij H2-serie en P2S stuurt de knop Afdrukken van Bambu Studio altijd daarheen, ongeacht deze instelling. Afdrukken worden gearchiveerd met naam en timing, maar zonder miniatuur of slicermetadata. Voor volledige archieven start je afdrukken vanuit Bambuddy of slice je in OrcaSlicer — of gebruik in Bambu Studio Verzenden met Extern geselecteerd en start daarna de afdruk.`,warn_internal_history:`De optie staat aan en er is opslag aanwezig, maar de laatste print liep vanaf een bestand dat al op de printer stond — opnieuw afdrukken via het scherm, starten vanuit Handy, of een eerder verstuurd bestand. Die bibliotheek staat op interne opslag die Bambuddy niet kan lezen, en geen enkele instelling verandert dat, omdat er voor die print niets is verstuurd. Hij wordt nog steeds gearchiveerd met naam en tijden, maar zonder thumbnail of slicer-metadata. Start prints vanuit Bambuddy of verstuur ze vanuit de slicer voor volledige archieven.`},port_rtsps:{title:`Camerapoort ({{protocol}} {{port}})`,pass:`Bereikbaar — de camerastream werkt.`,warn:`Poort {{port}} is niet bereikbaar. De livecamera werkt niet. Dit heeft geen invloed op afdrukken.`},network_mode:{title:`Docker-netwerkmodus`,pass:`Draait in host-netwerkmodus.`,warn:`Bambuddy draait met Docker bridge-netwerken. Printerdetectie en de Virtuele printer vereisen host-netwerkmodus — maak de container opnieuw aan met "network_mode: host".`,skip:`Niet actief in Docker — niet van toepassing.`},subnet:{title:`Netwerksubnet`,pass:`De printer en Bambuddy bevinden zich op hetzelfde subnet.`,warn:`De printer ({{printer_ip}}) en Bambuddy ({{host_ip}}) bevinden zich op verschillende subnetten. Ze kunnen elkaar mogelijk niet bereiken tenzij routing tussen de subnetten is geconfigureerd.`,skip:`Subnet kon niet worden bepaald — overgeslagen.`},mqtt_auth:{title:`Printerinloggegevens`,pass:`De printer heeft de verbinding geaccepteerd.`,fail:`De printer is bereikbaar, maar Bambuddy is er niet mee verbonden. De toegangscode of het serienummer is waarschijnlijk onjuist — de toegangscode verandert telkens wanneer LAN Only of Developer Mode wordt omgeschakeld, dus kopieer hem opnieuw vanaf het printerscherm. Een printer die opnieuw opstart of het maximumaantal gelijktijdige verbindingen heeft bereikt, kan hetzelfde gedrag vertonen.`,fail_auth_rejected:`De printer heeft de inloggegevens van Bambuddy geweigerd. De toegangscode of het serienummer is onjuist — de toegangscode verandert telkens wanneer LAN Only of Developer Mode wordt omgeschakeld, dus kopieer hem opnieuw vanaf het printerscherm en sla hem op in de printerinstellingen.`,skip:`Niet gecontroleerd — de printer kon niet worden bereikt.`},developer_mode:{title:`LAN Developer Mode`,pass:`Developer Mode is ingeschakeld.`,fail:`Developer Mode staat UIT op de printer. Schakel deze in bij de LAN-instellingen van de printer — en bevestig met OK. Zonder deze modus starten afdrukken niet.`,skip:`Kon niet worden gecontroleerd — vereist een actieve verbinding met de printer.`},printer_publishing:{title:`Printer publiceert status`,pass:`De printer publiceert statusupdates — AMS, filamenten en K-profielen worden correct naar de slicer gespiegeld.`,fail:`De MQTT-broker heeft de verbinding geaccepteerd, maar de printer heeft geen statusrapporten gepubliceerd. Dit wordt bijna altijd veroorzaakt door een verkeerd of anders geschreven serienummer — het topic device//report is hoofdlettergevoelig. Controleer het serienummer in de printerinstellingen opnieuw aan de hand van het printerscherm.`,skip:`Kon niet worden gecontroleerd — vereist een actieve verbinding met de printer.`}}},systemHealth:{sectionTitle:`Systeemgezondheid`,sectionDescription:`Scant recente logs op bekende problemen die je meestal zelf kunt oplossen voordat ze een supportticket worden.`,rescan:`Opnieuw scannen`,clean:`Geen bekende problemen gevonden in de laatste {{times}} logboekitems.`,logUnavailable:`Bestandslogging is uitgeschakeld, waardoor logs niet kunnen worden gescand. Schakel bestandslogging in om deze controle te gebruiken.`,learnMore:`Hoe op te lossen`,fixLabel:`Oplossing:`,occurrences:`{{times}}× gezien — laatst om {{lastSeen}}`,category:{layer8:`Dit kun je zelf oplossen`,environment:`Omgeving`,bug:`Meld dit probleem`},signature:{"ftp-auth-rejected":{name:`Printer heeft toegangscode geweigerd`,cause:`De printer heeft de login voor bestandsoverdracht geweigerd. De toegangscode is onjuist of gewijzigd nadat Developer Mode werd omgeschakeld.`,fix:`Kopieer de toegangscode opnieuw vanaf het printerscherm (LAN-instellingen) en werk deze bij in de printerinstellingen van Bambuddy.`},"ftp-connection-timeout":{name:`Time-out bij bestandsoverdrachtverbinding`,cause:`Bambuddy kon de bestandsoverdrachtpoort van de printer (FTPS 990) niet bereiken. De poort is geblokkeerd, de printer staat uit of bevindt zich op een ander subnet.`,fix:`Zorg dat niets poort 990 tussen Bambuddy en de printer blokkeert en dat beide zich op hetzelfde netwerk bevinden.`},"ftp-ssl-error":{name:`Beveiligde bestandsoverdracht-handshake mislukt`,cause:`De bestandsservice van de printer reageerde op poort 990 zonder TLS. De bestandsserver is vastgelopen — een printerprobleem, geen firewall- of firmwareprobleem.`,fix:`Start de printer opnieuw. Tot die tijd kunnen afdrukbestanden, covers en timelapses niet worden opgehaald; afdrukken zelf wordt niet beïnvloed.`},"bambu-cloud-captcha":{name:`Bambu Cloud vraagt om een CAPTCHA`,cause:`De anti-misbruiklaag van Bambu geeft dit netwerk een challenge, waardoor aanmelden bij Bambu Cloud niet kan worden voltooid. Dit is gekoppeld aan het openbare IP-adres, niet aan je account of deze installatie.`,fix:`Wacht — dit verdwijnt normaal binnen enkele uren en herhaald aanmelden verlengt het probleem. Om ondertussen verbinding te maken kun je aanmelden met een toegangstoken uit een browsersessie.`},"mqtt-connection-flapping":{name:`Printerverbinding blijft wegvallen`,cause:`De besturingsverbinding (MQTT 8883) verbreekt en herstelt herhaaldelijk — meestal door een zwakke netwerkverbinding of een gedeeltelijk geblokkeerde poort.`,fix:`Controleer het wifi-signaal bij de printer, gebruik bij voorkeur een bekabelde verbinding en zorg dat poort 8883 betrouwbaar bereikbaar is.`},"camera-connection-refused":{name:`Camerastream niet bereikbaar`,cause:`De livecamera kon niet worden bereikt op RTSPS-poort 322. De poort is geblokkeerd of de camera/LAN-liveweergave staat uit op de printer.`,fix:`Schakel de camera en LAN-liveweergave op de printer in en zorg dat poort 322 niet wordt geblokkeerd. Dit heeft geen invloed op afdrukken.`},"database-locked":{name:`Database-schrijfconflict`,cause:`De SQLite-database krijgt onder belasting fouten met "database is locked" — dit komt vaak voor wanneer meerdere printers tegelijk worden gebruikt.`,fix:`Schakel Bambuddy over naar een externe PostgreSQL-database. Zie de PostgreSQL-handleiding in de documentatie.`}}},vpDiagnostic:{title:`Installatiecontrole — {{name}}`,runButton:`Installatiecontrole uitvoeren`,running:`Installatiecontrole uitvoeren...`,runFailed:`Installatiecontrole kon niet worden uitgevoerd: {{error}}`,retry:`Opnieuw uitvoeren`,overall:{ok:`Alle controles geslaagd — deze virtuele printer is correct ingesteld.`,warnings:`De virtuele printer zou moeten werken, maar sommige punten vereisen aandacht.`,problems:`Problemen gevonden die verklaren waarom de slicer deze virtuele printer niet kan zien of gebruiken.`},check:{enabled:{title:`Virtuele printer ingeschakeld`,fail:`Deze virtuele printer is uitgeschakeld. Zet hem aan om hem detecteerbaar te maken.`},running:{title:`Services actief`,fail:`De virtuele printer is ingeschakeld, maar de services draaien niet. Controleer het Bambuddy-logboek — een bind-IP-conflict of machtigingsfout voorkomt meestal dat ze starten.`},bind_interface:{title:`Netwerkinterface koppelen`,fail:`De bind-interface is niet ingesteld of bestaat niet meer op deze host. Kies een huidige interface in de keuzelijst Bind-interface.`},access_code:{title:`Toegangscode ingesteld`,fail:`Er is geen toegangscode ingesteld. De slicer moet dezelfde toegangscode van 8 tekens krijgen die je hier instelt.`},target_printer:{title:`Doelprinter`,fail:`Er is geen doelprinter geselecteerd. Proxymodus heeft een echte printer nodig om naar door te sturen.`,warn:`De doelprinter is momenteel offline — proxyverkeer wordt hervat zodra hij opnieuw verbinding maakt.`},port_ftps:{title:`Bestandsuploadservice (poort {{port}})`,fail:`Niets luistert op poort {{port}} van het bind-IP, waardoor de slicer geen bestanden kan uploaden. Een poortconflict op deze interface is de gebruikelijke oorzaak.`},port_mqtt:{title:`Besturingsservice (poort {{port}})`,fail:`Niets luistert op poort {{port}} van het bind-IP, waardoor de slicer geen verbinding kan maken of status kan tonen.`},port_bind:{title:`Detectieservice (poort {{port}})`,fail:`Niets luistert op poort {{port}} van het bind-IP, waardoor de detectiehandshake van de slicer mislukt.`},privileged_ports:{title:`Binden aan bevoorrechte poort`,fail:`Poort {{port}} is lager dan 1024 en deze service mag deze niet binden — daarom luistert hierboven niets. Voeg AmbientCapabilities=CAP_NET_BIND_SERVICE toe aan /etc/systemd/system/bambuddy.service en herstart, of voer "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))" uit. Voeg bij Docker cap_add: [NET_BIND_SERVICE] toe.`},certificate:{title:`TLS-certificaat`,pass:`Certificaat gereed. Zorg dat het Bambuddy-CA-certificaat (hierboven) is geïmporteerd in de trust store van je slicer.`,fail:`Het TLS-certificaat voor deze virtuele printer ontbreekt. Controleer of de Bambuddy-datamap beschrijfbaar is.`}}},bugReport:{title:`Bug melden`,description:`Beschrijving`,descriptionPlaceholder:`Wat ging er mis? Beschrijf het probleem...`,email:`E-mail (optioneel)`,emailPlaceholder:`your@email.com`,emailPrivacy:`Als je dit invult, wordt je e-mailadres opgenomen in een ingeklapte sectie van het GitHub-issue zodat de beheerder contact kan opnemen.`,screenshot:`Schermafbeelding`,uploadOrPaste:`Upload, plak of sleep een afbeelding`,dataCollectedSummary:`Welke gegevens worden in het rapport opgenomen?`,dataIncluded:`Opgenomen:`,dataIncludedList:`Appversie, besturingssysteem, architectuur, Python-versie, databasestatistieken (alleen aantallen), printermodellen, aantallen nozzles, firmwareversies, verbindingsstatus, integratiestatus (Spoolman, MQTT, HA), niet-gevoelige instellingen, aantal netwerkinterfaces, Docker-details, dependencyversies.`,dataNeverIncluded:`Nooit opgenomen:`,dataNeverIncludedList:`Printernamen, serienummers, toegangscodes, wachtwoorden, IP-adressen, e-mailadressen, API-sleutels, tokens, webhook-URL's, hostnamen of gebruikersnamen.`,submit:`Verzenden`,startLogging:`Debuglogging starten`,stepEnableLogging:`Debuglogging ingeschakeld`,stepReproduce:`Reproduceer het probleem nu`,stepStopLogging:`Stoppen en rapport verzenden`,stopAndSubmit:`Stoppen en verzenden`,maxDuration:`Stopt automatisch na {{minutes}} min`,stoppingLogs:`Logs verzamelen en verzenden...`,submitting:`Bugrapport verzenden...`,submittingStepConnection:`Printerverbindingscontroles uitvoeren`,submittingStepVirtualPrinters:`Installatiecontroles virtuele printer uitvoeren`,submittingStepLogScan:`Recente logboeken scannen op bekende problemen`,submittingStepSubmit:`Rapport naar GitHub verzenden`,submitSuccess:`Bugrapport succesvol verzonden!`,submitFailed:`Bugrapport verzenden mislukt`,diagnosticChecking:`Printerverbindingen controleren...`,diagnosticHealthy:`Verbindingscontrole geslaagd — geen problemen gevonden met je printers.`,diagnosticSummary:`{{problems}} van {{total}} printers hebben verbindingsproblemen`,diagnosticIntro:`Een of meer printers hebben een verbindingsprobleem dat je probleem kan veroorzaken. Klap hieronder een printer open om de oplossing te zien — dit oplossen kan het probleem verhelpen zonder bugrapport. Je kunt hieronder nog steeds een rapport verzenden.`,logHealthSummary:`Bekende problemen gevonden in je logs`,logHealthIntro:`Recente logs komen overeen met bekende problemen. Bekijk de oplossingen hieronder — dit oplossen kan het probleem verhelpen zonder bugrapport. Je kunt hieronder nog steeds een rapport verzenden.`,thankYou:`Bedankt!`,submitted:`Je bugrapport is verzonden.`,viewIssue:`Issue bekijken`,closeKeepsRecording:`Je kunt dit paneel sluiten terwijl je het probleem reproduceert — de opname blijft actief en bij opnieuw openen kom je hier terug.`,resumeRecording:`Bugrapportopname — {{elapsed}}. Klik om af te ronden.`,resumeReport:`Rapport hervatten`,unexpectedError:`Er is een onverwachte fout opgetreden`},failureDetection:{title:`AI-foutdetectie`,description:`Bewaak afdrukken met een zelf-gehoste Obico ML API en voer automatisch acties uit bij gedetecteerde fouten.`,mlUrl:`Obico ML API-URL`,mlUrlHint:`Basis-URL van je zelf-gehoste Obico ml_api-container (bijv. http://192.168.1.10:3333).`,mlToken:`ML API-token (optioneel)`,mlTokenPlaceholder:`Laat leeg als de server zonder ML_API_TOKEN draait`,mlTokenHint:`Moet overeenkomen met de omgevingsvariabele ML_API_TOKEN van je Obico ml_api-container. Laat leeg wanneer de container zonder token draait.`,test:`Testen`,testSuccess:`ML API bereikbaar en gezond.`,testSuccessTokenUnknown:`ML API bereikbaar en gezond. Het token kon niet worden gecontroleerd.`,testFailed:`ML API kon niet worden bereikt.`,sensitivity:`Gevoeligheid`,sensitivityLow:`Laag (minder fout-positieven)`,sensitivityMedium:`Gemiddeld (gebalanceerd)`,sensitivityHigh:`Hoog (vroeg detecteren, meer fout-positieven)`,sensitivityHint:`Past de betrouwbaarheidsdrempels aan die waarschuwingen en fouten activeren.`,action:`Actie bij gedetecteerde fout`,actionNotify:`Alleen melden`,actionPause:`Afdruk pauzeren`,actionPauseOff:`Pauzeren en stroom uitschakelen`,pollInterval:`Controle-interval (seconden)`,pollIntervalHint:`Hoe vaak elke printer tijdens het afdrukken wordt gecontroleerd. Minimaal 5s, maximaal 120s.`,externalUrlMissing:`Externe URL is niet ingesteld.`,externalUrlHint:`De ML API haalt de cameramomentopname via een URL op. Stel de Externe URL in bij Algemene instellingen zodat de ML API-container Bambuddy kan bereiken.`,perPrinterTitle:`Bewaakte printers`,perPrinterHint:`Kies welke printers door de detectieservice worden bewaakt.`,monitorAll:`Alle verbonden printers bewaken`,statusTitle:`Status`,serviceRunning:`Service actief`,thresholds:`Lage / hoge drempels`,activePrinters:`Actieve afdrukken`,noActivePrints:`Er worden momenteel geen afdrukken uitgevoerd.`,historyTitle:`Recente detecties`,noHistory:`Nog geen detecties.`},makerworld:{title:`MakerWorld`,description:`Plak een MakerWorld-model-URL om het rechtstreeks vanuit Bambuddy te importeren en af te drukken — zonder naar de Bambu Handy-app te gaan.`,pasteUrlHeader:`Importeren vanuit MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… of plak een MakerWorld-link`,resolveButton:`Ophalen`,signInRequiredTitle:`Aanmelden bij Bambu Cloud vereist om te downloaden`,signInRequiredBody:`Je kunt modeldetails anoniem bekijken, maar MakerWorld vereist een Bambu Cloud-account om 3MF-bestanden te downloaden.`,signInExpiredTitle:`Bambu Cloud-login verlopen`,signInExpiredBody:`Je bent nog aangemeld bij Bambuddy, maar Bambu Lab accepteert het opgeslagen token niet meer, waardoor downloads mislukken. Meld je opnieuw aan bij Bambu Cloud.`,openCloudSettings:`Cloudinstellingen openen`,untitledModel:`Naamloos model`,byCreator:`door {{name}}`,downloadsCount:`{{count}} downloads`,licensePrefix:`Licentie`,alreadyImported:`Al in bibliotheek`,openOnMakerworld:`Openen op MakerWorld`,alreadyInLibrary:`Dit model staat al in je bibliotheek — je vindt het in Bestandsbeheer → MakerWorld`,importSuccess:`{{filename}} geïmporteerd — opgeslagen in Bestandsbeheer → MakerWorld`,platesHeader:`Platen ({{count}})`,plateDefaultName:`Plaat {{n}}`,materialCount:`{{count}} filamenten`,amsRequired:`AMS vereist`,slicedFor:`Gesliced voor {{printer}}`,alsoCompatible:`Ook als compatibel gemarkeerd: {{printers}}`,importToLibrary:`Opslaan`,sliceIn:`Opslaan en slicen in {{slicer}}`,disclaimer:`De MakerWorld-integratie gebruikt door de community gedocumenteerde API-endpoints. Bambuddy is niet verbonden met of goedgekeurd door MakerWorld of Bambu Lab.`,lastImportSuccess:`Geïmporteerd in je bibliotheek`,lastImportAlreadyInLibrary:`Al in je bibliotheek`,viewInLibrary:`Bekijken in Bestandsbeheer`,openInBambuStudio:`Openen in Bambu Studio`,openInOrcaSlicer:`Openen in OrcaSlicer`,importTo:`Importeren in bestandsbeheer`,recentImportsHeader:`Recente imports`,phaseResolving:`Ophalen`,phaseDownloading:`Downloaden`,folderAuto:`MakerWorld (standaard)`,importAll:`Alles importeren`,importAllProgress:`Importeren {{current}}/{{total}}`,openGallery:`Afbeeldingengalerij openen`,galleryPrev:`Vorige afbeelding`,galleryNext:`Volgende afbeelding`,deleteImport:`Uit bibliotheek verwijderen`,importDeleting:`Verwijderen…`,importDeleted:`Uit bibliotheek verwijderd`,confirmDelete:`{{filename}} uit de bibliotheek verwijderen? Hiermee wordt het lokale bestand verwijderd, maar de plaat kan opnieuw vanuit MakerWorld worden geïmporteerd.`,errors:{resolveFailed:`Die MakerWorld-URL kon niet worden opgehaald.`,downloadFailed:`Download mislukt. Probeer het opnieuw.`,deleteFailed:`Bestand kon niet uit de bibliotheek worden verwijderd.`}},gcodeViewer:{filamentSlot:`Filament {{n}}`,loading:`Toolpath lezen…`,loadFailed:`G-code voor dit bestand kon niet worden geladen.`,showTravel:`Verplaatsingen`,topLayer:`Bovenste laag`,bottomLayer:`Onderste laag`,noSource:`Er is geen bestand opgegeven om te bekijken.`,view:{filament:`Filament`,feature:`Kenmerk`,height:`Hoogte`,width:`Breedte`},feature:{wall:`Wanden`,sparseInfill:`Schaars infill`,solidInfill:`Volledig infill`,bridge:`Brug / overhang`,support:`Support`,skirt:`Skirt / brim`,gapFill:`Gap fill`,ironing:`Ironing`,primeTower:`Prime tower`},back:`Terug`,backToArchives:`Terug naar Afdrukarchieven`,backToFiles:`Terug naar Bestandsbeheer`,plates:`Platen`,plateN:`Plaat {{n}}`},libraryTrash:{title:`Prullenbak`,headerButton:`Prullenbak`,headerTooltip:`Bekijk bestanden die naar de prullenbak zijn verplaatst`,backToFiles:`Terug naar Bestandsbeheer`,subtitleAdmin:`Verwijderde bestanden blijven hier {{days}} dagen en worden daarna automatisch verwijderd. Deze weergave toont verwijderde bestanden van alle gebruikers.`,subtitleUser:`Verwijderde bestanden blijven hier {{days}} dagen en worden daarna automatisch verwijderd.`,loading:`Prullenbak laden…`,loadError:`Prullenbak kon niet worden geladen.`,empty:`De prullenbak is leeg.`,summary:`{{count}} bestanden · {{size}}`,emptyTrash:`Prullenbak legen`,restore:`Herstellen`,purgeNow:`Nu verwijderen`,autoPurgeIn:`Automatische verwijdering over {{when}}`,days:`dagen`,retentionLabel:`Automatisch verwijderen na`,selectAll:`Alles selecteren`,selectOne:`{{filename}} selecteren`,selectionCount:`{{count}} geselecteerd`,bulkRestore:`Geselecteerde herstellen`,bulkPurge:`Geselecteerde verwijderen`,col:{filename:`Bestand`,folder:`Map`,size:`Grootte`,deleted:`Naar prullenbak verplaatst`,autoPurge:`Automatisch verwijderen`,owner:`Eigenaar`,actions:`Acties`},confirm:{purgeTitle:`Definitief verwijderen?`,purgeBody:`{{filename}} wordt van de schijf verwijderd en kan niet worden hersteld.`,emptyTitle:`Prullenbak legen?`,emptyBody:`Alle {{count}} bestanden worden van de schijf verwijderd. Dit kan niet ongedaan worden gemaakt.`,bulkPurgeTitle:`Geselecteerde bestanden definitief verwijderen?`,bulkPurgeBody:`De {{count}} geselecteerde bestanden worden van de schijf verwijderd en kunnen niet worden hersteld.`,cta:`Definitief verwijderen`},toast:{restored:`Bestand hersteld.`,restoreFailed:`Bestand kon niet worden hersteld.`,purged:`Bestand definitief verwijderd.`,purgeFailed:`Bestand kon niet worden verwijderd.`,emptied:`{{count}} bestand(en) uit prullenbak verwijderd.`,emptyFailed:`Prullenbak kon niet worden geleegd.`,retentionSaved:`Automatisch verwijderen ingesteld op {{days}} dagen.`,retentionFailed:`Bewaarinstelling kon niet worden opgeslagen.`,bulkRestored:`{{count}} bestand(en) hersteld.`,bulkPurged:`{{count}} bestand(en) verwijderd.`}},libraryPurge:{title:`Oude bestanden opschonen`,headerButton:`Oude opschonen`,headerTooltip:`Oude bestanden in bulk naar prullenbak verplaatsen`,description:`Ruim oude bestanden in je bibliotheek in één keer op. Bestanden met afdrukgeschiedenis worden beoordeeld op de datum waarop ze voor het laatst zijn afgedrukt; nooit afgedrukte bestanden op hun uploaddatum.`,ageLabel:`Bestanden ouder dan verplaatsen`,days:`dagen`,includeNeverPrinted:`Bestanden opnemen die nooit zijn afgedrukt`,effectsTitle:`Wat gebeurt er wanneer je op Opschonen klikt`,effect1:`Overeenkomende bestanden worden naar de Prullenbak verplaatst — ze worden nog niet van de schijf verwijderd.`,effect2:`Je kunt ze vanuit de Prullenbak herstellen totdat de bewaartermijn is verstreken.`,effect3:`Na de bewaartermijn verwijdert de prullenbakopruimer ze definitief van de schijf.`,effect4:`Bestanden in externe (gekoppelde) mappen worden overgeslagen — Bambuddy verwijdert nooit bytes waarvan het geen eigenaar is.`,previewLoading:`Controleren hoeveel bestanden overeenkomen…`,previewFailed:`Voorbeeld van opschoning kon niet worden gemaakt.`,previewSummary:`{{count}} bestanden · {{size}} zouden naar de prullenbak worden verplaatst`,andMore:`…en nog {{count}}`,warning:`Bestanden in de prullenbak tellen nog mee voor opslagruimte totdat de bewaartermijn verloopt. Leeg daarna de Prullenbak om direct schijfruimte vrij te maken.`,confirmCta:`{{count}} naar prullenbak verplaatsen`,purging:`Naar prullenbak verplaatsen…`,toast:{success:`{{count}} bestand(en) naar prullenbak verplaatst.`,failed:`Bestanden opschonen mislukt.`}},libraryAutoPurge:{enableLabel:`Oude bestanden automatisch opschonen`,enableDescription:`Voert de beheeropschoning eenmaal per dag uit. Bestanden gaan eerst naar de Prullenbak — ze worden niet direct verwijderd.`,ageLabel:`Bestanden automatisch opschonen ouder dan`,ageDescription:`Minimaal 7 dagen, maximaal 10 jaar. Gebruikt dezelfde leeftijdsregel als de handmatige knop Opschonen.`,days:`dagen`,includeNeverPrinted:`Bestanden opnemen die nooit zijn afgedrukt`,saveFailed:`Instellingen voor automatisch opschonen konden niet worden opgeslagen.`},archivePurge:{headerButton:`Oude opschonen`,headerTooltip:`Oude archieven in bulk verwijderen`,title:`Oude archieven opschonen`,description:`Ruim oude afdrukgeschiedenis op. Elk archief wordt beoordeeld op de meest recente voltooiingsdatum van een afdruk — opnieuw afdrukken vernieuwt de leeftijd, zodat actief werk nooit wordt opgeschoond.`,ageLabel:`Archieven verwijderen die niet zijn afgedrukt in de laatste`,days:`dagen`,effectsTitle:`Wat gebeurt er wanneer je op Opschonen klikt`,effect1:`Elk overeenkomend archief wordt verborgen uit de lijsten en de bestanden worden van de schijf verwijderd (3MF, miniatuur, timelapse, bron-3MF, F3D-ontwerpbestand, foto's).`,effect2:`De archiefrij blijft in de database zodat Snelle statistieken de bijdragen voor filament, tijd, kosten en energie behoudt — hetzelfde als de standaard bij het verwijderen van één archief.`,effect3:`Vink hieronder "Ook uit statistieken verwijderen" aan om ook de bijdrage aan Snelle statistieken te verwijderen (zelfde als de optie bij het verwijderen van één archief). Dit is onomkeerbaar.`,effect4:`Opnieuw afdrukken vernieuwt de leeftijdsklok van een archief, zodat archieven die je nog gebruikt veilig blijven.`,purgeStatsLabel:`Ook uit statistieken verwijderen`,purgeStatsHint:`Verwijdert de overeenkomende archieven uit Snelle statistieken (filament, tijd, kosten, energie). Zonder dit behoudt Snelle statistieken elke bijdrage en verdwijnen alleen de bestanden van de schijf.`,previewLoading:`Controleren hoeveel archieven overeenkomen…`,previewFailed:`Voorbeeld van opschoning kon niet worden gemaakt.`,previewSummary:`{{count}} archieven · {{size}} zouden worden verwijderd`,andMore:`…en nog {{count}}`,warning:`Bestanden worden van de schijf verwijderd en kunnen niet worden hersteld. Download of markeer als favoriet wat je wilt bewaren voordat je doorgaat.`,confirmCta:`{{count}} archief/archieven verwijderen`,purging:`Verwijderen…`,toast:{success:`{{count}} archief/archieven verwijderd.`,failed:`Archieven opschonen mislukt.`}},archiveAutoPurge:{enableLabel:`Oude archieven automatisch opschonen`,enableDescription:`Verbergt eenmaal per dag archieven uit de lijsten en verwijdert hun bestanden van de schijf als ze niet binnen de ingestelde termijn zijn afgedrukt. Opnieuw afdrukken reset de klok.`,ageLabel:`Archieven automatisch verwijderen die niet zijn afgedrukt in de laatste`,ageDescription:`Minimaal 7 dagen, maximaal 10 jaar. Gebaseerd op de meest recente voltooiing van een afdruk — opnieuw afdrukken vernieuwt de leeftijd. Verwijdert de 3MF, miniatuur, timelapse, bron-3MF, F3D en foto's.`,days:`dagen`,purgeStatsLabel:`Ook uit statistieken verwijderen`,purgeStatsDescription:`Wanneer ingeschakeld verwijdert de dagelijkse opruimer elk opgeschoond archief ook uit Snelle statistieken (filament, tijd, kosten, energie). Standaard uit — Snelle statistieken behoudt de bijdrage; alleen de bestanden verdwijnen van de schijf.`,runNow:`Archieven nu opschonen`,saveFailed:`Instellingen voor automatisch opschonen konden niet worden opgeslagen.`},cameraTokens:{scope:{camera_stream:`Camerastream`,camwall:`Cameramuur`,overlay:`Streamingoverlay`},title:`Camera-API-tokens`,navTitle:`Camera-API-tokens`,description:`Langlevende tokens om de camerastream in Home Assistant, Frigate, kiosks of andere tools met een stabiele URL in te sluiten. Kies het bereik wanneer je er een maakt; een token kan op elk moment worden ingetrokken.`,loading:`Laden…`,confirmRevoke:{title:`Dit token intrekken?`,body:`Elk apparaat dat "{{name}}" gebruikt verliest direct toegang. Dit kan niet ongedaan worden gemaakt.`,cancel:`Annuleren`,confirm:`Intrekken`},create:{scopeLabel:`Bereik`,hintCameraStream:`Een camerastreamtoken kan alleen camerastreams en momentopnamen ophalen. Gebruik dit voor Home Assistant, Frigate of iets dat één camera insluit.`,hintCamWall:`Een Cameramuur-token opent /camwall op een scherm zonder login. Het kan de naam en status van elke printer en hun camerastreams zien. Het kan geen bestandsnamen, adressen of toegangscodes zien.`,hintOverlay:`Een Streaming Overlay-token opent /overlay/{printerId} op een scherm zonder login — voor OBS of een livestream. Het kan de camerastream van één printer plus de live afdrukstatus zien, inclusief de bestandsnaam op het scherm. Het kan geen adressen of toegangscodes zien.`,title:`Nieuw token aanmaken`,nameLabel:`Tokennaam`,namePlaceholder:`bijv. Home Assistant`,daysLabel:`Dagen tot vervaldatum`,submit:`Maken`,hint:`Maximale geldigheidsduur is 365 dagen. De tokenwaarde wordt slechts één keer getoond bij het aanmaken — kopieer deze nu.`},created:{camWallUrlTitle:`Cameramuur-URL voor dit scherm`,camWallUrlHint:`Open dit op het scherm. Iedereen die de URL kan lezen kan de muur bekijken, dus behandel hem als een sleutel — trek het token in om de toegang van het scherm te stoppen.`,overlayUrlTitle:`Overlay-URL voor OBS`,overlayUrlHint:`Voeg dit toe als Browser Source in OBS. Wijzig het nummer /overlay/1 in het nummer van je printer (uit de URL op de pagina Printers). Iedereen die de URL kan lezen kan de stream bekijken, dus behandel hem als een sleutel — trek het token in om de toegang te stoppen.`,title:`Token aangemaakt — kopieer het nu`,warning:`Dit is de enige keer dat dit token zichtbaar is. Nadat je dit venster sluit kun je het nooit meer bekijken.`,copy:`Kopiëren`,dismiss:`Ik heb het opgeslagen`},list:{scope:`Bereik`,myTitle:`Mijn tokens`,allTitle:`Alle gebruikers (beheerweergave)`,empty:`Nog geen tokens.`,name:`Naam`,owner:`Eigenaar`,prefix:`Voorvoegsel`,created:`Aangemaakt`,expires:`Verloopt`,lastUsed:`Laatst gebruikt`,revoke:`Intrekken`,expired:`Verlopen`},toast:{created:`Token aangemaakt`,createFailed:`Token aanmaken mislukt`,revoked:`Token ingetrokken`,revokeFailed:`Token intrekken mislukt`,loadFailed:`Tokens laden mislukt`,copied:`Naar klembord gekopieerd`,copyFailed:`Kopiëren mislukt — selecteer en kopieer handmatig`}},forecast:{title:`Prognose`,noSpools:`Geen actieve spoelen gevonden. Voeg spoelen toe aan je voorraad om prognosegegevens te zien.`,noUsageData:`Geen verbruiksgegevens beschikbaar — voorraadverloop kan niet worden voorspeld.`,sku:`SKU`,material:`Materiaal`,stock:`Voorraad`,dailyRate:`Tempo`,daysLeft:`Dagen resterend`,emptyBy:`Leeg op`,reorderBy:`Bestellen vóór`,actions:`Acties`,trend:`Trend`,estimated:`Geschat`,noData:`Geen gegevens`,timeframe:`Periode`,chartTitle:`Verwachte voorraad — top 5 materialen`,dashedLinesROP:`Stippellijnen = bestelpunten`,stockLevel:`Voorraadniveau`,reorderPoint:`Bestelpunt`,safetyMargin:`Veiligheidsmarge`,trendLegend:`Trend (op historie gebaseerd, serviceniveau 95%)`,estimatedLegend:`Geschat (gewichtsverschil)`,noDataLegend:`Geen gegevens`,ropLabel:`ROP`,ssLabel:`SS`,safetyStockLegend:`Veiligheidsvoorraad`,stockArrivalLegend:`Voorraadontvangst`,stockoutLegend:`Voorraad op`,alertCount_one:`{{count}} waarschuwing`,alertCount_other:`{{count}} waarschuwingen`,order:`Bestellen`,save:`Opslaan`,cancel:`Annuleren`,settingsSaved:`Instellingen opgeslagen`,failedSaveSettings:`Instellingen opslaan mislukt`,globalLeadTimeSaved:`Globale levertijd opgeslagen`,globalLeadTime:`Globale levertijd`,globalLeadTimeHint:`Ondergrens voor globale levertijd — gebruikt bij de berekening van het bestelpunt voor alle SKU's`,skuLeadTimeOverride:`Overschrijving levertijd`,skuLeadTimeHint:`0 = globale levertijd gebruiken. Stel >0 in om voor deze SKU te overschrijven.`,safetyMarginLabel:`Veiligheidsmarge`,effectiveLeadTime:`Effectieve levertijd`,effectiveLeadTimeHint:`max(globaal {{global}}d, SKU {{sku}}d)`,reorderPointHint:`d̄ × LT + veiligheidsmarge — bestellen wanneer voorraad dit niveau bereikt`,safetyMarginHint:`Statistische veiligheidsvoorraad (z=1.65 × σ × √LT) + door gebruiker ingestelde buffer`,safetyMarginHintDays:`Buffer bovenop de statistische veiligheidsvoorraad.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}}g bij huidig verbruik.`,safetyMarginHintG:`Vaste gewichtsbuffer bovenop de statistische veiligheidsvoorraad.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}}d bij huidig verbruik.`,individualSpools:`Afzonderlijke spoelen`,labelWeight:`Label`,spoolCount_one:`{{count}} spoel`,spoolCount_other:`{{count}} spoelen`,stockBreakRisk:`Risico op voorraadtekort`,stockBreakDetail:`Nog {{days}}d, levertijd {{lt}}d.`,stockBreakBefore:`Voorraadtekort vóór aanvulling`,reorderNow:`Nu bestellen`,reorderTriggerPassed:`Activeringsdatum {{date}} is verstreken.`,shoppingList:`Boodschappenlijst`,shoppingListItems_one:`({{count}} item)`,shoppingListItems_other:`({{count}} items)`,shoppingListEmpty:`Boodschappenlijst is leeg. Klik op het winkelwagenpictogram van een rij om items toe te voegen.`,addToCart:`Aan boodschappenlijst toevoegen`,alertsSnoozed:`Waarschuwingen voor deze SKU dempen`,alertsEnabled:`Waarschuwingen voor deze SKU weer inschakelen`,addedToCart:`Toegevoegd aan boodschappenlijst`,failedAddItem:`Item toevoegen mislukt`,listView:`Lijst`,logisticsView:`Logistiek`,qty:`Aantal`,weight:`Gewicht`,leadTime:`Levertijd`,expectedRestock:`Verwachte aanvulling`,status:`Status`,note:`Notitie`,pending:`In afwachting`,purchased:`Gekocht`,received:`Ontvangen`,markPurchased:`Markeren als gekocht`,markReceived:`Markeren als ontvangen — voegt spoelen toe aan Voorraad`,resetToPending:`Terugzetten naar in behandeling`,remove:`Verwijderen`,clearAll:`Alles wissen`,downloadCsv:`CSV`,addToCartTitle:`Aan boodschappenlijst toevoegen`,byQuantity:`Op aantal`,byDuration:`Op duur`,numberOfSpools:`Aantal spoelen`,lastHowManyDays:`Hoeveel dagen moet dit meegaan?`,noUsageQty:`Geen verbruiksgegevens — aantal ingesteld op 1.`,noteOptional:`Notitie (optioneel)`,notePlaceholder:`bijv. voor project X, dringend…`,addNSpools_one:`{{count}} spoel toevoegen`,addNSpools_other:`{{count}} spoelen toevoegen`,onArrival:`Bij aankomst`,stockBreakIn:`Voorraadtekort over {{days}}d.`,stockRunsOutBefore:`Voorraad raakt op voordat de levertijd van {{lt}}d is verstreken.`,atRate:`Bij {{rate}}g/dag heb je nodig`,moreSpools_one:`nog {{count}} spoel`,moreSpools_other:`nog {{count}} spoelen`,bridgeGap:`om het tekort te overbruggen.`,noReadAccess:`Je hebt geen machtiging om voorraadprognoses te bekijken.`,noWriteAccess:`Je hebt geen machtiging om prognose-instellingen te wijzigen.`}}},ko:{translation:{nav:{printers:`프린터`,archives:`아카이브`,queue:`대기열`,stats:`통계`,profiles:`프로필`,maintenance:`유지보수`,projects:`프로젝트`,inventory:`필라멘트`,finance:`재무`,files:`파일 관리자`,makerworld:`MakerWorld`,notifications:`알림`,settings:`설정`,system:`시스템`,collapseSidebar:`사이드바 접기`,expandSidebar:`사이드바 펼치기`,update:`업데이트`,updateAvailable:`업데이트 가능: v{{version}}`,updateAvailableBanner:`버전 {{version}}이(가) 출시되었습니다!`,viewUpdate:`업데이트 보기`,viewOnGithub:`GitHub에서 보기`,keyboardShortcuts:`키보드 단축키 (?)`,switchToLight:`라이트 모드로 전환`,switchToDark:`다크 모드로 전환`,switchToSystem:`기기 설정으로 전환`,smartSwitches:`스마트 스위치`,logout:`로그아웃`,installApp:`앱 설치`,installAppSuccess:`Bambuddy가 설치되었습니다`},common:{plusNMore:`외 {{count}}개`,save:`저장`,saving:`저장 중...`,cancel:`취소`,delete:`삭제`,edit:`편집`,add:`추가`,close:`닫기`,confirm:`확인`,loading:`로딩 중...`,error:`오류`,errorLoading:`데이터 로딩 오류`,retry:`재시도`,success:`성공`,warning:`경고`,enabled:`활성화됨`,disabled:`비활성화됨`,yes:`예`,no:`아니요`,on:`켜짐`,off:`꺼짐`,all:`전체`,none:`없음`,search:`검색`,filter:`필터`,sort:`정렬`,refresh:`새로고침`,download:`다운로드`,upload:`업로드`,uploading:`업로드 중...`,uploadFailed:`업로드 실패`,actions:`작업`,status:`상태`,name:`이름`,description:`설명`,date:`날짜`,time:`시간`,hours:`시간`,minutes:`분`,seconds:`초`,days:`일`,enable:`활성화`,disable:`비활성화`,permissions:`권한`,noPrinters:`등록된 프린터가 없습니다`,noData:`데이터가 없습니다`,linkNotFound:`링크를 찾을 수 없습니다`,required:`필수`,optional:`선택`,dismiss:`닫기`,apply:`적용`,reset:`초기화`,export:`내보내기`,import:`가져오기`,clear:`지우기`,selectAll:`전체 선택`,deselectAll:`전체 해제`,noChange:`— 변경 없음 —`,unchanged:`변경 없음`,unassigned:`미할당`,unknown:`알 수 없음`,unknownError:`알 수 없는 오류`,today:`오늘`,tomorrow:`내일`,asap:`즉시`,overdue:`기한 초과`,now:`지금`,collapse:`접기`,expand:`펼치기`,previous:`이전`,next:`다음`,viewArchive:`아카이브 보기`,viewInFileManager:`파일 관리자에서 보기`,addedBy:`{{username}}님이 추가함`,prints:`인쇄`,more:`+{{count}}개 더`,ascending:`오름차순`,descending:`내림차순`,back:`뒤로`,copy:`복사`,copied:`복사됨!`,printer:`프린터`,remove:`제거`,type:`유형`,print:`인쇄`,rename:`이름 변경`,move:`이동`,create:`만들기`,duplicate:`복제`,left:`왼쪽`,right:`오른쪽`,user:`사용자`,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:`계정 잔액`,unlimited:`무제한`,budgetPolicyHint:`계정 잔액은 비용을 기록합니다. 인쇄는 선택한 비용 센터의 예산으로만 제한되며, 예산이 없으면 무제한입니다.`,budget:`예산`,shared:`공유`,cannotEditPrivateCostCenter:`비공개 비용 센터는 여기에서 편집할 수 없습니다`,recentTransactions:`최근 거래`,transactionsHint:`유형 및 비용 센터별 필터링`,first:`처음`,prev:`이전`,next:`다음`,last:`마지막`,pageNumberOf:`{{total}}페이지 중 {{page}}페이지`,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:{title:`프린터`,addPrinter:`프린터 추가`,editPrinter:`프린터 편집`,deletePrinter:`프린터 삭제`,printerName:`프린터 이름`,serialNumber:`일련번호`,ipAddress:`IP 주소 / 호스트명`,accessCode:`액세스 코드`,model:`모델`,nozzleCount:`노즐 수`,autoArchive:`자동 아카이브`,status:{available:`사용 가능`,idle:`대기 중`,printing:`인쇄 중`,paused:`일시정지`,offline:`오프라인`,problem:`문제 발생`,error:`오류`,finished:`완료`,unknown:`알 수 없음`},temperatures:{nozzle:`노즐`,bed:`베드`,chamber:`챔버`},heaterHistory:{title:`히터 기록`,openLabel:`히터 기록 보기`,nozzle:`노즐`,nozzle2:`노즐 2`,bed:`베드`,chamber:`챔버`,error:`기록을 불러올 수 없습니다`,empty:`아직 기록된 데이터가 없습니다`},progress:`{{percent}}% 완료`,timeRemaining:`{{time}} 남음`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,maintenanceOk:`유지보수 정상`,maintenanceWarning:`{{count}}개 경고`,maintenanceWarning_plural:`{{count}}개 경고`,maintenanceDue:`{{count}}개 예정`,maintenanceDue_plural:`{{count}}개 예정`,sort:{name:`이름`,status:`상태`,model:`모델`,location:`위치`,eta:`남은 시간`,ascending:`오름차순 정렬`,descending:`내림차순 정렬`},cardSize:{small:`작은 카드`,medium:`중간 카드`,large:`큰 카드`,extraLarge:`아주 큰 카드`},pageView:{openCamWallPage:`카메라 월을 페이지로 열기`,cards:`카드`,camWall:`카메라 월`},camWall:{page:{tokenRejected:`이 카메라 월 링크는 더 이상 유효하지 않습니다. 토큰이 만료되었거나 취소되었을 수 있습니다.`,loadFailed:`프린터를 불러오지 못했습니다.`},noPrinters:`표시할 프린터가 없습니다`,noSignal:`신호 없음`,live:`라이브`,snap:`스냅`,off:`꺼짐`,summary:`라이브 {{live}}개, 스냅 {{snap}}개, 총 {{total}}개`,layer:`레이어 {{cur}}/{{total}}`,timeLeft:`{{time}} 남음`,statusMode:{off:`꺼짐`,compact:`간단`,full:`전체`},settings:{title:`카메라 월 설정`,maxLive:`최대 라이브 스트림`,maxLiveHint:`동시에 라이브 스트리밍할 타일 수. 나머지는 스냅샷으로 갱신됩니다.`,snapshotInterval:`스냅샷 간격(초)`,snapshotIntervalHint:`비라이브 타일이 새 스냅샷을 가져오는 주기.`,statusOverlay:`상태 표시`,statusOverlayHint:`간단: 상태 배지만 표시. 전체: + 진행률, 레이어, 남은 시간.`}},hideOffline:`오프라인 숨기기`,nextAvailable:`다음 가용`,powerOn:`전원 켜기`,offlinePrintersWithPlugs:`스마트 플러그가 연결된 오프라인 프린터`,noPrintersConfigured:`아직 설정된 프린터가 없습니다`,search:`프린터 검색...`,noSearchResults:`검색 또는 필터 조건에 맞는 프린터가 없습니다`,filter:{allStatuses:`모든 상태`,allLocations:`모든 위치`},toolbar:{filters:`필터`,view:`보기`,actions:`작업`},readyToPrint:`인쇄 준비 완료`,external:`외부`,extL:`외부-L`,extR:`외부-R`,deleteArchives:`인쇄 아카이브 삭제`,noLabel:`라벨 없음`,printPreview:`인쇄 미리보기`,width:`너비`,height:`높이`,noObjectsFound:`객체를 찾을 수 없습니다`,objectsLoadedOnPrintStart:`인쇄 시작 시 객체가 로드됩니다`,willBeSkipped:`건너뛸 예정`,name:`이름`,serialCannotBeChanged:`일련번호는 변경할 수 없습니다`,locationHelp:`프린터 그룹화 및 대기열 작업 필터링에 사용됩니다`,wifiSignal:{veryWeak:`매우 약함`,weak:`약함`,fair:`보통`,good:`좋음`,excellent:`매우 좋음`},maintenanceUpToDate:`모든 유지보수 최신 상태 - 클릭하여 보기`,maintenance:{title:`유지보수 중`,subtitle:`이 프린터는 일시 중지되었습니다 — 연결되지 않음, 대기열에서 제외, 알림 전송 안 함.`,pillLabel:`유지보수`,exitButton:`유지보수 종료`,menuEnter:`유지보수 모드로 전환`,menuExit:`유지보수 모드 종료`,toastEntered:`{{name}} 은(는) 이제 유지보수 모드입니다`,toastExited:`{{name}} 이(가) 다시 온라인 상태입니다`,confirmMidPrintTitle:`인쇄 중 유지보수 모드로 전환하시겠습니까?`,confirmMidPrintMessage:`{{name}} 은(는) 현재 인쇄 중입니다. 유지보수 모드로 전환하면 MQTT가 연결 해제되고 이 작업의 진행률 추적 및 완료 알림이 중지됩니다. 계속하시겠습니까?`,editFieldLabel:`유지보수 모드`,editFieldHelp:`활성화하면 이 프린터는 MQTT, 대기열 디스패치 및 알림에서 일시 중지됩니다 — 수리, 병렬 Bambuddy 설치 또는 임시 중지에 유용합니다.`},chamberLightOn:`챔버 조명 켜기`,chamberLightOff:`챔버 조명 끄기`,files:`파일`,browseFiles:`프린터 파일 탐색`,autoOffAfterPrint:`인쇄 후 자동 전원 끄기`,autoOffExecuted:`자동 끄기 실행됨 - 초기화하려면 프린터를 켜세요`,hmsErrors:`HMS 오류`,viewHmsErrors:`{{count}}개 HMS 오류 보기`,resume:`재개`,pause:`일시정지`,stop:`정지`,camera:`카메라`,skipObject:`객체 건너뛰기`,reconnect:`재연결`,forceRefresh:`강제 새로고침`,forceRefreshSuccess:`새로고침 요청됨`,mqttDebug:`MQTT 디버그`,printerInformation:`프린터 정보`,copyToClipboard:`복사`,copied:`복사됨!`,state:`상태`,wifiSignalLabel:`WiFi 신호`,developerMode:`개발자 모드`,enabled:`활성화됨`,disabled:`비활성화됨`,addedOn:`추가됨`,sdCard:`SD 카드`,inserted:`삽입됨`,notInserted:`삽입되지 않음`,totalPrintHours:`인쇄 시간`,activeNozzle:`활성: {{nozzle}} 노즐`,amsSwitchInletTooltip:`필라멘트 트랙 스위치 IN-{{inlet}}({{side}}) — 양쪽 노즐에 공급`,nozzleRack:`노즐 랙`,nozzleDocked:`도킹됨`,nozzleMounted:`장착됨`,nozzleActive:`활성`,nozzleIdle:`대기`,nozzleDiameter:`직경`,nozzleType:`유형`,nozzleStatus:`상태`,nozzleFilament:`필라멘트`,nozzleWear:`마모`,nozzleMaxTemp:`최대 온도`,nozzleSerial:`일련번호`,nozzleHardenedSteel:`경화강`,nozzleStainlessSteel:`스테인리스강`,nozzleTungstenCarbide:`텅스텐 카바이드`,nozzleFlow:`유량`,nozzleHighFlow:`고유량`,nozzleStandardFlow:`표준`,firmwareUpdate:`펌웨어 업데이트`,firmwareInstructions:`프린터 터치스크린에서`,firmwareNav:`이동`,settings:`설정`,firmware:`펌웨어`,discoverPrinters:`프린터 검색`,searching:`검색 중...`,manualEntry:`수동 입력`,addFromCloud:`클라우드에서 추가`,toast:{printerDeleted:`프린터가 삭제되었습니다`,missingSpoolAssignment:`{{printer}}에서 인쇄가 시작되었습니다. 슬롯 할당 누락: {{slots}}`,killSwitchTriggered:`결제 킬 스위치가 {{printer}}에서 승인되지 않은 인쇄를 중지했습니다: {{filename}}`,billingChargeFailed:`{{printer}}의 {{filename}} 결제에 실패했습니다. 예산 예약은 유지되었습니다. 서버 로그를 확인하세요.`,assignmentVerified:`슬롯 {{slot}}에 필라멘트가 로드되었습니다 ({{printer}})`,assignmentVerifiedNoKprofile:`{{printer}}의 슬롯 {{slot}}이(가) 로드되었지만 유량 보정 프로파일(K 프로파일)이 적용되지 않았습니다`,assignmentNotConfirmed:`{{printer}}의 슬롯 {{slot}} 할당을 확인할 수 없습니다. AMS 슬롯을 확인하세요`,printerAdded:`프린터가 추가되었습니다`,printerUpdated:`프린터가 업데이트되었습니다`,failedToDelete:`프린터 삭제 실패`,failedToAdd:`프린터 추가 실패`,failedToUpdate:`프린터 업데이트 실패`,commandSent:`명령이 전송되었습니다`,failedToSendCommand:`명령 전송 실패`,turnedOn:`{{name}} 켜짐`,failedToPowerOn:`{{name}} 전원 켜기 실패`,scriptTriggered:`스크립트가 실행되었습니다`,printStopped:`인쇄가 정지되었습니다`,printPaused:`인쇄가 일시정지되었습니다`,printResumed:`인쇄가 재개되었습니다`,referenceDeleted:`참조가 삭제되었습니다`,detectionAreaSaved:`감지 영역이 저장되었습니다`,failedToRunScript:`스크립트 실행 실패`,failedToStopPrint:`인쇄 정지 실패`,failedToPausePrint:`인쇄 일시정지 실패`,failedToResumePrint:`인쇄 재개 실패`,failedToControlChamberLight:`챔버 조명 제어 실패`,failedToSetSpeed:`인쇄 속도 설정 실패`,failedToUpdateSetting:`설정 업데이트 실패`,failedToSkipObjects:`객체 건너뛰기 실패`,failedToRereadRfid:`RFID 재읽기 실패`,failedToCheckPlate:`플레이트 확인 실패`,failedToUpdateLabel:`라벨 업데이트 실패`,failedToDeleteReference:`참조 삭제 실패`,failedToSaveDetectionArea:`감지 영역 저장 실패`,plateCheckEnabled:`플레이트 확인 활성화됨`,plateCheckDisabled:`플레이트 확인 비활성화됨`,calibrationSaved:`캘리브레이션이 저장되었습니다!`,calibrationFailed:`캘리브레이션 실패`,rfidRereadInitiated:`RFID 재읽기가 시작되었습니다`,loadInitiated:`필라멘트 로딩 중…`,unloadInitiated:`필라멘트 언로딩 중…`,failedToLoad:`필라멘트 로드 실패`,failedToUnload:`필라멘트 언로드 실패`,connectionFailedNotAdded:`프린터에 연결할 수 없습니다. IP, 시리얼 번호, 액세스 코드를 확인하고 LAN 전용 모드가 켜져 있는지 확인하세요. 프린터가 추가되지 않았습니다.`},connection:{connected:`연결됨`,offline:`오프라인`},plateStatus:{markCleared:`플레이트 비움으로 표시`,cleared:`플레이트 비워짐`,notCleared:`플레이트 미비움`,inUse:`플레이트 사용 중`},queue:{inQueue:`대기열에 {{count}}개`,inQueue_plural:`대기열에 {{count}}개`},controls:`제어`,rfid:{reread:`RFID 재읽기`},ams:{load:`로드`,unload:`언로드`,feedTitle:`{{slot}}을(를) 어느 노즐로 로드할까요?`,feedPrompt:`Filament Track Switch는 이 슬롯을 양쪽 핫엔드로 보낼 수 있습니다. 공급할 쪽을 선택하세요.`,feedLeft:`왼쪽 노즐`,feedRight:`오른쪽 노즐`,feedAlreadyLoaded:`이미 로드됨`,switchNotReady:`Filament Track Switch가 아직 설정되지 않았습니다. 프린터에서 각 AMS를 입구에 할당한 뒤 다시 시도하세요.`},bedJog:{limitWarning:`수동 이동 중에는 이동 한계가 적용되지 않습니다. Bambu 펌웨어 버그로 인해 원격 명령에서는 소프트웨어 엔드스톱이 무시됩니다. 충돌하지 않도록 주의해서 이동하세요.`,title:`조그 컨트롤`,bed:`베드`,step:`이동 거리 (mm)`,up:`플레이트 위로`,down:`플레이트 아래로`,disabledWhilePrinting:`인쇄 중 비활성화됨`,notHomedTitle:`프린터 홈 설정 필요`,notHomedMessage:`마지막 인쇄 이후 홈 설정이 되지 않았습니다. 안전한 위치 지정을 위해 자동 홈 설정을 먼저 실행하거나, 그냥 이동하세요 — 소프트 엔드스톱이 무시됩니다.`,homeZ:`자동 홈 설정`,moveAnyway:`그냥 이동`,homingStarted:`프린터 자동 홈 설정 중…`},permission:{noAdd:`프린터를 추가할 권한이 없습니다`,noEdit:`프린터를 편집할 권한이 없습니다`,noDelete:`프린터를 삭제할 권한이 없습니다`,noControl:`프린터를 제어할 권한이 없습니다`,noFiles:`프린터 파일에 접근할 권한이 없습니다`,noAmsRfid:`AMS RFID를 재읽기할 권한이 없습니다`,noSmartPlugControl:`스마트 플러그를 제어할 권한이 없습니다`,noCamera:`카메라를 볼 권한이 없습니다`},modal:{addTitle:`프린터 추가`,editTitle:`프린터 편집`,myPrinter:`내 프린터`,selectModel:`모델 선택...`,locationGroup:`위치 / 그룹 (선택사항)`,locationPlaceholder:`예: 작업실, 사무실, 지하실`,autoArchiveLabel:`완료된 인쇄 자동 아카이브`,fromPrinterSettings:`프린터 설정에서`,modelOptional:`모델 (선택사항)`,saveChanges:`변경사항 저장`},skipObjects:{tooltip:`객체 건너뛰기`,onlyWhilePrinting:`객체 건너뛰기 (인쇄 중에만)`,requiresMultiple:`객체 건너뛰기 (2개 이상 필요)`,title:`객체 건너뛰기`,matchIdsInfo:`프린터 화면의 ID와 일치`,printerShowsIds:`프린터 화면에서 빌드 플레이트의 객체 ID를 표시합니다`,skipSelected:`선택 항목 건너뛰기`,skipping:`건너뛰는 중...`,noObjectsSelected:`선택된 객체 없음`,selectObjectsToSkip:`현재 인쇄에서 건너뛸 객체를 선택하세요`,skipped:`건너뜀`,objectsSkipped:`객체가 건너뛰어졌습니다`,activeCount:`{{count}}개 활성`,waitForLayer:`객체를 건너뛰려면 2층 이상을 기다리세요 (현재 {{layer}}층)`,skip:`건너뛰기`,confirmTitle:`객체를 건너뛰시겠습니까?`,confirmMessage:`"{{name}}"을(를) 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.`,confirmAllMessage:`남아 있는 모든 개체가 선택되었습니다. 인쇄 작업이 중지됩니다. 계속하시겠습니까?`,confirmMultipleMessage:`선택한 {{count}}개의 객체를 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.`},confirm:{deleteTitle:`프린터 삭제`,deleteMessage:`"{{name}}"을(를) 삭제하시겠습니까? 모든 연결 설정이 제거됩니다.`,deleteArchivesNote:`이 프린터의 모든 인쇄 기록이 영구적으로 삭제됩니다.`,keepArchivesNote:`인쇄 기록은 유지되지만 이 프린터와 연결이 해제됩니다.`,stopTitle:`인쇄 정지`,stopMessage:`"{{name}}"의 현재 인쇄를 정지하시겠습니까? 인쇄 작업이 취소됩니다.`,stopButton:`인쇄 정지`,pauseTitle:`인쇄 일시정지`,pauseMessage:`"{{name}}"의 현재 인쇄를 일시정지하시겠습니까?`,pauseButton:`인쇄 일시정지`,resumeTitle:`인쇄 재개`,resumeMessage:`"{{name}}"의 인쇄를 재개하시겠습니까?`,resumeButton:`인쇄 재개`,powerOnTitle:`프린터 전원 켜기`,powerOnMessage:`"{{name}}"의 전원을 켜시겠습니까?`,powerOnButton:`전원 켜기`,powerOffTitle:`프린터 전원 끄기`,powerOffMessage:`"{{name}}"의 전원을 끄시겠습니까?`,powerOffWarning:`경고: "{{name}}"이(가) 현재 인쇄 중입니다! 전원을 끄시겠습니까? 인쇄가 중단되고 프린터가 손상될 수 있습니다.`,powerOffButton:`전원 끄기`,haToggleTitle:`"{{name}}" 토글`,haToggleMessage:`Home Assistant 엔티티 {{entity}}를 토글하시겠습니까? 현재 켜져 있으면 전원이 꺼질 수 있습니다.`,haToggleWarning:`경고: "{{name}}"이(가) 현재 인쇄 중입니다! {{entity}}를 토글하면 전원이 차단되어 인쇄가 중단될 수 있습니다. 계속하시겠습니까?`,haToggleButton:`토글`},bulk:{select:`선택`,selectAll:`전체 선택`,selectByLocation:`위치별 선택`,selected:`{{count}}개 선택됨`,actions:{stop:`정지`,pause:`일시정지`,resume:`재개`,clearPlate:`베드 비우기`,clearHMS:`알림 지우기`},confirm:{stopTitle:`{{count}}개 인쇄 정지`,stopMessage:`{{count}}개 프린터의 활성 인쇄를 취소합니다. 이 작업은 취소할 수 없습니다.`,stopButton:`모두 정지`,pauseTitle:`{{count}}개 인쇄 일시정지`,pauseMessage:`{{count}}개 프린터의 활성 인쇄를 일시정지합니다.`,pauseButton:`모두 일시정지`,clearPlateTitle:`{{count}}개 인쇄 베드 비우기`,clearPlateMessage:`{{count}}개 프린터의 인쇄 베드를 비우고 대기열 작업을 시작할 수 있습니다.`,clearPlateButton:`모두 비우기`},success:`{{count}}개 프린터에서 {{action}} 완료`,partial:`{{succeeded}}개 성공, {{failed}}개 실패`,noneApplicable:`선택된 프린터 중 이 작업에 적합한 상태의 프린터가 없습니다`,selectByState:`상태별 선택`},discovery:{title:`프린터 검색`,searching:`검색 중...`,scanning:`스캔 중...`,scanProgress:`스캔 중... {{scanned}}/{{total}}`,foundPrinters:`{{count}}개 프린터 발견`,noPrintersFound:`프린터를 찾을 수 없습니다`,noPrintersFoundSubnet:`지정된 서브넷에서 프린터를 찾을 수 없습니다.`,noPrintersFoundNetwork:`네트워크에서 프린터를 찾을 수 없습니다.`,allConfigured:`검색된 모든 프린터가 이미 설정되어 있습니다.`,alreadyAdded:`이미 추가됨`,select:`선택`,manualEntry:`수동 입력`,addFromCloud:`클라우드에서 추가`,subnetToScan:`스캔할 서브넷`,dockerNote:`Docker가 감지되었습니다. CIDR 표기법으로 프린터의 서브넷을 입력하세요. docker-compose.yml에 network_mode: host가 필요합니다.`,scanSubnet:`서브넷에서 프린터 스캔`,discoverNetwork:`네트워크에서 프린터 검색`,scanningSubnet:`Bambu 프린터를 위해 서브넷 스캔 중...`,scanningNetwork:`네트워크 스캔 중...`,serialRequired:`일련번호 필수`,unknown:`알 수 없음`,failedToStart:`검색 시작 실패`,customSubnetOption:`사용자 지정 서브넷...`,customSubnetLabel:`사용자 지정 서브넷 (CIDR)`,customSubnetNote:`프린터가 이 서버와 다른 네트워크에 있는 경우 사용자 지정 서브넷을 사용하세요. FTP (990) 및 MQTT (8883) 포트가 라우팅 경계를 통해 접근 가능해야 합니다.`},drying:{start:`건조 시작`,stop:`건조 정지`,temperature:`온도`,duration:`시간`,hours:`시간`,timeRemaining:`{{time}} 남음`,active:`건조 중`,targetSummary:`{{filament}} @ {{temp}}°C`,notSupported:`건조 지원 안 됨`,powerRequired:`건조를 활성화하려면 AMS 전원 어댑터를 연결하세요`,cannotDryNow:`AMS가 지금은 건조를 시작할 수 없습니다`,startingDrying:`건조 시작 중...`,toastCommandSent:`건조 명령을 전송했습니다`,toastStopped:`건조를 중지했습니다`,toastNotStarted:`프린터가 명령을 수락했지만 AMS가 건조를 시작하지 않았습니다. AMS 전원 어댑터가 연결되어 있는지, 프린터가 대기 상태인지 확인하십시오.`,screenOnly:`이 프린터에서는 AMS 건조를 프린터 자체 화면에서만 제어할 수 있습니다 (Bambu 제한 사항)`,stoppingDrying:`건조 정지 중...`,rotateTray:`건조 중 스풀 회전`,rotateUnavailableReason:`사용할 수 없음 — 이 AMS의 슬롯이 툴헤드로 로드되어 있습니다. 스풀이 공급 튜브에 의해 고정되어 회전할 수 없습니다. 먼저 필라멘트를 뺀 후 다시 시도하십시오.`,startMode:`시작 시간`,modeNow:`지금`,modeDelay:`지연 후`,modeAtTime:`시각 지정`,schedule:`예약하기`,scheduledFor:`건조 예약: {{time}}`,scheduledAsap:`건조 예약됨 (프린터 대기 중)`,cancelScheduled:`예약된 건조 취소`,scheduleFailed:`건조 예약에 실패했습니다`,retractFilament:`건조를 시작하려면 AMS 출구의 필라멘트를 빼내세요`,waitingAmsNotFound:`AMS 감지를 기다리는 중`,waitingOffline:`프린터가 온라인 상태가 되기를 기다리는 중`,waitingPrinterBusy:`프린터가 사용 가능해지기를 기다리는 중`,waitingAlreadyDrying:`현재 건조 주기가 끝나기를 기다리는 중`,waitingInterrupted:`중단됨, 프린터가 사용 가능해지면 다시 시작됩니다`,scheduleFailedReason:`예약된 건조에 실패했습니다: {{reason}}`,scheduleFailedUnknown:`알 수 없는 오류`,dismissFailed:`닫기`},amsBackup:{titleOn:`AMS 필라멘트 백업이 켜져 있습니다. 비활성화하려면 클릭하세요.`,titleOff:`AMS 필라멘트 백업이 꺼져 있습니다. 활성화하려면 클릭하세요.`,titleUnknown:`이 프린터에서는 AMS 필라멘트 백업 상태를 확인할 수 없습니다.`,toastEnabled:`AMS 필라멘트 백업이 활성화되었습니다`,toastDisabled:`AMS 필라멘트 백업이 비활성화되었습니다`,modalTitle:`AMS 필라멘트 백업`,modalHelp:`활성 슬롯이 소진되면 프린터는 같은 프리셋과 색상의 슬롯을 이 순서로 순환합니다.`,modalNoSlots:`필라멘트가 로드되지 않았습니다.`,modalNoPairs:`백업 쌍이 없습니다 — 프리셋과 색상이 모두 일치하는 슬롯이 없습니다.`,extruderRightShort:`우`,extruderLeftShort:`좌`,stateOn:`활성화됨`,stateOff:`비활성화됨`,stateUnknown:`이 프린터에서 지원되지 않음`},activeJobSlot:{title:`이 슬롯은 활성 인쇄의 필라멘트 {{n}}입니다`,ariaLabel:`활성 인쇄 슬롯 {{n}}`},expectedSlot:{title:`프린터가 이 슬롯의 필라멘트를 기다리고 있습니다`,ariaLabel:`요청된 필라멘트 슬롯 {{n}}`,label:`{{ams}} · 슬롯 {{slot}}`,external:`외부 스풀`},filaments:`필라멘트`,externalSpool:{hide:`외부 스풀 숨기기`,show:`외부 스풀 표시`},openCameraOverlay:`카메라 오버레이 열기`,openCameraWindow:`새 창에서 카메라 열기`,firmwareUpdateAvailable:`펌웨어 업데이트 가능: {{current}} → {{latest}}`,firmwareUpToDate:`펌웨어 {{version}} — 최신 상태`,firmwareUpdateButton:`업데이트`,plateDetection:{noPermission:`프린터를 업데이트할 권한이 없습니다`,enabledClick:`플레이트 확인 활성화됨 - 클릭하여 비활성화`,disabledClick:`플레이트 확인 비활성화됨 - 클릭하여 활성화`,manageCalibration:`플레이트 감지 캘리브레이션 관리`,calibrationRequired:`캘리브레이션 필요`,calibrationInstructions:`빌드 플레이트가 완전히 비어 있는지 확인한 후 캘리브레이션을 클릭하세요.`,calibrationDescription:`캘리브레이션은 빈 플레이트의 참조 이미지를 캡처합니다. 이후 확인 시 이 참조와 비교하여 객체를 감지합니다.`,calibrationTip:`팁: 다른 플레이트에 대해 최대 5개의 캘리브레이션을 저장할 수 있습니다. 확인 시 시스템이 자동으로 가장 잘 맞는 것을 사용합니다.`,plateEmpty:`플레이트가 비어 있는 것으로 보입니다`,objectsDetected:`플레이트에 객체가 감지되었습니다`,confidence:`신뢰도`,difference:`차이`,analysisPreview:`분석 미리보기:`,analysisLegend:`초록 박스 = 감지 영역, 빨간 오버레이 = 캘리브레이션과의 차이`,savedReferences:`저장된 참조 ({{count}}/{{max}})`,deleteReference:`참조 삭제`,labelPlaceholder:`라벨...`,clickToEdit:`{{label}} - 클릭하여 편집`,clickToAddLabel:`클릭하여 라벨 추가`},speed:{title:`인쇄 속도`,silent:`조용함 (50%)`,standard:`표준 (100%)`,sport:`스포츠 (124%)`,ludicrous:`루디크러스 (166%)`},airduct:{title:`에어덕트 모드`,cooling:`냉각`,heating:`가열`},noSdCard:`SD 없음`,door:{open:`열림`,closed:`닫힘`},fans:{partCooling:`파트 냉각 팬`,auxiliary:`보조 팬`,leftAuxiliary:`왼쪽 보조 팬`,exhaust:`배기`,chamber:`챔버 팬`},clickToViewHmsErrors:`HMS 오류 보기 클릭`,aiDetection:{safe:`안전`,warning:`경고`,failure:`실패`,idle:`대기 중`,error:`확인 안 함`,unknown:`시작 중`,tooltipError:`AI 실패 감지가 이 인쇄를 확인하고 있지 않습니다: {{reason}} - 클릭하여 자세히 보기`,tooltipUnknown:`AI 실패 감지: 첫 번째 결과를 기다리는 중 - 클릭하여 자세히 보기`,errorHint:`이 인쇄는 확인되고 있지 않습니다. 아래 문제가 해결되면 감지가 자동으로 재개됩니다.`,tooltip:`AI 실패 감지: {{status}} (점수 {{score}}) - 클릭하여 자세히 보기`,tooltipIdle:`AI 실패 감지 활성화됨 - 다음 인쇄부터 모니터링을 시작합니다 - 클릭하여 자세히 보기`,modalTitle:`AI 실패 감지 - {{name}}`,currentStatus:`상태`,score:`점수`,framesAnalyzed:`분석된 프레임`,idleHint:`현재 모니터링 중인 인쇄가 없습니다. 다음 인쇄부터 자동으로 모니터링을 시작합니다.`,lastError:`마지막 오류`,openSettings:`설정 열기`},estimatedCompletion:`예상 완료 시간`,plateNumber:`플레이트 {{number}}`,slotOptions:`슬롯 옵션`,amsPopup:{friendlyName:`AMS 이름`,friendlyNamePlaceholder:`예: AMS 친숙한 이름`,serialNumber:`일련번호`,firmwareVersion:`펌웨어`,save:`저장`,clear:`지우기`,noEditPermission:`AMS 유닛 이름을 변경할 권한이 없습니다`},firmwareModal:{title:`펌웨어 업데이트`,titleUpToDate:`펌웨어 정보`,currentVersion:`현재:`,latestVersion:`최신:`,releaseNotes:`릴리스 노트`,checkingPrereqs:`전제 조건 확인 중...`,sdCardReady:`SD 카드 준비됨. 아래를 클릭하여 펌웨어를 업로드하세요.`,uploadedSuccess:`SD 카드에 펌웨어가 업로드되었습니다!`,applyInstructions:`프린터에서 업데이트를 적용하려면:`,step1:`프린터 터치스크린에서 설정으로 이동하세요`,step2:`펌웨어로 이동하세요`,step3:`SD 카드에서 업데이트를 선택하세요`,step4:`업데이트에 10-20분이 소요됩니다`,done:`완료`,starting:`시작 중...`,uploadFirmware:`펌웨어 업로드`,uploadFailed:`업로드 시작 실패: {{error}}`,uploadedToast:`펌웨어 업로드됨! 프린터 화면에서 업데이트를 시작하세요.`,availableVersions:`사용 가능한 버전`,usable:`사용 가능`,unavailable:`사용 불가`,installed:`설치됨`,newerBadge:`최신`,olderBadge:`이전`,currentBadge:`현재`},accessCodePlaceholder:`현재 값을 유지하려면 비워두세요`,roi:{title:`감지 영역 (ROI)`,xStart:`X 시작`,yStart:`Y 시작`,width:`너비`,height:`높이`,instruction:`빌드 플레이트에 집중할 감지 영역을 조정하세요. 미리보기의 초록 박스가 현재 영역을 표시합니다.`},developerModeWarning:`개발자 LAN 모드가 활성화되지 않음: {{names}}. 일부 기능이 작동하지 않을 수 있습니다.`,howToEnable:`활성화 방법`,incompatibleFile:`이 파일은 {{slicedFor}}용으로 슬라이싱되었지만, 이 프린터는 {{printerModel}}입니다`,dropNotPrintable:`.gcode 및 .gcode.3mf 파일만 인쇄할 수 있습니다`,dropToPrint:`놓아서 인쇄`,dropToQueue:`놓아서 대기열에 추가`,addPreflight:{checking:`연결 확인 중...`,warning:`일부 연결 확인이 실패했습니다. 이 프린터가 오프라인으로 표시될 수 있습니다. 아래 항목을 검토하고 수정하거나 그냥 저장하세요.`,back:`뒤로`,saveAnyway:`그냥 저장`}},archives:{media:{title:`출력 동영상`,download:`출력 동영상 다운로드`,searching:`프린터에서 동영상을 확인하는 중…`,searchFailed:`프린터에서 동영상을 확인할 수 없습니다.`,none:`이 출력의 타임랩스 또는 IP 카메라 영상 조각을 찾지 못했습니다.`,attachedTimelapse:`첨부된 타임랩스`,printerFiles:`프린터에 남아 있는 파일`,downloadSelected:`선택 항목 다운로드`,printerMissing:`프린터가 더 이상 구성되어 있지 않습니다`,timelapseUnavailable:`타임랩스 디렉터리를 읽을 수 없습니다`,ipcamUnavailable:`IP 카메라 디렉터리를 읽을 수 없습니다`},title:`인쇄 아카이브`,no3mfBanner:{title:`최근 일부 인쇄가 썸네일과 함께 아카이브되지 않았습니다`,body:`슬라이서가 프린터의 SD 카드에 .gcode.3mf 파일을 남기지 않아서 Bambuddy가 썸네일이나 슬라이서 메타데이터를 가져올 수 없었습니다. 일반적으로 슬라이서 (Bambu Studio / OrcaSlicer 장치 탭)에서 "전송된 파일을 외부 저장소에 저장"이 꺼져 있을 때 발생합니다.`,docsLink:`설치 단계 4 보기`,docsLinkInternalStorage:`왜 이런 일이 생기나요`,titleInternalStorage:`최근 일부 출력물이 프린터 내부 저장소에 남았습니다`,bodyInternalStorage:`슬라이싱된 파일을 Bambu Studio가 카드가 아니라 프린터 내부 저장소에 저장해서 Bambuddy가 FTP로 읽을 것이 없었습니다. H2 시리즈와 P2S에서는 «인쇄» 버튼이 항상 그렇게 동작하며, 선택할 수 있는 것은 «보내기»뿐인데 그것도 기본값이 «캐시»입니다. 해당 출력물은 이름과 시간과 함께 계속 보관되지만 썸네일과 슬라이서 메타데이터는 없습니다. 완전한 기록을 남기려면 Bambuddy에서 출력을 시작하거나 OrcaSlicer로 슬라이싱하세요. Bambu Studio를 쓴다면 «보내기»에서 «외부 저장소»를 고른 뒤 출력을 시작하면 됩니다. 모두 프린터에 카드나 USB 메모리가 필요합니다.`,titleNoExternalStorage:`최근 일부 출력물을 보관하지 못했습니다 — 프린터에 저장소가 없습니다`,bodyNoExternalStorage:`프린터 슬롯에 카드도 USB도 감지되지 않아 슬라이싱된 파일이 저장될 곳이 없었고 Bambuddy가 읽을 것도 없었습니다. 하나 넣으면 다음 출력물은 온전히 보관됩니다.`,titleInternalHistory:`최근 일부 출력물은 이미 프린터에 있던 파일에서 시작되었습니다`,bodyInternalHistory:`해당 출력물은 프린터 자체 라이브러리에서 실행되었습니다 — 화면에서의 재출력, Handy에서의 시작, 또는 이전에 보내 두고 나중에 출력한 파일입니다. Bambuddy는 출력 파일을 FTP로 읽는데 FTP는 카드나 USB만 제공하고, 프린터는 그 라이브러리를 FTP가 닿지 않는 영역에 보관하므로 읽을 3MF가 없었습니다. 이 출력물들은 아무것도 전송되지 않았으므로 슬라이서 설정으로는 해결되지 않습니다. 이름과 시간과 함께 계속 보관되며, "아카이브 편집"에서 사용된 필라멘트를 직접 입력할 수 있습니다. 온전한 보관을 원하면 Bambuddy나 슬라이서에서 출력을 시작하세요.`,dismissLabel:`이 알림 닫기`},searchPlaceholder:`아카이브 검색...`,filterByPrinter:`프린터별 필터`,filterByStatus:`상태별 필터`,sortBy:`정렬 기준`,sortNewest:`최신순`,sortOldest:`오래된순`,sortName:`이름`,sortDuration:`시간`,sortLargest:`큰 것 먼저`,sortSmallest:`작은 것 먼저`,sortSize:`크기`,noArchives:`아카이브를 찾을 수 없습니다`,noArchivesSearch:`검색 조건에 맞는 아카이브가 없습니다`,originalPrintNotVisible:`원본 인쇄가 보이지 않음 - 필터를 지워보세요`,noArchivesYet:`아직 아카이브가 없습니다`,prints:`인쇄`,pagination:{showing:`표시 중`,to:`~`,of:`/`,show:`표시`,page:`페이지`,all:`전체`},loadingArchives:`아카이브 로딩 중...`,releaseToUpload:`놓아서 업로드`,showAll:`모두 보기`,showFavoritesOnly:`즐겨찾기만 보기`,gridView:`그리드 보기`,listView:`목록 보기`,calendarView:`달력 보기`,logView:`인쇄 로그`,manageTags:`태그 관리`,showFailedPrints:`실패한 인쇄 표시`,hideFailedPrints:`실패한 인쇄 숨기기`,hideDuplicates:`중복 숨기기`,viewOriginalPrint:`원본 인쇄 보기 클릭 (#{{id}})`,printTime:`인쇄 시간`,filamentUsed:`사용된 필라멘트`,cost:`비용`,preview:`미리보기`,deleteArchive:`아카이브 삭제`,deleteConfirm:`이 아카이브를 삭제하시겠습니까?`,favorite:`즐겨찾기`,unfavorite:`즐겨찾기에서 제거`,viewDetails:`상세 보기`,status:{completed:`완료`,failed:`실패`,stopped:`정지됨`},toast:{source3mfAttached:`소스 3MF 첨부됨: {{filename}}`,failedUploadSource3mf:`소스 3MF 업로드 실패`,source3mfRemoved:`소스 3MF 제거됨`,failedRemoveSource3mf:`소스 3MF 제거 실패`,f3dAttached:`F3D 첨부됨: {{filename}}`,failedUploadF3d:`F3D 업로드 실패`,f3dRemoved:`F3D 제거됨`,failedRemoveF3d:`F3D 제거 실패`,timelapseAttached:`타임랩스 첨부됨: {{filename}}`,timelapseAlreadyAttached:`타임랩스가 이미 첨부됨`,noMatchingTimelapse:`일치하는 타임랩스를 찾을 수 없습니다`,failedScanTimelapse:`타임랩스 스캔 실패`,failedAttachTimelapse:`타임랩스 첨부 실패`,timelapseRemoved:`타임랩스 제거됨`,failedRemoveTimelapse:`타임랩스 제거 실패`,timelapseUploaded:`타임랩스 업로드됨: {{filename}}`,failedUploadTimelapse:`타임랩스 업로드 실패`,archiveDeleted:`아카이브가 삭제되었습니다`,failedDeleteArchive:`아카이브 삭제 실패`,addedToFavorites:`즐겨찾기에 추가됨`,removedFromFavorites:`즐겨찾기에서 제거됨`,projectUpdated:`프로젝트가 업데이트되었습니다`,failedUpdateProject:`프로젝트 업데이트 실패`,linkCopied:`링크가 클립보드에 복사되었습니다`,failedCopyLink:`링크 복사 실패`,photoDeleted:`사진이 삭제되었습니다`,failedDeletePhoto:`사진 삭제 실패`,failedDeleteArchives:`아카이브 삭제 실패`,failedUpdateFavorites:`즐겨찾기 업데이트 실패`,exportDownloaded:`내보내기 다운로드됨`,exportFailed:`내보내기 실패`},menu:{print:`인쇄`,openInBambuStudio:`슬라이서에서 열기`,slice:`슬라이스`,externalLink:`외부 링크`,viewOnMakerWorld:`MakerWorld에서 보기`,preview3d:`3D 미리보기`,viewTimelapse:`타임랩스 보기`,scanForTimelapse:`타임랩스 검색`,uploadTimelapse:`타임랩스 업로드`,removeTimelapse:`타임랩스 제거`,downloadSource3mf:`소스 3MF 다운로드`,uploadSource3mf:`소스 3MF 업로드`,replaceSource3mf:`소스 3MF 교체`,removeSource3mf:`소스 3MF 제거`,uploadF3d:`F3D 업로드`,replaceF3d:`F3D 교체`,downloadF3d:`F3D 다운로드`,removeF3d:`F3D 제거`,download:`다운로드`,copyDownloadLink:`다운로드 링크 복사`,qrCode:`QR 코드`,viewPhotos:`사진 보기`,viewPhotosCount:`사진 보기 ({{count}})`,projectPage:`프로젝트 페이지`,addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,edit:`편집`,goToProject:`프로젝트로 이동: {{name}}`,addToProject:`프로젝트에 추가`,removeFromProject:`프로젝트에서 제거`,loading:`로딩 중...`,noProjectsAvailable:`사용 가능한 프로젝트 없음`,searchProjects:`프로젝트 검색…`,select:`선택`,deselect:`선택 해제`,delete:`삭제`,printLog:`인쇄 기록`},permission:{noReprint:`이 아카이브를 재인쇄할 권한이 없습니다`,noAddToQueue:`대기열에 추가할 권한이 없습니다`,noUpdateArchives:`아카이브를 업데이트할 권한이 없습니다`,noUploadFiles:`파일을 업로드할 권한이 없습니다`,noDownload:`아카이브를 다운로드할 권한이 없습니다`,noCopyLink:`다운로드 링크를 복사할 권한이 없습니다`,noDelete:`이 아카이브를 삭제할 권한이 없습니다`,noEdit:`이 항목을 편집할 권한이 없습니다`,noCreate:`아카이브를 만들 권한이 없습니다`},platePicker:{title:`미리 볼 플레이트 선택`,hint:`이 아카이브에는 여러 플레이트가 있습니다. G코드 뷰어에서 열 플레이트를 선택하세요.`,plateLabel:`플레이트 {{index}}`,objectCount:`{{count}}개 객체`,objectCount_plural:`{{count}}개 객체`,noGcode:`이 아카이브에는 미리 볼 슬라이싱된 G코드가 없습니다. Bambu Studio에서 먼저 슬라이싱하세요.`},card:{previousPlate:`이전 플레이트`,nextPlate:`다음 플레이트`,plateNumber:`플레이트 {{index}}`,moreOptions:`더 많은 옵션은 우클릭`,addToFavorites:`즐겨찾기에 추가`,removeFromFavorites:`즐겨찾기에서 제거`,cancelled:`취소됨`,failed:`실패`,duplicate:`중복`,duplicateTitle:`이 모델은 이전에 인쇄된 적이 있습니다`,openSource3mf:`Bambu Studio에서 소스 3MF 열기 (더 많은 옵션은 우클릭)`,downloadF3d:`Fusion 360 디자인 파일 다운로드`,viewTimelapse:`타임랩스 보기`,viewPhoto:`사진 1장 보기`,viewPhotos:`사진 {{count}}장 보기`,openFolder:`폴더 열기: {{name}}`,slicedFile:`슬라이싱된 파일 - 인쇄 준비 완료`,sourceFile:`소스 파일만 - AMS 매핑 없음`,gcode:`GCODE`,source:`소스`,project:`프로젝트: {{name}}`,estimated:`예상: {{time}}`,actual:`실제: {{time}}`,accuracy:`정확도: {{percent}}%`,filament:`{{weight}}g`,layer:`{{count}}층`,layers:`{{count}}층`,object:`{{count}}개 객체`,objects:`{{count}}개 객체`,slicedFor:`{{model}}용으로 슬라이싱됨`,uploadedBy:`업로드한 사용자`,noPermissionReprint:`재인쇄 권한이 없습니다`,noFileForReprint:`3MF 파일 없음 — 인쇄 기록 시 프린터에서 파일을 다운로드할 수 없었습니다`,slicerAmsMapping:`AMS 매핑 저장됨({{printer}})`,slicerAmsMappingTooltip:`슬라이서가 선택한 AMS 슬롯이 {{printer}}용으로 저장되었습니다. 슬롯 번호는 해당 프린터에서만 의미가 있으므로, 다시 {{printer}}로 보낼 때만 재인쇄에서 재사용됩니다.`,noPermissionEdit:`아카이브를 편집할 권한이 없습니다`,noPermissionDelete:`아카이브를 삭제할 권한이 없습니다`,openInBambuStudio:`슬라이서에서 열기`,openInBambuStudioToSlice:`슬라이스하려면 슬라이서에서 열기`,slice:`슬라이스`,externalLink:`외부 링크`,makerWorld:`MakerWorld: {{designer}}`,viewProject:`프로젝트 보기`,noExternalLink:`외부 링크 없음`,preview3d:`3D 미리보기`,download:`다운로드`,edit:`편집`,delete:`삭제`,runsBadge:`{{count}}회 인쇄`,runsBadgeTitle:`총 {{count}}회 인쇄 — {{successful}}회 성공, {{failed}}회 실패. 전체 인쇄 기록을 보려면 클릭하세요.`},modal:{deleteArchive:`아카이브 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteButton:`삭제`,removeSource3mf:`소스 3MF 제거`,removeSource3mfConfirm:`"{{name}}"에서 소스 3MF 파일을 제거하시겠습니까? 원본 슬라이서 프로젝트 파일이 삭제됩니다.`,removeButton:`제거`,removeF3d:`F3D 제거`,removeF3dConfirm:`"{{name}}"에서 Fusion 360 디자인 파일을 제거하시겠습니까?`,removeTimelapse:`타임랩스 제거`,removeTimelapseConfirm:`"{{name}}"에서 타임랩스 영상을 제거하시겠습니까?`,timelapse:`{{name}} - 타임랩스`,selectTimelapse:`타임랩스 선택`,selectTimelapseDesc:`자동 일치 항목 없음. 이 인쇄의 타임랩스를 선택하세요:`,deleteArchives:`아카이브 삭제`,deleteArchivesConfirm:`{{count}}개 아카이브를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteCount:`{{count}}개 삭제`,deletePurgeStats:`빠른 통계에서도 이 인쇄 항목 제거 (필라멘트, 시간, 비용, 에너지)`,deleteQueueItemsWarning:`이 아카이브와 연결된 {{count}}개의 대기열 항목도 함께 제거됩니다.`,deleteBlockedByPrinting:`삭제할 수 없습니다 — {{count}}개의 대기열 항목이 현재 인쇄 중입니다. 인쇄를 먼저 중지한 다음 다시 시도하십시오.`},page:{title:`아카이브`,printsCount:`{{total}}개 중 {{filtered}}개 인쇄`,dropFilesHere:`.3mf 파일을 여기에 놓으세요`,releaseToUpload:`놓아서 업로드`,only3mfSupported:`.3mf 파일만 지원됩니다`,close:`닫기`,selected:`{{count}}개 선택됨`,selectAll:`전체 선택`,tags:`태그`,project:`프로젝트`,favorite:`즐겨찾기`,delete:`삭제`,toggledFavorites:`{{count}}개 아카이브의 즐겨찾기가 변경됨`,failedUpdateFavorites:`즐겨찾기 업데이트 실패`,archivesDeleted:`{{count}}개 아카이브가 삭제됨`,failedDeleteArchives:`아카이브 삭제 실패`,photoDeleted:`사진이 삭제됨`,failedDeletePhoto:`사진 삭제 실패`},list:{name:`이름`,printer:`프린터`,date:`날짜`,size:`크기`,actions:`작업`,hasTimelapse:`타임랩스 있음`},log:{date:`날짜`,printName:`인쇄 이름`,printer:`프린터`,user:`사용자`,status:`상태`,duration:`소요 시간`,filament:`필라멘트`,filamentUsed:`사용 필라멘트량`,cost:`비용`,energy:`전력량`,energyCost:`전력 비용`,completedAt:`완료`,columns:`열`,sortBy:`{{column}} 기준 정렬`,allPrinters:`모든 프린터`,allUsers:`모든 사용자`,allStatuses:`모든 상태`,cancelled:`취소됨`,skipped:`건너뜀`,dateFrom:`시작`,dateTo:`종료`,noEntries:`인쇄 로그 항목이 없습니다`,showing:`{{total}}개 중 {{count}}개 표시`,rowsPerPage:`행`,page:`페이지`,prev:`이전`,next:`다음`,clearLog:`로그 지우기`,clearLogTitle:`인쇄 로그 지우기`,clearLogConfirm:`모든 인쇄 로그 항목이 영구적으로 삭제됩니다. 아카이브와 대기열 항목은 영향받지 않습니다. 이 작업은 취소할 수 없습니다. 계속하시겠습니까?`,clearLogButton:`모두 지우기`,cleared:`{{count}}개 로그 항목이 지워졌습니다`,clearFailed:`인쇄 로그 지우기 실패`,deleteEntryTitle:`인쇄 로그 항목 삭제`,deleteEntryConfirm:`이 항목이 로그에서 삭제되며 필라멘트, 시간 및 비용 기여도가 빠른 통계에서 제외됩니다. 해당 아카이브(있는 경우)는 영향을 받지 않습니다. 이 작업은 취소할 수 없습니다.`,entryDeleted:`인쇄 로그 항목이 삭제되었습니다`,entryDeleteFailed:`인쇄 로그 항목 삭제 실패`,editEntryTitle:`인쇄 로그 항목 편집`,editEntryDescription:`이 인쇄를 분류합니다. 실패 분석 위젯이 이 값으로 그룹화하므로 업데이트가 통계에 즉시 반영됩니다.`,entryUpdated:`인쇄 로그 항목이 업데이트되었습니다`,entryUpdateFailed:`인쇄 로그 항목 업데이트 실패`,statuses:{completed:`완료됨`,failed:`실패`,stopped:`중지됨`,cancelled:`취소됨`,skipped:`건너뜀`}},runLog:{title:`인쇄 기록`,modalTitle:`인쇄 기록 — {{name}}`,modalTitleFallback:`이 아카이브`,empty:`이 아카이브에 대해 기록된 인쇄 이벤트가 없습니다.`,col:{date:`날짜`,status:`상태`,duration:`소요 시간`,filament:`필라멘트`,cost:`비용`},status:{completed:`완료`,failed:`실패`,cancelled:`취소됨`,stopped:`중지됨`,skipped:`건너뜀`,printing:`인쇄 중`}}},dispatchToast:{untitled:`인쇄 작업`,startingPrints:`인쇄 시작 중`,progressSummary:`{{complete}}/{{total}} 완료 • 처리 중: {{processing}}`,expandDetails:`디스패치 세부 정보 펼치기`,collapseDetails:`디스패치 세부 정보 접기`,awaitingPrinter:`프린터 응답 대기 중…`,status:{processing:`처리 중`,completed:`완료`,failed:`실패`},failed:{generic:`디스패치 실패`,upload_failed:`프린터로 업로드 실패`,start_command_failed:`프린터가 시작 명령을 거부했습니다`},dismiss:`닫기`},pipelineRuns:{title:`파이프라인 실행`,loading:`불러오는 중…`,empty:`아직 파이프라인 실행이 없습니다.`,filter:{pipeline:`파이프라인`,status:`상태`,target:`대상`,all:`전체`,allPipelines:`모든 파이프라인`,allStatus:`모든 상태`,allTargets:`모든 대상`,clear:`필터 지우기`,noMatches:`현재 필터와 일치하는 실행이 없습니다.`},totalCount_one:`{{n}}회 실행`,totalCount_other:`{{n}}회 실행`,copies:`사본 {{n}}`,failedCount:`실패 {{n}}`,copyN:`사본 {{n}}`,retryFailed:`실패 재시도`,retryOf:`#{{n}}의 재시도`,pagination:`{{total}} 중 {{start}}–{{end}}`,toast:{cancelled:`실행 취소됨`,cancelFailed:`취소 실패`,retryStarted:`재시도 시작됨`,retryFailed:`재시도 실패`,cleared:`{{n}}회 실행 삭제됨`,clearFailed:`삭제 실패`},clearLog:`로그 지우기`,clearConfirmTitle:`로그를 지울까요?`,clearConfirmBody:`완료, 실패, 취소, 부분 실패한 모든 파이프라인 실행을 삭제합니까? 진행 중인 실행은 유지됩니다. 되돌릴 수 없습니다.`,clearConfirmAction:`지우기`,jobStatus:{pending:`대기 중`,awaiting_printer:`프린터 대기 중`,queued:`대기 중`,printing:`인쇄 중`,completed:`완료됨`,failed:`실패`,cancelled:`취소됨`},cancelledByUser:`사용자에 의해 취소됨`},queue:{title:`인쇄 대기열`,subtitle:`인쇄 작업을 예약하고 관리하세요`,editQueueItem:`대기열 항목 편집`,selectAllPlates:`{{count}}개 플레이트 전체 선택`,deselectAll:`전체 해제`,printQueued:`인쇄가 대기열에 추가됨`,printQueuedWillStartWhenIdle:`프린터가 유휴 상태가 되면 시작됩니다`,itemsQueued:`{{count}}개 항목이 대기열에 추가됨`,sending:`전송 중...`,sendingProgress:`{{current}}/{{total}} 전송 중...`,adding:`추가 중...`,addingProgress:`{{current}}/{{total}} 추가 중...`,savingProgress:`{{current}}/{{total}} 저장 중...`,clearQueue:`대기열 지우기`,clearHistory:`기록 지우기`,emptyQueue:`대기열이 비어 있습니다`,position:`위치`,scheduledTime:`예약 시간`,moveUp:`위로 이동`,moveDown:`아래로 이동`,startNow:`지금 시작`,printingInProgress:`인쇄 중...`,viewArchive:`아카이브 보기`,viewInFileManager:`파일 관리자에서 보기`,itemCount:`{{count}}개 항목`,itemCount_plural:`{{count}}개 항목`,dragToReorder:`드래그하여 순서 변경 (즉시만)`,reorderHint:`위치는 즉시 항목에만 영향을 줍니다. 예약된 항목은 설정된 시간에 실행됩니다.`,sjf:{label:`SJF`,tooltip:`최단 작업 우선 — 스케줄러가 짧은 인쇄를 우선합니다`},addedBy:`{{name}}님이 추가함`,nextInQueue:`다음 대기`,clearPlateSuccess:`플레이트 비워짐 — 다음 인쇄 준비 완료`,plateNumber:`플레이트 {{index}}`,quantity:`수량`,quantityHint:`{{count}}개 대기열 항목 생성`,plateQuantityLabel:`{{plate}} 실행 횟수`,plateQuantityTotal_one:`총 {{count}}회`,plateQuantityTotal_other:`총 {{count}}회`,batchOrders:{title:`배치 주문`,emptyTitle:`배치 주문 없음`,emptyDescription:`여러 플레이트 파일이나 한 플레이트의 여러 복사본을 대기열에 넣으면 주문이 진행 상황과 함께 여기에 표시됩니다.`,filter:{active:`진행 중`,completed:`완료`,cancelled:`취소됨`,all:`전체`},status:{active:`진행 중`,completed:`완료`,cancelled:`취소됨`},noTargets:`그룹만`,noTargetsHint:`플레이트별 목표 수량이 도입되기 전에 생성되어 목표가 아닌 대기열에 넣은 실행을 추적합니다.`,dispatchRemaining:`남은 {{count}}개 대기열 추가`,dispatchPlate:`남은 항목 추가`,strandedPlate:`설정을 복사할 실행이 없습니다`,strandedNotice:`아직 남은 {{owed}}건 중 {{runs}}건을 대기열에 추가할 수 없습니다. 해당 플레이트에는 설정을 복사할 대기 중이거나 완료된 실행이 남아 있지 않습니다. 파일에서 해당 플레이트를 한 번 대기열에 추가하거나 주문을 취소하세요.`,dispatched:`{{name}}의 남은 실행을 대기열에 추가했습니다`,plateProgress:`{{target}}개 중 {{completed}}개 완료`,remaining:`{{count}}개 남음`,failed:`{{count}}개 실패`,printing:`{{count}}개 인쇄 중`,wholeFile:`파일 전체`,due:`기한 {{date}}`,costSoFar:`현재까지 {{amount}}`,costRemaining:`({{amount}} 남음)`},activeBatches:`활성 배치`,batchProgress:`{{total}}개 중 {{completed}}개 완료`,cancelBatch:`나머지 취소`,batchCancelled:`남은 배치 항목이 취소되었습니다`,cancelBatchConfirmTitle:`배치 취소`,cancelBatchConfirmMessage:`이 주문을 종료할까요? 대기열에 남은 실행은 취소되고, 생산하지 못한 분량도 더 이상 요구하지 않습니다.`,batch:{defaultName:`배치`,label:`{{count}}개 항목`,label_plural:`{{count}}개 항목`,pendingCount:`{{count}}개 대기 중`,pendingCount_plural:`{{count}}개 대기 중`,expand:`배치 펼치기`,collapse:`배치 접기`,groupAsBatch:`배치로 묶기…`,groupAsBatchDescription:`선택한 {{count}}개 항목을 접을 수 있는 하나의 배치로 묶습니다.`,nameLabel:`배치 이름`,namePlaceholder:`예: 금요일 선물`,create:`배치 만들기`,ungroup:`그룹 해제`,ungroupConfirmTitle:`배치 그룹을 해제하시겠습니까?`,ungroupConfirmMessage:`항목은 큐에 남아 있지만 더 이상 함께 그룹화되지 않습니다.`,dragGroup:`그룹 드래그`},tabs:{batches:`배치`,queue:`큐`,history:`기록`,timeline:`타임라인`,pipelines:`파이프라인`},layout:{flatList:`목록`,byPrinter:`프린터별`,groupByPrinter:`프린터별로 묶기`},history:{emptyTitle:`아직 기록이 없습니다`,emptyDescription:`완료·취소·실패한 인쇄가 여기에 표시됩니다.`,showMore:`더 보기`,showingCount:`{{total}}개 중 {{shown}}개 표시`},dragGhost:{multiCount:`{{count}}개 항목`,batch:`{{name}} ({{count}}부)`,batch_plural:`{{name}} ({{count}}부)`},sections:{currentlyPrinting:`현재 인쇄 중`,queued:`대기 중`,history:`기록`},status:{pending:`대기 중`,waiting:`기다리는 중`,printing:`인쇄 중`,paused:`일시정지`,completed:`완료`,failed:`실패`,skipped:`건너뜀`,cancelled:`취소됨`},summary:{printing:`인쇄 중`,queued:`대기 중`,totalTime:`총 대기열 시간`,totalWeight:`총 대기열 무게`,history:`기록`},filter:{allPrinters:`모든 프린터`,unassigned:`미할당`,allStatus:`모든 상태`,allLocations:`모든 위치`,any:`전체`},sort:{byPosition:`위치별 정렬`,byName:`이름별 정렬`,byPrinter:`프린터별 정렬`,bySchedule:`예약별 정렬`,byDate:`날짜별 정렬`,ascendingOldest:`오름차순 (오래된 것 먼저)`,descendingNewest:`내림차순 (최신 것 먼저)`},badges:{staged:`준비됨`,requiresPrevious:`이전 성공 필요`,autoPowerOff:`자동 전원 끄기`,gcodeInjection:`G코드`},empty:{title:`예약된 인쇄 없음`,description:`아카이브 페이지의 컨텍스트 메뉴에서 "예약" 옵션을 사용하거나 파일을 드래그 앤 드롭하여 시작하세요.`},time:{etaIfStartedNow:`이 작업을 지금 시작할 경우의 완료 예정 시각`,asap:`즉시`,overdue:`기한 초과`,now:`지금`,lessThanMinute:`1분 이내`,inMinutes:`{{count}}분 후`,inHours:`{{count}}시간 후`},actions:{startPrint:`인쇄 시작`,stopPrint:`인쇄 정지`,requeue:`재대기`},bulkEdit:{title:`{{count}}개 항목 편집`,title_plural:`{{count}}개 항목 편집`,description:`변경된 설정만 선택된 항목에 적용됩니다.`,printer:`프린터`,noChange:`— 변경 없음 —`,queueOptions:`대기열 옵션`,staged:`준비됨 (수동 시작)`,autoPowerOff:`인쇄 후 자동 전원 끄기`,requirePrevious:`이전 성공 필요`,printOptions:`인쇄 옵션`,bedLevelling:`베드 레벨링`,flowCalibration:`유량 캘리브레이션`,vibrationCalibration:`진동 캘리브레이션`,layerInspection:`첫 번째 층 검사`,timelapse:`타임랩스`,useAms:`AMS 사용`,nozzleOffsetCali:`노즐 오프셋 보정`,applyChanges:`변경사항 적용`,selectAll:`전체 선택`,deselectAll:`전체 해제`,selected:`{{count}}개 선택됨`,editSelected:`선택 항목 편집`,cancelSelected:`선택 항목 취소`},confirm:{cancelTitle:`예약된 인쇄 취소`,cancelMessage:`"{{name}}"을(를) 취소하시겠습니까?`,stopTitle:`인쇄 정지`,stopMessage:`"{{name}}"의 현재 인쇄를 정지하시겠습니까? 프린터의 인쇄 작업이 취소됩니다.`,removeTitle:`기록에서 제거`,removeMessage:`대기열 기록에서 "{{name}}"을(를) 제거하시겠습니까?`,clearHistoryTitle:`기록 지우기`,clearHistoryMessage:`기록에서 {{count}}개 항목을 모두 제거하시겠습니까?`,cancelButton:`인쇄 취소`,stopButton:`인쇄 정지`,thisPrint:`이 인쇄`,thisItem:`이 항목`},toast:{cancelled:`대기열 항목이 취소되었습니다`,cancelFailed:`항목 취소 실패`,removed:`대기열 항목이 제거되었습니다`,keptForOrder:`제거 대신 취소했습니다: 배치 주문이 이 플레이트를 다시 대기열에 넣을 수 있는 유일한 실행입니다`,historyKeptForOrders:`배치 주문에 아직 필요한 {{kept}}건은 남겨 두었습니다.`,removeFailed:`항목 제거 실패`,stopped:`인쇄가 정지되었습니다`,stopFailed:`인쇄 정지 실패`,released:`인쇄가 대기열에 릴리스되었습니다`,startFailed:`인쇄 시작 실패`,reorderFailed:`대기열 순서 변경 실패`,historyCleared:`{{count}}개 기록 항목이 지워졌습니다`,clearHistoryFailed:`기록 지우기 실패`,updateFailed:`항목 업데이트 실패`,bulkCancelled:`{{count}}개 항목이 취소되었습니다`,bulkCancelFailed:`항목 취소 실패`,batchCreated:`"{{name}}" 배치를 만들었습니다`,batchCreateFailed:`배치 만들기에 실패했습니다`,batchUngrouped:`{{count}}개 항목의 그룹을 해제했습니다`,batchUngroupFailed:`배치 그룹 해제에 실패했습니다`,resumedAfterFailure:`큐를 재개했습니다 — {{restored}}개 작업을 대기 상태로 복원했습니다`,resumeAfterFailureFailed:`큐 재개에 실패했습니다`},resumeAfterFailure:{banner:`{{printer}}이(가) 이전 인쇄 실패로 인해 차단되었습니다 — {{count}}개 작업이 건너뛰어졌습니다`,bannerHint:`프린터 문제를 해결한 후 재개하여 건너뛴 작업을 복원하고 차단을 해제하세요.`,button:`실패 후 재개`,confirmTitle:`실패 후 큐를 재개하시겠습니까?`,confirmMessage:`{{printer}}에서 건너뛴 {{count}}개 작업을 대기 상태로 복원하고 이전 인쇄 차단을 해제합니다. 계속하기 전에 프린터가 준비되었는지 확인하세요.`},timeline:{listView:`목록`,timelineView:`타임라인`,unassigned:`미할당`,noData:`이 날에 예약된 인쇄 없음`,nothingCommitted:`이 시간 창에 확정된 일정이 없습니다. 대기 중인 항목, 보류된 항목, 유휴 프린터의 ASAP 작업은 표시되지 않습니다 — 예약 시간을 설정하거나 대기 항목을 릴리스하면 여기에 표시됩니다.`,allDoneBy:`모든 인쇄 예상 완료 시간: {{time}}`,staged:`준비됨`,filterAll:`모두 표시`,filterPrinting:`인쇄 중`,filterQueued:`대기 중`,time:{anyMoment:`잠시 후`,minutesLeft:`{{minutes}}분 남음`,hoursLeft:`{{hours}}시간 남음`,hoursMinutesLeft:`{{hours}}시간 {{minutes}}분 남음`},day:{previous:`이전 날`,next:`다음 날`,today:`오늘`},window:{back12h:`12시간 이전`,forward12h:`12시간 이후`,now:`지금`},printerColumnHeader:`프린터`},permissions:{noStopPrint:`인쇄를 정지할 권한이 없습니다`,noStartPrint:`인쇄를 시작할 권한이 없습니다`,noEdit:`이 대기열 항목을 편집할 권한이 없습니다`,noCancel:`이 대기열 항목을 취소할 권한이 없습니다`,noRequeue:`항목을 재대기할 권한이 없습니다`,noRemove:`이 대기열 항목을 제거할 권한이 없습니다`,noClearHistory:`모든 기록을 지울 권한이 없습니다`,noEditItems:`대기열 항목을 편집할 권한이 없습니다`,noCancelItems:`대기열 항목을 취소할 권한이 없습니다`},filamentShort:{rowBadge:`할당된 스풀의 필라멘트가 부족합니다`,rowTooltip:`디스패치 스케줄러가 이 항목을 표시했습니다. 재생 버튼을 클릭하여 슬롯별 부족량을 확인하고 인쇄 여부를 결정하세요.`,confirmTitle:`필라멘트 부족`,confirmIntro:`할당된 스풀이 하나 이상의 슬롯을 채울 수 없습니다. 그래도 인쇄하시겠습니까?`,lineItem:`슬롯 {{slot}}: {{required}}g 필요, {{remaining}}g 남음`,unknown:`알 수 없음`,printAnyway:`그냥 인쇄`},slicerAmsMapping:{rowBadge:`이 프린터용으로 저장된 AMS 슬롯`,rowTooltip:`이 아카이브에는 슬라이서가 선택한 정확한 AMS 슬롯이 이 항목의 대상 프린터용으로 저장되어 있습니다. 해당 프린터에서 재인쇄하면 유형과 색상으로 다시 맞추는 대신 그 트레이를 재사용할 수 있습니다.`}},stats:{title:`대시보드`,subtitle:`위젯을 드래그하여 정렬하세요. 눈 아이콘을 클릭하여 숨기세요.`,overview:`개요`,totalPrints:`총 인쇄 수`,successRate:`성공률`,totalPrintTime:`총 인쇄 시간`,printTime:`인쇄 시간`,totalFilament:`총 사용 필라멘트`,filamentUsed:`사용된 필라멘트`,filamentCost:`필라멘트 비용`,totalCost:`총 비용`,energyUsed:`사용된 에너지`,energyCost:`에너지 비용`,energyWarmingUpTooltip:`에너지 추적이 시간별 스냅샷을 수집 중입니다. 날짜 범위 합계는 선택한 범위 이전에 하나 이상의 스냅샷이 존재하면 정확해집니다. 초기 값이 적게 집계될 수 있습니다.`,averagePrintTime:`평균 인쇄 시간`,printsPerDay:`일일 인쇄 수`,byPrinter:`프린터별`,printsByPrinter:`프린터별 인쇄`,byMaterial:`재료별`,byMonth:`월별`,last7Days:`최근 7일`,last30Days:`최근 30일`,last90Days:`최근 90일`,allTime:`전체 기간`,quickStats:`빠른 통계`,printActivity:`인쇄 활동`,filamentTypes:`필라멘트 종류`,filamentTrends:`필라멘트 추세`,failureAnalysis:`실패 분석`,timeAccuracy:`시간 정확도`,successful:`성공:`,failed:`실패:`,cancelled:`취소됨:`,perfectEstimate:`100% = 완벽한 예상`,noTimeAccuracyData:`아직 시간 정확도 데이터 없음`,noFilamentData:`필라멘트 데이터 없음`,noPrinterData:`프린터 데이터 없음`,noPrintData:`인쇄 데이터 없음`,noPrintDataLast30Days:`최근 30일 인쇄 데이터 없음`,failureReasons:`실패 원인`,topFailureReasons:`주요 실패 원인`,failedPrintsCount:`{{total}}개 인쇄 중 {{failed}}개 실패`,lastWeekRate:`지난 주: {{rate}}%`,resetLayout:`레이아웃 초기화`,recalculateCosts:`비용 재계산`,recalculateCostsHint:`현재 필라멘트 가격으로 모든 아카이브 비용 재계산`,exportStats:`통계 내보내기`,exportAsCsv:`CSV로 내보내기`,exportAsExcel:`Excel로 내보내기`,hiddenCount:`{{count}}개 숨겨짐`,exportDownloaded:`내보내기 다운로드됨`,exportFailed:`내보내기 실패`,layoutReset:`레이아웃이 초기화되었습니다`,recalculatedCosts:`{{count}}개 아카이브의 비용이 재계산되었습니다`,recalculateFailed:`비용 재계산 실패`,loadingStats:`통계 로딩 중...`,noPermissionResetLayout:`레이아웃을 초기화할 권한이 없습니다`,noPermissionRecalculate:`비용을 재계산할 권한이 없습니다`,noPrintDataInRange:`선택한 범위에 인쇄 데이터 없음`,periodFilament:`기간 필라멘트`,periodCost:`기간 비용`,avgPerPrint:`인쇄당 평균`,usageOverTime:`시간별 사용량`,energyOverTime:`시간별 에너지 사용량`,filamentByWeight:`무게`,printDuration:`인쇄 시간`,printerUtilization:`프린터 사용률`,filamentSuccess:`재료별 성공률`,printHabits:`인쇄 습관`,printTimeOfDay:`시간대별 인쇄`,colorDistribution:`색상 분포`,noColorData:`색상 데이터 없음`,records:`기록`,longestPrint:`최장 인쇄`,heaviestPrint:`가장 무거운 인쇄`,mostExpensivePrint:`가장 비싼 인쇄`,busiestDay:`가장 바쁜 날`,successStreak:`연속 성공`,streakPrint:`연속 인쇄`,streakPrints:`{{count}}번 연속 인쇄`,printerStats:`프린터 통계`,hours:`시간`,avgPrints:`평균 인쇄`,noArchiveData:`인쇄 데이터 없음`,filamentByTime:`시간`,avgWeight:`평균 무게`,avgTime:`평균 시간`,filamentByPrints:`인쇄`,timeframe:{today:`오늘`,"this-week":`이번 주`,"this-month":`이번 달`,"last-7":`최근 7일`,"last-30":`최근 30일`,"last-90":`최근 90일`,"this-year":`올해`,"all-time":`전체 기간`,custom:`사용자 지정 범위`,from:`시작`,to:`종료`},allUsers:`모든 사용자`,noUser:`사용자 없음 (시스템)`,filterByUser:`사용자별 필터`},maintenance:{title:`유지보수`,overview:`개요`,allOk:`모든 유지보수 최신 상태`,dueCount:`{{count}}개 항목 예정`,dueCount_plural:`{{count}}개 항목 예정`,warningCount:`{{count}}개 경고`,warningCount_plural:`{{count}}개 경고`,totalPrintTime:`총 인쇄 시간`,nextMaintenance:`다음 유지보수`,nothingDue:`예정 없음`,tasks:`작업`,lastPerformed:`마지막 수행`,interval:`간격`,hoursRemaining:`{{hours}}시간 남음`,hoursOverdue:`{{hours}}시간 초과`,markDone:`완료로 표시`,performMaintenance:`유지보수 수행`,history:`기록`,noHistory:`유지보수 기록 없음`,editPrintHours:`인쇄 시간 편집`,currentHours:`현재 시간`,statusTab:`상태`,settingsTab:`설정`,overdueCount:`{{count}}개 초과`,dueSoonCount:`{{count}}개 곧 예정`,dueSoon:`곧 예정`,allGood:`모두 정상`,overdueBy:`{{duration}} 초과`,dueIn:`{{duration}} 후 예정`,timeLeft:`{{duration}} 남음`,day:`1일`,days:`{{count}}일`,week:`1주`,weeks:`{{count}}주`,month:`1개월`,months:`{{count}}개월`,year:`1년`,maintenanceTypes:`유지보수 유형`,maintenanceTypesDescription:`시스템 유형 및 사용자 지정 유지보수 작업`,addCustomType:`사용자 지정 유형 추가`,restoreDefaults:`기본 작업 복원`,intervalType:`간격 유형`,intervalValue:`간격 ({{type}})`,icon:`아이콘`,documentationLink:`문서 링크 (선택사항)`,assignToPrinters:`프린터에 할당`,selectAtLeastOnePrinter:`최소 한 개의 프린터를 선택하세요`,addType:`유형 추가`,custom:`사용자 지정`,printHours:`인쇄 시간`,calendarDays:`달력 일수`,exampleName:`예: HEPA 필터 교체`,viewDocumentation:`문서 보기`,timeBasedInterval:`시간 기반 간격`,intervalOverrides:`간격 재정의`,intervalOverridesDescription:`특정 프린터의 간격 사용자 지정`,assignedToPrinters:`할당된 프린터:`,noPrintersAssigned:`할당된 프린터 없음`,addPrinterShort:`추가:`,printersAssignedClick:`{{count}}개 프린터 할당됨 - 클릭하여 관리`,removeFromPrinter:`이 프린터에서 제거`,types:{lubricateCarbonRods:`카본 로드 윤활`,lubricateRails:`리니어 레일 윤활`,cleanNozzle:`노즐/핫엔드 청소`,checkBelts:`벨트 장력 확인`,cleanBuildPlate:`빌드 플레이트 청소`,checkExtruder:`압출기 기어 확인`,checkCooling:`냉각 팬 확인`,generalInspection:`일반 점검`,cleanCarbonRods:`카본 로드 청소`,lubricateSteelRods:`스틸 로드 윤활`,cleanSteelRods:`스틸 로드 청소`,cleanLinearRails:`리니어 레일 청소`,checkPtfeTube:`PTFE 튜브 확인`,replaceHepaFilter:`HEPA 필터 교체`,replaceCarbonFilter:`활성탄 필터 교체`,lubricateLeftNozzleRail:`좌측 노즐 레일 윤활`},maintenanceComplete:`유지보수가 완료로 표시되었습니다`,typeUpdated:`유지보수 유형이 업데이트되었습니다`,typeDeleted:`유지보수 유형이 삭제되었습니다`,defaultsRestored:`{{count}}개 기본 작업이 복원되었습니다`,printHoursUpdated:`인쇄 시간이 업데이트되었습니다`,printerAssigned:`프린터가 할당되었습니다`,printerRemoved:`프린터가 제거되었습니다`,deleteTypeConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,deleteSystemTypeTitle:`기본 유지보수 작업을 삭제하시겠습니까?`,deleteSystemTypeMessage:`기본 유지보수 작업 "{{name}}"을(를) 삭제하시겠습니까?`,noPermissionUpdate:`유지보수 항목을 업데이트할 권한이 없습니다`,noPermissionPerform:`유지보수를 수행할 권한이 없습니다`,noPermissionEditTypes:`유지보수 유형을 편집할 권한이 없습니다`,noPermissionDeleteTypes:`유지보수 유형을 삭제할 권한이 없습니다`,noPermissionEditHours:`인쇄 시간을 편집할 권한이 없습니다`,noPermissionRemovePrinter:`프린터 할당을 제거할 권한이 없습니다`,noPermissionAssignPrinter:`프린터를 할당할 권한이 없습니다`,noPermissionEditIntervals:`간격을 편집할 권한이 없습니다`,configureSettings:`유지보수 유형 및 간격 설정`},settings:{sliceEngine:`슬라이스 엔진`,sliceEngineSidecar:`서버 사이드카`,sliceEngineSidecarHint:`슬라이싱이 서버의 슬라이서 사이드카 컨테이너에서 실행됩니다.`,sliceEngineBrowser:`브라우저에서`,sliceEngineBrowserHint:`슬라이싱이 서버 없이 이 기기에서 실행됩니다.`,title:`설정`,general:`일반`,tabs:{general:`일반`,smartPlugs:`스마트 플러그`,sensors:`센서`,notifications:`알림`,queue:`워크플로우`,queueDispatch:`큐 및 디스패치`,queuePipelines:`파이프라인`,filament:`필라멘트`,network:`네트워크`,apiKeys:`API 키`,virtualPrinter:`가상 프린터`,spoolbuddy:`SpoolBuddy`,failureDetection:`실패 감지`,users:`인증`,backup:`백업`,emailAuth:`이메일 인증`,ldap:`LDAP`,twoFa:`이중 인증`,oidc:`SSO / OIDC`,security:`보안`},spoolbuddy:{infoTitle:`SpoolBuddy 기기`,infoBody:`SpoolBuddy 키오스크는 하트비트를 통해 자동으로 등록됩니다. 더 이상 사용하지 않거나 데몬 충돌로 인한 중복이 있는 경우 여기서 기기를 등록 해제하세요.`,duplicatesTitle:`{{count}}개 기기 등록됨`,duplicatesBody:`첫 번째로 등록된 기기만 키오스크 UI에서 사용됩니다. 충돌로 인한 오래된 중복이 있으면 등록 해제하세요 — 온라인 기기는 다음 하트비트에서 자동으로 재등록됩니다.`,empty:`아직 등록된 SpoolBuddy 기기가 없습니다.`,online:`온라인`,offline:`오프라인`,unregister:`등록 해제`,unregisterSuccess:`기기 등록 해제됨`,unregisterError:`기기 등록 해제 실패`,confirmTitle:`SpoolBuddy 기기를 등록 해제하시겠습니까?`,confirmBody:`데이터베이스에서 "{{hostname}}" ({{deviceId}})를 제거합니다. 기기가 온라인이면 다음 하트비트에서 자동으로 재등록됩니다.`,ipAddress:`IP 주소`,firmware:`펌웨어`,lastSeen:`마지막 확인`,daemonUptime:`데몬 가동 시간`,systemUptime:`시스템 가동 시간`,never:`없음`,nfc:`NFC`,scale:`저울`,cpuTemp:`CPU 온도`,memory:`메모리`,disk:`디스크`,update:`업데이트`,updateConfirmTitle:`Spoolbuddy 데몬을 업데이트하시겠습니까?`,updateConfirmBody:`"{{hostname}}"에서 소프트웨어 업데이트를 실행하시겠습니까? 업데이트가 적용되면 데몬이 재시작됩니다.`,restartBrowser:`브라우저 재시작`,restartBrowserConfirmTitle:`키오스크 브라우저를 재시작하시겠습니까?`,restartBrowserConfirmBody:`"{{hostname}}"의 키오스크 브라우저를 재시작하시겠습니까? 화면이 잠시 꺼집니다.`,restartDaemon:`데몬 재시작`,restartDaemonConfirmTitle:`Spoolbuddy 데몬을 재시작하시겠습니까?`,restartDaemonConfirmBody:`"{{hostname}}"의 Spoolbuddy 데몬을 재시작하시겠습니까? 기기가 몇 초 동안 오프라인 상태가 됩니다.`,reboot:`재부팅`,rebootConfirmTitle:`기기를 재부팅하시겠습니까?`,rebootConfirmBody:`"{{hostname}}"을(를) 재부팅하시겠습니까? 기기가 약 1분 동안 오프라인 상태가 됩니다.`,shutdown:`종료`,shutdownConfirmTitle:`기기를 종료하시겠습니까?`,shutdownConfirmBody:`"{{hostname}}"을(를) 종료하시겠습니까? 다시 켜려면 물리적 접근이 필요합니다.`,commandConfirm:`확인`,commandQueued:`명령이 대기열에 추가됨`,commandError:`명령 전송 실패`,cpuLoad:`CPU 부하`},ldap:{title:`LDAP 인증`,enabledDesc:`LDAP 인증이 활성화되어 있습니다`,disabledDesc:`LDAP 인증이 비활성화되어 있습니다`,disabledHint:`아래에서 LDAP 설정을 구성하고 저장한 후 활성화하세요.`,enabled:`LDAP 인증 활성화됨`,disabled:`LDAP 인증 비활성화됨`,feature1:`사용자가 LDAP 자격 증명으로 로그인 가능`,feature2:`로컬 관리자 계정이 대체 수단으로 유지됨`,feature3:`LDAP 그룹이 로그인 시 Bambuddy 그룹에 매핑됨`,serverConfig:`LDAP 서버 설정`,serverUrl:`서버 URL`,serverUrlHint:`SSL에는 ldaps://, StartTLS에는 ldap:// 사용`,security:`보안`,securityHint:`StartTLS는 일반 연결을 TLS로 업그레이드합니다. LDAPS는 처음부터 TLS를 사용합니다.`,bindDn:`바인드 DN (서비스 계정)`,bindPassword:`바인드 비밀번호`,searchBase:`검색 기반 DN`,userFilter:`사용자 검색 필터`,userFilterHint:`{username}은 로그인 사용자명으로 대체됩니다. OpenLDAP의 경우 (uid={username})을 사용하세요.`,autoProvision:`사용자 자동 프로비저닝`,autoProvisionHint:`첫 LDAP 로그인 시 자동으로 Bambuddy 계정 생성`,defaultGroup:`기본 그룹`,defaultGroupNone:`— 없음 (대체 없음) —`,defaultGroupHint:`LDAP 사용자가 인증되었지만 매핑된 LDAP 그룹에 없을 때 할당되는 대체 그룹. 비워두면 매핑되지 않은 사용자에게 권한이 없습니다.`,groupMapping:`그룹 매핑 (JSON)`,groupMappingHint:`LDAP 그룹 DN을 Bambuddy 그룹에 매핑합니다. 사용 가능한 그룹: `,testConnection:`연결 테스트`,settingsSaved:`LDAP 설정이 저장되었습니다`,errors:{serverRequired:`LDAP 서버 URL이 필요합니다`,searchBaseRequired:`검색 기반 DN이 필요합니다`,enableAuthFirst:`먼저 인증을 활성화하세요`,configureLdapFirst:`먼저 LDAP 설정을 저장하세요`},advanced:`고급`},email:{smtpSettings:`SMTP 설정`,smtpHost:`SMTP 서버`,smtpPort:`SMTP 포트`,security:`보안`,authentication:`인증`,username:`사용자명`,password:`비밀번호`,fromEmail:`발신 이메일`,fromName:`발신자 이름`,testConnection:`SMTP 연결 테스트`,testRecipient:`테스트 수신자 이메일`,sendTest:`테스트 이메일 전송`,sending:`전송 중...`,save:`설정 저장`,saving:`저장 중...`,advancedAuth:`고급 인증`,advancedAuthEnabled:`고급 인증이 활성화되어 있습니다`,advancedAuthEnabledDesc:`이메일 기반 사용자 관리 기능이 활성화되어 있습니다. 신규 사용자는 이메일로 자동 생성된 비밀번호를 받으며, 사용자는 비밀번호 찾기 기능으로 비밀번호를 재설정할 수 있습니다.`,advancedAuthDisabled:`고급 인증이 비활성화되어 있습니다`,advancedAuthDisabledDesc:`이메일 기반 사용자 관리 기능을 활성화하려면 고급 인증을 활성화하세요.`,enable:`활성화`,disable:`비활성화`,feature1:`비밀번호가 자동 생성되어 신규 사용자에게 이메일로 전송됨`,feature2:`사용자가 사용자명 또는 이메일로 로그인 가능`,feature3:`비밀번호 찾기 기능 사용 가능`,feature4:`관리자가 이메일로 사용자 비밀번호 재설정 가능`,errors:{requiredFields:`모든 필수 항목을 입력하세요`,usernameRequired:`인증이 활성화된 경우 사용자명이 필요합니다`,enterTestEmail:`테스트 이메일 주소를 입력하세요`,smtpServerAndEmail:`테스트 전에 SMTP 서버와 발신 이메일을 입력하세요`,usernamePasswordRequired:`인증이 활성화된 경우 사용자명과 비밀번호가 필요합니다`,configureSmtpFirst:`먼저 SMTP 설정을 구성하고 테스트하세요`,enableAuthFirst:`이메일 기반 기능을 사용하려면 먼저 인증을 활성화하세요.`},success:{settingsSaved:`SMTP 설정이 성공적으로 저장되었습니다`},securityOptions:{starttls:`STARTTLS (포트 587)`,ssl:`SSL/TLS (포트 465)`,none:`없음 (포트 25)`},authOptions:{enabled:`활성화됨`,disabled:`비활성화됨`}},appearance:`모양`,notifications:`알림`,smartPlugs:`스마트 플러그`,spoolman:`Spoolman`,updates:`업데이트`,language:`언어`,languageDescription:`선호하는 언어를 선택하세요`,theme:`테마`,themeLight:`라이트`,themeDark:`다크`,themeSystem:`시스템`,defaultView:`기본 보기`,defaultViewDescription:`앱을 열 때 표시할 페이지`,checkForUpdates:`업데이트 확인`,autoUpdate:`자동 업데이트`,currentVersion:`현재 버전`,latestVersion:`최신 버전`,upToDate:`최신 상태입니다`,updateAvailable:`업데이트 가능`,notificationLanguage:`알림 언어`,notificationLanguageDescription:`푸시 알림 언어`,bedCooledThreshold:`베드 냉각 임계값`,bedCooledThresholdDescription:`인쇄 후 베드가 냉각된 것으로 간주되는 온도`,userNotificationsEnabled:`사용자 알림`,userNotificationsEnabledDescription:`사용자 알림 메뉴 및 인쇄 작업 이벤트에 대한 이메일 알림을 활성화합니다. 고급 인증이 필요합니다.`,userNotificationsDisabledHint:`사용자 알림을 사용하려면 고급 인증을 활성화하세요.`,notificationProviders:`알림 제공자`,addProvider:`제공자 추가`,editProvider:`제공자 편집`,providerType:`제공자 유형`,testNotification:`알림 테스트`,testSuccess:`테스트 알림이 성공적으로 전송되었습니다`,testFailed:`테스트 알림 전송 실패`,quietHours:`방해 금지 시간`,quietHoursDescription:`이 시간 동안 방해하지 않음`,quietHoursStart:`시작`,quietHoursEnd:`종료`,events:{title:`알림 이벤트`,printStart:`인쇄 시작됨`,printComplete:`인쇄 완료됨`,printFailed:`인쇄 실패`,printStopped:`인쇄 정지됨`,printProgress:`진행 마일스톤`,printProgressDescription:`25%, 50%, 75%에 알림`,printerOffline:`프린터 오프라인`,printerError:`프린터 오류`,filamentLow:`필라멘트 부족`,maintenanceDue:`유지보수 예정`,maintenanceDueDescription:`유지보수가 필요할 때 알림`},smartPlug:{title:`스마트 플러그`,add:`스마트 플러그 추가`,edit:`스마트 플러그 편집`,name:`이름`,ipAddress:`IP 주소`,linkedPrinter:`연결된 프린터`,autoOn:`자동 켜기`,autoOnDescription:`인쇄 시작 시 켜기`,autoOff:`자동 끄기`,autoOffDescription:`인쇄 완료 후 끄기`,offDelay:`끄기 지연`,offDelayMinutes:`인쇄 후 분`,offDelayTemp:`노즐 온도 이하일 때`,currentState:`현재 상태`,turnOn:`켜기`,turnOff:`끄기`},filamentTracking:`필라멘트 추적`,filamentTrackingDesc:`필라멘트 스풀을 추적하는 방법을 선택하세요. 내장 인벤토리를 사용하거나 외부 Spoolman 서버에 연결할 수 있습니다.`,autoAddUnknownRfid:`알 수 없는 RFID 스풀 자동 추가`,autoAddUnknownRfidDesc:`알 수 없는 RFID 태그가 있는 스풀이 감지되면 자동으로 인벤토리 항목을 생성합니다. 새 스풀을 미리 수동으로 등록한다면 중복을 피하기 위해 끄세요.`,filamentChecks:`필라멘트 확인`,disableFilamentWarnings:`필라멘트 경고 비활성화`,disableFilamentWarningsDesc:`인쇄 또는 대기열 추가 시 필라멘트 부족 경고 표시 안 함`,preferLowestFilament:`남은 필라멘트가 가장 적은 것 우선`,preferLowestFilamentDesc:`여러 스풀이 일치할 때 남은 필라멘트가 가장 적은 것 사용`,preferLowestFilamentBackupNote:`프린터에서 AMS 필라멘트 백업이 활성화된 경우에만 적용됩니다. 그렇지 않으면 선택한 스풀이 다 떨어졌을 때 두 번째 스풀로 전환할 수 없습니다.`,trackingModeBuiltIn:`내장 인벤토리`,trackingModeBuiltInDesc:`RFID 자동 매칭 및 사용량 추적 포함`,trackingModeSpoolmanDesc:`외부 필라멘트 관리 서버`,builtInFeatureRfid:`AMS의 Bambu Lab RFID 스풀 자동 감지`,builtInFeatureUsage:`인쇄당 필라멘트 소비량 추적`,builtInFeatureCatalog:`스풀, 색상, K 팩터 프로필 관리`,builtInFeatureThirdParty:`서드파티 스풀을 인벤토리 스풀에 할당 가능`,amsSyncButton:`AMS에서 무게 동기화`,amsSyncTitle:`AMS에서 스풀 무게 동기화`,amsSyncMessage:`연결된 프린터의 현재 AMS 잔여% 값으로 모든 인벤토리 스풀 무게를 덮어씁니다. 손상된 무게 데이터를 복구하는 데 사용하세요. 프린터가 온라인이어야 합니다.`,amsSyncing:`동기화 중...`,amsSyncSuccess:`{{synced}}개 스풀 동기화됨, {{skipped}}개 건너뜀`,amsSyncError:`AMS에서 무게 동기화 실패`,spoolmanAmsSyncButton:`AMS에서 Spoolman 무게 동기화`,spoolmanAmsSyncTitle:`AMS에서 Spoolman 스풀 무게 동기화`,spoolmanAmsSyncMessage:`연결된 프린터의 현재 AMS 잔여% 값으로 모든 Spoolman 스풀 무게를 업데이트합니다. 프린터가 온라인이어야 합니다.`,spoolmanAmsSyncing:`동기화 중...`,spoolmanAmsSyncSuccess:`{{synced}}개 스풀 동기화됨, {{skipped}}개 건너뜀`,spoolmanAmsSyncError:`AMS에서 Spoolman 무게 동기화 실패`,spoolmanAmsSyncErrorUnreachable:`Spoolman 무게 동기화 실패 (Spoolman 접근 불가)`,spoolmanAmsSyncErrorNotConfigured:`Spoolman 무게 동기화 실패 (Spoolman 미설정)`,spoolmanNotConfigured:`Spoolman 미설정`,spoolmanFilamentCatalogTitle:`Spoolman 필라멘트 카탈로그`,spoolmanFilamentCatalogDesc:`Spoolman 인스턴스의 필라멘트 이름 및 공 무게. 이름과 스풀 무게는 여기서 편집 가능하며 다른 속성은 Spoolman에서 직접 관리됩니다.`,spoolmanUrl:`Spoolman URL`,spoolmanUrlHint:`Spoolman 서버의 URL (예: http://localhost:7912)`,spoolmanConnected:`연결됨`,spoolmanDisconnected:`연결 끊김`,status:`상태`,connect:`연결`,disconnect:`연결 해제`,howSyncWorks:`동기화 작동 방식`,syncInfoRfidOnly:`RFID가 있는 공식 Bambu Lab 스풀만 동기화됨`,syncInfoAutoCreate:`새 스풀은 첫 번째 동기화 시 Spoolman에 자동 생성됨`,syncInfoThirdPartySkipped:`비 Bambu Lab 스풀 (서드파티, 리필)은 건너뜀`,linkingExistingSpools:`기존 스풀 연결`,linkingExistingSpoolsDesc:`기존 Spoolman 스풀을 AMS에 연결하려면 AMS 슬롯 위에 마우스를 올리고 "Spoolman에 연결"을 클릭하세요.`,syncMode:`동기화 모드`,syncModeAuto:`자동`,syncModeManual:`수동만`,syncModeAutoDesc:`변경이 감지되면 AMS 데이터가 자동으로 동기화됨`,syncModeManualDesc:`수동으로 트리거할 때만 동기화`,syncAmsData:`AMS 데이터 동기화`,syncAmsDataDesc:`프린터 AMS 데이터를 Spoolman에 수동으로 동기화`,allPrinters:`모든 프린터`,noDefaultPrinter:`기본값 없음 (매번 묻기)`,sidebarOrder:`사이드바 순서`,saveThumbnails:`썸네일 저장`,captureFinishPhoto:`완료 사진 캡처`,noPrintersConfigured:`설정된 프린터 없음`,archiveMode:{always:`항상 아카이브 항목 생성`,never:`아카이브 항목 생성 안 함`,ask:`매번 묻기`},checkForUpdatesLabel:`업데이트 확인`,checkPrinterFirmware:`프린터 펌웨어 확인`,includeBetaUpdates:`베타 버전 포함`,includeBetaUpdatesDesc:`업데이트 확인 시 베타 및 사전 릴리스 버전에 대해 알림`,localLogin:{disable:`로컬 사용자명/비밀번호 로그인 비활성화`,disableHint:`활성화하면 SSO 공급자로만 로그인할 수 있습니다. LDAP는 영향을 받지 않습니다. 서버에서 BAMBUDDY_LOCAL_LOGIN=true 를 설정하면 복구 경로가 유지됩니다.`},enableRetry:`재시도 활성화`,homeAssistantDescription:`Home Assistant를 통해 스마트 플러그 제어`,environmentManagedLabel:`(환경 변수 관리)`,autoEnabledViaEnv:`환경 변수를 통해 자동 활성화됨`,urlFromEnvReadOnly:`HA_URL 환경 변수에서 값 설정됨 (읽기 전용)`,tokenFromEnvReadOnly:`HA_TOKEN 환경 변수에서 값 설정됨 (읽기 전용)`,mqttConnectedTo:`연결됨`,prometheusDescription:`Prometheus 형식으로 프린터 데이터 노출`,noSmartPlugsTitle:`설정된 스마트 플러그 없음`,noSmartPlugsDescription:`에너지 사용량 추적 및 전원 제어 자동화를 위해 Tasmota 기반 스마트 플러그를 추가하세요.`,noProvidersTitle:`설정된 제공자 없음`,noProvidersDescription:`알림을 받으려면 제공자를 추가하세요.`,noTemplatesAvailable:`사용 가능한 템플릿 없음. 기본 템플릿을 시드하려면 백엔드를 재시작하세요.`,apiPermissionView:`프린터 상태 및 대기열 보기`,apiPermissionEdit:`인쇄 대기열에서 항목 추가 및 제거`,apiKeysEmptyTitle:`API 키 없음`,apiKeysEmptyDescription:`외부 서비스와 통합하려면 API 키를 만드세요.`,noUsersFound:`사용자를 찾을 수 없습니다`,noGroupsFound:`그룹을 찾을 수 없습니다`,noGroupsAvailable:`사용 가능한 그룹 없음`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,systemGroupWarning:`시스템 그룹 이름은 변경할 수 없습니다`,authDisabledTitle:`인증이 비활성화되어 있습니다`,authDisabledFeature1:`시스템 접근 시 로그인 필요`,authDisabledFeature2:`그룹 기반 권한으로 여러 사용자 생성`,authDisabledFeature3:`50개 이상의 세분화된 권한으로 접근 제어`,userHasCreated:`이 사용자가 만든 항목:`,userItemsQuestion:`이 항목들을 어떻게 처리하시겠습니까?`,deleteUserConfirm:`이 사용자를 삭제하시겠습니까?`,actionCannotBeUndone:`이 작업은 취소할 수 없습니다.`,addFirstSmartPlug:`첫 번째 스마트 플러그 추가`,providers:`제공자`,log:`로그`,testAll:`모두 테스트`,testResults:`테스트 결과`,testPassedCount:`{{count}}개 통과`,testFailedCount:`{{count}}개 실패`,messageTemplates:`메시지 템플릿`,messageTemplatesDescription:`각 이벤트에 대한 알림 메시지를 사용자 지정하세요.`,apiKeys:`API 키`,apiKeysDescription:`외부 통합 및 웹훅을 위한 API 키를 만드세요.`,createKey:`키 만들기`,apiKeyCreated:`API 키가 성공적으로 생성되었습니다`,apiKeyCopyWarning:`지금 이 키를 복사하세요 - 다시 표시되지 않습니다!`,useInApiBrowser:`API 브라우저에서 사용`,apiKeyQrButton:`QR 코드`,apiKeyQrTitle:`스캔하여 설정`,apiKeyQrCaption:`모바일 앱으로 스캔하여 이 서버와 API 키를 추가하세요.`,apiKeyQrWarning:`비밀 API 키가 포함되어 있습니다. 다른 사람이 볼 수 있는 곳에서 공유하거나 스크린샷하지 마세요.`,createNewApiKey:`새 API 키 만들기`,keyName:`키 이름`,keyNamePlaceholder:`예: Home Assistant, OctoPrint`,readStatus:`상태 읽기`,readStatusDescription:`프린터 상태, 대기열, 라이브러리, 아카이브 및 슬라이서 파이프라인 보기`,manageQueue:`대기열 관리`,manageQueueDescription:`인쇄 대기열에서 항목 추가 및 제거. "라이브러리 관리"와 함께 슬라이서 파이프라인 실행`,controlPrinter:`프린터 제어`,controlPrinterDescription:`인쇄 일시정지, 재개, 정지`,manageLibrary:`라이브러리 관리`,manageLibraryDescription:`라이브러리 파일 업로드, 이름 변경, 삭제 및 슬라이스; MakerWorld에서 모델 가져오기. "대기열 관리"와 함께 슬라이서 파이프라인 실행`,manageInventory:`재고 관리`,manageInventoryDescription:`스풀 및 재고 레코드 생성, 업데이트 및 삭제. SpoolBuddy 키오스크(NFC 스캔, 저울 측정값, 키오스크 시스템 명령)에 필요합니다.`,manageMaintenance:`유지보수 관리`,manageMaintenanceDescription:`완료된 유지보수 기록, 카운터 재설정, 주기 편집, 유지보수 유형 카탈로그 관리. 프린터 제어를 더 광범위하게 허용하지 않고 "노즐을 청소했다"를 기록하는 Home Assistant 자동화에 적합합니다.`,manageArchives:`아카이브 관리`,manageArchivesDescription:`오래된 출력물과 통계 기여 항목의 제거를 포함하여 출력 아카이브를 편집하고 삭제합니다. 출력 기록을 정리하는 자동화에 적합합니다.`,manageProjects:`프로젝트 관리`,manageProjectsDescription:`프로젝트를 생성, 업데이트, 삭제하고 프로젝트에 아카이브를 추가합니다. 출력물을 프로젝트로 정리하는 자동화에 적합합니다.`,maintenanceBadge:`유지보수`,archivesBadge:`아카이브`,projectsBadge:`프로젝트`,libraryBadge:`라이브러리`,inventoryBadge:`재고`,cloudAccess:`클라우드 접근 허용`,cloudAccessDescription:`사용자를 대신하여 Bambu Cloud 프리셋 및 필라멘트를 읽습니다. Bambu Cloud에 로그인되어 있어야 합니다.`,cloudBadge:`클라우드`,legacyKey:`레거시`,legacyKeyTooltip:`사용자별 소유권 이전에 생성됨. 클라우드 접근을 사용하려면 재생성하세요`,unnamedKey:`이름 없는 키`,lastUsed:`마지막 사용`,read:`읽기`,control:`제어`,createFirstKey:`첫 번째 키 만들기`,webhookEndpoints:`웹훅 엔드포인트`,webhookApiKeyHint:`X-API-Key 헤더에 API 키를 사용하세요.`,webhook:{getAllStatus:`모든 프린터 상태 가져오기`,getSpecificStatus:`특정 프린터 상태 가져오기`,addToQueue:`인쇄 대기열에 추가`,pausePrint:`인쇄 일시정지`,resumePrint:`인쇄 재개`,stopPrint:`인쇄 정지`},apiBrowser:`API 브라우저`,apiBrowserDescription:`사용 가능한 모든 API 엔드포인트를 탐색하고 테스트하세요.`,apiKeyForTesting:`테스트용 API 키`,apiKeyPlaceholder:`인증된 엔드포인트를 테스트하려면 API 키를 여기에 붙여넣으세요...`,apiKeyHint:`이 키는 요청과 함께 X-API-Key 헤더로 전송됩니다.`,deleteApiKeyTitle:`API 키 삭제`,deleteApiKeyMessage:`이 API 키를 삭제하시겠습니까? 이 키를 사용하는 모든 통합이 작동을 멈춥니다.`,deleteKey:`키 삭제`,amsDisplayThresholds:`AMS 표시 임계값`,amsThresholdsDescription:`AMS 습도 및 온도 표시기의 색상 임계값을 설정하세요.`,humidity:`습도`,goodGreen:`좋음 (녹색)`,fairOrange:`보통 (주황색)`,aboveFairBad:`보통 임계값 초과 시 빨간색 (나쁨)으로 표시`,fairAlsoDryingThreshold:`이 임계값은 자동 건조 활성화 시 트리거로도 사용됨`,fairBelowDryingFloor:`자동 건조로는 이 값에 도달할 수 없습니다. AMS는 히터가 작동하는 동안 {{floor}}% 이상을 보고하므로 각 주기가 끝나고 곧바로 다시 시작됩니다. 자동 건조를 사용한다면 {{floor}}%보다 높게 설정하세요.`,temperature:`온도`,goodBlue:`좋음 (파란색)`,aboveFairHot:`보통 임계값 초과 시 빨간색 (뜨거움)으로 표시`,tempAlarmThreshold:`알림 기준값`,tempAlarmSeparateFromBand:`알림을 보내는 것은 알림 기준값뿐입니다. 좋음과 보통은 표시 색상에만 사용됩니다. 비워 두면 기존과 같이 보통 기준값에서 알립니다.`,tempAlarmMustBePositive:`0 이하의 기준값은 무시되며, 보통 기준값으로 알립니다.`,historyRetention:`기록 보존`,keepSensorHistory:`센서 기록 보존 기간`,historyRetentionDescription:`오래된 습도 및 온도 데이터가 자동으로 삭제됩니다`,defaultPrintOptions:`기본 인쇄 옵션`,defaultPrintOptionsDescription:`새 인쇄 시작 시 기본값을 설정하세요. 인쇄 대화 상자에서 인쇄별로 재정의할 수 있습니다.`,defaultBedLevelling:`베드 레벨링`,defaultBedLevellingDesc:`인쇄 전 자동 베드 레벨링`,defaultFlowCali:`유량 캘리브레이션`,defaultFlowCaliDesc:`압출 유량 캘리브레이션`,defaultVibrationCali:`진동 캘리브레이션`,defaultVibrationCaliDesc:`링잉 아티팩트 감소`,defaultLayerInspect:`첫 번째 층 검사`,defaultLayerInspectDesc:`첫 번째 층 AI 검사`,defaultTimelapse:`타임랩스`,defaultTimelapseDesc:`타임랩스 영상 녹화`,defaultNozzleOffsetCali:`노즐 오프셋 보정`,defaultNozzleOffsetCaliDesc:`익스트루더 간 노즐 오프셋 보정`,tempFanPresetsTitle:`온도 및 팬 프리셋`,tempFanPresetsDescription:`프린터 카드의 온도 및 팬 속도 팝오버에 표시되는 빠른 선택 값을 사용자 지정합니다. 끄기 버튼은 항상 표시됩니다.`,tempFanPresetsNozzle:`노즐 온도`,tempFanPresetsBed:`베드 온도`,tempFanPresetsChamber:`챔버 온도`,tempFanPresetsFan:`팬 속도`,tempFanPresetsReset:`기본값으로 재설정`,concurrentUploadsTitle:`동시 업로드`,concurrentUploadsDescription:`대기열이 동시에 파일을 보낼 수 있는 프린터 수입니다. 프린터는 파일을 느리게 받으며(큰 출력물은 몇 분이 걸릴 수 있습니다) 각 프린터는 자기 차례를 기다립니다. 따라서 프린터가 많은 환경에서는 이 값을 높이면 배치의 마지막 프린터가 앞선 모든 전송이 끝나기를 기다리지 않아도 됩니다. 네트워크나 Bambuddy 호스트가 병렬 전송을 버거워하면 값을 낮추세요.`,concurrentUploadsLabel:`동시에 전송할 프린터 수`,concurrentUploadsHelp:`1이면 한 번에 한 대씩 전송합니다(기존 동작). 기본값은 4입니다.`,staggeredStart:`엇갈린 시작`,staggeredStartDescription:`다중 프린터 일괄 시작 시 기본 그룹 크기 및 간격. 인쇄 모달에서 배치별로 재정의할 수 있습니다.`,preheatTitle:`예열 & 히트 소크`,preheatDescription:`대기열의 각 인쇄가 시작되기 전에 베드(및 지원되는 경우 챔버)를 가열하고 온도를 유지합니다. 챔버 능동 가열이 없는 프린터에서 엔지니어링 필라멘트(PA, ABS) 인쇄에 유용합니다. 소크 타이머가 진행되는 동안 베드 복사열로 챔버가 데워집니다. 베드 목표 온도는 인쇄 파일에서 읽어오며 챔버 동작은 프린터 모델에 따라 다릅니다.`,preheatEnabled:`예열 & 소크 활성화`,preheatEnabledDesc:`꺼짐일 경우 대기열 인쇄가 즉시 시작됩니다. 각 항목은 인쇄별로 재정의할 수 있습니다.`,preheatFilamentTargetsLabel:`필라멘트별 챔버 목표 (°C)`,preheatFilamentTargetsHint:`Bambuddy는 로드된 AMS 슬롯 중 가장 높은 목표를 선택합니다. PLA만 사용하는 인쇄는 0으로 도출되어 챔버 단계를 자동으로 건너뜁니다.`,preheatFilamentTargetsReset:`기본값으로 재설정`,preheatFilamentTargetsDefaultRow:`기타 / 미매핑`,preheatMaxWait:`최대 대기 (초)`,preheatMaxWaitHelp:`소크로 전환되기 전 챔버 가열 단계의 상한.`,preheatSoak:`소크 (초)`,preheatSoakHelp:`목표 도달 또는 최대 대기 경과 후 유지 시간.`,preheatHardwareTitle:`프린터별 동작:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E는 M141으로 챔버를 능동적으로 가열합니다. X1C/P2S는 챔버 온도를 읽지만 베드 복사열로만 가열됩니다. P1S/P1P/A1/A1 Mini는 챔버 센서가 없어 소크 타이머만 적용됩니다.`,preheatPerItemDesc:`이 인쇄가 시작되기 전에 베드와 챔버를 가열합니다. 기본적으로 설정 → 워크플로의 전역 토글을 사용합니다.`,preheatOverride_inherit:`상속`,preheatOverride_on:`켜기`,preheatOverride_off:`끄기`,calibrationMode_off:`끄기`,calibrationMode_on:`켜기`,calibrationMode_auto:`자동`,preheatTargetOverride:`챔버 목표 재정의 (°C, 비우면 필라멘트 기본값)`,plateClear:`플레이트 비움 확인`,requirePlateClear:`플레이트 비움 확인 필요`,requirePlateClearDescription:`활성화하면 스케줄러가 완료된 작업이 있는 프린터에서 대기 중인 인쇄를 시작하기 전에 프린터별 플레이트 비움 확인을 기다립니다.`,keepBedWarm:`출력 사이에 베드 온도 유지`,keepBedWarmDesc:`플레이트 클리어 확인 대기 중에 아래의 온도 유지 값으로 베드를 유지하여 챔버를 따뜻하게 유지합니다. 다음 출력의 베드 온도가 더 높으면 그 값을 사용합니다. 다음 출력에 챔버 가열이 필요한 경우에만 적용됩니다(ASA, ABS, PA, PC 등). 플레이트 클리어 확인이 활성화되어 있어야 합니다.`,keepWarmBedTemp:`온도 유지 시 베드 온도 (°C)`,keepWarmBedTempHelp:`베드로 챔버를 가열해야 할 때 사용됩니다(온도 유지 중, 그리고 출력 파일에 베드 온도가 없는 경우의 예열 시). 출력 파일의 베드 온도가 더 높으면 항상 그 값이 우선합니다.`,keepWarmMaxMinutes:`온도 유지 종료 시간(분)`,keepWarmMaxMinutesHelp:`이 시간 안에 플레이트를 비우지 않으면 히터를 무기한 켜두지 않고 끕니다.`,gcodeInjection:`G코드 주입`,gcodeInjectionDescription:`자동 인쇄 시스템을 위한 인쇄 시작 및/또는 종료 시 주입할 사용자 지정 G코드를 설정하세요.`,gcodeInjectionNoPrinters:`프린터가 없습니다. G코드 스니펫을 설정하려면 프린터를 추가하세요.`,gcodeStartLabel:`시작 G코드`,gcodeEndLabel:`종료 G코드`,gcodeStartPlaceholder:`인쇄 시작 전 앞에 추가되는 G코드...`,gcodeEndPlaceholder:`인쇄 종료 후 뒤에 추가되는 G코드...`,staggerGroupSize:`그룹 크기`,staggerGroupSizeHelp:`그룹당 동시에 시작할 프린터 수`,staggerInterval:`간격 (분)`,staggerIntervalHelp:`각 그룹 시작 사이의 지연`,queueDrying:`대기열 자동 건조`,queueDryingDescription:`대기 중인 인쇄 사이에 프린터가 유휴 상태일 때 AMS 필라멘트를 자동으로 건조합니다.`,queueDryingEnabled:`자동 건조 활성화`,queueDryingEnabledDescription:`프린터가 유휴 상태이고 습도가 임계값 초과 시 자동으로 AMS 건조 시작`,queueDryingBlock:`건조 완료까지 대기`,queueDryingBlockDescription:`건조가 완료될 때까지 인쇄 대기열을 차단합니다. 끄면 인쇄가 건조보다 우선합니다.`,ambientDryingEnabled:`주변 건조`,ambientDryingEnabledDescription:`대기 중인 인쇄가 없어도 습도가 임계값을 초과하면 유휴 프린터에서 자동으로 필라멘트 건조`,printDryingEnabled:`인쇄 중 건조 계속`,printDryingEnabledDescription:`지원되는 하드웨어(H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L 최신 펌웨어)에서 인쇄 중에도 자동 건조를 계속 실행합니다. 스풀 보호를 위해 건조 온도가 유휴 프리셋보다 자동으로 5°C 낮게 제한됩니다.`,dryingPresets:`건조 프리셋`,dryingPresetsDescription:`필라멘트 유형별 온도 및 시간. AMS 2 Pro는 낮은 온도, AMS-HT는 높은 온도를 지원합니다.`,dryingFilament:`필라멘트`,humidityThresholds:`습도 임계값`,humidityThresholdsDescription:`자동 건조 및 알람용 필라멘트 유형별 습도 임계값. 한 AMS에 혼합 적재 시 가장 낮은 값을 사용합니다.`,humidityThresholdCol:`임계값`,humidityThresholdDefault:`기본값 (알 수 없는 유형)`,printModal:`인쇄 모달`,expandCustomMapping:`사용자 지정 매핑 기본 펼침`,expandCustomMappingDescription:`여러 프린터에 인쇄할 때 프린터별 AMS 매핑을 펼친 상태로 표시`,authentication:`인증`,authEnabledDescription:`인스턴스가 사용자 인증으로 보안됨`,authDisabledDescription:`로그인 필요 및 사용자 접근 관리를 위해 활성화`,authDisabledMessage:`사용자 계정 생성, 권한 관리, Bambuddy 인스턴스 보안을 위해 인증을 활성화하세요.`,enableAuthentication:`인증 활성화`,currentUser:`현재 사용자`,changePassword:`비밀번호 변경`,admin:`관리자`,users:`사용자`,addUser:`사용자 추가`,groups:`그룹`,addGroup:`그룹 추가`,system:`시스템`,noDescription:`설명 없음`,userCount:`{{count}}명의 사용자`,permissionCount:`{{count}}개 권한`,createUser:`사용자 만들기`,username:`사용자명`,enterUsername:`사용자명 입력`,password:`비밀번호`,enterPassword:`비밀번호 입력 (최소 6자)`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호 확인`,viewReleaseOnGitHub:`GitHub에서 릴리스 보기`,turnAllPlugsOn:`모든 플러그 켜기`,turnAllPlugsOff:`모든 플러그 끄기`,clearNotificationLogs:`알림 로그 지우기`,clearLogsMessage:`30일보다 오래된 모든 알림 로그를 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.`,clearLogs:`로그 지우기`,resetUiPreferences:`UI 기본 설정 초기화`,resetUiPreferencesMessage:`모든 UI 기본 설정을 기본값으로 초기화합니다: 사이드바 순서, 테마, 대시보드 레이아웃, 보기 모드, 정렬 기본 설정. 프린터, 아카이브, 서버 설정은 영향받지 않습니다. 지운 후 페이지가 새로고침됩니다.`,resetPreferences:`기본 설정 초기화`,deleteGroupTitle:`그룹 삭제`,deleteGroupMessage:`이 그룹을 삭제하시겠습니까? 이 그룹의 사용자는 이 권한을 잃게 됩니다.`,deleteGroup:`그룹 삭제`,disableAuthenticationTitle:`인증 비활성화`,disableAuthenticationMessage:`인증을 비활성화하시겠습니까? 이렇게 하면 로그인 없이 Bambuddy 인스턴스에 접근할 수 있게 됩니다. 모든 사용자는 데이터베이스에 유지되지만 인증은 비활성화됩니다.`,disableAuthentication:`인증 비활성화`,configureBambuddy:`Bambuddy 설정`,systemDefault:`시스템 기본값`,archiveSettings:`아카이브 설정`,newWindow:`새 창`,embeddedOverlay:`내장 오버레이`,preferredSlicer:`선호하는 슬라이서`,preferredSlicerDescription:`API 사이드카를 통한 앱 내 슬라이싱에 사용되는 슬라이서`,openInSlicerLabel:`슬라이서에서 열기`,openInSlicerInherit:`API 슬라이서와 동일`,openInSlicerDescription:`'슬라이서에서 열기' 버튼이 사용하는 데스크톱 슬라이서입니다. 'API 슬라이서와 동일'로 두어 상속하거나 로컬에서 사용할 다른 슬라이서를 선택하세요.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev에는 Bambu 제작 3MF 파일 슬라이싱을 차단하는 알려진 CLI 버그가 있습니다. 업스트림 수정이 출시될 때까지 Bambu Studio를 사용하는 것이 좋습니다.`,useSlicerApi:`슬라이서 API 사용`,useSlicerApiDescription:`켜면 "슬라이스" 작업이 앱 내 슬라이서 모달을 열고 슬라이서 API 사이드카를 호출합니다. 끄면 URI 스킴을 통해 데스크톱 슬라이서로 전달합니다.`,slicerCard:`슬라이서`,orcaslicerApiUrl:`OrcaSlicer 사이드카 URL`,bambuStudioApiUrl:`Bambu Studio 사이드카 URL`,slicerStallTimeout:`슬라이서 정지 시간 제한(분)`,slicerStallTimeoutDescription:`사이드카에서 이 시간 동안 진행 상황이 없으면 슬라이싱을 중단합니다. 진행 상황을 계속 보고하는 무거운 모델은 아무리 오래 걸려도 중단되지 않습니다. 진행 상황을 보고하지 않는 사이드카에서는 이 값이 전체 시간 제한으로 사용됩니다.`,slicerApiUrlDescription:`슬라이서 API 사이드카 컨테이너의 URL. SLICER_API_URL / BAMBU_STUDIO_API_URL 환경 변수 기본값을 사용하려면 비워두세요.`,externalCameras:`외부 카메라`,costTracking:`비용 추적`,billingEnabled:`결제 기능 사용`,billingEnabledDescription:`사용자에게 인쇄 비용을 청구하고 재무 기능을 사용합니다`,printerKillSwitch:`무단 인쇄 자동 중지`,printerKillSwitchDescription:`승인 없이 시작된 인쇄를 즉시 중지합니다.`,financeBudgetReset:`월별 재무 예산 초기화`,financeBudgetResetDay:`초기화 날짜`,financeBudgetResetDayHelp:`해당 날짜가 없는 짧은 달에는 그 달의 마지막 날에 초기화합니다.`,financeBudgetResetTimezone:`초기화 시간대`,financeBudgetResetTimezoneHelp:`예산 기간의 시작은 이 시간대를 기준으로 계산됩니다.`,rebuildLedger:`지갑 원장 재구성`,rebuildLedgerStarted:`원장 재구성을 시작했습니다`,rebuildLedgerConfirmTitle:`지갑 원장을 재구성하시겠습니까?`,rebuildLedgerConfirmMessage:`과거 잔액 값을 복구하기 위해 지갑 원장을 재구성합니다. 수행 내용을 정확히 아는 경우에만 실행하세요.`,rebuildLedgerInProgress:`재구성 시작 중...`,printsOnly:`인쇄만`,totalConsumption:`총 소비`,dataManagement:`데이터 관리`,storageUsage:`저장소 사용량`,storageUsageDescription:`카테고리별 데이터 사용량 분류`,storageUsageTotal:`총계`,storageUsageErrors:`오류`,storageUsageOtherBreakdown:`기타 (정적 자산, 스크립트, 구성 파일 포함)`,storageUsageSystem:`시스템`,storageUsageData:`데이터`,storageUsageUnavailable:`저장소 사용량 정보 불가`,clearNotificationLogsDescription:`30일보다 오래된 알림 로그 삭제`,resetUiPreferencesDescription:`사이드바 순서, 테마, 보기 모드, 레이아웃 기본 설정 초기화. 프린터, 아카이브, 설정은 영향받지 않습니다.`,enableHomeAssistant:`Home Assistant 활성화`,enableMqtt:`MQTT 활성화`,useTls:`TLS 사용`,enableMetricsEndpoint:`메트릭 엔드포인트 활성화`,availableMetrics:`사용 가능한 메트릭`,editUser:`사용자 편집`,deleteUserTitle:`사용자 삭제`,groupName:`그룹 이름`,leaveEmptyForAnonymous:`익명으로 두려면 비워두세요`,leaveEmptyForNoAuth:`인증 없이 두려면 비워두세요`,enterNewPassword:`새 비밀번호 입력`,confirmNewPassword:`새 비밀번호 확인`,enterGroupName:`그룹 이름 입력`,enterDescriptionOptional:`설명 입력 (선택사항)`,enterCurrentPassword:`현재 비밀번호 입력`,enterNewPasswordMin6:`새 비밀번호 입력 (최소 6자)`,toast:{keyCopied:`키가 클립보드에 복사되었습니다`,copyFailed:`키 복사 실패`,keyAddedToBrowser:`API 브라우저에 키가 추가되었습니다`,clearLogsFailed:`로그 지우기 실패`,uiPreferencesReset:`UI 기본 설정이 초기화되었습니다. 새로고침 중...`,authDisabled:`인증이 성공적으로 비활성화되었습니다`,authDisableFailed:`인증 비활성화 실패`,apiKeyCreated:`API 키가 생성되었습니다`,apiKeyDeleted:`API 키가 삭제되었습니다`,userCreated:`사용자가 성공적으로 생성되었습니다`,userUpdated:`사용자가 성공적으로 업데이트되었습니다`,userDeleted:`사용자가 성공적으로 삭제되었습니다`,groupCreated:`그룹이 성공적으로 생성되었습니다`,groupUpdated:`그룹이 성공적으로 업데이트되었습니다`,groupDeleted:`그룹이 성공적으로 삭제되었습니다`,fillRequiredFields:`모든 필수 항목을 입력하세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`,enterGroupName:`그룹 이름을 입력하세요`,settingsSaved:`설정이 저장되었습니다`,noPermissionUpdate:`설정을 변경할 권한이 없습니다`,cameraSettingsSaved:`카메라 설정이 저장되었습니다`,enterCameraUrl:`카메라 URL을 입력하세요`,passwordChanged:`비밀번호가 성공적으로 변경되었습니다`,connectionFailed:`연결 실패`,testFailed:`테스트 실패`,cameraConnected:`카메라 연결됨{{resolution}}`,cameraConnectedCoalesced:`카메라 연결됨{{resolution}} (이미 진행 중인 캡처와 공유됨)`,passwordNeedsUppercase:`비밀번호에 대문자가 최소 1개 포함되어야 합니다`,passwordNeedsLowercase:`비밀번호에 소문자가 최소 1개 포함되어야 합니다`,passwordNeedsDigit:`비밀번호에 숫자가 최소 1개 포함되어야 합니다`,passwordNeedsSpecial:`비밀번호에 특수문자가 최소 1개 포함되어야 합니다`},testConnection:`연결 테스트`,catalog:{spoolCatalog:`스풀 카탈로그`,spoolCatalogDescription:`브랜드/유형별 빈 스풀 무게. 스풀 추가 시 자동 무게 조회에 사용됩니다.`,searchCatalog:`카탈로그 검색...`,addNewEntry:`새 항목 추가`,namePlaceholder:`이름 (예: Bambu Lab - Plastic)`,weight:`무게`,type:`유형`,default:`기본`,custom:`사용자 지정`,noMatch:`검색에 일치하는 항목 없음`,empty:`카탈로그에 항목 없음`,deleteEntry:`항목 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,resetCatalog:`카탈로그 초기화`,resetConfirm:`카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 항목이 제거됩니다.`,loadFailed:`스풀 카탈로그 로드 실패`,nameWeightRequired:`이름과 무게가 필요합니다`,entryAdded:`항목이 추가되었습니다`,addFailed:`항목 추가 실패`,entryUpdated:`항목이 업데이트되었습니다`,updateFailed:`항목 업데이트 실패`,entryDeleted:`항목이 삭제되었습니다`,deleteFailed:`항목 삭제 실패`,resetSuccess:`카탈로그가 기본값으로 초기화되었습니다`,resetFailed:`카탈로그 초기화 실패`,exported:`{{count}}개 항목이 내보내졌습니다`,imported:`{{added}}개 항목 가져옴 ({{skipped}}개 건너뜀)`,importFailed:`가져오기 실패: 잘못된 JSON 형식`,exportTooltip:`JSON으로 카탈로그 내보내기`,importTooltip:`JSON에서 카탈로그 가져오기`,resetTooltip:`기본값으로 초기화`,selectedCount:`{{count}}개 선택됨`,deleteSelected:`선택 항목 삭제`,bulkDeleteConfirm:`{{count}}개 항목을 삭제하시겠습니까?`,bulkDeleted:`{{count}}개 항목이 삭제되었습니다`,bulkDeleteFailed:`항목 삭제 실패`,material:`재료`,spoolWeight:`스풀 무게`,color:`색상`,updateSpoolWeight:`스풀 무게 업데이트`,filamentUpdated:`필라멘트가 업데이트되었습니다`,filamentUpdateFailed:`필라멘트 업데이트 실패`,filamentUpdateInvalid:`잘못된 필라멘트 데이터`,keepExistingSpoolWeight:`기존 스풀에 이전 무게 유지`,keepExistingSpoolWeightDesc:`이 필라멘트 유형으로 이미 생성된 스풀은 이전 공 무게를 유지합니다. 새 스풀은 업데이트된 값을 사용합니다.`,applyToAllSpools:`모든 스풀에 적용`,applyToAllSpoolsDesc:`이 필라멘트 유형의 모든 무게 계산이 즉시 새 공 무게를 사용합니다.`},colorCatalog:{title:`색상 카탈로그`,description:`제조사/재료별 필라멘트 색상. 스풀 추가 시 자동 색상 조회에 사용됩니다.`,searchColors:`색상 검색...`,allManufacturers:`모든 제조사`,addNewColor:`새 색상 추가`,manufacturer:`제조사`,colorName:`색상 이름`,hex:`헥스`,materialOptional:`재료 (선택사항)`,showing:`{{total}}개 중 {{filtered}}개 색상 표시`,noMatch:`검색에 일치하는 색상 없음`,empty:`카탈로그에 색상 없음`,deleteColor:`색상 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,resetCatalog:`색상 카탈로그 초기화`,resetConfirm:`카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 색상이 제거됩니다.`,sync:`동기화`,starting:`시작 중...`,syncTooltip:`FilamentColors.xyz에서 동기화 (2000개 이상 색상, 약 1분 소요)`,loadFailed:`색상 카탈로그 로드 실패`,fieldsRequired:`제조사, 색상 이름, 헥스 색상이 필요합니다`,colorAdded:`색상이 추가되었습니다`,addFailed:`색상 추가 실패`,colorUpdated:`색상이 업데이트되었습니다`,updateFailed:`색상 업데이트 실패`,colorDeleted:`색상이 삭제되었습니다`,deleteFailed:`색상 삭제 실패`,resetSuccess:`색상 카탈로그가 기본값으로 초기화되었습니다`,resetFailed:`카탈로그 초기화 실패`,syncUpToDate:`이미 최신 상태 ({{count}}개 색상 확인됨)`,syncComplete:`{{added}}개 새 색상 추가됨 ({{skipped}}개 이미 존재)`,syncError:`동기화 오류`,syncFailed:`FilamentColors.xyz에서 동기화 실패`,exported:`{{count}}개 색상이 내보내졌습니다`,imported:`{{added}}개 색상 가져옴 ({{skipped}}개 건너뜀)`,importFailed:`가져오기 실패: 잘못된 JSON 형식`,selectedCount:`{{count}}개 선택됨`,deleteSelected:`선택 항목 삭제`,bulkDeleteConfirm:`{{count}}개 색상을 삭제하시겠습니까?`,bulkDeleted:`{{count}}개 색상이 삭제되었습니다`,bulkDeleteFailed:`색상 삭제 실패`},dateFormat:`날짜 형식`,dateFormatUs:`미국 (MM/DD/YYYY)`,dateFormatEu:`유럽 (DD/MM/YYYY)`,dateFormatIso:`ISO (YYYY-MM-DD)`,timeFormat:`시간 형식`,timeFormat12:`12시간 (오후 3:30)`,timeFormat24:`24시간 (15:30)`,defaultPrinter:`기본 프린터`,defaultPrinterDescription:`업로드, 재인쇄 등 작업에서 이 프린터를 미리 선택합니다.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`사이드바 레이아웃에서 항목 순서를 변경하고, 표시 상태를 초기화하고, 사용자 지정 링크를 관리하세요.`,setDefault:`기본값 설정`,sidebarOrderSetDefaultHint:`기본값 설정은 현재 메뉴 순서를 사용자 지정하지 않은 사용자에게 적용합니다.`,sidebarDefaultSet:`기본 메뉴 순서가 설정되었습니다.`,sidebarDefaultCleared:`기본 메뉴 순서가 지워졌습니다.`,sidebarDefaultFailed:`기본 메뉴 순서 설정 실패.`,reset:`초기화`,darkMode:`다크 모드`,lightMode:`라이트 모드`,active:`(활성)`,background:`배경`,accent:`강조`,style:`스타일`,bgNeutral:`중립`,bgWarm:`따뜻함`,bgCool:`시원함`,bgOled:`OLED 블랙`,bgSlate:`슬레이트 블루`,bgForest:`포레스트 그린`,accentGreen:`그린`,accentTeal:`틸`,accentBlue:`블루`,accentOrange:`오렌지`,accentPurple:`퍼플`,accentRed:`레드`,styleClassic:`클래식`,styleGlow:`글로우`,styleVibrant:`비브런트`,themeToggleHint:`사이드바의 태양/달 아이콘으로 다크 모드와 라이트 모드를 전환하세요.`,progressInTitle:`탭에 인쇄 진행률 표시`,progressInTitleDescription:`브라우저 탭에 진행 중인 인쇄의 백분율과 진행 링을 표시합니다.`,autoArchivePrints:`인쇄 자동 아카이브`,autoArchiveDescription:`인쇄 완료 시 3MF 파일 자동 저장`,saveThumbnailsDescription:`3MF 파일에서 미리보기 이미지 추출 및 저장`,captureFinishPhotoDescription:`인쇄 완료 시 프린터 카메라로 사진 촬영. Bambuddy는 인쇄 중 짧은 타임랩스를 기록하여 베드가 내려가기 전 순간에서 사진을 가져올 수 있도록 합니다. 이 인쇄에 대해 타임랩스를 활성화한 경우 타임랩스 파일이 보관되며, 그렇지 않으면 사진 촬영 후 자동으로 삭제됩니다.`,finishPhotoRestorePlate:`완료 사진을 위해 베드 올리기`,finishPhotoRestorePlateDescription:`프린터는 인쇄가 끝나면 베드를 약 100 mm 내리므로 완성된 출력물이 카메라 화각 아래에 놓입니다. Bambuddy는 베드를 마지막 인쇄 레이어 바로 위까지 다시 올려 사진을 찍은 뒤 다시 내립니다. 출력 높이를 알 수 없거나 다른 작업이 대기 중이면 건너뜁니다.`,ffmpegNotInstalled:`ffmpeg 미설치`,ffmpegRequired:`카메라 캡처에 ffmpeg가 필요합니다. macOS에서는 brew install ffmpeg, Linux에서는 apt install ffmpeg로 설치하세요.`,camera:`카메라`,cameraViewMode:`카메라 보기 모드`,cameraOverlayDescription:`카메라가 메인 화면의 크기 조절 가능한 오버레이에서 열립니다`,cameraWindowDescription:`카메라가 별도의 브라우저 창에서 열립니다`,externalCamerasDescription:`내장 프린터 카메라를 교체할 외부 카메라를 설정하세요. MJPEG 스트림, RTSP, HTTP 스냅샷, USB 카메라(V4L2)를 지원합니다.`,cameraPlaceholderUsb:`장치 경로 (/dev/video0)`,cameraPlaceholderUrl:`카메라 URL (rtsp://... 또는 http://...)`,cameraTypeMjpeg:`MJPEG 스트림`,cameraTypeRtsp:`RTSP 스트림`,cameraTypeSnapshot:`HTTP 스냅샷`,cameraTypeUsb:`USB 카메라 (V4L2)`,cameraSnapshotUrl:`스냅샷 URL (선택사항)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`알림 썸네일, 완료 사진, 타임랩스, 플레이트 감지에 사용되는 단일 프레임 URL.`,cameraRotation:`회전`,test:`테스트`,connected:`연결됨`,disconnected:`연결 끊김`,currency:`통화`,defaultFilamentCost:`기본 필라멘트 비용 (kg당)`,electricityCost:`kWh당 전기 비용`,energyDisplayMode:`에너지 표시 모드`,energyModePrintDescription:`대시보드가 인쇄 중 사용된 에너지 합계를 표시`,energyModeTotalDescription:`대시보드가 스마트 플러그의 전체 에너지를 표시`,fileManager:`파일 관리자`,createArchiveEntry:`인쇄 시 아카이브 항목 생성`,createArchiveEntryDescription:`파일 관리자에서 인쇄할 때 선택적으로 아카이브 항목 생성`,lowDiskSpaceWarning:`디스크 공간 부족 경고`,lowDiskSpaceDescription:`여유 디스크 공간이 이 임계값 아래로 떨어지면 경고 표시`,printerFirmware:`프린터 펌웨어`,checkFirmwareDescription:`Bambu Lab의 프린터 펌웨어 업데이트 확인`,bambuddySoftware:`Bambuddy 소프트웨어`,autoCheckDescription:`시작 시 자동으로 새 버전 확인`,checkNow:`지금 확인`,updateAvailableVersion:`업데이트 가능: v{{version}}`,releaseNotes:`릴리스 노트`,updateViaDocker:`Docker Compose로 업데이트:`,composeDirectory:`Compose 디렉터리`,composeDirectoryHint:`docker-compose.yml이 있는 디렉터리입니다. 비워 두면 cd를 생략합니다.`,copyUpdateCommand:`업데이트 명령 복사`,updateViaHomeAssistant:`업데이트는 Home Assistant 수퍼바이저에서 관리됩니다. Home Assistant에서 설정 → 애드온 → Bambuddy를 열어 새 버전을 설치하세요.`,updateViaWindowsInstaller:`Windows 설치본은 설치 프로그램을 다시 실행하여 업데이트합니다. 아래에서 새 버전을 다운로드하세요 — 데이터, 설정 및 프린터는 유지됩니다.`,downloadWindowsInstaller:`v{{version}} 설치 프로그램 다운로드`,installUpdate:`업데이트 설치`,latestVersionRunning:`최신 버전을 실행 중입니다`,failedToCheckUpdates:`업데이트 확인 실패: {{error}}`,backupRestore:`백업 및 복원`,backupRestoreDescription:`설정 내보내기/가져오기 및 GitHub 백업 설정`,goToBackup:`백업으로 이동`,externalUrl:`외부 URL`,externalUrlDescription:`Bambuddy에 접근할 수 있는 외부 URL. 알림 이미지 및 외부 통합에 사용됩니다.`,bambuddyUrl:`Bambuddy URL`,externalUrlHint:`프로토콜과 포트를 포함하세요 (예: http://192.168.1.100:8000)`,ftpRetry:`FTP 재시도`,ftpRetryDescription:`프린터 WiFi가 불안정할 때 FTP 작업을 재시도합니다.`,autoRetryDescription:`실패한 FTP 작업 자동 재시도`,retryAttempts:`재시도 횟수`,retryDelay:`재시도 지연`,connectionTimeout:`연결 제한 시간`,time_one:`{{count}}번`,time_other:`{{count}}번`,second_one:`{{count}}초`,second_other:`{{count}}초`,nSeconds:`{{count}}초`,increaseForWeakWifi:`WiFi가 약한 프린터에서 늘리세요`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Home Assistant의 REST API를 통해 스마트 플러그를 제어하려면 연결하세요.`,homeAssistantUrl:`Home Assistant URL`,longLivedAccessToken:`장기 액세스 토큰`,haTokenHint:`HA에서 토큰 생성: 프로필 → 장기 액세스 토큰 → 토큰 생성`,connectionSuccessful:`연결 성공`,connectionFailed:`연결 실패`,haConnectionSuccess:`Home Assistant에 성공적으로 연결되었습니다.`,haConnectionFailed:`Home Assistant 연결 실패.`,mqttPublishing:`MQTT 게시`,mqttDescription:`Node-RED, Home Assistant 등 자동화 시스템과 통합하기 위해 Bambuddy 이벤트를 외부 MQTT 브로커에 게시하세요.`,mqttEnableDescription:`외부 MQTT 브로커에 이벤트 게시`,brokerHostname:`브로커 호스트명`,port:`포트`,usernameOptional:`사용자명 (선택사항)`,passwordOptional:`비밀번호 (선택사항)`,topicPrefix:`토픽 접두사`,topicPrefixHint:`토픽은 다음과 같습니다: {{prefix}}/printers//status 등`,prometheusMetrics:`Prometheus 메트릭`,prometheusEndpointDescription:`Prometheus/Grafana 모니터링을 위해 /api/v1/metrics에서 프린터 메트릭을 노출합니다.`,bearerTokenOptional:`베어러 토큰 (선택사항)`,bearerTokenHint:`설정하면 요청에 Authorization: Bearer 을 포함해야 합니다`,metricsConnectionStatus:`연결 상태`,metricsPrinterState:`프린터 상태 (유휴/인쇄 중/등)`,metricsPrintProgress:`인쇄 진행 0-100%`,metricsBedTemp:`베드 온도`,metricsNozzleTemp:`노즐 온도`,metricsPrintsTotal:`결과별 총 인쇄 수`,metricsMore:`...및 더 많은 것 (레이어, 팬, 대기열, 필라멘트 사용량)`,smartPlugsDescription:`에너지 사용량 추적 및 프린터 전원 제어를 자동화하기 위해 스마트 플러그(Tasmota 또는 Home Assistant)를 연결하세요.`,allOn:`모두 켜기`,allOff:`모두 끄기`,addSmartPlug:`스마트 플러그 추가`,energySummary:`에너지 요약`,currentPower:`현재 전력`,plugsOnline:`{{reachable}}/{{total}}개 플러그 온라인`,today:`오늘`,yesterday:`어제`,total:`총계`,enablePlugsForSummary:`에너지 요약을 보려면 플러그를 활성화하세요`,addNotificationProvider:`추가`,systemBadge:`(시스템)`,creating:`생성 중...`,changing:`변경 중...`,deleteUserAndItems:`사용자 및 항목 삭제`,deleteUserKeepItems:`사용자 삭제, 항목 유지 (소유자 없음)`,ok:`확인`,twoFa:{totpTitle:`인증 앱 (TOTP)`,totpDesc:`Google Authenticator, Aegis, Authy 같은 인증 앱을 사용하세요.`,emailOtpTitle:`이메일 OTP`,emailOtpDesc:`로그인 시 {{email}}로 일회용 코드를 전송합니다.`,emailOtpNoEmail:`이 방법을 활성화하려면 계정에 이메일 주소를 추가하세요.`,addEmailFirst:`계정에 이메일 주소가 없습니다. 이메일 OTP를 활성화하기 전에 관리자에게 추가를 요청하세요.`,setupTotp:`인증 앱 설정`,setupAuthApp:`인증 앱 설정`,setupInstructions:`아래 QR 코드를 인증 앱으로 스캔한 후 코드로 확인하세요.`,manualEntry:`스캔할 수 없나요? 이 비밀을 수동으로 입력하세요:`,scannedContinue:`코드를 스캔했습니다 — 계속`,enterCodeToConfirm:`인증 앱의 6자리 코드를 입력하여 설정을 확인하세요.`,activate:`활성화`,disableTotp:`인증기 비활성화`,disableConfirmHint:`인증기를 비활성화하려면 유효한 TOTP 코드나 백업 코드를 입력하세요.`,totpDisabled:`인증 앱이 비활성화되었습니다.`,emailOtpEnabled:`이메일 OTP가 활성화되었습니다.`,emailOtpDisabled:`이메일 OTP가 비활성화되었습니다.`,smtpRequired:`먼저 SMTP 설정을 구성하고 테스트하세요.`,invalidCode:`잘못된 코드입니다. 다시 시도하세요.`,enableEmailOtp:`이메일 OTP 활성화`,disableEmailOtp:`이메일 OTP 비활성화`,emailSetupEnterCode:`이메일 주소로 인증 코드가 전송되었습니다. 아래에 입력하여 이 받은 편지함을 소유하고 있음을 확인하세요.`,verifyAndEnable:`확인 및 활성화`,emailDisablePasswordHint:`이메일 OTP 비활성화를 확인하려면 계정 비밀번호를 입력하세요.`,passwordPlaceholder:`비밀번호 입력`,backupCodesTitle:`백업 코드 저장`,backupCodesWarning:`이 코드를 안전한 곳에 저장하세요. 각 코드는 한 번만 사용할 수 있으며 다시 표시되지 않습니다.`,backupCodesRemaining:`{{count}}개 백업 코드 남음`,savedCodes:`코드를 저장했습니다`,regenBackup:`백업 코드 재생성`,regenBackupHint:`현재 TOTP 코드를 입력하여 10개의 새 백업 코드를 생성하세요. 기존 백업 코드는 모두 무효화됩니다.`,newBackupCodes:`새 백업 코드`,linkedAccounts:`연결된 SSO 계정`,linkedAccountsDesc:`이 외부 ID 제공자가 계정에 연결되어 있습니다.`,oidcUnlinked:`계정 연결이 해제되었습니다.`},sessionPolicy:{title:`세션 정책`,description:`신규 사용자 로그인의 최대 세션 수명입니다. 이미 발급된 토큰은 원래 만료 시간을 유지합니다.`,preset24h:`24시간`,preset7d:`7일`,preset30d:`30일`,customHoursLabel:`사용자 지정 세션 수명(시간)`,hoursSuffix:`시간`,warning:`세션이 길어질수록 자동 로그아웃 보호가 약해집니다. 신뢰할 수 있는 단일 사용자 배포에서만 권장됩니다.`},oidc:{title:`SSO / OIDC 제공자`,desc:`외부 ID 제공자를 통해 싱글 사인온을 허용하도록 OpenID Connect 제공자를 설정하세요.`,addProvider:`제공자 추가`,newProvider:`새 제공자`,empty:`아직 설정된 OIDC 제공자가 없습니다.`,created:`제공자가 생성되었습니다.`,updated:`제공자가 업데이트되었습니다.`,deleted:`제공자가 삭제되었습니다.`,deleteTitle:`제공자 삭제`,deleteMessage:`"{{name}}"을(를) 삭제하시겠습니까? 연결된 모든 사용자 계정의 연결이 해제됩니다.`,form:{name:`표시 이름`,issuerUrl:`발급자 URL`,clientId:`클라이언트 ID`,clientSecret:`클라이언트 시크릿`,scopes:`범위`,iconUrl:`아이콘 URL (선택사항)`,enabled:`활성화됨`,autoCreate:`사용자 자동 생성`,autoCreateDesc:`첫 번째 로그인 시 자동으로 로컬 계정 생성.`,autoLink:`기존 계정 자동 연결`,autoLinkDesc:`첫 번째 로그인 시 이메일 일치로 기존 로컬 계정 연결.`,secretHint:`현재 값을 유지하려면 비워두세요`,secretPlaceholder:`새 시크릿`,emailClaim:`이메일 클레임`,emailClaimDesc:`이메일 ID로 사용되는 JWT 클레임.`,emailClaimPlaceholder:`email`,emailClaimCustomClaimAutoLinkWarning:`사용자 지정 클레임은 값이 테넌트 관리인 경우에만 자동 연결에 안전합니다. IdP가 사용자가 이 클레임을 직접 주장할 수 있게 하면 자동 연결을 활성화하지 마세요.`,requireEmailVerified:`이메일 확인 필요`,requireEmailVerifiedDesc:`제공자가 확인된 것으로 표시한 경우에만 이메일 클레임을 수락합니다.`,requireEmailVerifiedWarning:`경고: 확인 없이도 이메일이 수락됩니다. 신뢰할 수 있는 제공자에만 사용하세요.`,requireEmailVerifiedAutoLink:`이 설정을 변경하려면 먼저 자동 연결을 비활성화하세요.`,defaultGroup:`기본 그룹`,defaultGroupDesc:`자동 생성된 사용자에게 할당되는 그룹. 설정되지 않으면 Viewers로 대체됩니다.`,defaultGroupViewersFallback:`Viewers (기본값)`,autologin:`자동 로그인`,autologinDesc:`인증되지 않은 방문자를 이 공급자로 바로 리디렉션합니다. 이 플래그를 가질 수 있는 공급자는 하나뿐입니다.`},refreshIcon:`아이콘 새로고침`,removeIcon:`아이콘 제거`,iconRefreshed:`아이콘이 새로고침되었습니다.`,iconRemoved:`아이콘이 제거되었습니다.`,iconFetchFailed:`공급자 URL에서 아이콘을 가져올 수 없습니다.`},encryption:{title:`MFA 암호화 상태`,enabledFromEnv:`저장 시 암호화 활성화됨 (MFA_ENCRYPTION_KEY 환경 변수에서 키)`,enabledFromFile:`저장 시 암호화 활성화됨 (데이터 디렉토리에서 키 로드됨)`,enabledGenerated:`자동 생성된 키로 저장 시 암호화 활성화됨`,notConfigured:`저장 시 암호화가 설정되지 않음`,notConfiguredDesc:`TOTP 시크릿 및 OIDC client_secret이 일반 텍스트로 저장됩니다. MFA_ENCRYPTION_KEY를 설정하거나 쓰기 가능한 데이터 디렉토리로 Bambuddy를 재시작하여 자동 생성하세요.`,allEncrypted:`모든 MFA 시크릿이 저장 시 암호화되어 있습니다.`,legacyRowsLabel:`레거시 일반 텍스트 행`,encryptedRowsLabel:`암호화된 행`,legacyRowsWarning:`{{count}}개 레거시 일반 텍스트 행이 감지되었습니다. 암호화된 저장소로 마이그레이션하려면 OIDC 제공자를 다시 저장하거나 사용자의 인증 앱을 재등록하세요.`,backupHint:`자동 생성된 키는 DATA_DIR/.mfa_encryption_key에 저장되며 로컬 백업 ZIP에 포함됩니다. 백업을 안전하게 보관하거나 MFA_ENCRYPTION_KEY를 명시적으로 설정하세요.`,decryptionBrokenTitle:`암호화 키 누락`,decryptionBrokenError:`암호화 키를 더 이상 사용할 수 없어 {{count}}개의 암호화된 레코드를 복호화할 수 없습니다.`,migrationErrorWarning:`시작 시 {{count}}개 레거시 행을 재암호화하지 못했습니다. 서버 로그를 확인하고 Bambuddy를 재시작하여 재시도하세요.`},updateEnergyCost:`전기 요금 업데이트`,updateEnergyCostDescription:`이 키가 /settings/electricity-price에 새 kWh당 전기 요금을 POST할 수 있도록 허용합니다. Home Assistant 동적 요금 자동화(Tibber, Octopus 등)에 유용합니다. API 키로 쓸 수 있는 유일한 설정 필드입니다.`,energyCostBadge:`에너지`,passwordRequirements:`최소 8자, 대문자, 소문자, 숫자, 특수문자 각 1개 이상 포함`,pipelineLimits:{title:`슬라이서 파이프라인 한도`,maxCopiesLabel:`실행당 최대 사본 수`,maxCopiesDesc:`운영자가 파이프라인 실행 시 요청할 수 있는 사본 수의 상한. 서버 측 절대 상한은 1000입니다.`},pipelines:{title:`슬라이서 파이프라인`,subtitle:`재사용 가능한 프리셋 묶음(프린터 + 프로세스 + 필라멘트 + 베드 유형). 슬라이스 대화상자에서 저장한 후 다음 파일에 한 번의 클릭으로 적용하세요.`,loading:`파이프라인 불러오는 중…`,loadError:`파이프라인을 불러오지 못했습니다.`,confirmDelete:`이 파이프라인을 삭제하시겠습니까? 되돌릴 수 없습니다.`,staleWarning:`참조된 프리셋이 더 이상 존재하지 않습니다. 슬라이스 대화상자에서 이 파이프라인을 다시 저장하여 수정하세요.`,empty:{title:`아직 파이프라인이 없습니다.`,howto:`임의의 파일에서 슬라이스 대화상자를 열고 프린터 / 프로세스 / 필라멘트 / 베드를 선택한 다음 "파이프라인으로 저장"을 클릭하세요. 저장된 파이프라인이 여기에 표시됩니다.`},field:{name:`파이프라인 이름`,description:`설명`,targetPrinter:`대상 프린터`,noTarget:`— 대상 없음 —`,targetKind:`대상 유형`,targetKindSpecific:`특정 프린터`,targetKindClass:`프린터 클래스`,targetModelClass:`프린터 모델`,fanoutStrategy:`분산 전략`,fanout:{max_parallel:`최대 병렬 — 일치하는 유휴 프린터에 분산`,round_robin:`라운드 로빈 — 적격 프린터를 순환`,fill_one_first:`하나 먼저 채우기 — 모든 사본을 한 프린터에 고정`},fanoutShort:{max_parallel:`병렬`,round_robin:`라운드 로빈`,fill_one_first:`하나 먼저`}},action:{save:`저장`,cancel:`취소`,rename:`이름 변경`,delete:`삭제`},slot:{printer:`프린터`,process:`프로세스`,filament:`필라멘트`,filamentN:`필라멘트 {{n}}`,filamentAll:`전체 {{n}} 슬롯`,bed:`베드`},group:{profiles:`프로필`,filaments:`필라멘트`},searchPlaceholder:`파이프라인 검색…`,filterTargetType:`대상 유형으로 필터`,filterTarget:`대상으로 필터`,filter:{all:`모든 대상`,noTarget:`대상 미설정`,count:`{{shown}} / {{total}}`,noMatches:`현재 필터와 일치하는 파이프라인이 없습니다.`},toast:{saved:`파이프라인이 저장되었습니다`,saveFailed:`저장 실패`,deleted:`파이프라인이 삭제되었습니다`,deleteFailed:`삭제 실패`},noTargetHint:`실행하려면 대상 프린터를 설정하세요`,noTargetWarning:`이 파이프라인을 실행하기 전에 대상 프린터를 설정하세요.`,runs:{lastRun:`마지막 실행`,status:{queued:`대기 중`,slicing:`슬라이싱 중`,dispatching:`전송 중`,in_progress:`인쇄 중`,completed:`완료됨`,failed:`실패`,partial_failure:`부분 실패`,cancelled:`취소됨`}}}},notification:{printStarted:{title:`인쇄 시작됨`,body:`{{printer}}: {{filename}} 인쇄가 시작되었습니다`},printCompleted:{title:`인쇄 완료됨`,body:`{{printer}}: {{filename}}이(가) 성공적으로 완료되었습니다`},printFailed:{title:`인쇄 실패`,body:`{{printer}}: {{filename}}이(가) 실패했습니다`},printStopped:{title:`인쇄 정지됨`,body:`{{printer}}: {{filename}}이(가) 정지되었습니다`},printProgress:{title:`인쇄 진행`,body:`{{printer}}: {{filename}} {{percent}}% 완료`},printerOffline:{title:`프린터 오프라인`,body:`{{printer}}이(가) 오프라인 상태입니다`},printerError:{title:`프린터 오류`,body:`{{printer}}: {{error}}`},filamentLow:{title:`필라멘트 부족`,body:`{{printer}}: 필라멘트가 부족합니다`},maintenanceDue:{title:`유지보수 예정`,body:`{{printer}}: {{items}} 주의 필요`}},errors:{generic:`문제가 발생했습니다`,networkError:`네트워크 오류. 연결을 확인하세요.`,notFound:`찾을 수 없습니다`,unauthorized:`권한 없음`,serverError:`서버 오류`,validationError:`입력값을 확인하세요`,printerConnectionFailed:`프린터 연결 실패`,saveFailed:`변경사항 저장 실패`,deleteFailed:`삭제 실패`,loadFailed:`데이터 로드 실패`},hmsErrors:{title:`오류 - {{name}}`,noErrors:`오류 없음`,viewOnWiki:`Bambu Lab 위키에서 보기`,mqttVerifyFailedRemedy:`프린터에서 개발자 모드를 활성화하고 프린터를 재시작한 다음 작업을 다시 시작하세요.`,unknownCode:`알 수 없는 HMS 코드 — 자세한 내용은 Bambu Lab 위키를 참조하세요.`,clearInstructions:`오류를 해제하려면 프린터에서 오류를 지우세요.`,clearErrors:`오류 지우기`,clearSuccess:`HMS 오류가 지워졌습니다`,clearFailed:`HMS 오류 지우기 실패`,actionSuccess:`프린터에 작업을 전송함`,actionFailed:`작업 전송 실패`,runoutExpectedSlot:`{{ranOut}}의 필라멘트가 소진되었습니다. 프린터가 이제 {{expected}}에 호환 필라멘트를 기다리고 있습니다. {{expected}}에 스풀을 넣은 다음 다시 시도를 선택하세요.`,runoutExpectedSlotOnly:`프린터가 {{expected}}에 호환 필라멘트를 기다리고 있습니다. 거기에 스풀을 넣은 다음 다시 시도를 선택하세요.`,runoutSlotUnknown:`필라멘트가 소진되어 인쇄가 일시정지되었습니다. Bambuddy가 프린터가 현재 요청하는 슬롯을 확인할 수 없습니다 — 프린터 화면에서 요청된 슬롯을 확인하세요.`,actions:{RESUME_PRINTING:`인쇄 재개`,RESUME_PRINTING_DEFECTS:`재개 (결함 허용)`,RESUME_PRINTING_PROBELM_SOLVED:`재개 (문제 해결됨)`,STOP_PRINTING:`인쇄 중지`,CHECK_ASSISTANT:`도우미 보기`,FILAMENT_EXTRUDED:`필라멘트 압출됨, 계속`,RETRY_FILAMENT_EXTRUDED:`아직 압출되지 않음, 다시 시도`,CONTINUE:`완료, 계속`,LOAD_VIRTUAL_TRAY:`필라멘트 로드`,OK_BUTTON:`확인`,FILAMENT_LOAD_RESUME:`필라멘트 로드됨, 재개`,JUMP_TO_LIVEVIEW:`실시간 보기`,NO_REMINDER_NEXT_TIME:`다음에 알리지 않음`,REFRESH_NOZZLE:`다시 확인`,IGNORE_NO_REMINDER_NEXT_TIME:`무시 및 다시 알리지 않음`,IGNORE_RESUME:`무시하고 재개`,PROBLEM_SOLVED_RESUME:`문제 해결됨, 재개`,TURN_OFF_FIRE_ALARM:`확인, 화재 경보 끄기`,RETRY_PROBLEM_SOLVED:`다시 시도 (문제 해결됨)`,CANCLE:`취소`,STOP_DRYING:`건조 중지`,PROCEED:`계속`,OK_JUMP_RACK:`확인`,ABORT:`중단`,DISABLE_PURIFICATION:`이 인쇄에 대해 공기 정화 비활성화`,DONT_REMIND_NEXT_TIME:`알리지 않음`,DBL_CHECK_CANCEL:`취소`,DBL_CHECK_DONE:`완료`,DBL_CHECK_RETRY:`다시 시도`,DBL_CHECK_RESUME:`재개`,DBL_CHECK_OK:`확인`,REMOVE_CLOSE_BTN:`닫기`}},mqttDebug:{title:`MQTT 디버그 로그`,searchPlaceholder:`토픽 또는 페이로드 검색...`,noMessages:`아직 기록된 메시지 없음`,startLoggingHint:`"로깅 시작"을 클릭하여 MQTT 메시지 캡처 시작`,noMessagesMatch:`필터에 일치하는 메시지 없음`,adjustFilterHint:`검색 또는 필터 기준을 조정해 보세요`,incoming:`수신`,outgoing:`송신`,loggingStopped:`로깅 정지됨`,loggingActive:`로깅 활성 - 메시지가 자동 새로고침됨`,startLogging:`로깅 시작`,stopLogging:`로깅 정지`,clearLog:`로그 지우기`,topic:`토픽`,timestamp:`타임스탬프`,direction:`방향`,all:`전체`},printerFiles:{zipStarted_one:`{{count}}개 파일의 ZIP 다운로드를 시작했습니다`,zipStarted_other:`{{count}}개 파일의 ZIP 다운로드를 시작했습니다`,zipPartial:`{{total}}개 중 {{successful}}개 파일로 ZIP 다운로드를 시작했습니다. 나머지는 가져오지 못했습니다`,downloadFailed:`다운로드 실패: {{error}}`,unknownError:`알 수 없는 오류`,shiftSelectHint:`Shift 키를 누른 채 클릭하여 범위 선택`,selectFile:`{{name}} 선택`,deselectFile:`{{name}} 선택 해제`,title:`파일 관리자`,storageUsed:`사용됨:`,storageFree:`여유:`,filterPlaceholder:`파일 필터...`,deleteButton:`삭제`,deleteFiles:`{{count}}개 파일 삭제`,deleteFileConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleteFilesConfirm:`선택된 {{count}}개 파일을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,noFiles:`프린터에 파일 없음`,printerUnavailable:`프린터 파일 서비스를 사용할 수 없습니다. 프린터에 연결할 수 있을 때 다시 시도하세요.`,loadingFiles:`파일 로딩 중...`,failedToLoad:`파일 로드 실패`,toast:{filesDeleted:`{{count}}개 파일이 삭제되었습니다`,deleteFailed:`삭제 실패: {{error}}`}},confirm:{delete:`이것을 삭제하시겠습니까?`,unsavedChanges:`저장되지 않은 변경사항이 있습니다. 정말 나가시겠습니까?`,clearQueue:`대기열을 지우시겠습니까?`},login:{title:`Bambuddy 로그인`,subtitle:`계정에 로그인하세요`,username:`사용자명`,usernamePlaceholder:`사용자명을 입력하세요`,usernameOrEmail:`사용자명 또는 이메일`,usernameOrEmailPlaceholder:`사용자명 또는 @ 이메일`,password:`비밀번호`,passwordPlaceholder:`비밀번호를 입력하세요`,signIn:`로그인`,signingIn:`로그인 중...`,rememberMe:`로그인 유지`,forgotPassword:`비밀번호를 잊으셨나요?`,autologinFailed:`SSO 자동 로그인에 실패했습니다. 아래에서 계속할 공급자를 선택하세요.`,localDisabledNotice:`로컬 로그인이 비활성화되어 있습니다. 아래 SSO 공급자 중 하나를 사용하세요.`,loginSuccess:`성공적으로 로그인되었습니다`,loginFailed:`로그인 실패`,enterCredentials:`사용자명과 비밀번호를 입력하세요`,enterEmail:`이메일 주소를 입력하세요`,oidcLoginFailed:`OIDC 로그인 실패`,oidcErrors:{providerError:`ID 제공자에서 오류가 반환되었습니다`,missingParameters:`OIDC 콜백에 필수 매개변수가 없습니다`,invalidState:`OIDC 상태가 잘못되었거나 이미 사용되었습니다`,stateExpired:`OIDC 로그인 세션이 만료되었습니다 — 다시 시도하세요`,providerNotFound:`OIDC 제공자를 찾을 수 없습니다`,discoveryFailed:`OIDC 검색 문서를 가져오지 못했습니다`,invalidDiscovery:`OIDC 검색 문서가 잘못되었습니다`,networkError:`OIDC 토큰 교환 중 네트워크 오류`,badResponse:`OIDC 토큰 교환 중 예상치 못한 응답`,noIdToken:`OIDC 제공자가 ID 토큰을 반환하지 않았습니다`,validationFailed:`OIDC 토큰 검증 실패`,nonceMismatch:`OIDC 논스 불일치 — 재생 공격 가능성`,missingSubClaim:`OIDC 토큰에 sub 클레임이 없습니다`,noLinkedAccount:`OIDC ID에 연결된 로컬 계정이 없습니다`,accountInactive:`계정이 비활성 상태입니다`,userResolutionFailed:`계정 확인 실패`,internalError:`OIDC 로그인 중 내부 오류 발생`,tokenExchangeFailed:`OIDC 토큰 교환 실패`},forgotPasswordTitle:`비밀번호 찾기`,forgotPasswordMessage:`비밀번호를 잊으셨다면 시스템 관리자에게 초기화를 요청하세요.`,forgotPasswordEmailMessage:`이메일 주소를 입력하면 새 비밀번호를 전송해 드립니다.`,emailAddress:`이메일 주소`,emailPlaceholder:`your.email@example.com`,cancel:`취소`,sending:`전송 중...`,sendResetEmail:`초기화 이메일 전송`,howToReset:`비밀번호 초기화 방법:`,resetStep1:`Bambuddy 관리자에게 문의하세요`,resetStep2:`사용자 관리에서 비밀번호 초기화를 요청하세요`,resetStep3:`관리자가 임시 비밀번호를 설정해 드립니다`,resetStep4:`새 비밀번호로 로그인하고 설정에서 변경하세요`,gotIt:`확인`,resetPassword:{title:`새 비밀번호 설정`,subtitle:`아래에 새 비밀번호를 입력하고 확인하세요.`,newPassword:`새 비밀번호`,newPasswordPlaceholder:`최소 8자`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`새 비밀번호 반복`,saving:`저장 중…`,submit:`새 비밀번호 설정`,backToLogin:`로그인으로 돌아가기`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 8자여야 합니다`,resetFailed:`비밀번호 초기화 실패. 링크가 만료되었을 수 있습니다.`},twoFA:{title:`이중 인증`,subtitle:`계정이 2FA로 보호되어 있습니다. 아래에 인증 코드를 입력하세요.`,methodAuthenticator:`인증 앱`,methodEmail:`이메일 코드`,methodBackup:`백업 코드`,instructionsTotp:`인증 앱을 열고 Bambuddy의 6자리 코드를 입력하세요.`,instructionsEmail:`이메일 주소로 6자리 코드가 전송되었습니다. 10분 후 만료됩니다.`,instructionsEmailNotSent:`아래 버튼을 클릭하여 이메일로 인증 코드를 받으세요.`,instructionsBackup:`8자리 백업 복구 코드 중 하나를 입력하세요. 각 코드는 한 번만 사용할 수 있습니다.`,sendCodeButton:`이메일로 코드 전송`,sendingCode:`전송 중...`,resendCode:`코드 재전송`,codeLabel:`인증 코드`,backupCodeLabel:`백업 코드`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`확인`,verifyingButton:`확인 중...`,backToLogin:`← 로그인으로 돌아가기`,orContinueWith:`또는 계속`,signInWith:`{{provider}}로 로그인`,enterCode:`인증 코드를 입력하세요`,sendCodeFailed:`인증 코드 전송 실패`,invalidCode:`잘못된 코드입니다. 다시 시도하세요.`}},setup:{title:`Bambuddy 설정`,subtitle:`Bambuddy 인스턴스의 인증을 설정하세요`,enableAuth:`인증 활성화`,adminAccount:`관리자 계정`,adminAccountDesc:`관리자 사용자가 이미 있는 경우 기존 관리자 계정으로 인증이 활성화됩니다. 기존 관리자를 사용하려면 아래 필드를 비워두거나, 새 관리자 사용자를 만들려면 자격 증명을 입력하세요.`,adminUsername:`관리자 사용자명`,adminPassword:`관리자 비밀번호`,optionalIfAdminExists:`(관리자 사용자가 있는 경우 선택사항)`,adminUsernamePlaceholder:`관리자 사용자명 입력 (선택사항)`,adminPasswordPlaceholder:`관리자 비밀번호 입력 (선택사항)`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`관리자 비밀번호 확인`,settingUp:`설정 중...`,completeSetup:`설정 완료`,toast:{authEnabledAdminCreated:`인증 활성화 및 관리자 사용자 생성됨`,authEnabledExistingAdmins:`기존 관리자 사용자로 인증 활성화됨`,setupCompleted:`설정이 완료되었습니다`,enterBothCredentials:`관리자 사용자명과 비밀번호를 모두 입력하거나, 기존 관리자 사용자를 사용하려면 둘 다 비워두세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`}},changePassword:{title:`비밀번호 변경`,currentPassword:`현재 비밀번호`,currentPasswordPlaceholder:`현재 비밀번호 입력`,newPassword:`새 비밀번호`,newPasswordPlaceholder:`새 비밀번호 입력 (최소 6자)`,confirmPassword:`새 비밀번호 확인`,confirmPasswordPlaceholder:`새 비밀번호 확인`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자여야 합니다`,changing:`변경 중...`,success:`비밀번호가 성공적으로 변경되었습니다`,failed:`비밀번호 변경 실패`},plateAlert:{title:`인쇄 일시정지됨!`,message:`빌드 플레이트에 객체가 감지되었습니다. 인쇄가 자동으로 일시정지되었습니다. 플레이트를 비우고 인쇄를 재개하세요.`,understand:`확인했습니다`},camera:{title:`카메라 보기`,invalidPrinterId:`유효하지 않은 프린터 ID`,live:`실시간`,snapshot:`스냅샷`,restartStream:`스트림 재시작`,refreshSnapshot:`스냅샷 새로고침`,fullscreen:`전체 화면`,exitFullscreen:`전체 화면 종료`,connectingToCamera:`카메라에 연결 중...`,capturingSnapshot:`스냅샷 캡처 중...`,connectionLost:`연결 끊김`,connectionFailed:`카메라 연결 실패`,reconnecting:`{{countdown}}초 후 재연결 중... (시도 {{attempt}}/{{max}})`,reconnectNow:`지금 재연결`,cameraUnavailable:`카메라를 사용할 수 없음`,cameraUnavailableDesc:`프린터가 켜져 있고 연결되어 있는지 확인하세요.`,noCamera:`사용 가능한 카메라 없음`,retry:`다시 시도`,cameraStream:`카메라 스트림`,zoomOut:`축소`,zoomIn:`확대`,resetZoom:`배율 초기화`,recording:`녹화 중`,startRecording:`녹화 시작`,stopRecording:`녹화 중지`,chamberLight:`챔버 조명 전환`,unavailable:`카메라 사용 불가`,diagnose:{button:`진단`,modalTitle:`카메라 진단`,running:`진단 실행 중...`,runFailed:`진단 실행 실패: {{error}}`,retry:`다시 실행`,stage:{tcp_reachable:`네트워크 연결 가능 여부`,first_frame:`프레임 캡처`,live_stream_active:`라이브 스트림 활성`},summary:{all_ok:`카메라가 정상 작동 중입니다. 모든 단계를 성공적으로 완료했습니다.`,live_stream_active_healthy:`카메라가 최근 프레임으로 스트리밍 중입니다 — 테스트가 필요 없습니다.`,printer_unreachable:`프린터에 연결할 수 없습니다. IP 주소, 네트워크 연결, 프린터 전원을 확인하세요.`,camera_port_closed:`프린터에 연결됐지만 카메라 포트가 닫혀 있습니다. 프린터 설정에서 LAN 전용 모드와 개발자 모드가 활성화되어 있는지 확인하세요.`,no_frame:`카메라에 연결됐지만 프레임이 수신되지 않았습니다. 다시 시도하거나 프린터 설정에서 카메라가 활성화되어 있는지 확인하세요.`,unknown_failure:`알 수 없는 이유로 카메라 진단에 실패했습니다. 지원 로그를 확인하세요.`},meta:{protocol:`프로토콜`,port:`포트`,profile:`프로파일`}}},groups:{title:`그룹 관리`,subtitle:`접근 제어를 위한 권한 그룹 관리`,backToSettings:`설정으로 돌아가기`,createGroup:`그룹 생성`,noPermission:`이 페이지에 접근할 권한이 없습니다.`,system:`시스템`,noDescription:`설명 없음`,usersCount:`{{count}}명의 사용자`,permissionsCount:`{{count}}개의 권한`,edit:`편집`,delete:`삭제`,toast:{created:`그룹이 성공적으로 생성되었습니다`,updated:`그룹이 성공적으로 업데이트되었습니다`,deleted:`그룹이 성공적으로 삭제되었습니다`,enterGroupName:`그룹 이름을 입력해 주세요`},modal:{editGroup:`그룹 편집`,createGroup:`그룹 생성`,cancel:`취소`,saving:`저장 중...`,creating:`생성 중...`,saveChanges:`변경 사항 저장`},form:{groupName:`그룹 이름`,groupNamePlaceholder:`그룹 이름 입력`,systemGroupWarning:`시스템 그룹 이름은 변경할 수 없습니다`,description:`설명`,descriptionPlaceholder:`설명 입력 (선택사항)`,permissions:`권한 ({{count}}개 선택됨)`},deleteModal:{title:`그룹 삭제`,message:`이 그룹을 삭제하시겠습니까? 이 그룹의 사용자는 해당 권한을 잃게 됩니다.`,confirm:`그룹 삭제`},editor:{title:`그룹 편집`,createTitle:`그룹 생성`,search:`권한 검색...`,selectAll:`모두 선택`,clearAll:`모두 해제`,permissionsSelected:`{{count}}개 선택됨`,noResults:`검색과 일치하는 권한이 없습니다`,websocketHint:`실시간 업데이트에 필요합니다. 이 권한이 없으면 인터페이스는 주기적 폴링으로 대체됩니다.`}},users:{title:`사용자 관리`,subtitle:`Bambuddy 인스턴스에 대한 사용자 및 접근 권한 관리`,backToSettings:`설정으로 돌아가기`,createUser:`사용자 생성`,noPermission:`이 페이지에 접근할 권한이 없습니다.`,admin:`관리자`,noGroups:`그룹 없음`,active:`활성`,inactive:`비활성`,edit:`편집`,delete:`삭제`,system:`시스템`,noGroupsAvailable:`사용 가능한 그룹 없음`,table:{username:`사용자 이름`,groups:`그룹`,status:`상태`,actions:`작업`},toast:{created:`사용자가 성공적으로 생성되었습니다`,updated:`사용자가 성공적으로 업데이트되었습니다`,deleted:`사용자가 성공적으로 삭제되었습니다`,fillRequired:`모든 필수 항목을 입력해 주세요`,passwordsDoNotMatch:`비밀번호가 일치하지 않습니다`,passwordTooShort:`비밀번호는 최소 6자 이상이어야 합니다`,ldapProvisioned:`LDAP 사용자 "{{username}}"이(가) 생성되었습니다`},modal:{createUser:`사용자 생성`,editUser:`사용자 편집`,cancel:`취소`,creating:`생성 중...`,saving:`저장 중...`,saveChanges:`변경 사항 저장`,advancedAuthSubtitle:`고급 인증 사용`,tabsAriaLabel:`사용자 소스`,localTab:`로컬`,ldapTab:`LDAP`,ldapSearchLabel:`디렉터리 검색`,ldapSearchPlaceholder:`사용자명, 이름, 이메일을 입력하세요...`,ldapMinChars:`검색하려면 최소 2자 이상 입력하세요`,ldapTypeToSearch:`LDAP 디렉터리를 검색하려면 입력을 시작하세요`,ldapSearching:`디렉터리 검색 중...`,ldapNoResults:`디렉터리에서 일치하는 사용자가 없습니다`,ldapSearchError:`디렉터리 검색에 실패했습니다. LDAP 서버 상태를 확인하세요.`,ldapAlreadyProvisioned:`이미 생성됨`,ldapSelectedLabel:`선택됨`,ldapProvision:`사용자 생성`,ldapProvisioning:`생성 중...`,ldapErrorProvision:`생성에 실패했습니다. LDAP 서버 상태를 확인하고 다시 시도하세요.`},form:{username:`사용자 이름`,usernamePlaceholder:`사용자 이름 입력`,email:`이메일`,emailPlaceholder:`user@example.com`,password:`비밀번호`,passwordPlaceholder:`비밀번호 입력`,confirmPassword:`비밀번호 확인`,confirmPasswordPlaceholder:`비밀번호 확인`,newPasswordPlaceholder:`새 비밀번호 입력`,confirmNewPasswordPlaceholder:`새 비밀번호 확인`,leaveBlankToKeep:`현재 비밀번호 유지 시 비워두기`,groups:`그룹`,optional:`선택사항`,autoGeneratedPassword:`안전한 비밀번호가 자동으로 생성되어 사용자에게 이메일로 전송됩니다.`,passwordManagedByAdvancedAuth:`비밀번호는 고급 인증에 의해 관리됩니다. "비밀번호 재설정"을 사용하여 이메일로 새 비밀번호를 전송하세요.`,resetPassword:`비밀번호 재설정`,resettingPassword:`비밀번호 재설정 중...`},deleteModal:{title:`사용자 삭제`,message:`이 사용자를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,confirm:`사용자 삭제`}},streamOverlay:{title:`스트림 오버레이`,invalidPrinterId:`유효하지 않은 프린터 ID`,cameraStream:`카메라 스트림`,progress:`진행률`,eta:`예상 완료`,printerIdle:`프린터 대기 중`,printerOffline:`프린터 오프라인`,builder:{title:`스트림 오버레이`,description:`스트림 오버레이 URL을 만듭니다. 전체 화면 카메라 영상 위에 실시간 출력 정보를 겹쳐 보여주며 OBS, 벽걸이 디스플레이 등 모든 브라우저 소스에서 쓸 수 있습니다. 원하는 항목을 고르고 URL을 복사하세요.`,printer:`프린터`,size:`글자 크기`,sizeSmall:`작게`,sizeMedium:`보통`,sizeLarge:`크게`,fps:`프레임 속도`,fpsHint:`A1 및 P1 카메라는 요청한 값과 관계없이 초당 약 5프레임이 한계입니다.`,token:`스트림 오버레이 토큰(선택)`,tokenHint:`로그인을 사용할 때만 필요합니다. OBS에는 자체 세션이 없습니다. 위에서 스트림 오버레이 범위로 발급하세요.`,tokenWarning:`이 URL에는 토큰이 들어 있습니다. URL을 읽을 수 있는 사람은 누구나 영상과 파일 이름을 볼 수 있습니다. 접근을 끊으려면 토큰을 폐기하세요.`,fields:`표시할 항목`,fieldPrinter:`프린터 이름`,fieldFilename:`파일 이름`,fieldStatus:`상태`,fieldProgress:`진행률 막대`,fieldLayers:`레이어 수`,fieldEta:`남은 시간과 완료 예정 시각`,fieldCamera:`카메라 영상`,chamberHint:`챔버 온도는 실제 센서가 있는 모델에서만 표시됩니다. P1과 A1은 의미 없는 값을 보고하므로 제외됩니다.`,urlTitle:`오버레이 URL`,open:`열기`,showPreview:`미리보기 표시`,hidePreview:`미리보기 숨기기`,previewTitle:`오버레이 미리보기`},status:{printing:`인쇄 중`,paused:`일시 중지됨`,finished:`완료됨`,failed:`실패`,idle:`대기 중`,unknown:`알 수 없음`}},profiles:{title:`프로필`,subtitle:`슬라이서 프리셋 및 압력 전진 보정 관리`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`로컬 프로필`,kprofiles:`K-프로필`},orcaCloud:{connectedAs:`연결됨`,connectedShort:`Orca Cloud에 연결됨`,logout:`연결 해제`,noLogoutPermission:`연결을 해제할 권한이 없습니다`,noConnectPermission:`Orca Cloud에 연결할 권한이 없습니다`,retry:`다시 시도`,connectButton:`Orca Cloud 연결`,connect:{title:`Orca Cloud에 연결`,description:`Orca Cloud 계정에 로그인하여 슬라이서 프로필을 Bambuddy에 동기화하세요.`},device:{title:`Orca Cloud에서 Bambuddy 승인`,instruction:`Orca Cloud를 열고 이 코드를 승인하세요. 승인하면 Bambuddy가 자동으로 연결됩니다.`,codeLabel:`페어링 코드`,openButton:`Orca Cloud 승인 페이지 열기`,manualHint:`또는 {{url}}(으)로 이동하여 위 코드를 입력하세요.`,waiting:`승인을 기다리는 중…`,cancel:`취소`},profiles:{title:`Orca Cloud 프로필 ({{count}})`,refresh:`새로고침`,empty:`Orca Cloud 계정에 아직 프로필이 없습니다.`},toast:{disconnected:`Orca Cloud 연결 해제됨`},errors:{startFailed:`Orca Cloud 로그인 흐름을 시작할 수 없습니다.`,denied:`Orca Cloud에서 페어링이 거부되었습니다.`,expired:`페어링 코드가 만료되었습니다. 연결을 클릭하여 다시 시도하세요.`,pollFailed:`승인을 기다리는 중 연결이 끊겼습니다. 다시 시도하세요.`}},localProfiles:{title:`로컬 프로필`,subtitle:`OrcaSlicer에서 슬라이서 프리셋 가져오기 및 관리`,import:`프로필 가져오기`,importDesc:`.bbscfg, .bbsflmt, .orca_filament, .zip 또는 .json 파일을 여기에 드롭하세요`,importing:`가져오는 중...`,search:`로컬 프리셋 검색...`,noPresets:`로컬 프리셋 없음`,badge:`로컬`,edit:`편집`,delete:`삭제`,cancel:`취소`,deleteConfirmTitle:`프리셋 삭제`,deleteConfirm:`이 프리셋을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,source:`출처`,inheritsFrom:`상속`,filamentType:`유형`,vendor:`제조사`,compatiblePrinters:`프린터`,nozzleTemp:`노즐 온도`,cost:`비용`,density:`밀도`,pressureAdvance:`압력 전진`,filament:`필라멘트`,process:`프로세스`,printer:`프린터`,toast:{importSuccess:`{{count}}개 프리셋 가져옴`,importSkipped:`{{count}}개 프리셋 건너뜀 (중복)`,importError:`가져오기 중 {{count}}개 오류 발생`,deleted:`프리셋 삭제됨`,updated:`프리셋 업데이트됨`},noSearchResults:`검색어와 일치하는 프리셋이 없습니다`},connectedAs:`연결된 계정`,signInExpiredTitle:`Bambu 클라우드 로그인이 만료되었습니다`,signInExpiredBody:`Bambu Lab이 저장된 토큰을 더 이상 허용하지 않습니다. 클라우드 프로필, MakerWorld 가져오기, 펌웨어 확인을 복구하려면 다시 로그인하세요.`,logout:`로그아웃`,noLogoutPermission:`로그아웃 권한이 없습니다`,failedToLoad:`프로필 불러오기 실패`,retry:`다시 시도`,time:{justNow:`방금`,minsAgo:`{{count}}분 전`,hoursAgo:`{{count}}시간 전`,daysAgo:`{{count}}일 전`},toast:{loggedOut:`로그아웃되었습니다`},login:{title:`Bambu 클라우드 연결`,subtitle:`기기 간 슬라이서 프리셋 동기화`,email:`이메일`,password:`비밀번호`,region:`지역`,regionGlobal:`글로벌`,regionChina:`중국`,verificationCode:`인증 코드`,totpCode:`인증앱 코드`,checkEmail:`이메일({{email}})로 전송된 6자리 코드를 확인하세요`,enterTotpHint:`인증앱에서 6자리 코드를 입력하세요`,accessToken:`액세스 토큰`,accessTokenHint:`Bambu Studio에서 Bambu Lab 액세스 토큰을 붙여넣으세요`,back:`뒤로`,loginButton:`로그인`,verifyButton:`인증`,setTokenButton:`토큰 설정`,useToken:`액세스 토큰 대신 사용`,captchaTitle:`Bambu Cloud가 CAPTCHA를 요구합니다`,captchaBody:`Bambu가 로그인을 처리하기 전에 네트워크에 CAPTCHA 확인을 요구하고 있으며, 이 확인은 Bambuddy에서 응답할 수 없습니다. 이메일과 비밀번호의 문제가 아닙니다. 차단은 공용 IP 주소에 연결되어 있으며 보통 몇 시간 안에 저절로 풀립니다. 반복해서 재시도하면 오히려 더 오래 지속됩니다. 지금 로그인하려면 브라우저 세션에서 가져온 액세스 토큰을 사용하세요.`,useEmail:`이메일로 로그인`,toast:{loggedIn:`성공적으로 로그인되었습니다`,codeSent:`이메일로 인증 코드가 전송되었습니다`,enterTotp:`인증앱에서 코드를 입력하세요`,tokenSet:`토큰이 성공적으로 설정되었습니다`}},presets:{myPreset:`내 프리셋 (편집 가능)`,duplicate:`복제`,editable:`편집 가능`,failedToLoadDetails:`프리셋 세부 정보 불러오기 실패`,deleteConfirm:`이 프리셋을 삭제하시겠습니까?`,deleteWarning:`Bambu 클라우드에서 "{{name}}"을(를) 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.`,noDuplicatePermission:`프리셋 복제 권한이 없습니다`,noEditPermission:`프리셋 편집 권한이 없습니다`,noDeletePermission:`프리셋 삭제 권한이 없습니다`,types:{filament:`필라멘트 프리셋`,printer:`프린터 프리셋`,process:`프로세스 프리셋`},toast:{deleted:`프리셋 삭제됨`,created:`프리셋 생성됨`,updated:`프리셋 업데이트됨`,duplicated:`프리셋 복제됨`,fieldAdded:`"{{key}}" 필드 추가됨`,exported:`프리셋 내보냄`},baseLabel:`기본: {{name}}`,currentLabel:`현재: {{name}}`,newPreset:`새 프리셋`,editPreset:`프리셋 편집`,duplicatePreset:`프리셋 복제`,createNewPreset:`새 프리셋 생성`,customizeSettings:`새 프리셋의 설정 사용자 지정`,compareWithBase:`기본 프리셋과 비교`,compare:`비교`,basePreset:`기본 프리셋`,selectBasePreset:`기본 프리셋 선택...`,presetName:`프리셋 이름`,myCustomPreset:`내 사용자 지정 프리셋`,inheritsFrom:`상속 출처`,dropJsonToImport:`JSON 파일을 드롭하여 가져오기`,tabs:{common:`공통`,allFields:`모든 필드`},availableFields:`사용 가능한 필드`,searchFieldsPlaceholder:`필드 검색...`,noMatchingFields:`일치하는 필드 없음`,allFieldsAdded:`모든 필드 추가됨`,addCustomField:`사용자 지정 필드 추가`,yourOverrides:`내 재정의`,noOverridesYet:`아직 재정의 없음`,clickFieldsToAdd:`왼쪽 필드를 클릭하여 추가`,saveAsTemplate:`템플릿으로 저장`,jsonTip:`팁: 이 모달 어디서나 .json 파일을 드래그 앤 드롭하여 설정을 가져올 수 있습니다`},cloudView:{searchPlaceholder:`프리셋 검색...`,templates:`템플릿`,refresh:`새로고침`,newPreset:`새 프리셋`,clearFilters:`필터 초기화`,compareMode:`비교 모드`,selectAnotherPreset:`다른 {{type}} 프리셋 선택`,clickTwoPresets:`같은 유형의 프리셋 두 개를 클릭하여 비교`,selectFirst:`1. 첫 번째 선택`,selectSecond:`2. 두 번째 선택`,compareNow:`지금 비교`,lastSynced:`마지막 동기화:`,showingCount:`{{total}}개 중 {{showing}}개 표시`,noPresetsFound:`프리셋을 찾을 수 없음`,columns:{filament:`필라멘트`,process:`프로세스`,printer:`프린터`},noFilamentPresets:`필라멘트 프리셋 없음`,noProcessPresets:`프로세스 프리셋 없음`,noPrinterPresets:`프린터 프리셋 없음`,filters:{type:`유형`,owner:`소유자`,printer:`프린터`,nozzle:`노즐`,filament:`필라멘트`,layer:`레이어`,all:`전체`,myPresets:`내 프리셋`,builtIn:`기본 제공`,process:`프로세스`},noTemplatesPermission:`템플릿 관리 권한이 없습니다`,noRefreshPermission:`프로필 새로고침 권한이 없습니다`,noCreatePermission:`프리셋 생성 권한이 없습니다`},templates:{title:`빠른 템플릿`,noTemplates:`아직 템플릿 없음`,createFirst:`프리셋 편집기에서 템플릿을 생성하세요`,typeFilter:`유형:`,deleteTitle:`템플릿 삭제`,deleteWarning:`이 작업은 취소할 수 없습니다`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,namePlaceholder:`템플릿 이름`,descriptionPlaceholder:`설명`,settingsJson:`설정 (JSON)`,fieldsCount:`{{count}}개 필드`,shownInModals:`모달에 표시됨`,hiddenInModals:`모달에서 숨겨짐`,apply:`적용`,toast:{deleted:`템플릿 삭제됨`,updated:`템플릿 업데이트됨`,created:`템플릿 생성됨`,applied:`템플릿 적용됨`}}},support:{debugLoggingActive:`디버그 로깅이 활성화되어 있습니다`,manageLogs:`관리`,collectItem7:`프린터 연결 및 펌웨어 버전`,collectItem8:`통합 상태 (Spoolman, MQTT, HA)`,collectItem9:`네트워크 인터페이스 (서브넷만)`,collectItem10:`Python 패키지 버전`,collectItem11:`데이터베이스 상태 확인`,collectItem12:`Docker 환경 세부 정보`,bundleGenerating:`번들 생성 중...`,bundleStepConnection:`프린터 연결 확인 실행 중`,bundleStepVirtualPrinters:`가상 프린터 설정 확인 실행 중`,bundleStepLogScan:`알려진 문제가 있는지 최근 로그 스캔 중`,bundleStepBuild:`지원 번들 ZIP 빌드 중`},fileManager:{variants:{badge:`버전 {{count}}개`,groupAction:`버전으로 그룹화`,groupTooltip:`이 파일들을 서로 다른 프린터용으로 슬라이스한 동일 작업으로 표시합니다`,grouped:`파일 {{count}}개를 버전으로 그룹화했습니다`,printAlternatives:`인쇄 (대안 {{count}}개)`},title:`파일 관리자`,subtitle:`인쇄 파일 정리 및 관리`,uploadFiles:`파일 업로드`,newFolder:`새 폴더`,folderName:`폴더 이름`,folderNamePlaceholder:`예: 기능성 부품`,renameFile:`파일 이름 바꾸기`,renameFolder:`폴더 이름 바꾸기`,invalidFilenameChar:`"{{char}}" 문자는 인쇄 파일 이름에 허용되지 않습니다. 프린터 SD 카드가 거부하는 문자: < > : " / \\ | ? *`,moveFiles:`{{count}}개 파일 이동`,rootNoFolder:`루트 (폴더 없음)`,current:`현재`,linkFolder:`폴더 연결`,linkFolderDescription:`"{{name}}"을(를) 프로젝트 또는 아카이브에 연결하여 빠른 접근.`,project:`프로젝트`,archive:`아카이브`,noProjectsFound:`프로젝트를 찾을 수 없음`,noArchivesFound:`아카이브를 찾을 수 없음`,unlink:`연결 해제`,link:`연결`,dragDropFiles:`파일을 여기에 드래그 앤 드롭`,dropFilesHere:`파일을 여기에 드롭`,releaseToUpload:`놓아서 업로드`,orClickToBrowse:`또는 클릭하여 탐색`,allFileTypesSupported:`모든 파일 형식 지원. ZIP 파일은 압축 해제됩니다.`,zipFilesDetected:`ZIP 파일 감지됨`,zipExtractOptions:`ZIP 파일이 압축 해제됩니다. 폴더 구조 처리 방법을 선택하세요:`,preserveZipStructure:`ZIP에서 폴더 구조 유지`,createFolderFromZip:`ZIP 파일 이름으로 폴더 생성`,stlThumbnailGeneration:`STL 썸네일 생성`,zipMayContainStl:`ZIP 파일에 STL 파일이 포함될 수 있습니다. 압축 해제 중 썸네일을 생성할 수 있습니다.`,thumbnailsCanBeGenerated:`STL 파일의 썸네일을 생성할 수 있습니다. 대형 모델은 처리 시간이 더 걸릴 수 있습니다.`,generateThumbnailsForStl:`STL 파일의 썸네일 생성`,threemfDetected:`3MF 파일 감지됨`,threemfExtractionInfo:`프린터 모델, 재료, 색상 및 인쇄 설정이 3MF 파일에서 자동으로 추출됩니다.`,willBeExtracted:`추출 예정`,filesExtracted:`{{count}}개 파일 추출됨`,uploadComplete:`업로드 완료: {{succeeded}}개 성공`,uploadFailed:`업로드 실패`,zipFilesFailed:`{{count}}개 파일 실패`,uploading:`업로드 중...`,changeLink:`링크 변경...`,linkTo:`연결 대상...`,linkToProjectOrArchive:`프로젝트 또는 아카이브에 연결`,generateThumbnail:`썸네일 생성`,generateThumbnails:`썸네일 생성`,generateThumbnailsForMissing:`썸네일이 없는 STL 파일의 썸네일 생성`,gridView:`격자 보기`,listView:`목록 보기`,lowDiskSpaceWarning:`디스크 공간 부족 경고`,lowDiskSpaceDetails:`전체 {{total}} 중 {{free}}만 남음. 임계값은 설정에서 {{threshold}}GB로 설정됩니다.`,files:`파일`,folders:`폴더`,size:`크기`,free:`여유`,allFiles:`모든 파일`,allExternal:`외부`,externalIsEmpty:`외부 파일 없음`,externalEmptyDescription:`연결된 외부 폴더의 파일이 여기에 표시됩니다.`,wrap:`줄 바꿈`,enableTextWrapping:`텍스트 줄 바꿈 활성화`,disableTextWrapping:`텍스트 줄 바꿈 비활성화`,collapse:`접기`,collapseFoldersByDefault:`기본적으로 폴더 접기`,expandFoldersByDefault:`기본적으로 폴더 펼치기`,folderSort:`폴더 정렬`,folderSortByName:`이름순`,folderSortByActivity:`최근 활동순`,dragToResizeTooltip:`드래그하여 크기 조정, 더블클릭하여 초기화`,searchFiles:`파일 검색...`,searchSubfoldersHint:`하위 폴더 포함`,readme:{truncated:`잘림`,show:`README 표시`,hide:`README 숨기기`,label:`README`},tags:{title:`태그`,subtitle:`파일에 가로지르는 필터용 라벨을 붙이세요 — 장난감, 어린이용, PETG 전용 등.`,manage:`태그`,manageTitle:`태그 카탈로그 관리`,add:`새 태그`,edit:`태그 이름 변경`,name:`이름`,fileCount:`파일`,empty:`아직 태그가 없습니다. 만들어서 파일에 라벨을 붙이세요.`,noMatches:`일치하는 태그가 없습니다.`,createPlaceholder:`예: 장난감, 어린이용, petg`,createButton:`만들기`,nameRequired:`이름은 필수입니다.`,searchPlaceholder:`태그 필터...`,created:`태그가 만들어졌습니다.`,updated:`태그 이름이 변경되었습니다.`,deleted:`태그가 제거되었습니다.`,saveFailed:`태그를 저장할 수 없습니다.`,deleteFailed:`태그를 제거할 수 없습니다.`,applyFailed:`태그를 적용할 수 없습니다.`,applyAdd:`태그 추가`,applyRemove:`태그 제거`,applyAddSuccess:`{{files}}개 파일에 태그 {{count}}개를 추가했습니다.`,applyRemoveSuccess:`{{files}}개 파일에서 태그 {{count}}개를 제거했습니다.`,actionAdd:`선택한 파일에 추가`,actionRemove:`선택한 파일에서 제거`,tagAction:`태그`,bulkTitle:`선택한 {{count}}개 파일에 태그 지정`,bulkTooltip:`선택한 모든 파일에 태그를 추가하거나 제거합니다.`,noPermission:`파일에 태그를 붙일 권한이 없습니다.`,filterLabel:`필터:`,clearAll:`모두 지우기`,confirmDelete:`태그 "{{name}}"을(를) 삭제하시겠습니까?`,confirmDeleteMessage:`카탈로그에서 태그를 제거합니다. 파일과 다른 태그는 그대로 유지됩니다.`,confirmDeleteInUseMessage:`이 태그는 {{count}}개 파일에 있습니다. 삭제하면 모든 파일에서 칩이 사라지지만 파일 자체는 변경되지 않습니다.`,editAria:`{{name}} 편집`,deleteAria:`{{name}} 삭제`},allTypes:`모든 유형`,prints:`인쇄물`,ascending:`오름차순`,descending:`내림차순`,showModified:`수정 날짜 표시`,hideModified:`수정 날짜 숨기기`,lastModified:`마지막 수정`,lastActivity:`마지막 활동`,resultsCount:`전체 {{total}}개 중 {{showing}}개`,selectAll:`모두 선택`,deselectAll:`모두 선택 해제`,selected:`{{count}}개 선택됨`,adding:`추가 중...`,loadingFiles:`파일 불러오는 중...`,folderIsEmpty:`폴더가 비어 있음`,noFilesYet:`파일 없음`,folderEmptyDescription:`파일을 업로드하거나 이 폴더로 이동하여 시작하세요.`,noFilesDescription:`파일을 업로드하여 인쇄 관련 파일을 정리하세요.`,noMatchingFiles:`일치하는 파일 없음`,noMatchingFilesDescription:`현재 검색 또는 필터 조건과 일치하는 파일이 없습니다.`,clearFilters:`필터 초기화`,printedCount:`{{count}}회 인쇄됨`,uploadedBy:`업로드한 사람`,deleteFolder:`폴더 삭제`,deleteFile:`파일 삭제`,deleteFilesCount:`{{count}}개 파일 삭제`,deleteFolderConfirm:`이 폴더를 삭제하시겠습니까? 안의 모든 파일도 삭제됩니다.`,deleteFileConfirm:`이 파일을 삭제하시겠습니까?`,deleteFilesConfirm:`선택한 {{count}}개 파일을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,deleting:`삭제 중...`,noPermissionRenameFolder:`폴더 이름 변경 권한이 없습니다`,noPermissionLinkFolder:`폴더 연결 권한이 없습니다`,noPermissionDeleteFolder:`폴더 삭제 권한이 없습니다`,onlyEmptyFoldersDeletable:`빈 폴더만 삭제할 수 있습니다`,noPermissionPrint:`인쇄 권한이 없습니다`,noPermissionAddToQueue:`대기열 추가 권한이 없습니다`,noPermissionSlice:`파일 슬라이싱 권한이 없습니다`,noPermissionDownload:`파일 다운로드 권한이 없습니다`,noPermissionPreview:`파일을 미리 볼 권한이 없습니다`,preview3d:`3D 미리보기`,noPermissionRenameFile:`파일 이름 변경 권한이 없습니다`,noPermissionGenerateThumbnail:`썸네일 생성 권한이 없습니다`,noPermissionDeleteFile:`파일 삭제 권한이 없습니다`,noPermissionCreateFolder:`폴더 생성 권한이 없습니다`,noPermissionUpload:`파일 업로드 권한이 없습니다`,noPermissionMoveFiles:`파일 이동 권한이 없습니다`,noPermissionDeleteFiles:`파일 삭제 권한이 없습니다`,linkExternal:`외부 연결`,linkExternalFolder:`외부 폴더 연결`,linkExternalFolderDescription:`호스트 디렉토리(NAS, USB, 네트워크 공유)를 파일 관리자에 마운트합니다. 파일은 복사되지 않고 원래 경로에서 직접 접근합니다.`,externalFolderNamePlaceholder:`예: NAS 인쇄물`,externalPath:`호스트 경로`,externalPathHelp:`Docker 호스트의 디렉토리 절대 경로. 컨테이너에 바인드 마운트되어야 합니다.`,readOnly:`읽기 전용`,readOnlyHelp:`업로드 및 삭제 방지`,showHiddenFiles:`숨김 파일 표시 (dotfiles)`,externalFolder:`외부 폴더`,scanFolder:`스캔`,toast:{folderCreated:`폴더 생성됨`,openInSlicerFailed:`슬라이서에서 열 수 없습니다`,folderDeleted:`폴더 삭제됨`,fileDeleted:`파일 삭제됨`,filesDeleted:`{{count}}개 파일 삭제됨`,filesMoved:`파일 이동됨`,folderLinked:`폴더 연결됨`,folderUnlinked:`폴더 연결 해제됨`,externalFolderLinked:`외부 폴더 연결 및 스캔됨`,folderScanned:`스캔 완료: {{added}}개 추가, {{removed}}개 제거`,addedToQueue:`{{count}}개 파일을 대기열에 추가함`,addedToQueuePartial:`{{added}}개 추가됨, {{failed}}개 실패`,failedToAddToQueue:`파일 추가 실패: {{error}}`,fileRenamed:`파일 이름 변경됨`,folderRenamed:`폴더 이름 변경됨`,thumbnailsGenerated:`{{count}}개 썸네일 생성됨`,thumbnailsGeneratedPartial:`{{succeeded}}개 썸네일 생성됨, {{failed}}개 실패`,noStlMissingThumbnails:`썸네일이 없는 STL 파일 없음`,failedToGenerateThumbnails:`썸네일 생성 실패: {{error}}`,thumbnailGenerated:`썸네일 생성됨`,failedToGenerateThumbnail:`썸네일 생성 실패: {{error}}`}},projects:{parentLabel:`상위 프로젝트`,parentNone:`없음 (최상위 프로젝트)`,parentHint:`이 프로젝트를 다른 프로젝트 아래에 두면 수치가 마스터 프로젝트로 합산됩니다`,partOf:`{{name}}의 일부`,subProjectCount:`하위 프로젝트 {{count}}개`,subProjectsOf:`{{name}}의 하위 프로젝트`,title:`프로젝트`,subtitle:`3D 인쇄 프로젝트 정리 및 추적`,newProject:`새 프로젝트`,editProject:`프로젝트 편집`,deleteProject:`프로젝트 삭제`,projectName:`프로젝트 이름`,description:`설명`,noProjects:`프로젝트 없음`,noProjectsFiltered:`{{status}} 프로젝트 없음`,noProjectsFilteredHelp:`{{status}} 프로젝트가 없습니다. 상태가 변경되면 여기에 표시됩니다.`,createFirst:`첫 번째 프로젝트를 만들어 관련 인쇄물을 정리하고 진행 상황을 추적하며 빌드를 관리하세요.`,createFirstButton:`첫 번째 프로젝트 만들기`,create:`만들기`,files:`파일`,prints:`인쇄물`,plates:`플레이트`,parts:`부품`,lastModified:`마지막 수정`,deleteConfirm:`이 프로젝트를 삭제하시겠습니까? 아카이브 및 대기열 항목은 연결 해제되지만 삭제되지는 않습니다.`,addFiles:`파일 추가`,removeFile:`파일 제거`,viewDetails:`세부 정보 보기`,namePlaceholder:`예: Voron 2.4 빌드`,descriptionPlaceholder:`선택적 설명...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`URL은 http:// 또는 https://로 시작해야 합니다`,openExternalUrl:`프로젝트 URL 열기`,coverImageLabel:`커버 사진`,coverImageAlt:`프로젝트 커버 사진`,coverImageUpload:`업로드`,coverImageReplace:`교체`,coverImageRemove:`제거`,color:`색상`,targetPlates:`목표 플레이트`,targetPlatesPlaceholder:`예: 25`,targetPlatesHelp:`인쇄 작업 수`,targetParts:`목표 부품`,targetPartsPlaceholder:`예: 150`,targetPartsHelp:`필요한 총 개체 수`,targetSets:`파일당 복사본 수`,targetSetsPlaceholder:`예: 10`,targetSetsHelp:`각 인쇄 가능한 파일을 인쇄할 횟수`,tagsLabel:`태그 (쉼표로 구분)`,tagsPlaceholder:`예: voron, 기능성, 선물`,dueDate:`마감일`,priority:`우선순위`,priorityLow:`낮음`,priorityNormal:`보통`,priorityHigh:`높음`,priorityUrgent:`긴급`,statusActive:`활성`,statusCompleted:`완료됨`,statusArchived:`보관됨`,done:`완료`,completed:`완료됨`,failed:`실패`,inQueue:`대기 중`,noPrintsYet:`인쇄물 없음`,printJobs:`인쇄 작업 (플레이트)`,partsPrinted:`인쇄된 부품`,failedParts:`실패한 부품`,import:`가져오기`,export:`내보내기`,importProject:`프로젝트 가져오기`,exportAll:`모든 프로젝트 내보내기`,loading:`프로젝트 불러오는 중...`,noEditPermission:`프로젝트 편집 권한이 없습니다`,noDeletePermission:`프로젝트 삭제 권한이 없습니다`,noCreatePermission:`프로젝트 생성 권한이 없습니다`,noImportPermission:`프로젝트 가져오기 권한이 없습니다`,noExportPermission:`프로젝트 내보내기 권한이 없습니다`,toast:{created:`프로젝트 생성됨`,updated:`프로젝트 업데이트됨`,deleted:`프로젝트 삭제됨`,imported:`프로젝트 가져옴`,multipleImported:`{{count}}개 프로젝트 가져옴`,importFailed:`가져오기 실패`,exported:`프로젝트 내보냄 (메타데이터만)`}},projectDetail:{notFound:`프로젝트를 찾을 수 없음`,backToProjects:`프로젝트로 돌아가기`,export:`내보내기`,exportProject:`프로젝트 내보내기`,noExportPermission:`프로젝트 내보내기 권한이 없습니다`,noEditPermission:`프로젝트 편집 권한이 없습니다`,partOf:`속한 프로젝트:`,priorityLabel:`우선순위:`,noPrints:`이 프로젝트에 아직 인쇄물이 없습니다`,status:{active:`활성`,completed:`완료됨`,archived:`보관됨`},priority:{low:`낮음`,normal:`보통`,high:`높음`,urgent:`긴급`},dueDate:{overdue:`기한 초과`,today:`오늘 마감`,daysLeft:`{{count}}일 남음`},progress:{platesProgress:`플레이트 진행률`,partsProgress:`부품 진행률`,setsProgress:`완성된 세트`,sets:`세트`,setsHint:`모든 인쇄 가능한 파일이 이 횟수에 도달하면 세트가 완성됩니다`,printJobs:`인쇄 작업`,parts:`부품`,percentComplete:`{{percent}}% 완료`,remaining:`{{count}}개 남음`},stats:{printJobs:`인쇄 작업`,total:`합계`,failed:`{{count}}개 실패`,partsPrinted:`{{count}}개 부품 인쇄됨`,printTime:`인쇄 시간`,filamentUsed:`사용된 필라멘트`},cost:{title:`비용 추적`,filamentCost:`필라멘트 비용`,energy:`에너지`,totalCost:`총 비용`,total:`합계`,includesBom:`BOM 포함`,budget:`예산`,remaining:`남은 예산`},subProjects:{title:`하위 프로젝트 ({{count}})`,jobs:`작업 {{count}}개`},rollup:{title:`하위 프로젝트 {{count}}개 포함`,progress:`전체 진행률`,percentComplete:`{{percent}}% 완료`},notes:{title:`메모`,noEditPermission:`메모 편집 권한이 없습니다`,placeholder:`이 프로젝트에 대한 메모 추가...`,empty:`아직 메모가 없습니다. 편집을 클릭하여 메모를 추가하세요.`},files:{title:`파일`,linkFolders:`파일 관리자에서 폴더 연결`,forQuickAccess:`빠른 접근을 위해 이 프로젝트에 연결합니다.`,fileCount:`{{count}}개 파일`,empty:`연결된 폴더가 없습니다. 파일 관리자로 이동하여 폴더를 이 프로젝트에 연결하세요.`,printedCount:`{{count}}회 인쇄됨`,progressTooltip:`{{target}}회 중 {{done}}회 인쇄 완료`,noFiles:`이 폴더에 파일이 없습니다.`},bom:{title:`부품 목록`,acquired:`{{total}}개 중 {{completed}}개 확보`,showAll:`전체 표시`,hideDone:`완료된 것 숨기기`,addPart:`부품 추가`,noAddPermission:`부품 추가 권한이 없습니다`,partNamePlaceholder:`부품 이름 (예: M3x8 나사)`,partName:`부품 이름`,qty:`수량`,price:`가격 ({{currency}})`,sourcingUrlPlaceholder:`구매 URL (선택사항)`,remarksPlaceholder:`비고 (선택사항)`,deletePart:`부품 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까?`,noUpdatePermission:`부품 업데이트 권한이 없습니다`,noEditPermission:`부품 편집 권한이 없습니다`,noDeletePermission:`부품 삭제 권한이 없습니다`,totalCost:`총 비용:`,empty:`부품 목록에 부품이 없습니다. 하드웨어, 전자 부품 또는 기타 구성품을 추가하여 조달이 필요한 것을 추적하세요.`},timeline:{title:`활동 타임라인`,empty:`아직 활동이 없습니다.`},template:{saveAsTemplate:`템플릿으로 저장`,noCreatePermission:`템플릿 생성 권한이 없습니다`},queue:{title:`대기열`,viewAll:`전체 보기`,printing:`{{count}}개 인쇄 중`,queued:`{{count}}개 대기 중`},prints:{title:`인쇄물 ({{count}})`},toast:{projectUpdated:`프로젝트 업데이트됨`,partAdded:`부품 추가됨`,partRemoved:`부품 제거됨`,exportFailed:`내보내기 실패`,projectExported:`프로젝트 내보냄`,templateCreated:`템플릿 생성됨`}},system:{title:`시스템 정보`,version:`버전`,uptime:`가동 시간`,cpuUsage:`CPU 사용량`,memoryUsage:`메모리 사용량`,diskUsage:`디스크 사용량`,networkInfo:`네트워크 정보`,logs:`로그`,debugMode:`디버그 모드`,enableDebug:`디버그 로깅 활성화`,disableDebug:`디버그 로깅 비활성화`,downloadLogs:`로그 다운로드`,clearLogs:`로그 초기화`,dockerInfo:`Docker 정보`,containerName:`컨테이너 이름`,imageName:`이미지 이름`,platform:`플랫폼`,architecture:`아키텍처`},sponsors:{sectionTitle:`독립적·커뮤니티 후원`,tagline:`Bambuddy는 무료이며, 자발적으로 후원하는 사용자 덕분에 계속 무료로 유지됩니다. VC도 없고, 클라우드 종속도 없습니다.`,viewSupporters:`후원자 보기`,toastPrints:`Bambuddy로 {{count}}회 인쇄를 완료했습니다. Bambuddy는 후원자 덕분에 무료로 유지됩니다.`,toastCost:`Bambuddy로 {{total}}만큼의 필라멘트를 추적했습니다. 프로젝트를 독립적으로 유지하는 사람들을 만나보세요.`,toastArchives:`Bambuddy로 {{count}}회 인쇄를 아카이브했습니다. 독립성을 지지하는 사람들을 만나보세요.`,toastAnniversary:`Bambuddy와 함께한 지 1년입니다! 프로젝트를 독립적으로 유지하는 사람들을 만나보세요.`,toastVersionUpdate:`v{{version}}로 업데이트되었습니다. Bambuddy는 후원자 덕분에 무료로 유지됩니다.`,toastBusiness:`프린터 {{count}}대에서 Bambuddy를 운영 중이신가요? 팀을 위한 지원 플랜이 있습니다. 우선 수정, 인보이스 발행, 메인테이너와의 직접 소통을 제공합니다.`,businessCta:`비즈니스용 Bambuddy`,businessTitle:`비즈니스용 Bambuddy`,businessTagline:`프린터 {{count}}대를 운영 중입니다. 팀과 프린트 팜을 위한 우선 지원, 상용 라이선스, 인보이스 발행을 제공합니다.`},library:{title:`필라멘트 라이브러리`,addFilament:`필라멘트 추가`,editFilament:`필라멘트 편집`,deleteFilament:`필라멘트 삭제`,vendor:`제조사`,material:`재료`,color:`색상`,kFactor:`K 계수`,temperature:`온도`,noFilaments:`라이브러리에 필라멘트 없음`,deleteConfirm:`이 필라멘트를 삭제하시겠습니까?`,importFromPrinter:`프린터에서 가져오기`,exportToFile:`파일로 내보내기`,runWithPipeline:{actionLabel:`파이프라인으로 실행`,noPermission:`파이프라인을 실행할 권한이 없습니다`,modalTitle:`파이프라인으로 실행`,confirmTitle:`실행 확인`,confirmIntro:`사전 점검에서 이 실행과 관련된 문제를 발견했습니다`,sourceHint:`소스`,pipelineHint:`파이프라인`,targetHint:`대상`,pipelineListAria:`사용 가능한 파이프라인`,runAnyway:`그래도 실행`,loading:`불러오는 중…`,empty:`저장된 파이프라인이 없습니다. 슬라이스 대화상자를 열고 "파이프라인으로 저장"을 클릭하여 생성하세요.`,noTarget:`대상 프린터가 설정되지 않음`,noTargetMessage:`이 파이프라인에는 대상 프린터가 없습니다. 설정에서 열어 선택하세요.`,copies:`사본 수`,copiesHint:`최대 {{n}}`,classTarget:`임의의 {{model}}`,toast:{started:`파이프라인 실행 시작됨`,failed:`실행을 시작할 수 없습니다`},issue:{printerNotSet:`이 파이프라인에 대상 프린터가 설정되어 있지 않습니다.`,printerNotFound:`대상 프린터가 더 이상 존재하지 않습니다.`,printerDisabled:`대상 프린터가 비활성화되어 있습니다.`,printerOffline:`대상 프린터가 오프라인입니다.`,filamentType:`필라멘트 슬롯 {{slot}}: 예상 {{expected}}, AMS 실제 {{actual}}`,filamentColor:`필라멘트 슬롯 {{slot}}: 색상이 다릅니다 (예상 {{expected}}, AMS {{actual}})`,amsSlotMissing:`AMS 슬롯 {{slot}}이(가) 이 프린터에서 사용 불가`,filamentUnverified:`필라멘트 슬롯 {{slot}}은(는) 클라우드/표준 프리셋이며 정적으로 검증할 수 없습니다.`,noClassMatches:`이 설치에서 파이프라인의 대상 모델 클래스({{expected}})와 일치하는 프린터가 없습니다.`,classNotSet:`파이프라인 대상이 프린터 클래스로 설정되었지만 모델이 선택되지 않았습니다.`}}},slicerSettings:{presetValuesOutdatedSidecar:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 이 기능보다 오래되어 프리셋 값을 가져올 수 없습니다. 값을 보려면 사이드카 이미지를 업데이트하세요. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesNotConfigured:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 설정되지 않아 프리셋 값을 읽을 수 없습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesSidecarUnavailable:`슬라이서 기본값을 표시합니다. 슬라이서 사이드카가 응답하지 않아 프리셋 값을 읽을 수 없습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,presetValuesUnavailable:`슬라이서 기본값을 표시합니다. 선택한 프리셋의 값을 읽을 수 없었습니다. 변경하지 않은 항목은 계속 프리셋 값을 사용합니다.`,filamentDefault:`기본값`,fromFile:`파일에서`,fromFileHint:`디자이너가 원본 파일에서 이 항목을 변경했습니다. 값은 {{value}}입니다.`,fromFilePrinterCoupled:`디자이너의 프린터`,fromFilePrinterCoupledHint:`이 파일이 설계된 프린터에 맞춘 값입니다. 사용 중인 프린터에서는 잘못되거나 범위를 벗어날 수 있습니다.`,fromFileOverridesPreset:`프리셋 덮어쓰기`,fromFileOverridesPresetHint:`파일은 이 값을 {{value}}(으)로 설정하지만 선택한 프리셋은 {{preset}}을(를) 사용합니다. 파일을 우선할 때만 선택하세요.`,useFromFile:`{{option}}에 원본 파일의 값 사용`,otherFromFile:`이 파일의 기타 설정`,fromFileSummary:`이 파일에서 디자이너가 프로세스 설정 {{count}}개를 변경했습니다. 체크한 항목만 적용됩니다.`,fromFileUseAll:`디자이너 설정 사용`,fromFileUseAllHint:`다른 프린터에서도 통하는 설정에 체크합니다. 디자이너의 프린터에 맞춘 설정과 선택한 프리셋을 정의하는 설정은 꺼진 채로 둡니다.`,fromFileClear:`{{count}}개 해제`,loading:`슬라이서 설정을 불러오는 중…`,mode:{simple:`간단`,advanced:`고급`,expert:`전문가`},searchPlaceholder:`설정 검색`,resetAll:`{{count}}개 초기화`,resetOption:`기본값으로 되돌리기`,noMatches:`검색과 일치하는 설정이 없습니다.`},slice:{filamentSlotUnset:`미설정`,processSettingsEmbedded:`'파일에 포함된 설정 사용'이 켜져 있는 동안에는 사용되지 않습니다. 이 슬라이스는 파일 자체의 설정을 따릅니다.`,processSettingsInactive:`비활성`,presetsHidden:`{{count}}개 숨김`,showAllPresets:`모두 표시`,showFewerPresets:`간략히 표시`,processSettings:`프로세스 설정`,processSettingsHint:`이 슬라이스에 사용할 프리셋을 조정합니다. 건드리지 않은 항목은 프리셋 정의를 그대로 따릅니다.`,processSettingsChanged:`{{count}}개 변경됨`,processSettingsUnchanged:`프리셋 기본값`,title:`모델 슬라이싱`,action:`슬라이싱`,slicing:`슬라이싱 중…`,printer:`프린터 프로필`,process:`프로세스 프로필`,filament:`필라멘트 프로필`,filamentSlot:`필라멘트 {{index}} ({{type}})`,selectPreset:`— 프리셋 선택 —`,loadingPresets:`프리셋 불러오는 중…`,analyzingPlateFilaments:`플레이트 필라멘트 분석 중…`,analyzingPlateFilamentsHint:`이 플레이트가 사용하는 AMS 슬롯을 확인하기 위해 미리보기 슬라이싱을 실행합니다. 캐시 후에는 재오픈이 즉각적입니다.`,previewToast:`{{name}} 분석 중 — {{elapsed}}`,previewWithProgress:`{{name}} 분석 중 — {{stage}} ({{percent}}%) — {{elapsed}}`,notUsedByPlate:`— 이 플레이트에서 사용되지 않음`,noPresetsForSlot:`사용 가능한 프리셋 없음`,presetsLoadFailed:`프리셋 불러오기 실패. 먼저 설정 → 프로필에서 가져오세요.`,refreshPresets:`새로 고침`,refreshPresetsTitle:`프리셋 새로 고침 — 최신 클라우드 및 번들 목록 가져오기 (Bambu Studio 또는 Bambu Handy에서 프리셋 삭제 후 사용)`,allPresetsRequired:`모든 프리셋을 선택해야 합니다`,useEmbedded:`파일에 포함된 설정 사용`,useEmbeddedHint:`위 프로필 대신 디자이너가 설정한 대로(벽, 내부 채움, 필라멘트) 슬라이싱합니다. 프린터가 파일과 일치하여 사용할 수 있습니다.`,autoOrient:`개체 방향 자동 조정`,autoOrientHint:`슬라이싱하기 전에 각 개체를 출력하기 좋은 면으로 회전시킵니다. 파일에 저장된 방향을 덮어씁니다.`,autoArrange:`플레이트에 자동 배치`,autoArrangeHint:`개체가 겹치지 않도록 슬라이서가 다시 배치합니다. 파일의 배치를 대체합니다.`,enqueuing:`슬라이싱 작업 제출 중…`,queued:`대기 중…`,failed:`슬라이싱 실패. 슬라이서 사이드카 로그를 확인하세요.`,startedToast:`백그라운드에서 {{name}} 슬라이싱 중…`,queuedToast:`대기 중: {{name}} — {{elapsed}}`,runningToast:`{{name}} 슬라이싱 중 — {{elapsed}}`,runningWithProgress:`{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,completedToast:`{{name}} 슬라이싱 완료`,externalWriteFallbackToast:`내부 라이브러리에 저장했습니다: 외부 폴더에 쓸 수 없습니다`,failedToast:`{{name}} 슬라이싱 실패: {{detail}}`,tier:{local:`가져온 것`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`표준`},cloud:{notAuthenticated:`클라우드 프리셋을 보려면 Bambu Cloud에 로그인하세요 (설정 → 프로필 → Bambu Cloud).`,expired:`Bambu Cloud 세션이 만료되었습니다 — 다시 로그인하여 클라우드 프리셋을 새로고침하세요.`,unreachable:`현재 Bambu Cloud에 연결할 수 없습니다. 로컬 및 표준 프리셋은 계속 작동합니다.`},orcaCloud:{notAuthenticated:`Orca 프리셋을 보려면 Orca Cloud (프로필 → Orca Cloud)에 로그인하세요.`,expired:`Orca Cloud 세션이 만료되었습니다 — Orca 프리셋을 새로고침하려면 다시 로그인하세요.`,unreachable:`Orca Cloud에 현재 연결할 수 없습니다. 다른 프리셋은 계속 작동합니다.`},actionAll:`{{count}}개 플레이트 모두 슬라이싱`,actionAllTitle:`모든 플레이트를 단일 다중 플레이트 출력으로 슬라이싱합니다 (단일 아카이브). 필라멘트 선택은 프로젝트가 정의하는 모든 슬롯을 포함합니다.`,allPlatesToggle:`{{count}}개 플레이트 모두 슬라이싱`,otherPrinters:`다른 프린터`,runningWithProgressMultiPlate:`플레이트 {{plateIndex}}/{{plateCount}} • {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,failedTitle:`슬라이싱 실패`,bedType:{label:`빌드 플레이트`,auto:`자동 (프로세스 프리셋 사용)`,coolPlate:`쿨 플레이트`,coolPlateSuperTack:`쿨 플레이트 슈퍼택`,engineering:`엔지니어링 플레이트`,highTemp:`고온 플레이트`,texturedPEI:`텍스처 PEI 플레이트`,smoothPEI:`매끄러운 PEI 플레이트`},pipelines:{label:`파이프라인`,applyAria:`파이프라인 적용`,applyPrompt:`파이프라인 적용…`,empty:`저장된 파이프라인이 없습니다`,saveButton:`파이프라인으로 저장`,saveTitle:`현재 네 개 슬롯의 선택을 재사용 가능한 파이프라인으로 저장합니다`,namePlaceholder:`파이프라인 이름`,nameAria:`새 파이프라인 이름`,toast:{applied:`"{{name}}" 적용됨`,saved:`파이프라인이 저장되었습니다`,saveFailed:`저장 실패`}}},spoolman:{title:`Spoolman 통합`,enabled:`Spoolman 활성화됨`,url:`Spoolman URL`,connected:`연결됨`,disconnected:`연결되지 않음`,testConnection:`연결 테스트`,sync:`동기화`,syncing:`동기화 중...`,lastSync:`마지막 동기화`,linkToSpoolman:`Spoolman에 연결`,openInSpoolman:`Spoolman에서 열기`,unlinkSpool:`스풀 연결 해제`,unlinkConfirmTitle:`스풀 할당 해제?`,unlinkConfirmMessage:`이 슬롯에서 스풀을 제거합니다. 스풀 데이터 자체는 변경되지 않습니다.`,selectSpool:`스풀 선택`,noUnlinkedSpools:`할당되지 않은 스풀 없음`,linkSuccess:`스풀이 성공적으로 할당되었습니다`,linkFailed:`스풀 할당 실패`,unlinkSuccess:`스풀이 성공적으로 할당 해제되었습니다`,unlinkFailed:`스풀 할당 해제 실패`,linkedSpool:`할당된 스풀`,spoolId:`스풀 ID`,fillSourceLabel:`(Spoolman)`,weight:`무게`,remaining:`남은 양`,disableWeightSync:`AMS 예상 무게 동기화 비활성화`,disableWeightSyncDesc:`AMS 추정치에서 남은 용량을 업데이트하지 않습니다. AMS 백분율 기반 추정 대신 Spoolman의 사용량 추적을 선호하는 경우 사용하세요. 새 스풀은 여전히 AMS 추정치를 초기 무게로 사용합니다.`,reportPartialUsage:`실패한 인쇄물에 대한 부분 사용량 보고`,reportPartialUsageDesc:`인쇄가 실패하거나 취소될 때 레이어 진행률을 기반으로 해당 시점까지 사용된 예상 필라멘트를 보고합니다.`},locations:{title:`보관 위치`,subtitle:`스풀의 선반, 서랍 등 물리적 보관 장소를 관리합니다`,add:`위치 추가`,addShort:`추가`,edit:`위치 편집`,name:`이름`,spools:`스풀`,sensors:`센서`,empty:`아직 보관 위치가 없습니다. 첫 번째 선반이나 서랍을 만드세요.`,manage:`위치`,createPlaceholder:`예: 선반 A, 서랍 1`,nameRequired:`위치 이름은 필수입니다`,created:`위치가 생성되었습니다`,updated:`위치가 업데이트되었습니다`,deleted:`위치가 삭제되었습니다`,saveFailed:`위치 저장에 실패했습니다`,deleteFailed:`위치 삭제에 실패했습니다`,deleteBlocked:`삭제하기 전에 이 위치의 모든 스풀을 옮기세요`,confirmDelete:`"{{name}}"을(를) 삭제하시겠습니까?`,confirmDeleteMessage:`이 위치가 카탈로그에서 제거됩니다. 스풀을 먼저 옮겨야 합니다.`,confirmDeleteMessageWithSensors:`이 위치가 카탈로그에서 제거됩니다. 스풀을 먼저 옮겨야 합니다. 연결된 센서도 함께 삭제됩니다.`},inventory:{title:`스풀 재고`,addToInventory:`인벤토리에 추가`,addToInventoryPending:`추가 중...`,addToInventorySuccess:`스풀이 인벤토리에 추가됨`,addToInventoryFailed:`스풀을 인벤토리에 추가하지 못함`,unknownSpoolTitle:`새 필라멘트 감지됨`,unknownSpoolMessage:`{{location}}에서 알 수 없는 RFID 태그가 있는 스풀이 감지되었습니다. 지금 인벤토리에 추가하시겠습니까?`,unknownSpoolSlot:`슬롯`,bulk:{selectAllVisible:`표시된 항목 모두 선택`,selectRow:`행 선택`,selectGroup:`그룹 선택`,selectionCount:`{{count}}개 선택됨`,edit:`편집`,printLabels:`라벨 인쇄`,resetUsage:`사용량 재설정`,restore:`복원`,archive:`보관`,delete:`삭제`,clearSelection:`선택 해제`,editTitle:`스풀 일괄 편집`,editSubtitle:`선택한 {{count}}개의 스풀에 적용됩니다. 체크한 필드만 업데이트됩니다.`,editHint:`필드에 입력하면 업데이트할 항목으로 표시됩니다 — 체크된 행만 전송됩니다. 빈 필드는 스풀을 변경하지 않습니다 (필드 비우기는 개별 스풀에서만 가능).`,useCustom:`"{{value}}" 사용`,toggleField:`이 필드의 업데이트 전환`,changeCount:`{{count}}개의 필드가 업데이트됩니다.`,applyPending:`적용 중...`,applyButton:`{{count}}개에 적용`,deleteTitle:`선택한 스풀 삭제`,archiveTitle:`선택한 스풀 보관`,restoreTitle:`선택한 스풀 복원`,resetUsageTitle:`선택한 스풀의 사용량 재설정`,deleteMessage:`{{count}}개의 스풀을 영구적으로 삭제하시겠습니까? 되돌릴 수 없습니다.`,archiveMessage:`{{count}}개의 스풀을 보관하시겠습니까? 나중에 복원할 수 있습니다.`,restoreMessage:`{{count}}개의 보관된 스풀을 복원하시겠습니까?`,resetUsageMessage:`{{count}}개의 스풀에서 "총 사용량" 카운터를 재설정하시겠습니까? 남은 무게는 보존됩니다.`,updateSuccess:`{{count}}개의 스풀 업데이트됨`,updateFailed:`일괄 업데이트 실패`,updatePartial:`{{ok}}개 업데이트, {{failed}}개 실패`,updateAllFailed:`{{count}}개의 업데이트가 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,deleteSuccess:`{{count}}개의 스풀 삭제됨`,deleteFailed:`일괄 삭제 실패`,deletePartial:`{{ok}}개 삭제, {{failed}}개 실패`,deleteAllFailed:`{{count}}개의 삭제가 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,archiveSuccess:`{{count}}개의 스풀 보관됨`,archiveFailed:`일괄 보관 실패`,archivePartial:`{{ok}}개 보관, {{failed}}개 실패`,archiveAllFailed:`{{count}}개의 보관이 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,restoreSuccess:`{{count}}개의 스풀 복원됨`,restoreFailed:`일괄 복원 실패`,restorePartial:`{{ok}}개 복원, {{failed}}개 실패`,restoreAllFailed:`{{count}}개의 복원이 모두 실패했습니다 — 재시도를 위해 선택이 유지됩니다`,invalidHex:`16진수 6자(RRGGBB) 또는 8자(RRGGBBAA)를 입력하세요. 그렇지 않으면 필드가 적용되지 않습니다.`},spoolmanMixedContentTitle:`HTTPS에서 Spoolman을 불러올 수 없음 — 브라우저가 혼합 콘텐츠를 차단함`,spoolmanMixedContentBody:`Bambuddy가 HTTPS로 서비스되고 있지만 Spoolman URL은 여전히 HTTP입니다. 브라우저는 보안상 혼합 콘텐츠를 차단하므로 내장된 Spoolman UI가 렌더링되지 않습니다. 이 기능이 작동하려면 Spoolman이 HTTPS로 접근 가능해야 합니다.`,spoolmanMixedContentFixReverseProxy:`Spoolman을 Bambuddy와 같은 리버스 프록시(Traefik / Nginx / Caddy) 뒤에 HTTPS로 배치한 다음 설정에서 Spoolman URL을 새 HTTPS 주소로 업데이트하세요.`,spoolmanMixedContentFixOpenNewTab:`임시 방편으로 HTTP로 새 브라우저 탭에서 Spoolman을 여세요 — 혼합 콘텐츠 규칙은 내장 프레임에만 적용되므로 독립 탭은 여전히 작동합니다.`,spoolmanOpenInNewTab:`새 탭에서 Spoolman 열기`,labels:{title:`스풀 라벨 인쇄`,selectedCount:`{{count}}개 선택됨`,pickSpools:`라벨을 인쇄할 스풀 선택:`,monochrome:`흑백 (흑백 프린터)`,monochromeHint:`색상 견본을 제거하고 텍스트를 넓힙니다`,startingPosition:`라벨 시작 위치`,startingPositionRange:`시트 템플릿만 해당: L7160은 1–21, 5160은 1–30을 지원합니다.`,startingPositionInvalid:`1에서 {{capacity}} 사이의 정수를 입력하세요.`,startingPositionFirst:`위치 1부터 인쇄를 시작합니다.`,startingPositionSkipped:`첫 번째 시트의 위치 1부터 {{lastPosition}}까지는 비워 둡니다.`,startingPositionRangeError:`이 시트의 시작 위치는 1에서 {{capacity}} 사이여야 합니다.`,searchPlaceholder:`이름, 브랜드 또는 #ID 검색`,filterByMaterial:`재료:`,allMaterials:`전체`,selectVisible:`보이는 모든 항목 선택 ({{count}})`,deselectVisible:`보이는 항목 선택 해제`,clearAll:`모두 초기화`,noSpoolsToShow:`표시할 스풀이 없습니다. 필터를 조정하고 다시 시도하세요.`,noMatches:`현재 검색 또는 필터와 일치하는 스풀이 없습니다.`,printOne:`이 스풀의 라벨 인쇄`,printLabels:`라벨 인쇄…`,bulkTitle:`현재 표시된 {{count}}개에서 라벨을 인쇄할 스풀 선택`,noSpoolsTitle:`라벨을 붙일 스풀 없음`,error:`라벨을 생성할 수 없습니다: {{msg}}`,templates:{box40x30:{label:`박스 라벨 (40 × 30 mm)`,hint:`페이지당 단일 라벨; 일반 DK/Brother 롤 크기, 필라멘트 가방 및 보관함 라벨에 적합.`},box:{label:`박스 라벨 (62 × 29 mm)`,hint:`페이지당 단일 라벨; Brother PT/QL 및 Dymo 소형 라벨에 맞는 크기.`},averyL7160:{label:`Avery L7160 — A4 시트 (38.1 × 63.5 mm × 21)`,hint:`EU 시트; A4 페이지당 21개 라벨.`},avery5160:{label:`Avery 5160 — US Letter 시트 (25.4 × 66.7 mm × 30)`,hint:`US 시트; Letter 페이지당 30개 라벨.`},amsHolderSmall:{label:`AMS 홀더 — 소형 (74 × 33 mm)`,hint:`페이지당 단일 레이블; MakerWorld 모델 752566 (AMS 필라멘트 레이블 홀더)의 인쇄 가능 레이블과 일치합니다.`},amsHolderLarge:{label:`AMS 홀더 — 대형 (75 × 55 mm)`,hint:`페이지당 단일 레이블; AMS 필라멘트 레이블 홀더의 카드스톡 삽입 변형에 맞습니다. 스와치, 브랜드, 재질, ID, QR 코드에 충분한 공간이 있습니다.`}},sortBy:{label:`정렬:`,id:`ID 순`,color:`색상 순`}},csv:{importButton:`CSV 가져오기`,exportButton:`CSV 내보내기`,modalTitle:`CSV에서 스풀 가져오기`,selectFile:`CSV 파일을 선택하거나 여기로 끌어다 놓으세요`,dragHint:`헤더: material(필수), brand, subtype, color_name, rgba, …`,parsing:`파일을 읽는 중…`,previewError:`CSV 파일을 읽을 수 없습니다`,validCount:`유효 {{count}}개`,errorCount:`오류 {{count}}개`,skippedCount:`건너뜀 {{count}}개`,colRow:`행`,colStatus:`상태`,colColor:`색상`,colorResolved:`카탈로그에서 색상 채움`,colorCrossMaterial:`다른 재료에서 색상을 가져옴 — 카탈로그에 정확히 일치하는 항목 없음`,duplicateExisting:`이 재료, 브랜드, 색상의 스풀이 이미 존재합니다 — 그래도 새 스풀로 가져옵니다`,spoolmanHint:`Spoolman 모드에서는 Spoolman의 기본 CSV 가져오기/내보내기를 사용하세요.`,importValidRows:`유효한 {{count}}개 행 가져오기`,noValidRows:`유효한 행 없음`,importing:`가져오는 중…`,importSuccess:`{{count}}개 스풀을 가져왔습니다`,importError:`가져오기 실패`,exportError:`내보내기 실패`},addSpool:`스풀 추가`,editSpool:`스풀 편집`,copySpool:`스풀 복사`,material:`재료`,selectMaterial:`재료 선택...`,subtype:`하위 유형`,brand:`브랜드`,searchBrand:`브랜드 검색...`,useCustomBrand:`"{{brand}}" 사용`,useCustomMaterial:`사용자 지정 재료 사용: {{material}}`,suggestedOptions:`추천`,allOptions:`전체`,colorName:`색상 이름`,colorNamePlaceholder:`제이드 화이트, 파이어 레드...`,color:`색상`,hexColor:`16진수 색상`,pickColor:`사용자 지정 색상 선택`,labelWeight:`라벨 무게`,coreWeight:`빈 스풀 무게`,searchSpoolWeight:`스풀 무게 검색...`,weightUsed:`사용됨`,currentWeight:`남은 무게`,measuredWeight:`측정된 무게`,spoolName:`스풀`,costPerKg:`kg당 비용`,storageLocation:`보관 위치`,temperature:`온도`,humidity:`습도`,battery:`배터리`,storageLocationPlaceholder:`예: 선반 A, 서랍 1`,openInInventory:`재고에서 열기`,measuredWeightError:`측정된 무게는 {{min}}g과 {{max}}g 사이여야 합니다.`,slicerFilament:`슬라이서 필라멘트`,slicerFilamentName:`슬라이서 프리셋 이름`,slicerPreset:`슬라이서 프리셋`,searchPresets:`필라멘트 프리셋 검색...`,selectedPreset:`선택됨`,noPresetsFound:`프리셋을 찾을 수 없음`,tempOverrides:`온도 재정의`,note:`메모`,notePlaceholder:`이 스풀에 대한 추가 메모...`,category:`카테고리`,categoryPlaceholder:`예: 생산, 프로토타입, 고객 A`,categoryNone:`미분류`,lowStockThresholdOverride:`재고 부족 임계값 (이 스풀)`,lowStockThresholdOverrideHelp:`전역 임계값({{global}}%)을 사용하려면 비워두세요.`,clearRfid:`RFID 태그 초기화`,rfidCleared:`RFID 태그가 초기화되었습니다`,archive:`보관`,restore:`복원`,noSpools:`아직 스풀이 없습니다. 첫 번째 스풀을 추가하여 시작하세요.`,noAvailableSpools:`사용 가능한 스풀이 없습니다. 재고에 스풀을 추가하거나 먼저 다른 슬롯에서 해제하세요.`,kProfiles:`K-프로필`,addKProfile:`K-프로필 추가`,assignSpool:`스풀 할당`,unassignSpool:`할당 해제`,assignSuccess:`스풀 할당 및 AMS 슬롯 구성됨`,assignPendingInsert:`할당됨. 스풀을 삽입하면 슬롯이 구성됩니다.`,assignFailed:`스풀 할당 실패`,selectSpool:`이 슬롯에 할당할 스풀 선택`,assigned:`할당됨`,assigning:`할당 중...`,searchSpools:`스풀 검색...`,showAllSpools:`모든 스풀 표시`,spoolmanSpools:`Spoolman 스풀`,allMaterials:`모든 재료`,filterByBrand:`브랜드로 필터...`,showArchived:`보관된 항목 표시`,quickAdd:`빠른 추가 (재고)`,quantity:`수량`,stock:`재고`,configured:`구성됨`,spoolsCreated:`{{count}}개 스풀 생성됨`,spoolsPartiallyCreated:`{{total}}개 중 {{created}}개 스풀 생성됨 (일부 실패)`,spoolCreated:`스풀 생성됨`,spoolUpdated:`스풀 업데이트됨`,spoolDeleted:`스풀 삭제됨`,deepLinkSpoolNotFound:`스풀을 찾을 수 없음`,deepLinkFetchFailed:`스풀을 불러올 수 없음 — 다시 시도하세요`,spoolArchived:`스풀 보관됨`,spoolRestored:`스풀 복원됨`,kProfileSaveFailed:`K-프로필 설정을 저장할 수 없습니다`,syncWeightSpoolNotFound:`스풀을 찾을 수 없음 — 삭제되었을 수 있습니다`,syncWeightSpoolmanUnreachable:`Spoolman에 연결할 수 없음 — 나중에 다시 시도하세요`,syncWeightFailed:`무게 동기화 실패`,spoolmanUnreachable:`Spoolman에 연결할 수 없습니다 — 나중에 다시 시도하세요`,deleteSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,deleteFailed:`스풀 삭제 실패`,archiveSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,archiveFailed:`스풀 보관 실패`,restoreSpoolNotFound:`스풀을 찾을 수 없음 — 이미 삭제되었을 수 있습니다`,restoreFailed:`스풀 복원 실패`,saveFailed:`변경 사항 저장 실패`,tagClearFailed:`태그 초기화 실패`,deleteConfirm:`이 스풀을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,archiveConfirm:`이 스풀을 보관하시겠습니까?`,advancedSettings:`고급 설정`,filamentInfoTab:`필라멘트 정보`,paProfileTab:`PA 프로필`,filamentInfo:`필라멘트`,additional:`추가`,loadingPresets:`클라우드 프리셋 불러오는 중...`,cloudConnected:`클라우드 연결됨`,cloudNotConnected:`클라우드 연결되지 않음 (기본값 사용)`,recentColors:`최근`,searchColors:`색상 검색...`,searchResults:`검색 결과`,allColors:`모든 색상`,commonColors:`일반 색상`,showLess:`간략히 보기`,showAll:`모두 보기`,noColorsFound:`검색과 일치하는 색상 없음`,noResults:`일치하는 항목 없음`,extraColorsLabel:`추가 색상`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`2~8개의 16진수 색상값을 쉼표로 구분하여 붙여넣으세요. 그라데이션으로 렌더링됩니다.`,extraColorsInvalid:`유효하지 않은 16진수 무시됨: {{tokens}}`,colorEffectLabel:`효과`,colorEffect:{none:`없음`,sparkle:`스파클`,wood:`우드`,marble:`마블`,glow:`글로우`,matte:`매트`,silk:`실크`,galaxy:`갤럭시`,rainbow:`레인보우`,metal:`메탈`,translucent:`반투명`,gradient:`그라데이션`,dualColor:`듀얼 컬러`,triColor:`트리 컬러`,multicolor:`멀티컬러`},selectMaterialFirst:`먼저 필라멘트 정보 탭에서 재료를 선택해 주세요.`,noPrintersConfigured:`구성된 프린터 없음. PA 프로필을 사용하려면 프린터를 추가하세요.`,matchingFilter:`일치`,anyBrand:`모든 브랜드`,anyVariant:`모든 변형`,autoSelect:`자동 선택`,matches:`일치`,match:`일치`,noMatches:`일치 없음`,connected:`연결됨`,offline:`오프라인`,printerOffline:`프린터가 오프라인입니다. 연결하여 보정 프로필을 확인하세요.`,noKProfilesMatch:`선택한 필라멘트와 일치하는 K-프로필이 없습니다.`,leftNozzle:`왼쪽 노즐`,rightNozzle:`오른쪽 노즐`,profilesSelected:`보정 프로필 선택됨`,totalInventory:`총 재고`,totalConsumed:`총 소비량`,byMaterial:`재료별`,inPrinter:`프린터 내`,lowStock:`재고 부족`,sinceTracking:`추적 시작 이후`,loadedInAms:`AMS/외부에 장착됨`,remaining:`남은 양`,weightCheck:`무게 확인`,lastWeighed:`마지막 계량`,neverWeighed:`계량 기록 없음`,search:`스풀 검색...`,showing:`표시 중`,to:`~`,of:`/`,show:`표시`,spools:`스풀`,spool:`스풀`,page:`페이지`,noSpoolsMatch:`결과를 찾을 수 없음`,noSpoolsMatchDesc:`검색 또는 필터를 조정하여 원하는 항목을 찾아보세요.`,active:`활성`,archived:`보관됨`,all:`전체`,used:`사용됨`,new:`새것`,clearFilters:`필터 초기화`,table:`테이블`,cards:`카드`,net:`순`,groupSimilar:`그룹화`,groupedSpools:`동일한 스풀 {{count}}개`,groupedRows:`행`,columns:`열`,configureColumns:`열 구성`,configureColumnsDesc:`드래그하여 열 순서를 변경하거나 화살표를 사용하세요. 눈 아이콘으로 표시 여부를 전환합니다.`,visible:`표시됨`,reset:`초기화`,cancel:`취소`,applyChanges:`변경 사항 적용`,moveUp:`위로 이동`,moveDown:`아래로 이동`,hideColumn:`열 숨기기`,showColumn:`열 표시`,linkToSpool:`스풀에 연결`,tagLinked:`태그가 스풀에 연결됨`,tagLinkFailed:`태그 연결 실패`,tagAlreadyLinked:`태그가 이미 다른 스풀에 연결됨`,unknownTag:`알 수 없는 RFID 태그 감지됨`,usageHistory:`사용 기록`,noUsageHistory:`사용 기록 없음`,printName:`인쇄 이름`,weightConsumed:`소비 무게`,clearHistory:`초기화`,historyCleared:`사용 기록 초기화됨`,fillSourceLabel:`(재고)`,lowStockThresholdError:`임계값은 0.1에서 99.9 사이여야 합니다`,assignMismatchTitle:`재료 불일치`,assignMismatchMessage:`선택한 스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 트레이 재료 "{{trayMaterial}}"과(와) 일치하지 않습니다. 그래도 할당하시겠습니까?`,assignMismatchConfirm:`그래도 할당`,assignPartialMismatchMessage:`스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 "{{trayMaterial}}"과(와) 유사하지만 정확히 일치하지 않습니다. 계속하시겠습니까?`,assignProfileMismatchMessage:`스풀 프로필 "{{spoolProfile}}"이(가) {{location}}의 트레이 프로필 "{{trayProfile}}"과(와) 일치하지 않습니다. 계속하시겠습니까?`,assignReconfigureNote:`AMS 슬롯이 스풀의 프로필을 사용하도록 재구성됩니다.`,spoolmanFilamentCatalog:`Spoolman 필라멘트 카탈로그`,pickFromSpoolmanCatalog:`Spoolman 카탈로그에서 선택…`,spoolmanFilamentSelected:`Spoolman 카탈로그에서 필라멘트 선택됨`,spoolmanFilamentUnlinked:`필라멘트 카탈로그 연결 해제됨`,noSpoolmanFilaments:`Spoolman 카탈로그에서 필라멘트를 찾을 수 없음`,spoolmanFilamentColorSwatch:`필라멘트 색상`,spoolWeightManagedBySpoolman:`빈 스풀 무게는 Spoolman에서 필라멘트 유형별로 관리됩니다`,spoolmanCatalogLoadFailed:`Spoolman 필라멘트 카탈로그 불러오기 실패`,subtitle:`스풀 관리`,storageLocationNone:`위치 미설정`,resetConsumedCounter:`카운터 초기화`,resetConsumedCounterTooltip:`이 스풀의 소비된 그램 카운터를 0으로 초기화합니다. 잔여 무게는 변경되지 않습니다.`,resetConsumedCounterConfirm:`이 스풀의 소비된 그램 카운터를 0으로 초기화하시겠습니까? 이후 인쇄는 처음부터 추적됩니다. 스풀 자체, 잔여 무게 계산 및 설정은 변경되지 않습니다.`,resetAllConsumedCounters:`모든 카운터 초기화`,resetAllConsumedCountersTooltip:`모든 스풀의 소비된 그램 카운터를 0으로 초기화합니다. 잔여 무게는 변경되지 않습니다.`,resetAllConsumedCountersConfirm:`{{count}}개 스풀(아카이브 포함)의 소비된 그램 카운터를 모두 0으로 초기화하시겠습니까? 이는 "총 소비량" 통계를 지워 이후 인쇄가 처음부터 추적되도록 합니다. 스풀과 잔여 무게는 변경되지 않습니다.`,consumedCounterReset:`카운터가 초기화되었습니다`,allConsumedCountersReset:`{{count}}개 스풀의 카운터가 초기화되었습니다`,resetConsumedCounterFailed:`카운터 초기화 실패`},timelapse:{title:`타임랩스`,create:`타임랩스 만들기`,download:`다운로드`,delete:`삭제`,preview:`미리보기`,frameRate:`프레임 속도`,quality:`품질`,processing:`처리 중...`,noTimelapses:`사용 가능한 타임랩스 없음`},ams:{title:`AMS`,slot:`슬롯`,empty:`비어 있음`,emptySlot:`빈 슬롯`,unknown:`알 수 없음`,humidity:`습도`,temperature:`온도`,filamentType:`필라멘트 유형`,filamentColor:`색상`,remaining:`남은 양`,history:`AMS 기록`,noHistory:`기록 없음`,configureSlot:`슬롯 구성`,externalSpool:`외부 스풀`,profile:`프로필`,kFactor:`K 계수`,kFactorShort:`K`,fill:`채우기`,configure:`구성`,used:`사용됨`,remainingUnit:`남음`,slotEmpty:`비어 있음`,slotUnconfigured:`?`,emptySlotReset:`필라멘트가 할당되지 않음`},printModal:{variants:{editNote:`이 대안은 대기열에 추가할 때 정해집니다. 변경하려면 취소 후 다시 추가하세요.`,title:`프린터 대안`,help:`작업 하나, 대기열 한 자리. 조건이 맞는 프린터 중 먼저 비는 프린터가 해당 파일을 인쇄합니다.`,unknownModel:`알 수 없는 모델`,plateFor:`{{filename}}의 플레이트`,moveUp:`위로`,moveDown:`아래로`,queued:`대안 {{count}}개와 함께 대기열에 추가했습니다`},selectPrinter:`프린터 선택`,selectPlate:`플레이트 선택`,filamentMapping:`필라멘트 매핑`,useArchiveMapping:`매핑`,useArchiveMappingTooltip:`유형/색상으로 매칭하는 대신, 이 아카이브에 저장된 AMS 매핑(슬라이서 제공)에서 모든 슬롯을 선택합니다.`,clickToChangeSlot:`클릭하여 슬롯 할당 변경`,reRead:`다시 읽기`,plateN:`플레이트 {{n}}`,plateFilamentsUnreadable:`선택한 플레이트의 필라멘트를 읽을 수 없어 매핑할 수 없습니다. 해당 플레이트를 선택 해제하면 나머지를 대기열에 추가할 수 있습니다.`,totalCost:`총 비용:`,slotRemainingShort:` - {{grams}}g 남음`,printSettings:`인쇄 설정`,bedLeveling:`베드 레벨링`,flowCalibration:`유량 보정`,vibrationCalibration:`진동 보정`,layerInspection:`첫 번째 레이어 검사`,timelapse:`타임랩스`,cancel:`취소`,noPrintersAvailable:`사용 가능한 프린터 없음`,printerBusy:`프린터가 사용 중입니다`,printerOffline:`프린터가 오프라인입니다`,sameTypeDifferentColor:`같은 유형, 다른 색상`,filamentTypeNotLoaded:`필라멘트 유형이 장착되지 않음`,statusReady:`준비됨`,statusColorMismatch:`색상 불일치`,statusTypeNotFound:`유형을 찾을 수 없음`,requiredTooltip:`필요: {{name}} - {{color}}`,manuallySelected:`수동으로 선택됨`,autoMatched:`자동으로 일치됨`,selectSlot:`슬롯 선택`,sameTypeDifferentColorDetail:`같은 유형, 다른 색상: {{required}} 필요, 슬롯에는 {{loaded}}`,requiredTypeNotInPrinter:`필요한 필라멘트 유형을 프린터에서 찾을 수 없습니다.`,whenToPrint:`인쇄 시점`,asap:`최대한 빨리`,queue:`대기열`,schedule:`예약`,dateTime:`날짜 및 시간`,invalidDateTime:`유효한 날짜와 시간을 입력하세요`,openCalendar:`달력 열기`,requireManualStart:`수동 시작 필요`,requirePreviousSuccess:`이전 인쇄가 성공한 경우에만 시작`,autoOffAfter:`완료 후 프린터 전원 끄기`,helpAsap:`인쇄가 대기열 맨 앞에 추가되고 적합한 프린터가 유휴 상태가 되는 즉시 시작됩니다.`,helpSchedule:`프린터가 유휴 상태이면 예약된 시간에 인쇄가 시작됩니다. 사용 중이면 프린터가 사용 가능해질 때까지 대기합니다.`,helpQueue:`인쇄가 대기열 맨 뒤에 추가됩니다.`,leftNozzle:`L`,rightNozzle:`R`,leftNozzleTooltip:`왼쪽 노즐`,rightNozzleTooltip:`오른쪽 노즐`,ftsSameInletHint:`이 출력에 사용할 필라멘트가 모두 필라멘트 트랙 스위치 IN-{{inlet}}에 있습니다. 같은 입구의 필라멘트끼리 교체하면 느립니다. 하나를 반대쪽 입구의 AMS로 옮기면 빨라집니다.`,rackPosition:`랙 위치`,rackPositionTooltip:`이 필라멘트를 출력할 랙의 노즐입니다. 위치 번호는 프린터와 동일합니다.`,rackEmptyPosition:`이 랙 위치는 비어 있습니다`,rackWrongNozzle:`{{has}} 노즐이 장착되어 있습니다. 이 필라멘트에는 {{needs}}이(가) 필요합니다`,filamentOverride:`필라멘트 재정의`,filamentOverrideHint:`선택적으로 모델 기반 할당을 위해 필라멘트를 재정의합니다. 스케줄러는 원래 3MF 값 대신 선택한 필라멘트와 일치시킵니다.`,originalFilament:`원래`,overrideWith:`재정의`,resetToOriginal:`원래대로 초기화`,insufficientFilamentTitle:`필라멘트 부족`,waitingForAmsStatus:`{{printer}}의 AMS 상태를 기다리는 중…`,insufficientFilamentMessage:`일부 할당된 스풀에 이 인쇄에 필요한 것보다 적은 필라멘트가 남아 있습니다:`,insufficientFilamentLine:`{{printer}} - {{slot}}: {{required}}g 필요, {{remaining}}g 남음`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: {{required}}g 필요, 일치하는 스풀 합계 {{remaining}}g (AMS 필라멘트 백업)`,printAnyway:`그래도 인쇄`,forceColorMatch:`색상 일치 강제`,staggerPrinterStarts:`프린터 시작 분산`,staggerGroupSize:`그룹 크기`,staggerInterval:`간격 (분)`,staggerPreview:`{{printers}}대 프린터 → {{size}}대씩 {{groups}}개 그룹, 매 {{interval}}분마다 시작`,staggerLastGroup:`마지막 그룹: {{count}}`,staggerTotal:`합계: {{minutes}}분`,staggerToPrinters:`{{count}}대 프린터에 분산`,gcodeInjection:`자동 인쇄 G-code 삽입`,insufficientBudget:`예산 부족`,unlimitedNoBudget:`무제한 – 예산 한도가 설정되지 않았습니다.`,noPrintableCostCenters:`인쇄에 사용할 수 있는 활성 비용 센터가 없습니다. 관리자에게 인쇄 권한을 요청하세요.`},backup:{includesEncryptionKey:`로컬 백업에는 MFA 암호화 키 파일(DATA_DIR/.mfa_encryption_key)이 포함되어 백업 ZIP이 자체 완결됩니다. ZIP 파일을 민감하게 취급하세요 — 파일을 가진 누구나 내부에 저장된 OIDC 클라이언트 비밀과 TOTP 비밀을 복호화할 수 있습니다.`,title:`백업 및 복원`,createBackup:`백업 만들기`,restoreBackup:`백업 복원`,restoreDescription:`백업 파일에서 모든 데이터 교체`,downloadBackup:`백업 다운로드`,uploadBackup:`백업 업로드`,lastBackup:`마지막 백업`,autoBackup:`자동 백업`,backupNow:`지금 백업`,restoreWarning:`경고: 백업을 복원하면 현재 모든 데이터를 덮어씁니다.`,includeArchives:`아카이브 포함`,includeSettings:`설정 포함`,includeProfiles:`프로필 포함`,backupSuccess:`백업이 성공적으로 생성되었습니다`,restoreSuccess:`백업이 성공적으로 복원되었습니다`,backupFailed:`백업 실패`,restoreFailed:`복원 실패`,restoreNote:`복원 중 가상 프린터가 중지됩니다`,githubBackup:`Git 백업`,enabled:`활성화됨`,cloudLoginRequired:`Bambu 클라우드 로그인 필요. GitHub 백업을 활성화하려면 프로필 → 클라우드 프로필에서 로그인하세요.`,cloudLoginRequiredShort:`클라우드 로그인 필요`,githubDescription:`백업 및 버전 기록을 위해 비공개 GitHub 저장소에 프로필을 자동으로 동기화합니다.`,repositoryUrl:`저장소 URL`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`비보안 HTTP 허용`,allowInsecureHttpHint:`TLS가 없는 개인 네트워크의 자체 호스팅 인스턴스에 활성화`,personalAccessToken:`개인 액세스 토큰`,tokenSaved:`(저장됨)`,enterNewToken:`업데이트하려면 새 토큰 입력`,tokenHintGitHub:`Contents 읽기 및 쓰기 권한이 있는 세분화된 토큰 또는 repo 범위를 가진 클래식 토큰.`,tokenHintGitLab:`api 범위 또는 read_repository와 write_repository를 함께 가진 토큰.`,tokenHintGitea:`write:repository 범위를 가진 토큰.`,tokenHintForgejo:`write:repository 범위를 가진 토큰. 이 저장소 하나로만 제한된 토큰이면 충분합니다.`,branch:`브랜치`,provider:`Git 제공자`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`수동만`,hourly:`매시간`,daily:`매일`,weekly:`매주`,includeInBackup:`백업에 포함`,kProfiles:`K-프로필`,kProfilesDescription:`연결된 프린터의 압력 전진 보정`,noPrintersConnected:`연결된 프린터 없음`,printersConnected:`{{total}}개 중 {{connected}}개 연결됨`,cloudProfiles:`클라우드 프로필`,cloudProfilesDescription:`Bambu 클라우드와 Orca 클라우드의 필라멘트, 프린터 및 프로세스 프리셋`,cloudProfilesAccounts:`연결된 계정 — Bambu 클라우드: {{bambu}}, Orca 클라우드: {{orca}}`,appSettings:`앱 설정`,appSettingsDescription:`Bambuddy 구성 (전체 데이터베이스)`,spoolInventory:`스풀 재고`,spoolInventoryDescription:`필라멘트 스풀, 사용 기록 및 비용 추적`,printArchives:`인쇄 아카이브`,printArchivesDescription:`인쇄 기록 메타데이터 (gcode/3MF 파일 제외)`,lastBackupAt:`마지막 백업:`,noBackupsYet:`아직 백업 없음`,next:`다음:`,startingBackup:`백업 시작 중...`,test:`테스트`,enableBackup:`백업 활성화`,testConnection:`연결 테스트`,enterRepoUrl:`저장소 URL 입력`,enterRepoAndToken:`저장소 URL 및 액세스 토큰 입력`,repoRequired:`저장소 URL이 필요합니다`,tokenRequired:`액세스 토큰이 필요합니다`,githubBackupEnabled:`GitHub 백업 활성화됨`,tokenUpdated:`토큰 업데이트됨`,settingsSaved:`설정 저장됨`,failedToSave:`저장 실패: {{message}}`,backupCompleteFiles:`백업 완료 - {{count}}개 파일 업데이트됨`,backupSkippedNoChanges:`변경 사항 없어 백업 건너뜀`,backupFailed2:`백업 실패: {{message}}`,clearedLogs:`{{count}}개 로그 초기화됨`,failedToClearLogs:`로그 초기화 실패: {{message}}`,restoreFromGit:{button:`Git에서 복원`,title:`Git 백업에서 복원`,subtitle:`커밋과 복원할 항목을 선택하세요`,commitLabel:`백업 커밋`,latestCommit:`최신 백업 (브랜치 최신 커밋)`,categoriesLabel:`복원할 항목`,inspecting:`백업 내용을 읽고 있습니다...`,itemCount:`백업에 {{count}}개`,overwriteLabel:`기존 항목 덮어쓰기`,overwriteOn:`기존 항목이 백업 내용으로 업데이트됩니다.`,overwriteOff:`없는 항목만 추가되고 기존 항목은 그대로 유지됩니다.`,selectedCount:`{{count}}개 선택됨`,restoring:`복원 중...`,confirmTitle:`백업에서 복원하시겠습니까?`,confirmMessage:`선택한 항목을 이 커밋에서 복원합니다. 없는 항목은 추가되고 기존 항목은 그대로 유지됩니다.`,confirmMessageOverwrite:`선택한 항목을 이 커밋에서 복원하고 로컬에 이미 있는 항목을 덮어씁니다. 이 작업은 취소할 수 없습니다.`,kprofilesOverwriteCaveat:`K 프로파일은 예외입니다. 슬롯에 쓰면 프린터의 캘리브레이션이 항상 교체됩니다.`,tally:`복원 {{restored}}개, 건너뜀 {{skipped}}개, 실패 {{failed}}개`,reloadHint:`복원된 데이터가 모든 화면에 반영되도록 Bambuddy를 새로 고치세요.`,partialHint:`위에 표시된 카테고리는 완료되어 저장되었습니다. 표시되지 않은 카테고리는 실행되지 않았습니다.`,failed:`복원에 실패했습니다.`,loadFailed:`백업 저장소를 읽을 수 없습니다.`,details:{notPresent:`이 백업 커밋에는 없습니다`,unreadableJson:`읽을 수 없는 JSON: {{paths}}`,settingsNoPayload:`데이터에 설정이 없습니다`,settingsCredentialsWillSkip:`자격 증명처럼 보이는 키 {{count}}개를 건너뜁니다`,settingsCompanionWillSkip:`자격 증명처럼 보이는 키 {{count}}개를 건너뛰고, 이에 의존하는 스위치 {{companion}}개는 꺼진 상태로 둡니다`,settingsCompanionOnlyWillSkip:`스위치 {{companion}}개는 꺼진 상태로 둡니다 - 각각에 필요한 자격 증명은 백업에서 복원할 수 없습니다`,spoolsUsageCount:`사용 기록 {{count}}건 포함`,archivesMetadataOnly:`메타데이터만 - 3MF 파일과 썸네일은 Git 백업에 포함되지 않습니다`,kprofilesPrinterCount:`프린터 {{count}}대 분량`},notes:{noData:`이 백업에는 이런 종류의 데이터가 없습니다`,archivesPrinterMissing:`일부 아카이브가 더 이상 존재하지 않는 프린터를 참조했습니다 - 연결을 해제했습니다`,archivesProjectMissing:`일부 아카이브가 더 이상 존재하지 않는 프로젝트를 참조했습니다 - 연결을 해제했습니다`,archivesOwnerCleared:`일부 아카이브가 더 이상 존재하지 않는 사용자를 참조했습니다 - 소유자를 비웠으므로 관리자가 다시 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesOwnerUnmatched:`일부 아카이브가 이 인스턴스에 없는 소유자를 가리킵니다 - 백업의 사용자 ID로 추측하지 않고 소유자를 비웠으므로 관리자가 다시 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesOwnerUnknown:`일부 아카이브가 소유자 없이 복원되었습니다 - 이 백업에 소유자가 기록되어 있지 않으므로 관리자가 지정하기 전까지 archives:read_all 권한이 있는 사용자에게만 보입니다`,archivesUndeleted:`백업 이후 삭제된 아카이브가 다시 표시됩니다 - 덮어쓰기가 켜져 있었습니다`,archivesMetadataOnly:`복원된 아카이브에는 메타데이터만 있습니다 - 3MF 파일과 썸네일은 Git 백업에 포함되지 않습니다`,spoolUsageUnresolved:`사용 기록 {{count}}건을 건너뛰었습니다 - 해당 스풀이 이 백업의 스풀 목록에 없어 연결할 대상이 없습니다.`,spoolUsageUnlinked:`사용 기록 {{count}}건을 출력 기록 연결 없이 복원했습니다 - 연결을 유지하려면 스풀 재고와 함께 출력 아카이브도 선택하세요.`,spoolTagKept:`스풀 태그 {{count}}개를 그대로 두었습니다 - 백업대로라면 그 사이 스캔된 태그가 지워지거나 다른 스풀로 옮겨졌을 것입니다.`,settingsCredentialsSkipped:`자격 증명처럼 보이는 키 {{count}}개를 건너뛰었습니다 - 비밀 값은 직접 다시 입력하세요`,settingsAuthSkipped:`인증 설정 {{count}}개를 건너뛰었습니다 - 잠금 검사가 계속 동작하도록 설정 > 인증에서 변경하세요`,settingsCompanionSkipped:`{{keys}}을(를) 꺼진 상태로 두었습니다 - 각 항목에 필요한 자격 증명은 백업에서 복원할 수 없고 이 인스턴스에도 저장되어 있지 않아, 켜면 연동이 인증 없이 열립니다`,settingsMqttRelayFailed:`MQTT 설정을 복원했지만 릴레이를 다시 연결하지 못했습니다 - Bambuddy를 재시작하세요`,kprofilesAlwaysOverwrite:`K 프로파일은 항상 프린터의 해당 슬롯을 덮어씁니다`,kprofilesAckUnreliable:`응답하지 않는 프린터도 복원됨으로 집계됩니다 - 프린터에서 프로파일을 확인하세요`,kprofilesPrinterMissing:`시리얼 {{serial}}인 프린터가 없습니다 - 건너뛰었습니다`,kprofilesPrinterOffline:`{{printer}}({{serial}})이(가) 연결되어 있지 않습니다 - 건너뛰었습니다`,kprofilesUnknownNozzle:`{{serial}}의 예상치 못한 노즐 직경 {{nozzle}} - 그대로 전송했습니다`,kprofilesUnmatched:`{{nozzle}}용 프로파일 {{count}}개가 {{printer}}에 대응 항목이 없습니다 - 새 프로파일로 추가했습니다`,kprofilesSendFailed:`{{nozzle}} 프로파일을 {{printer}}({{serial}})에 보내지 못했습니다`,kprofilesRefused:`{{printer}}({{serial}})이(가) {{nozzle}} 프로파일을 거부했습니다: {{reason}}`,kprofilesStepFailed:`K 프로파일 단계를 완료하지 못했습니다 - {{reason}}. 그 전에 복원된 항목은 그대로 저장되어 있습니다.`}},history:`기록`,clear:`초기화`,date:`날짜`,status:`상태`,trigger:`유형`,triggers:{manual:`백업(수동)`,scheduled:`백업(예약)`,restore:`복원`},commit:`커밋`,localBackup:`로컬 백업`,localBackupDescription:`데이터베이스, 아카이브, 업로드 및 모든 파일을 포함한 Bambuddy 데이터의 전체 백업을 만듭니다.`,downloadBackupLabel:`백업 다운로드`,completeBackupZip:`전체 백업: 데이터베이스 + 모든 파일 (ZIP)`,download:`다운로드`,preparingBackup:`백업 준비 중...`,creatingArchive:`백업 아카이브 생성 중... 대용량 아카이브의 경우 시간이 걸릴 수 있습니다.`,downloadingFile:`백업 파일 다운로드 중...`,backupDownloaded:`백업이 성공적으로 다운로드되었습니다`,failedToCreateBackup:`백업 생성 실패: {{message}}`,restore:`복원`,restoreReplacesAll:`복원은 모든 데이터를 교체합니다.`,restoreReplacesAllDetail:`현재 데이터베이스와 파일이 완전히 교체됩니다. 복원 후 재시작이 필요합니다.`,restoreConfirmTitle:`백업 복원`,restoreConfirmMessage:`"{{filename}}"에서 복원하시겠습니까? 현재 데이터베이스와 모든 파일이 완전히 교체됩니다. 복원 후 애플리케이션을 재시작해야 합니다.`,restoreConfirmButton:`백업 복원`,uploadingFile:`백업 파일 업로드 중...`,backupRestoredRestart:`백업 복원됨. Bambuddy를 재시작하세요.`,failedToRestore:`백업 복원 실패. 파일 형식을 확인하세요.`,reloadNow:`지금 새로고침`,creatingBackup:`백업 만드는 중`,restoringBackup:`백업 복원 중`,preparing:`준비 중...`,processing:`처리 중...`,doNotClosePage:`이 페이지를 닫거나 다른 곳으로 이동하지 마세요. 대용량 백업의 경우 몇 분이 걸릴 수 있습니다.`,restoring:`복원 중...`,restoreComplete:`복원 완료`,restoreFailed2:`복원 실패`,importSettings:`백업 파일에서 설정 가져오기`,pleaseWaitRestoring:`데이터가 복원되는 동안 기다려 주세요`,selectBackupFile:`백업 파일 클릭하여 선택 (.json 또는 .zip)`,duplicateHandling:`중복 처리 방법:`,matchPrinters:`프린터`,matchPrintersBy:`일련번호로 일치`,matchSmartPlugs:`스마트 플러그`,matchSmartPlugsBy:`IP 주소로 일치`,matchNotificationProviders:`알림 제공자`,matchNotificationProvidersBy:`이름으로 일치`,matchFilaments:`필라멘트`,matchFilamentsBy:`이름 + 유형 + 브랜드로 일치`,matchArchives:`아카이브`,matchArchivesBy:`콘텐츠 해시로 일치 (항상 건너뜀)`,matchPendingUploads:`대기 중인 업로드`,matchPendingUploadsBy:`파일 이름으로 일치`,matchSettingsTemplates:`설정 및 템플릿`,matchSettingsTemplatesBy:`항상 덮어씀`,replaceExisting:`기존 데이터 교체`,keepExisting:`기존 데이터 유지`,overwriteDescription:`백업 데이터로 이미 존재하는 항목 덮어쓰기`,keepDescription:`아직 존재하지 않는 항목만 복원`,overwriteCaution:`주의:`,overwriteWarning:`덮어쓰기는 현재 구성을 백업 데이터로 교체합니다. 보안상 프린터 액세스 코드는 절대 덮어쓰지 않습니다.`,cancel:`취소`,processingBackup:`백업 파일 처리 중...`,itemsRestored:`복원된 항목`,itemsSkipped:`건너뛴 항목`,restored:`복원됨`,skippedAlreadyExist:`건너뜀 (이미 존재)`,filesCategory:`파일 (3MF, 썸네일 등)`,andMore:`...및 {{count}}개 더`,newApiKeysGenerated:`새 API 키 생성됨`,keysShownOnce:`이 키는 한 번만 표시됩니다. 지금 복사하세요!`,copy:`복사`,noDataFound:`백업 파일에서 복원할 데이터를 찾을 수 없습니다.`,close:`닫기`,scheduledBackup:`예약 백업`,scheduledBackupDescription:`일정에 따라 백업 스냅샷을 자동으로 생성합니다. 출력 디렉토리를 NAS 또는 외부 저장소에 마운트할 수 있습니다.`,frequency:`주기`,backupTime:`시간`,retention:`보존`,retentionDescription:`유지할 백업 수`,outputPath:`출력 경로`,outputPathPlaceholder:`기본값: {{path}}`,outputPathDescription:`기본 위치를 사용하려면 비워두세요`,runNow:`지금 실행`,backupFiles:`백업 파일`,noScheduledBackups:`아직 백업 없음`,deleteBackup:`삭제`,deleteBackupConfirm:`이 백업 파일을 삭제하시겠습니까?`,backupRunning:`백업 진행 중...`,scheduledBackupComplete:`백업이 성공적으로 완료되었습니다`,scheduledBackupFailed:`백업 실패`,nextBackup:`다음 백업`,backupSize:`크기`,localTimeHint:`현지 시간 ({{tz}})`,defaultPathLabel:`기본값:`,pathCheck:{title:`Bambuddy가 이 디렉터리에 쓸 수 없습니다`,howToFix:`해결 방법:`,sandboxed:`Bambuddy 서비스가 {{path}}에 쓸 수 없습니다. systemd 유닛이 ProtectSystem=strict로 실행되어 설치·데이터·로그 디렉터리를 제외한 모든 디렉터리가 서비스에서는 읽기 전용입니다. 사용자 셸에서는 쓸 수 있는 디렉터리라도 마찬가지입니다.`,read_only:`{{path}}이(가) 읽기 전용 파일 시스템에 있습니다.`,permission_denied:`Bambuddy에 {{path}} 쓰기 권한이 없습니다. 디렉터리 소유자와 권한을 확인하세요.`,no_space:`{{path}}이(가) 있는 파일 시스템에 남은 공간이 없습니다.`,not_a_directory:`{{path}}이(가) 존재하지만 디렉터리가 아닙니다.`,missing:`{{path}}이(가) 존재하지 않으며 생성할 수도 없습니다.`,error:`Bambuddy가 {{path}}에 쓸 수 없습니다.`,ephemeralTitle:`이 백업은 컨테이너를 다시 만들면 사라집니다`,container_ephemeral:`{{path}}은(는) 호스트가 아니라 Bambuddy 컨테이너 내부에 있습니다. 여기에 기록된 백업은 컨테이너를 재생성하면 사라집니다. 호스트의 디렉터리를 마운트하세요:`},categories:{settings:`설정`,notification_providers:`알림 제공자`,notification_templates:`알림 템플릿`,smart_plugs:`스마트 플러그`,printers:`프린터`,filaments:`필라멘트`,maintenance_types:`유지 관리 유형`,archives:`아카이브`,projects:`프로젝트`,pending_uploads:`대기 중인 업로드`,external_links:`외부 링크`,api_keys:`API 키`},repoIsPrivate:`저장소가 비공개입니다 — 안전하게 백업할 수 있습니다.`,repoIsPublicWarning:`저장소가 공개입니다. Bambuddy 백업에는 MQTT 자격증명, Home Assistant 토큰, Prometheus 토큰, Bambu Cloud 이메일, K-프로파일을 통한 프린터 액세스 코드가 포함됩니다. 공급자 설정에서 저장소를 비공개로 변경할 때까지 저장이 차단됩니다.`,repoVisibilityUnknown:`저장소 공개 여부를 확인할 수 없습니다. Bambuddy는 비공개로 확인된 저장소에만 백업하며, 저장이 차단됩니다.`},tags:{title:`태그`,addTag:`태그 추가`,editTag:`태그 편집`,deleteTag:`태그 삭제`,tagName:`태그 이름`,tagColor:`태그 색상`,noTags:`태그 없음`,deleteConfirm:`이 태그를 삭제하시겠습니까?`,manageTags:`태그 관리`},uploadModal:{title:`3MF 파일 업로드`,dragDrop:`.3mf 파일을 여기에 드래그 앤 드롭`,or:`또는`,browseFiles:`파일 탐색`,extractionInfo:`프린터 모델은 3MF 파일 메타데이터에서 자동으로 추출됩니다.`,uploaded:`업로드됨`,failed:`실패`,uploading:`업로드 중...`,upload:`업로드`,uploadFailed:`업로드 실패`},editArchive:{title:`아카이브 편집`,name:`이름`,namePlaceholder:`인쇄 이름`,printer:`프린터`,noPrinter:`프린터 없음`,project:`프로젝트`,noProject:`프로젝트 없음`,itemsPrinted:`인쇄된 항목`,itemsPrintedHelp:`이 인쇄 작업에서 생산된 항목 수`,filamentUsed:`사용된 필라멘트 (g)`,filamentUsedPlaceholder:`예: 46.16`,filamentUsedHelp:`3MF 없이 보관된 인쇄는 직접 입력하면 필라멘트 합계에 반영됩니다. 3MF가 있는 보관 항목을 다시 스캔하면 이 값은 파일에서 다시 읽어옵니다.`,notes:`메모`,notesPlaceholder:`이 인쇄에 대한 메모 추가...`,externalLink:`외부 링크`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Printables, Thingiverse 또는 다른 출처 링크`,tags:`태그`,tagsPlaceholder:`태그 추가...`,addMoreTags:`더 많은 태그 추가...`,matchingTags:`"{{query}}"와 일치`,existingTags:`기존 태그`,clickToAdd:`(클릭하여 추가)`,status:`상태`,failureReason:`실패 원인`,selectReason:`원인 선택...`,photos:`인쇄 결과 사진`,photosHelp:`+를 클릭하여 인쇄 결과 사진 추가`,printResult:`인쇄 결과`,saving:`저장 중...`,failureReasons:{adhesionFailure:`접착 실패`,spaghettiDetached:`스파게티 / 분리`,layerShift:`레이어 시프트`,cloggedNozzle:`노즐 막힘`,filamentRunout:`필라멘트 소진`,warping:`휨`,stringing:`스트링`,underExtrusion:`압출 부족`,powerFailure:`전원 실패`,userCancelled:`사용자 취소`,other:`기타`},statuses:{completed:`완료됨`,failed:`실패`,aborted:`취소됨`,printing:`인쇄 중`}},kProfiles:{title:`K-프로필`,noPrintersConfigured:`구성된 프린터 없음`,addPrinterInSettings:`K-프로필을 관리하려면 설정에서 프린터를 추가하세요`,noActivePrinters:`활성 프린터 없음`,enablePrinterConnection:`K-프로필을 보려면 프린터 연결을 활성화하세요`,loadingProfiles:`K-프로필 불러오는 중...`,printerOffline:`프린터 오프라인`,printerOfflineDesc:`선택한 프린터가 연결되지 않았습니다. 켜서 K-프로필을 확인하세요.`,noMatchingProfiles:`일치하는 프로필 없음`,noMatchingProfilesDesc:`검색 기준과 일치하는 프로필이 없습니다`,noKProfiles:`K-프로필 없음`,noKProfilesDesc:`{{diameter}}mm 노즐에 대한 압력 전진 프로필이 없습니다`,createFirstProfile:`첫 번째 프로필 만들기`,printer:`프린터`,nozzle:`노즐`,refresh:`새로고침`,addProfile:`프로필 추가`,export:`내보내기`,import:`가져오기`,select:`선택`,selectAll:`모두 선택`,delete:`삭제`,searchPlaceholder:`이름 또는 필라멘트로 검색...`,allExtruders:`모든 압출기`,leftOnly:`왼쪽만`,rightOnly:`오른쪽만`,allFlow:`모든 유량`,hfOnly:`HF만`,sOnly:`S만`,sortName:`정렬: 이름`,sortKValue:`정렬: K값`,sortFilament:`정렬: 필라멘트`,leftExtruder:`왼쪽 압출기`,rightExtruder:`오른쪽 압출기`,modal:{addTitle:`K-프로필 추가`,editTitle:`K-프로필 편집`,profileName:`프로필 이름`,profileNamePlaceholder:`내 PLA 프로필`,kValue:`K값`,kValuePlaceholder:`0.020`,kValueHelp:`일반 범위: PLA 0.01~0.06, PETG 0.02~0.10`,filament:`필라멘트`,selectFilament:`필라멘트 선택...`,source:{local:`가져온 것`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`기본 제공`},noFilamentsHelp:`사용할 수 있는 필라먼트가 없습니다. Bambu Cloud에 로그인하거나 프로파일 → 로컬 프로파일에서 프리셋을 가져오세요.`,searchFilaments:`필라먼트 검색...`,noFilamentMatches:`검색과 일치하는 필라먼트가 없습니다`,flowType:`유량 유형`,highFlow:`고유량`,standard:`표준`,nozzleSize:`노즐 크기`,extruder:`압출기`,extruders:`압출기`,left:`왼쪽`,right:`오른쪽`,notes:`메모 (로컬 저장)`,notesPlaceholder:`이 프로필에 대한 메모 추가...`,notesHelp:`메모는 프린터가 아닌 Bambuddy에 저장됩니다`,syncing:`프린터와 동기화 중...`,savingExtruder:`압출기 {{current}}/{{total}}에 저장 중...`,pleaseWait:`기다려 주세요`},deleteConfirm:{title:`프로필 삭제`,cannotUndo:`이 작업은 취소할 수 없습니다`,message:`프린터에서 "{{name}}"을(를) 삭제하시겠습니까?`},bulkDelete:{title:`프로필 삭제`,cannotUndo:`이 작업은 취소할 수 없습니다`,message:`프린터에서 선택한 {{count}}개 프로필을 삭제하시겠습니까?`},toast:{profileSaved:`K-프로필 저장됨`,profilesSaved:`{{count}}개 압출기에 K-프로필 저장됨`,selectAtLeastOneExtruder:`적어도 하나의 압출기를 선택해 주세요`,selectFilament:`먼저 필라먼트를 선택하세요`,filamentNotResolvable:`{{name}}에 해당하는 Bambu 필라먼트 ID가 없어 프린터가 프로파일을 저장할 수 없습니다`,profileDeleted:`K-프로필 삭제됨`,profilesDeleted:`{{count}}개 프로필 삭제됨`,exportedProfiles:`{{count}}개 프로필 내보냄`,importedProfiles:`{{total}}개 중 {{count}}개 프로필 가져옴`,noProfilesToExport:`내보낼 프로필 없음`,invalidFileFormat:`유효하지 않은 파일 형식`,failedToParseImport:`가져오기 파일 파싱 실패`,failedToSaveBatch:`K-프로필 저장 실패`,noteSaved:`메모 저장됨`,failedToSaveNote:`메모 저장 실패`},permission:{noRead:`프로필 새로고침 권한이 없습니다`,noCreate:`프로필 추가 권한이 없습니다`,noUpdate:`K-프로필 업데이트 권한이 없습니다`,noDelete:`K-프로필 삭제 권한이 없습니다`,noExport:`프로필 내보내기 권한이 없습니다`,noImport:`프로필 가져오기 권한이 없습니다`}},virtualPrinter:{title:`가상 프린터`,running:`실행 중`,stopped:`중지됨`,description:{default:`Bambu Studio 및 OrcaSlicer에 표시되는 가상 프린터를 활성화합니다. 이 프린터로 전송된 파일은 인쇄 없이 바로 아카이브됩니다.`,proxy:`실제 프린터로 슬라이서 트래픽을 릴레이하는 프록시를 활성화하여 모든 네트워크에서 원격 인쇄가 가능합니다.`},enable:{title:`가상 프린터 활성화`,visibleInSlicer:`슬라이서 검색에서 "Bambuddy"로 표시됨`,proxyingTo:`{{name}}으로 프록시 중`,notActive:`활성화되지 않음`},model:{title:`프린터 모델`,description:`에뮬레이션할 프린터 모델을 선택하세요.`,restartWarning:`모델 변경 시 가상 프린터가 재시작됩니다`},accessCode:{title:`액세스 코드`,isSet:`액세스 코드가 설정됨`,notSet:`액세스 코드가 설정되지 않음 - 활성화하려면 필요`,placeholder:`8자리 코드 입력`,placeholderChange:`변경하려면 새 코드 입력`,hint:`정확히 8자여야 합니다. 슬라이서가 인증하는 데 사용됩니다.`,charCount:`({{count}}/8)`,inheritedFromTarget:`대상 프린터에서 상속됨`,derivedFromTargetHint:`대상 프린터의 액세스 코드를 사용합니다. 브리지는 슬라이서 인증을 실제 프린터로 전달하므로 코드가 일치해야 합니다 — 변경하려면 프린터 설정에서 액세스 코드를 편집하세요.`,reveal:`액세스 코드 표시`,hide:`액세스 코드 숨기기`},targetPrinter:{title:`대상 프린터`,configured:`프록시 대상 구성됨`,notConfigured:`대상 프린터가 선택되지 않음 - 프록시 모드에 필요`,placeholder:`프린터 선택...`,hint:`슬라이서 트래픽을 프록시할 프린터를 선택하세요. 프린터는 LAN 모드여야 합니다.`,noPrinters:`구성된 프린터 없음. 프록시 모드를 사용하려면 먼저 프린터를 추가하세요.`},remoteInterface:{title:`네트워크 인터페이스 재정의`,configured:`인터페이스 재정의 활성`,optional:`선택사항 - 자동 감지된 IP가 잘못된 경우 사용 (예: 여러 NIC, Docker, VPN)`,placeholder:`자동 감지 (기본값)...`,hint:`SSDP를 통해 광고되고 TLS 인증서에 사용되는 IP 주소를 재정의합니다. Bambuddy에 여러 네트워크 인터페이스가 있을 때 유용합니다.`},mode:{title:`모드`,archive:`아카이브`,archiveDesc:`파일 즉시 아카이브`,review:`검토`,reviewDesc:`아카이브 전 검토`,queue:`대기열`,queueDesc:`아카이브 후 대기열 추가`,proxy:`프록시`,proxyDesc:`실제 프린터로 릴레이`},autoDispatch:{title:`자동 발송`,description:`대기열에 추가될 때 자동으로 인쇄를 시작합니다. 꺼져 있으면 수동 발송을 기다립니다.`},queueForceColorMatch:{title:`색상 일치 강제`,description:`정확한 필라멘트 유형과 색상이 장착되지 않은 프린터에는 발송을 거부합니다. 기본적으로 꺼져 있음 — 이 옵션 없이는 대기열이 모델 전용 매칭을 사용하여 잘못된 색상이 장착된 프린터를 선택할 수 있습니다.`},saveAmsMapping:{title:`AMS 매핑 저장`,description:`슬라이서가 직접 선택한 AMS 슬롯(project_file MQTT 명령에서)을 아카이브에 저장하여, 이후 재인쇄 시 파일의 유형/색상에서 다시 유추하지 않고 동일한 실물 스풀을 재사용하도록 합니다. 기본값은 꺼짐입니다.`},gcodeInjection:{title:`G-code 주입`,description:`설정에서 모델별로 구성한 G-code 스니펫을 이 가상 프린터의 작업에 적용합니다. 기본값은 꺼짐입니다.`},tailscaleDisabled:{title:`Tailscale 통합`,description:`이 가상 프린터가 Tailscale을 통해 노출되도록 표시하려면 활성화하세요. 슬라이서에 붙여넣을 IP를 알 수 있도록 호스트의 Tailscale 주소를 표시합니다. CA 가져오기 단계는 변경되지 않음 — 이 토글은 인증서에 영향을 미치지 않습니다.`},setupRequired:{title:`설정 필요`,description:`가상 프린터 기능이 작동하려면 추가 시스템 구성이 필요합니다. 여기에는 포트 포워딩, 방화벽 규칙 및 플랫폼별 설정이 포함됩니다.`,readGuide:`활성화 전에 설정 가이드를 읽으세요`},archiveNameSource:{title:`아카이브 이름 출처`,description:`가상 프린터를 통해 파일이 도착할 때 새 아카이브의 이름 지정 방법을 선택합니다. "메타데이터"는 3MF의 슬라이서 내장 제목을 사용합니다(기본값). "파일 이름"은 Bambu Studio가 FTP를 통해 전송한 파일 이름을 사용합니다. 참고: Bambu Studio는 3MF에 제목 필드가 있을 경우 "프린터로 보내기" 대화 상자에 입력한 이름을 해당 값으로 덮어쓰므로, 두 모드 모두 동일한 문자열이 표시되는 경우가 많습니다.`,metadata:`메타데이터`,filename:`파일 이름`},howItWorks:{title:`작동 방식`,step1:`같은 LAN에서 가상 프린터는 검색을 통해 슬라이서(Bambu Studio / OrcaSlicer)에 자동으로 나타납니다. 다른 네트워크에서는 IP 주소와 액세스 코드로 수동으로 추가하세요.`,step2:`아카이브, 검토, 대기열 모드에서 슬라이서의 "전송" 버튼을 사용하여 3MF 파일을 Bambuddy에 업로드하세요. 슬라이서는 "인쇄 성공"을 표시하지만 파일은 저장되고 인쇄되지 않습니다.`,step3:`프록시 모드에서 가상 프린터는 모든 트래픽을 실제 프린터로 릴레이합니다 — 직접 연결된 것처럼 즉시 인쇄가 시작됩니다.`},status:{title:`상태 세부 정보`,printerName:`프린터 이름`,model:`모델`,serialNumber:`일련 번호`,mode:`모드`,pendingFiles:`대기 중인 파일`,targetPrinter:`대상 프린터`,ftpPort:`FTP 포트`,mqttPort:`MQTT 포트`,ftpConnections:`FTP 연결`,mqttConnections:`MQTT 연결`},toast:{updated:`가상 프린터 설정 업데이트됨`,failedToUpdate:`설정 업데이트 실패`,copyFailed:`복사 실패 — 텍스트를 수동으로 선택하여 복사해 보세요`,accessCodeRequired:`먼저 액세스 코드를 설정해 주세요`,targetPrinterRequired:`먼저 대상 프린터를 선택해 주세요`,bindIpRequired:`먼저 바인드 IP를 설정해 주세요`,accessCodeEmpty:`액세스 코드는 비워둘 수 없습니다`,accessCodeLength:`액세스 코드는 정확히 8자여야 합니다`,targetCodeChangedRebind:`액세스 코드가 새 대상 프린터에 동기화되었습니다. 새 코드를 적용하려면 슬라이서에서 이 장치를 다시 추가하세요.`,created:`가상 프린터 생성됨`,failedToCreate:`가상 프린터 생성 실패`,deleted:`가상 프린터 삭제됨`,failedToDelete:`가상 프린터 삭제 실패`},list:{title:`가상 프린터`,add:`추가`,addFirst:`가상 프린터 추가`,empty:`구성된 가상 프린터 없음. 하나를 추가하여 시작하세요.`},bindIp:{title:`바인드 인터페이스`,placeholder:`인터페이스 선택...`,hint:`이 가상 프린터가 바인딩할 네트워크 인터페이스. 프린터당 고유해야 합니다.`},proxy:{accessCodeHint:`프록시 모드에서는 슬라이서에서 대상 프린터의 액세스 코드를 사용하세요. 연결은 실제 프린터로 투명하게 전달됩니다.`},addDialog:{title:`가상 프린터 추가`,name:`이름`,hint:`생성 후 액세스 코드, 대상 프린터 및 기타 설정을 구성할 수 있습니다.`,create:`생성`},deleteConfirm:{title:`가상 프린터 삭제`,message:`"{{name}}"을(를) 삭제하시겠습니까? 이 프린터의 모든 서비스가 중지됩니다.`},caCert:{title:`슬라이서 인증서`,description:`가상 프린터는 Bambuddy CA가 서명한 TLS 인증서를 사용합니다. 이 CA 인증서를 슬라이서의 신뢰 저장소에 한 번만 가져오면 연결을 수락합니다 — 명령줄에서 복사할 필요가 없습니다.`,copy:`복사`,copied:`복사됨`,download:`다운로드`,fingerprint:`SHA-256`}},modelViewer:{openInSlicer:`슬라이서에서 열기`,openInSlicerWith:`{{slicer}}에서 열기`,moreSlicerOptions:`슬라이서 옵션 더 보기`,openInSlicerFailed:`슬라이서에서 열 수 없습니다`,tabs:{model:`3D 모델`},notAvailable:`사용 불가`,plates:`플레이트`,allPlates:`모든 플레이트`,plateNumber:`플레이트 {{number}}`,plateCount:`플레이트 {{count}}개`,plateCount_other:`플레이트 {{count}}개`,objectCount:`개체 {{count}}개`,objectCount_other:`개체 {{count}}개`,filamentCount:`필라멘트 {{count}}개`,filamentCount_other:`필라멘트 {{count}}개`,eta:`예상 {{minutes}}분`,noPreview:`이 파일에 대한 미리보기를 사용할 수 없습니다`,pagination:{pageOf:`{{total}}페이지 중 {{current}}`,prev:`이전`,next:`다음`},errors:{failedToLoad:`파일 불러오기 실패`,noMeshes:`3MF 파일에서 메쉬를 찾을 수 없음`,unsupportedFormat:`지원되지 않는 파일 형식`}},maintenanceDescriptions:{lubricateCarbonRods:`부드러운 움직임을 위해 카본 로드에 윤활유 도포`,lubricateRails:`부드러운 움직임을 위해 선형 레일에 윤활유 도포`,cleanNozzle:`막힘 방지를 위해 핫엔드와 노즐 청소`,checkBelts:`정확한 인쇄를 위해 벨트 장력 확인`,cleanBuildPlate:`접착력 향상을 위해 빌드 플레이트 청소`,checkExtruder:`마모 여부 확인을 위해 압출기 기어 점검`,checkCooling:`냉각 팬이 제대로 작동하는지 확인`,generalInspection:`전반적인 프린터 점검`,cleanCarbonRods:`마찰 감소를 위해 카본 로드 청소`,lubricateSteelRods:`부드러운 움직임을 위해 스틸 로드에 윤활유 도포`,cleanSteelRods:`마찰 감소를 위해 스틸 로드 청소`,cleanLinearRails:`먼지와 이물질 제거를 위해 선형 레일 닦기`,checkPtfeTube:`마모 또는 손상 여부 확인을 위해 PTFE 튜브 점검`,replaceHepaFilter:`공기 품질을 위해 HEPA 필터 교체`,replaceCarbonFilter:`활성탄 필터 교체`,lubricateLeftNozzleRail:`왼쪽 노즐 레일 윤활 (H2 시리즈)`},haSensors:{label:`센서`,unavailable:`사용 불가`,blocksPrints:`{{entity}} — 경고 중에는 인쇄를 보류합니다`,states:{open:`열림`,closed:`닫힘`,unlocked:`잠금 해제`,locked:`잠김`,detected:`감지됨`,clear:`없음`,wet:`젖음`,dry:`건조`,problem:`문제`,ok:`정상`,running:`작동 중`,stopped:`정지`,on:`켜짐`,off:`꺼짐`},sectionTitle:`Home Assistant 센서 (프린터)`,add:`센서 추가`,addTitle:`Home Assistant 센서 추가`,editTitle:`Home Assistant 센서 편집`,empty:`아직 센서가 없습니다. Home Assistant의 도어 센서나 온도계를 연결하면 프린터 카드에 표시됩니다.`,unknownPrinter:`알 수 없는 프린터`,badgeBlocks:`인쇄 보류`,badgeNotifies:`알림`,badgeHidden:`카드에서 숨김`,printer:`프린터`,entity:`엔터티`,searchPlaceholder:`엔터티 검색...`,noEntities:`일치하는 엔터티 없음`,name:`표시 이름`,alertWhen:`경고 조건`,alertNever:`없음 — 표시만`,alertAbove:`초과`,alertBelow:`미만`,alertHint:`경고 상태가 되면 프린터 카드에서 강조되고 아래 옵션이 활성화됩니다.`,showOnCard:`프린터 카드에 표시`,notifyOnAlert:`경고가 시작되면 알림 보내기`,blockPrint:`경고 중에는 대기 중인 인쇄를 보류`,blockPrintHint:`작업은 대기열에 남아 있다가 센서가 해제되면 자동으로 시작됩니다. Home Assistant에 연결할 수 없는 동안에는 무시됩니다.`,toast:{created:`센서를 추가했습니다`,updated:`센서를 저장했습니다`,deleted:`센서를 삭제했습니다`},error:{pickEntity:`Home Assistant 엔터티를 선택하세요`,nameRequired:`표시 이름을 입력하세요`,printerRequired:`프린터를 선택하세요`,alertRequired:`먼저 경고 조건을 설정하세요`}},locationHaSensors:{sectionTitle:`Home Assistant 센서 (보관 위치)`,sectionDescription:`Home Assistant의 온도, 습도, 배터리 센서를 보관 위치에 연결하면 필라멘트 카드와 표에 실시간 값이 표시됩니다. 위치당 카테고리별로 센서를 하나만 등록할 수 있습니다.`,add:`센서 추가`,addTitle:`Home Assistant 센서 추가`,editTitle:`Home Assistant 센서 편집`,empty:`아직 센서가 없습니다. Home Assistant의 온도나 습도 센서를 연결하면 필라멘트 카드에 표시됩니다.`,unknownLocation:`알 수 없는 위치`,location:`보관 위치`,showOnCard:`필라멘트 카드에 표시`,overwriteConfirm:{title:`기존 센서를 교체하시겠습니까?`,messageTemperature:`"{{location}}"에는 이미 연결된 온도 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`,messageHumidity:`"{{location}}"에는 이미 연결된 습도 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`,messageBattery:`"{{location}}"에는 이미 연결된 배터리 센서가 있습니다: {{name}}. 계속하면 교체됩니다.`},autoAdd:{confirmTitle:`다른 센서도 추가할까요?`,confirmMessage:`Bambuddy가 이 위치의 다른 센서도 찾았습니다. 추가할 항목을 선택하세요.`,added:`다음도 추가됨: {{names}}`,noneFound:`이 위치에 일치하는 온도, 습도 또는 배터리 센서를 찾을 수 없습니다.`,onlyThisOne:`이것만`},options:{buttonLabel:`센서 옵션`,title:`위치 센서 옵션`,description:`이 값은 위치의 첫 번째 센서와 함께 온도, 습도 또는 배터리 센서가 자동으로 연결될 때 사용됩니다.`,generalSettings:`일반 설정`,pollInterval:`업데이트 간격(초)`,pollIntervalHint:`Bambuddy가 Home Assistant를 폴링하여 화면의 센서 값을 갱신하는 주기입니다. 최소 60초.`,colorizeValues:`경보 임계값에 따라 센서 값에 색상 표시`,aboveColor:`임계값 초과 색상`,belowColor:`임계값 미만 색상`,optimalColor:`최적값 색상`,colors:{red:`빨강`,orange:`주황`,yellow:`노랑`,green:`초록`,blue:`파랑`,purple:`보라`,pink:`분홍`},saved:`옵션이 저장되었습니다`,saveFailed:`옵션 저장에 실패했습니다`,reset:`초기화`,resetConfirm:{title:`기존 위치 센서를 모두 재설정하시겠습니까?`,message:`위에서 설정한 값으로 기존의 모든 보관 위치 온도, 습도, 배터리 센서의 경보 임계값, 알림, 카드 표시 여부를 덮어쓰고, 각 센서의 이름을 Home Assistant의 친숙한 이름으로 복원합니다. 프린터 센서는 영향을 받지 않습니다. 이 작업은 되돌릴 수 없습니다. 센서 수에 따라 시간이 다소 걸릴 수 있습니다.`},resetDone:`{{count}}개의 위치 센서에 적용되었습니다`,resetFailed:`위치 센서 재설정에 실패했습니다`},deleteAllConfirm:{title:`모든 센서를 삭제하시겠습니까?`,message:`"{{location}}"에 연결된 모든 센서({{count}}개)가 삭제됩니다. 이 작업은 되돌릴 수 없습니다.`},currentlyBound:`현재 연결됨: {{entity}}`,error:{locationRequired:`보관 위치를 선택하세요`},toast:{created:`센서를 추가했습니다`,updated:`센서를 저장했습니다`,deleted:`센서를 삭제했습니다`}},smartPlugs:{offline:`오프라인`,admin:`관리자`,openPlugAdminPage:`플러그 관리 페이지 열기`,deleteSmartPlug:`스마트 플러그 삭제`,turnOnSmartPlug:`스마트 플러그 켜기`,turnOffSmartPlug:`스마트 플러그 끄기`,turnOn:`켜기`,turnOff:`끄기`,addSmartPlug:{scanningNetwork:`네트워크 스캔 중...`,chooseEntity:`엔티티 선택...`,connectionFailed:`연결 실패`,searchEntities:`엔티티 검색...`,searchPowerSensors:`전력 센서 검색...`,searchEnergySensors:`에너지 센서 검색...`,placeholders:{plugName:`거실 플러그`,mqttStateOnValue:`ON, true, 1`,mqttSameAsPower:`전력 토픽과 같거나 다름`}},linkedTo:`연결됨:`,monitorOnly:`모니터만`,alerts:`알림`,scheduleOn:`켜기 {{time}}`,scheduleOff:`끄기 {{time}}`,on:`켜짐`,off:`꺼짐`,power:`전력`,kwhToday:`오늘 kWh`,settings:`설정`,automationSettings:`자동화 설정`,showInSwitchbar:`스위치바에 표시`,quickAccessSidebar:`사이드바에서 빠른 접근`,enabled:`활성화됨`,enableAutomation:`이 플러그의 자동화 활성화`,autoOn:`자동 켜기`,autoOnDescription:`인쇄 시작 시 켜기`,autoOff:`자동 끄기`,autoOffDescription:`인쇄 완료 시 끄기 (1회)`,autoOffPersistent:`계속 활성화`,autoOffPersistentDescription:`1회성 대신 인쇄 사이에 활성화 유지`,controlsPrinterPower:`프린터에 전원 공급`,controlsPrinterPowerDescription:`이 플러그가 액세서리(필터 팬, 조명)에만 전원을 공급한다면 끄세요. 그렇지 않으면 플러그를 끌 때 프린터가 오프라인으로 표시됩니다.`,turnOffDelayMode:`끄기 지연 모드`,time:`시간`,temp:`온도`,delayMinutes:`지연 (분)`,tempThreshold:`온도 임계값 (°C)`,tempThresholdDescription:`노즐이 이 온도 이하로 냉각될 때 끄기`,edit:`편집`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,turnOnConfirm:`"{{name}}"을(를) 켜시겠습니까?`,turnOffConfirm:`"{{name}}"을(를) 끄시겠습니까? 연결된 장치의 전원이 차단됩니다.`,failedToTurn:`"{{name}}" {{action}} 실패`,unknown:`알 수 없음`,addTitle:`스마트 플러그 추가`,editTitle:`스마트 플러그 편집`,stopScanning:`스캔 중지`,discoverTasmota:`Tasmota 장치 검색`,foundDevices:`{{count}}개 장치 발견 - 클릭하여 선택:`,noDevicesFound:`네트워크에서 Tasmota 장치를 찾을 수 없음`,haNotConfigured:`Home Assistant가 구성되지 않았습니다.`,haSettingsPath:`설정 → 네트워크 → Home Assistant`,selectEntity:`엔티티 선택 *`,ipAddress:`IP 주소 *`,nameLabel:`이름 *`,username:`사용자 이름`,password:`비밀번호`,authHint:`Tasmota 장치에 인증이 필요하지 않으면 비워두세요`,linkToPrinter:`프린터에 연결`,noPrinter:`프린터 없음 (수동 제어만)`,linkingDescription:`연결하면 인쇄 시작/완료 시 자동 켜기/끄기가 활성화됩니다`,powerAlerts:`전력 알림`,alertAbove:`초과 시 알림 (W)`,alertBelow:`미만 시 알림 (W)`,alertDescription:`전력 소비가 이 임계값을 초과할 때 알림 받기. 해당 방향을 비활성화하려면 비워두세요.`,dailySchedule:`일일 스케줄`,turnOnAt:`켜기 시각`,turnOffAt:`끄기 시각`,scheduleDescription:`매일 이 시간에 자동으로 켜기/끄기. 해당 동작을 건너뛰려면 비워두세요.`,showOnPrinterCard:`프린터 카드에 표시`,displayOnPrinterCard:`프린터 카드에 버튼 표시`,connectedResult:`연결됨!`,deviceLabel:`장치: {{name}} - `,stateLabel:`상태: {{state}}`,test:`테스트`,delete:`삭제`,save:`저장`,add:`추가`,cancel:`취소`,failedToStartScan:`스캔 시작 실패`,nameRequired:`이름이 필요합니다`,entityRequired:`Home Assistant 플러그에는 엔티티가 필요합니다`,mqttTopicRequired:`전력, 에너지 또는 상태 모니터링을 위한 MQTT 토픽이 하나 이상 구성되어야 합니다`,loadingEntities:`엔티티 불러오는 중...`,loading:`불러오는 중...`,failedToLoadEntities:`엔티티 불러오기 실패: {{error}}`,noEntitiesMatching:`"{{search}}"과 일치하는 엔티티를 찾을 수 없음`,noEntitiesAvailable:`사용 가능한 엔티티 없음`,searchingEntities:`모든 엔티티 검색 중 ({{count}}개 발견)`,showingEntities:`switch, light, input_boolean 표시 중 ({{count}}개 사용 가능)`,energyMonitoringOptional:`에너지 모니터링 (선택사항)`,energyMonitoringHint:`전력/에너지 데이터를 제공하는 센서를 검색하여 선택하세요.`,powerSensorW:`전력 센서 (W)`,energyTodayKwh:`오늘 에너지 (kWh)`,totalEnergyKwh:`총 에너지 (kWh)`,noMatchingSensors:`일치하는 센서 없음`,none:`없음`,mqttNotConfigured:`MQTT 브로커가 구성되지 않았습니다.`,mqttSettingsPath:`설정 → 네트워크 → MQTT 게시`,mqttNotConfiguredSuffix:`(게시를 활성화할 필요는 없고 브로커 세부 정보만 입력하면 됩니다).`,mqttMonitorOnlyDescription:`MQTT 플러그는 MQTT 구독을 통해 전력/에너지 데이터를 받습니다. 켜기/끄기 제어는 불가능 — MQTT 브로커나 홈 자동화 시스템을 사용하세요.`,powerMonitoring:`전력 모니터링`,energyMonitoring:`에너지 모니터링`,stateMonitoring:`상태 모니터링`,optional:`선택사항`,topic:`토픽`,jsonPath:`JSON 경로`,multiplier:`배수`,onValue:`ON 값`,mqttPowerHint:`JSON 경로는 JSON 페이로드에서 값을 추출합니다 (예: "power_l1"). 토픽이 원시 숫자 값을 게시하면 비워두세요. mW→W에는 배수 0.001, kW→W에는 1000을 사용하세요.`,mqttEnergyHint:`JSON 경로는 JSON 페이로드에서 값을 추출합니다. 원시 값에는 비워두세요. Wh→kWh에는 배수 0.001, MWh→kWh에는 1000을 사용하세요.`,mqttStateHint:`JSON 경로는 JSON 페이로드에서 값을 추출합니다. 원시 값에는 비워두세요. ON 값: "ON"을 의미하는 정확한 문자열. 자동 감지(ON, true, 1)를 위해 비워두세요.`,restControl:`제어`,restOnUrl:`켜기 URL`,restOffUrl:`끄기 URL`,restOnBody:`ON 요청 본문`,restOffBody:`OFF 요청 본문`,restMethod:`HTTP 방법`,restHeaders:`사용자 지정 헤더 (JSON)`,restStatusUrl:`상태 URL`,restStatusPath:`상태 JSON 경로`,restStatusOnValue:`ON 값`,restPowerUrl:`전력 URL`,restPowerPath:`전력 JSON 경로`,restPowerMultiplier:`전력 배수`,restEnergyUrl:`에너지 URL`,restEnergyPath:`에너지 JSON 경로 (오늘)`,restEnergyTotalPath:`에너지 JSON 경로 (누적값)`,restEnergyTotalMultiplier:`누적값 배율`,restEnergyTotalPathHint:`예: aenergy.total`,restEnergyTotalHint:`많은 플러그가 — Shelly는 모두 — 초기화되지 않는 누적 카운터만 보고합니다. 그 값은 위 항목이 아니라 여기에 입력하세요. 오늘 사용량으로 읽으면 자정에 초기화되지 않고, 어제와 총계는 계속 비어 있게 됩니다. Bambuddy가 누적값에서 오늘과 어제를 계산하며, 이를 위해 하루에서 이틀 치 측정값이 필요합니다. Shelly는 와트시로 보고하므로 배율은 0.001을 사용하세요.`,restEnergyMultiplier:`에너지 배수`,restUrlRequired:`REST 플러그에는 URL(ON 또는 OFF) 중 하나 이상이 필요합니다`,restHeadersHint:`예: {"Authorization": "Bearer your-token"}`,restBodyHint:`예: ON, {"state": "on"}`,restStatusHint:`현재 상태를 폴링할 URL`,restPathHint:`예: state 또는 data.power.status`,restPowerUrlHint:`전력 데이터의 별도 URL (비어 있으면 상태 URL 사용)`,restEnergyUrlHint:`에너지 데이터의 별도 URL (비어 있으면 상태 URL 사용)`,restEnergyHint:`각 값은 자체 URL을 사용하거나 상태 URL로 대체할 수 있습니다. 단위 변환에 배수를 사용하세요 (예: Wh→kWh에 0.001).`,testConnection:`연결 테스트`,connectionSuccess:`연결 성공`,noSwitchesInSwitchbar:`스위치바에 스위치 없음`,enableSwitchbarHint:`설정 > 스마트 플러그에서 "스위치바에 표시"를 활성화하세요`,autoOffAfterDrying:`건조 후 자동 끄기`,autoOffAfterDryingDescription:`AMS 건조가 완료되면 끄기`,delayAfterDryingMinutes:`건조 후 지연 (분)`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`이메일`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`SMTP 이메일 알림`,telegram:`Telegram 봇을 통한 알림`,discord:`Webhook을 통해 Discord 채널로 전송`,ntfy:`무료, 자체 호스팅 가능한 푸시 알림`,pushover:`간단하고 신뢰할 수 있는 푸시 알림`,callmebot:`CallMeBot을 통한 무료 WhatsApp 알림`,webhook:`모든 URL에 일반 HTTP POST`,homeassistant:`Home Assistant 대시보드의 지속적인 알림`,bark:`Bark를 통한 iOS 푸시 알림(셀프 호스팅 가능)`},lastSuccess:`마지막: {{date}}`,error:`오류`,printer:`프린터:`,allPrinters:`모든 프린터`,sendTestNotification:`테스트 알림 전송`,eventSettings:`이벤트 설정`,enabled:`활성화됨`,sendFromProvider:`이 제공자에서 알림 전송`,printEvents:`인쇄 이벤트`,printerStatus:`프린터 상태`,amsAlarms:`AMS 알람`,amsHtAlarms:`AMS-HT 알람`,printQueue:`인쇄 대기열`,start:`시작`,plateCheck:`플레이트 확인`,complete:`완료`,failed:`실패`,stopped:`중지됨`,progress:`진행률`,offline:`오프라인`,lowFilament:`필라멘트 부족`,maintenance:`유지 관리`,amsHumidity:`AMS 습도`,amsTemp:`AMS 온도`,amsDryingSuspended:`건조 중단됨`,amsHtHumidity:`AMS-HT 습도`,amsHtTemp:`AMS-HT 온도`,bedCooled:`베드 냉각됨`,firstLayer:`첫 번째 레이어`,quiet:`방해 금지`,digest:`요약 {{time}}`,printStarted:`인쇄 시작됨`,plateNotEmpty:`플레이트 비어 있지 않음`,plateNotEmptyDescription:`인쇄 전 개체 감지됨`,plateClearRequired:`플레이트 비움 확인 필요`,plateClearRequiredDescription:`인쇄 완료, 대기열이 플레이트 확인을 기다림`,plateClear:`플레이트 확인`,printCompleted:`인쇄 완료됨`,bedCooledLabel:`베드 냉각됨`,bedCooledDescription:`인쇄 후 베드가 임계값 이하로 냉각됨`,firstLayerCompleteLabel:`첫 번째 레이어 완료`,firstLayerCompleteDescription:`첫 번째 레이어 완료 시 스냅샷과 함께 알림`,missingSpoolAssignmentLabel:`스풀 할당 누락`,billingChargeFailedLabel:`결제 처리 실패`,billingChargeFailedDescription:`인쇄 비용을 기록하지 못한 경우 알림`,missingSpoolAssignmentDescription:`인쇄 시작 시 필요한 트레이에 할당된 스풀이 없을 때 알림`,printFailed:`인쇄 실패`,printStopped:`인쇄 중지됨`,progressMilestones:`진행률 이정표`,progressMilestonesDescription:`25%, 50%, 75%에서 알림`,printerOffline:`프린터 오프라인`,printerError:`프린터 오류`,aiFailureDetection:`AI 실패 감지`,aiFailureDetectionDescription:`Obico AI가 인쇄 실패 가능성을 감지하면 알림`,lowFilamentLabel:`필라멘트 부족`,maintenanceDue:`유지 관리 필요`,maintenanceDueDescription:`유지 관리가 필요할 때 알림`,amsHumidityHigh:`AMS 습도 높음`,amsHumidityHighDescription:`일반 AMS 습도가 임계값 초과`,amsTemperatureHigh:`AMS 온도 높음`,amsTemperatureHighDescription:`일반 AMS 온도가 임계값 초과`,amsDryingSuspendedTitle:`자동 건조 중단`,amsDryingSuspendedDescription:`습도가 임계값 아래로 내려가지 않아 AMS 유닛의 자동 건조를 중단했습니다`,amsHtHumidityHigh:`AMS-HT 습도 높음`,amsHtHumidityHighDescription:`AMS-HT 습도가 임계값 초과`,amsHtTemperatureHigh:`AMS-HT 온도 높음`,amsHtTemperatureHighDescription:`AMS-HT 온도가 임계값 초과`,inventoryAlerts:`재고 알림`,stockReorderAlert:`재주문 알림`,stockReorderAlertDescription:`SKU가 재주문 시점에 도달함`,stockBreakAlert:`재고 소진 알림`,stockBreakAlertDescription:`보충 전에 재고가 소진될 것임`,jobAdded:`작업 추가됨`,jobAddedDescription:`대기열에 작업 추가됨`,jobAssigned:`작업 할당됨`,jobAssignedDescription:`모델 기반 작업이 프린터에 할당됨`,jobStarted:`작업 시작됨`,jobStartedDescription:`대기열 작업 인쇄 시작됨`,jobWaiting:`작업 대기 중`,jobWaitingDescription:`필라멘트 또는 프린터를 기다리는 작업`,jobSkipped:`작업 건너뜀`,jobSkippedDescription:`작업 건너뜀 (이전 실패)`,jobFailed:`작업 실패`,jobFailedDescription:`작업 시작 실패`,queueComplete:`대기열 완료`,queueCompleteDescription:`모든 대기열 작업 완료`,quietHours:`방해 금지 시간`,noNotificationsDuring:`이 시간 동안 알림 없음`,editProviderToChangeQuietHours:`방해 금지 시간을 변경하려면 제공자를 편집하세요`,dailyDigest:`일일 요약`,batchNotifications:`알림을 하나의 일일 요약으로 묶기`,sendAt:`{{time}}에 전송`,editProviderToChangeDigestTime:`요약 시간을 변경하려면 제공자를 편집하세요`,edit:`편집`,deleteProvider:`알림 제공자 삭제`,deleteConfirm:`"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.`,delete:`삭제`,addTitle:`알림 제공자 추가`,editTitle:`알림 제공자 편집`,nameLabel:`이름 *`,namePlaceholder:`내 알림`,providerTypeLabel:`제공자 유형 *`,configuration:`구성`,testConfiguration:`구성 테스트`,printerFilter:`프린터 필터`,onlyFromPrinter:`이 프린터의 이벤트에 대한 알림만 전송`,quietHoursDnd:`방해 금지 시간`,quietStart:`시작`,quietEnd:`종료`,dailyDigestLabel:`일일 요약`,sendDigestAt:`요약 전송 시각`,digestCollected:`이벤트가 수집되어 이 시간에 하나의 요약으로 전송됩니다`,notificationEvents:`알림 이벤트`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(인쇄 완료 후)`,haSensorAlert:`프린터 센서 경고`,haSensorAlertDescription:`(연결된 Home Assistant 센서에 주의가 필요합니다)`,locationHaSensorAlert:`보관 위치 센서 경고`,locationHaSensorAlertDescription:`(보관 위치에 연결된 Home Assistant 센서에 주의가 필요합니다)`,eventPriority:{sectionTitle:`ntfy 우선순위`,helpNtfy:`각 활성화된 이벤트에 대한 우선순위를 선택하세요. ntfy는 이를 사용하여 알림을 에스컬레이션합니다(소리, 가시성, 푸시 동작). 여기서 설정되지 않은 수준은 ntfy 서버 기본값을 사용합니다.`,min:`최소`,low:`낮음`,default:`기본값`,high:`높음`,urgent:`긴급`},cancel:`취소`,save:`저장`,add:`추가`,nameRequired:`이름이 필요합니다`,fieldRequired:`{{field}}이(가) 필요합니다`,haDataInvalid:`Data 필드는 유효한 JSON 객체여야 합니다(예: {"priority": "high", "ttl": 0})`,phoneNumber:`전화번호`,apiKey:`API 키`,serverUrl:`서버 URL`,topic:`토픽`,authToken:`인증 토큰`,userKey:`사용자 키`,appToken:`앱 토큰`,priority:`우선순위`,pushoverRetry:`긴급 재알림 (초)`,pushoverExpire:`긴급 만료 (초)`,botToken:`봇 토큰`,chatId:`채팅 ID`,telegramThreadId:`포럼 주제 ID`,telegramThreadIdHelp:`선택 사항. 포럼 그룹의 특정 주제로 전송합니다. 주제 링크의 마지막 숫자입니다 (t.me/c/.../25). 비워 두면 General 주제로 전송됩니다.`,telegramThreadIdInvalid:`포럼 주제 ID는 숫자여야 합니다.`,smtpServer:`SMTP 서버`,smtpPort:`SMTP 포트`,security:`보안`,authentication:`인증`,username:`사용자 이름`,password:`비밀번호`,fromEmail:`발신 이메일`,toEmail:`수신 이메일`,webhookUrl:`Webhook URL`,payloadFormat:`페이로드 형식`,authorization:`인증`,titleFieldName:`제목 필드 이름`,messageFieldName:`메시지 필드 이름`,editTemplate:`템플릿 편집: {{name}}`,titleLabel:`제목`,bodyLabel:`본문`,titlePlaceholder:`알림 제목...`,bodyPlaceholder:`알림 본문...`,availableVariables:`사용 가능한 변수`,clickToInsert:`클릭하여 본문의 커서 위치에 삽입`,livePreview:`실시간 미리보기`,hide:`숨기기`,show:`표시`,loadingPreview:`미리보기 불러오는 중...`,enterTemplateContent:`미리보기를 보려면 템플릿 내용을 입력하세요`,titlePreview:`제목:`,bodyPreview:`본문:`,resetToDefault:`기본값으로 초기화`,titleRequired:`제목이 필요합니다`,bodyRequired:`본문이 필요합니다`,notificationLog:`알림 로그`,showFailedOnly:`실패만`,last24Hours:`최근 24시간`,last7Days:`최근 7일`,last30Days:`최근 30일`,last90Days:`최근 90일`,justNow:`방금`,noFailedNotifications:`실패한 알림 없음`,noNotificationsLogged:`기록된 알림 없음`,unknownProvider:`알 수 없는 제공자`,logTitle:`제목`,logMessage:`메시지`,logError:`오류`,logProvider:`제공자: {{type}}`,logTime:`시간: {{time}}`,refresh:`새로고침`,clearOld:`오래된 것 삭제`,statsSummary:`최근 {{days}}일:`,statsNotifications:`알림`,statsSent:`{{count}}개 전송됨`,statsFailed:`{{count}}개 실패`,eventTypes:{print_start:`인쇄 시작됨`,print_complete:`인쇄 완료`,print_failed:`인쇄 실패`,print_stopped:`인쇄 중지됨`,print_progress:`진행률`,printer_offline:`프린터 오프라인`,printer_error:`프린터 오류`,filament_low:`필라멘트 부족`,maintenance_due:`유지 관리 필요`,test:`테스트`},userEmail:{title:`알림`,emailNotifications:`이메일 알림`,emailNotificationsDesc:`내 인쇄 작업에 대한 이메일 알림을 받습니다. 이메일은 고급 인증에서 구성된 시스템 SMTP 설정을 사용하여 전송됩니다.`,sendingTo:`알림이 전송될 주소`,noEmailWarning:`계정에 이메일 주소가 없습니다. 관리자에게 연락하여 추가하세요.`,printJobNotifications:`인쇄 작업 알림`,printJobNotificationsDesc:`내가 제출한 인쇄 작업에 대해 이메일 알림을 트리거할 이벤트를 선택하세요.`,printJobStarts:`인쇄 작업 시작`,printJobStartsDesc:`인쇄 작업이 시작될 때 알림 받기.`,printJobFinishes:`인쇄 작업 완료`,printJobFinishesDesc:`인쇄 작업이 성공적으로 완료될 때 알림 받기.`,printErrors:`인쇄 오류`,printErrorsDesc:`인쇄 작업이 실패하거나 오류가 발생할 때 알림 받기.`,printJobStops:`인쇄 작업 중지`,printJobStopsDesc:`인쇄 작업이 취소되거나 중지될 때 알림 받기.`,saveSuccess:`알림 환경 설정이 저장되었습니다.`,saveError:`알림 환경 설정 저장 실패.`}},richTextEditor:{bold:`굵게`,italic:`기울임`,underline:`밑줄`,bulletList:`글머리 기호 목록`,numberedList:`번호 목록`,alignLeft:`왼쪽 정렬`,alignCenter:`가운데 정렬`,alignRight:`오른쪽 정렬`,addLink:`링크 추가`,removeLink:`링크 제거`},externalLinks:{title:`사이드바 링크`,sidebarLayout:`사이드바`,sidebarLayoutDescription:`기본 제공 페이지를 표시하거나 숨기고, 외부 링크를 추가하고, 항목을 드래그하여 사이드바 탐색 순서를 변경하세요.`,systemPages:`Bambuddy 페이지`,externalLinks:`외부 링크`,visibleInSidebar:`사이드바에 표시`,hiddenFromSidebar:`사이드바에서 숨김`,requiredInSidebar:`사이드바에 필수`,hidePage:`페이지 숨기기`,showPage:`페이지 표시`,settingsCannotBeHidden:`설정은 숨길 수 없습니다`,noLinksConfigured:`구성된 외부 링크 없음`,deleteLink:`링크 삭제`,removeCustomIcon:`사용자 지정 아이콘 제거`,openInNewTab:`새 탭에서 열기`,placeholders:{linkName:`내 링크`}},keyboardShortcuts:{title:`키보드 단축키`,navigation:`탐색`,archivesSection:`아카이브`,kProfilesSection:`K-프로필`,generalSection:`일반`,shortcuts:{goToPrinters:`프린터로 이동`,goToArchives:`아카이브로 이동`,goToQueue:`대기열로 이동`,goToStats:`통계로 이동`,goToProfiles:`클라우드 프로필로 이동`,goToSettings:`설정으로 이동`,focusSearch:`검색 포커스`,openUploadModal:`업로드 모달 열기`,clearSelection:`선택 초기화 / 입력 포커스 해제`,contextMenu:`카드 컨텍스트 메뉴`,refreshProfiles:`프로필 새로고침`,newProfile:`새 프로필`,exitSelectionMode:`선택 모드 종료`,showHelp:`이 도움말 표시`},footer:`Esc를 누르거나 외부를 클릭하여 닫기`},notificationLog:{title:`알림 로그`,events:{printStarted:`인쇄 시작됨`,printComplete:`인쇄 완료`,printFailed:`인쇄 실패`,printStopped:`인쇄 중지됨`,progress:`진행률`,printerOffline:`프린터 오프라인`,printerError:`프린터 오류`,lowFilament:`필라멘트 부족`,maintenanceDue:`유지 관리 필요`,test:`테스트`},timeAgo:{justNow:`방금`,minutesAgo:`{{minutes}}분 전`,hoursAgo:`{{hours}}시간 전`}},restoreBackup:{title:`백업 복원`,restoring:`복원 중...`,restoreComplete:`복원 완료`,restoreFailed:`복원 실패`,importSettings:`백업 파일에서 설정 가져오기`,pleaseWait:`데이터가 복원되는 동안 기다려 주세요`,clickToSelect:`백업 파일 클릭하여 선택 (.json 또는 .zip)`,howDuplicateHandling:`중복 처리 방법:`,categories:{printers:`프린터`,smartPlugs:`스마트 플러그`,notificationProviders:`알림 제공자`,filaments:`필라멘트`,archives:`아카이브`,pendingUploads:`대기 중인 업로드`,settingsTemplates:`설정 및 템플릿`},matchingInfo:{printers:`일련번호로 일치`,smartPlugs:`IP 주소로 일치`,notificationProviders:`이름으로 일치`,filaments:`이름 + 유형 + 브랜드로 일치`,archives:`콘텐츠 해시로 일치`,pendingUploads:`파일 이름으로 일치`,settingsTemplates:`항상 덮어씀`},replaceExisting:`기존 데이터 교체`,keepExisting:`기존 데이터 유지`,replaceDescription:`백업 데이터로 이미 존재하는 항목 덮어쓰기`,keepDescription:`아직 존재하지 않는 항목만 복원`,caution:`주의:`,cautionText:`덮어쓰기는 현재 구성을 백업 데이터로 교체합니다. 보안상 프린터 액세스 코드는 절대 덮어쓰지 않습니다.`,itemsRestored:`복원된 항목`,itemsSkipped:`건너뛴 항목`,restored:`복원됨`,skipped:`건너뜀 (이미 존재)`,filesLabel:`파일 (3MF, 썸네일 등)`,newApiKeysGenerated:`새 API 키 생성됨`,newApiKeysWarning:`이 키는 한 번만 표시됩니다. 지금 복사하세요!`,processingBackup:`백업 파일 처리 중...`,noDataFound:`백업 파일에서 복원할 데이터를 찾을 수 없습니다.`,failedToRestore:`백업 복원 실패. 파일 형식을 확인하세요.`},backupExport:{title:`백업 내보내기`,selectData:`포함할 데이터 선택`,selectAll:`모두 선택`,selectNone:`선택 없음`,categoryDescriptions:{settings:`언어, 테마, 업데이트 환경 설정`,notifications:`ntfy, Pushover, Discord 등`,templates:`사용자 지정 메시지 템플릿`,smartPlugs:`Tasmota 플러그 구성`,externalLinks:`외부 서비스에 대한 사이드바 링크`,printers:`프린터 정보 (액세스 코드 제외)`,plateDetection:`빈 플레이트 기준 이미지`,filaments:`필라멘트 유형 및 비용`,maintenance:`사용자 지정 유지 관리 일정`,archives:`모든 인쇄 데이터 + 파일 (3MF, 썸네일, 사진)`,projects:`프로젝트, BOM 항목 및 첨부 파일`,pendingUploads:`검토 대기 중인 가상 프린터 업로드`,apiKeys:`Webhook API 키 (가져오기 시 새 키 생성)`},requiresPrinters:`프린터 선택 필요`,zipFileWarning:`ZIP 파일이 생성됩니다.`,zipFileDescription:`모든 3MF 파일, 썸네일, 타임랩스 및 사진을 포함합니다. 시간이 걸리고 파일이 커질 수 있습니다.`,includeAccessCodes:`액세스 코드 포함`,includeAccessCodesDescription:`다른 기기로 전송하는 경우`,includeAccessCodesWarning:`액세스 코드가 평문으로 포함됩니다. 이 백업 파일을 안전하게 보관하세요!`,categoriesSelected:`{{selectedCount}}개 카테고리 선택됨`},pendingUploads:{placeholders:{notes:`이 인쇄에 대한 메모 추가...`},discardUpload:`업로드 삭제`,archiveAllUploads:`모든 업로드 아카이브`,discardAllUploads:`모든 업로드 삭제`,archive:`아카이브`,timeAgo:{justNow:`방금`,minutesAgo:`{{minutes}}분 전`,hoursAgo:`{{hours}}시간 전`,daysAgo:`{{days}}일 전`}},apiBrowser:{placeholders:{requestBody:`JSON 요청 본문...`,searchEndpoints:`엔드포인트 검색...`}},configureAmsSlot:{title:`AMS 슬롯 구성`,slotConfigured:`슬롯 구성됨!`,configuringSlot:`슬롯 구성 중:`,slotLabel:`{{ams}} 슬롯 {{slot}}`,searchPresets:`프리셋 검색...`,colorPlaceholder:`색상 이름 또는 16진수 (예: brown, FF8800)`,clearCustomColor:`사용자 지정 색상 초기화`,noCloudPresets:`클라우드 프리셋 없음. Bambu 클라우드에 로그인하여 동기화하세요.`,noPresetsAvailable:`사용 가능한 프리셋 없음. Bambu 클라우드에 로그인하거나 로컬 프로필을 가져오세요.`,noMatchingPresets:`일치하는 프리셋을 찾을 수 없습니다.`,custom:`사용자 지정`,builtin:`기본 제공`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`설정이 프린터로 전송됨`,filamentProfile:`필라멘트 프로필`,kProfileLabel:`K 프로필 (압력 전진)`,filteringFor:`필터링 중: {{material}}`,noKProfile:`K 프로필 없음 (기본값 0.020 사용)`,noMatchingKProfiles:`일치하는 K 프로필을 찾을 수 없습니다. 기본값 K=0.020이 사용됩니다.`,otherKProfiles:`이 프린터의 다른 K 프로필`,selectFilamentFirst:`먼저 필라멘트 프로필을 선택하세요`,kFromCalibration:`K={{value}} (프린터 보정에서)`,customColorLabel:`사용자 지정 색상 (선택사항)`,presetColors:`{{name}} 색상:`,showLessColors:`색상 간략히 보기`,showMoreColors:`더 많은 색상 보기`,clear:`초기화`,hexLabel:`16진수: #{{hex}}`,resetting:`초기화 중...`,resetSlot:`슬롯 초기화`,cancel:`취소`,configuring:`구성 중...`,configureSlot:`슬롯 구성`},githubBackup:{title:`Git 백업`,history:`기록`,downloadBackup:`백업 다운로드`,restoreBackup:`백업 복원`,noBackupsYet:`아직 백업 없음`},emailSettings:{placeholders:{fromName:`Bambuddy`}},tagManagement:{searchTags:`태그 검색...`,renameTag:`태그 이름 바꾸기`,deleteTag:`태그 삭제`},notificationTemplates:{placeholders:{title:`알림 제목...`,body:`알림 본문...`}},batchTag:{placeholders:{newTag:`새 태그 입력...`}},photoGallery:{deletePhoto:`사진 삭제`},filamentHoverCard:{copySpoolUuid:`스풀 UUID 복사`},kProfilesView:{hasNote:`메모 있음`,copyProfile:`프로필 복사`},layout:{openMenu:`메뉴 열기`,noPermissionSystemInfo:`시스템 정보를 볼 권한이 없습니다`},dashboard:{dragToReorder:`드래그하여 순서 변경`,hideWidget:`위젯 숨기기`},notificationProviderCard:{deleteNotificationProvider:`알림 제공자 삭제`},fileManagerModal:{closeFileManager:`파일 관리자 닫기`,sortFiles:`파일 정렬`,goToParentFolder:`상위 폴더로 이동`,threeView:`3D 보기`},embeddedCameraViewer:{refreshStream:`스트림 새로고침`,close:`닫기`,zoomOut:`축소`,resetZoom:`배율 초기화`,zoomIn:`확대`,dragToResize:`드래그하여 크기 조정`},timelapseViewer:{skipBack5s:`5초 뒤로`,skipForward5s:`5초 앞으로`},notificationProviders:{descriptions:{email:`SMTP 이메일 알림`,telegram:`Telegram 봇을 통한 알림`,discord:`Webhook을 통해 Discord 채널로 전송`,ntfy:`무료, 자체 호스팅 가능한 푸시 알림`,pushover:`간단하고 신뢰할 수 있는 푸시 알림`,callmebot:`CallMeBot을 통한 무료 WhatsApp 알림`,webhook:`모든 URL에 일반 HTTP POST`}},logViewer:{searchPlaceholder:`메시지 또는 로거 이름 검색...`,noLogEntries:`로그 항목을 찾을 수 없음`},switchbarPopover:{noSwitchesInSwitchbar:`스위치바에 스위치 없음`},projectPageModal:{placeholders:{title:`제목`,designer:`디자이너`,license:`라이선스`,description:`설명 입력...`,profileTitle:`프로필 제목`,profileDescription:`프로필 설명...`}},SpoolmanSettings:{},time:{unknown:`-`,waiting:`대기 중`,justNow:`방금`,now:`지금`,minsAgo:`{{count}}분 전`,inMins:`{{count}}분 후`,hoursAgo:`{{count}}시간 전`,inHours:`{{count}}시간 후`,daysAgo:`{{count}}일 전`,inDays:`{{count}}일 후`},spoolbuddy:{nav:{dashboard:`대시보드`,ams:`AMS`,inventory:`재고`,writeTag:`태그 쓰기`,settings:`설정`},status:{nfcReady:`NFC 준비됨`,nfcOff:`NFC 꺼짐`,offline:`오프라인`,online:`온라인`,noPrinters:`프린터 없음`,deviceOffline:`장치 오프라인`,waitingConnection:`장치 연결 대기 중...`,systemReady:`시스템 준비됨`,status:`상태`},dashboard:{readyToScan:`스캔 준비됨`,idleMessage:`스풀을 저울에 올려 식별하세요`,nfcHint:`NFC 태그가 자동으로 읽힙니다`,device:`장치`,syncWeight:`무게 동기화`,weightSynced:`동기화됨!`,unknownTag:`알 수 없는 태그`,newTag:`새 태그 감지됨`,onScale:`저울 위`,linkSpool:`스풀에 연결`,linkTagTitle:`태그를 스풀에 연결`,linkTag:`태그 연결`,selectSpool:`이 태그를 연결할 스풀 선택:`,noUntagged:`태그 없는 스풀을 찾을 수 없음`,tagDetected:`태그 감지됨`,noTag:`태그 없음`,tagId:`태그`,grossWeight:`총 무게`,spoolSize:`스풀 크기`,close:`닫기`,currentSpool:`현재 스풀`,plateReady:`플레이트 준비됨: {{name}}`,plateReadyLabel:`초기화할 플레이트`,plateClearAction:`초기화`,plateClearedToast:`플레이트가 초기화됨으로 표시됨`,plateClearFailed:`플레이트를 초기화됨으로 표시할 수 없음`},modal:{spoolDetected:`스풀 감지됨`,assignToAms:`AMS에 할당`,syncWeight:`무게 동기화`,weightSynced:`동기화됨!`,syncing:`동기화 중...`,newTagDetected:`새 태그 감지됨`,addToInventory:`재고에 추가`,assignToAmsTitle:`AMS에 할당`,selectSlot:`슬롯 선택`,assign:`할당`,assigning:`할당 중...`,assignSuccess:`할당됨!`,assignPendingInsert:`할당됨. 스풀을 삽입하면 슬롯이 구성됩니다.`,assignError:`스풀 할당 실패. 다시 시도하세요.`,noPrinterSelected:`프린터 선택...`,noAmsDetected:`이 프린터에서 AMS가 감지되지 않음`,slot:`슬롯`},weight:{noReading:`읽기 없음`,stable:`안정됨`,measuring:`측정 중...`,tare:`영점 조정`,calibrate:`보정`},spool:{remaining:`남은 양`,material:`재료`,brand:`브랜드`,color:`색상`,coreWeight:`코어`,labelWeight:`라벨`,scaleWeight:`저울`,netWeight:`순 무게`,lastUsed:`마지막 사용`},ams:{noData:`AMS가 감지되지 않음`,connectAms:`필라멘트 슬롯을 보려면 AMS를 연결하세요`,noPrinter:`선택된 프린터 없음`,selectPrinter:`상단 표시줄에서 프린터를 선택하세요`,printerDisconnected:`프린터 연결 끊김`,humidity:`습도`,level:`레벨`,active:`활성`,slot:`슬롯`,empty:`비어 있음`},inventory:{search:`스풀 검색...`,empty:`재고에 스풀 없음`,noResults:`일치하는 스풀 없음`,spools:`스풀`,addSpool:`스풀 추가`},settings:{tabDevice:`장치`,tabDisplay:`화면`,tabScale:`저울`,tabUpdates:`업데이트`,nfcReader:`NFC 리더`,type:`유형`,connection:`연결`,notConnected:`N/A`,deviceInfo:`장치 정보`,hostname:`호스트`,uptime:`가동 시간`,systemConfig:`백엔드 및 인증`,backendUrl:`Bambuddy 백엔드 URL`,apiToken:`API 토큰`,apiTokenPlaceholder:`API 토큰 입력`,saveConfig:`구성 저장`,systemQueued:`구성 대기 중.`,nfcDiagnostic:`NFC 진단`,scaleDiagnostic:`저울 진단`,readTagDiagnostic:`태그 읽기 진단`,testNfc:`리더 테스트`,testScale:`정확도 테스트`,testReadTag:`태그 읽기`,systemFieldsRequired:`백엔드 URL이 필요합니다.`,brightness:`밝기`,saved:`저장됨`,noBacklight:`DSI 백라이트가 감지되지 않음. 밝기 제어는 DSI 디스플레이가 필요합니다.`,screenBlank:`화면 꺼짐 대기 시간`,screenBlankDesc:`비활성 후 화면이 꺼집니다. 터치하여 깨우세요.`,displayNote:`밝기는 소프트웨어 필터로 적용됩니다.`,scaleCalibration:`저울 보정`,currentWeight:`현재 무게`,tareOffset:`영점`,calFactor:`계수`,knownWeight:`알려진 무게`,calStep1:`저울에서 모든 물건을 제거하고 영점 설정을 누르세요.`,calStep2:`저울에 알려진 무게를 올리세요.`,setZero:`영점 설정`,calibrateNow:`보정`,calibrated:`보정됨`,tareSet:`영점 조정 명령 전송됨. 장치 대기 중...`,tareComplete:`영점 조정 완료!`,tareTimedOut:`영점 조정 시간 초과 — SpoolBuddy 데몬이 실행 중인가요?`,tareFailed:`영점 조정 명령 전송 실패`,zeroSet:`영점이 설정됨. 저울에 알려진 무게를 올리세요.`,calibrationDone:`보정 완료!`,calibrationFailed:`보정 실패`,lastCalibrated:`마지막 보정`,stable:`안정됨`,settling:`안정화 중...`,firmware:`펌웨어`,scale:`저울`,noDevice:`SpoolBuddy 장치를 찾을 수 없음`,daemonVersion:`데몬 버전`,currentVersion:`현재`,versionPending:`데몬 대기 중...`,checking:`확인 중...`,checkUpdates:`업데이트 확인`,updateAvailable:`업데이트 사용 가능`,updateInstructions:`SSH를 통해 업데이트: SpoolBuddy 설치 스크립트를 실행하여 업그레이드하세요.`,upToDate:`최신 버전`,includeBeta:`베타 버전 포함`},writeTag:{tabExisting:`기존 스풀`,tabNew:`새 스풀`,tabReplace:`태그 교체`,searchPlaceholder:`재료, 색상, 브랜드로 검색...`,noUntaggedSpools:`태그 없는 스풀 없음`,noTaggedSpools:`태그 있는 스풀 없음`,selectSpool:`스풀을 선택한 후 빈 NTAG를 리더에 올려놓으세요`,placeTag:`NTAG를 리더에 올려놓으세요`,tagReady:`태그 감지됨 — 쓰기 준비됨`,writeTag:`태그 쓰기`,replaceTag:`태그 교체`,writing:`태그 쓰는 중...`,waiting:`SpoolBuddy 대기 중...`,writeSuccess:`태그 성공적으로 쓰여짐!`,writeFailed:`쓰기 실패`,queueFailed:`쓰기 명령 대기 실패`,tryAgain:`다시 시도`,cancel:`취소`,replaceWarning:`이전 태그가 연결 해제됩니다. 새 태그가 교체합니다.`,deviceOffline:`SpoolBuddy가 오프라인입니다`,material:`재료`,colorName:`색상 이름`,color:`색상`,brand:`브랜드`,weight:`무게 (g)`,createSpool:`스풀 생성`,creating:`생성 중...`,spoolCreated:`스풀 생성됨! 쓰기 준비됨.`,createFailed:`스풀 생성 실패`,incompleteDataWarning:`불완전한 Spoolman 데이터로 태그 쓰여짐`},quickMenu:{printerPower:`프린터 전원`,systemControls:`시스템`,restartDaemon:`데몬 재시작`,restartBrowser:`브라우저 재시작`,reboot:`재부팅`,shutdown:`종료`,swipeToClose:`아래로 스와이프하여 닫기`,confirmTitle:`확인`,confirmShutdown:`SpoolBuddy를 종료하시겠습니까? 다시 켜려면 물리적 접근이 필요합니다.`,confirmReboot:`SpoolBuddy를 재부팅하시겠습니까?`,confirmRestartDaemon:`SpoolBuddy 데몬을 재시작하시겠습니까? NFC와 저울이 일시적으로 사용 불가능합니다.`,confirmRestartBrowser:`키오스크 브라우저를 재시작하시겠습니까? 화면이 잠시 꺼집니다.`,confirm:`확인`,confirmPlugOn:`{{name}}을(를) 켜시겠습니까?`,confirmPlugOff:`{{name}}을(를) 끄시겠습니까?`,turnOn:`켜기`,turnOff:`끄기`}},bugReport:{title:`버그 신고`,description:`설명`,descriptionPlaceholder:`무엇이 잘못되었나요? 문제를 설명해 주세요...`,email:`이메일 (선택사항)`,emailPlaceholder:`your@email.com`,emailPrivacy:`제공하면 이메일이 GitHub 이슈의 접힌 섹션에 포함되어 관리자가 후속 조치를 취할 수 있습니다.`,screenshot:`스크린샷`,uploadOrPaste:`이미지 업로드, 붙여넣기 또는 드래그`,dataCollectedSummary:`보고서에 포함되는 데이터는?`,dataIncluded:`포함됨:`,dataIncludedList:`앱 버전, OS, 아키텍처, Python 버전, 데이터베이스 통계(개수만), 프린터 모델, 노즐 개수, 펌웨어 버전, 연결 상태, 통합 상태(Spoolman, MQTT, HA), 비민감 설정, 네트워크 인터페이스 수, Docker 세부 정보, 의존성 버전.`,dataNeverIncluded:`절대 포함되지 않음:`,dataNeverIncludedList:`프린터 이름, 일련 번호, 액세스 코드, 비밀번호, IP 주소, 이메일 주소, API 키, 토큰, Webhook URL, 호스트 이름 또는 사용자 이름.`,submit:`제출`,startLogging:`디버그 로깅 시작`,stepEnableLogging:`디버그 로깅 활성화됨`,stepReproduce:`이제 문제를 재현하세요`,stepStopLogging:`중지 후 보고서 제출`,stopAndSubmit:`중지 후 제출`,maxDuration:`{{minutes}}분 후 자동 중지`,stoppingLogs:`로그 수집 및 제출 중...`,submitting:`버그 보고서 제출 중...`,submitSuccess:`버그 보고서가 성공적으로 제출되었습니다!`,submitFailed:`버그 보고서 제출 실패`,thankYou:`감사합니다!`,submitted:`버그 보고서가 제출되었습니다.`,viewIssue:`이슈 보기`,closeKeepsRecording:`문제를 재현하는 동안 이 패널을 닫아도 됩니다. 기록은 계속되며 다시 열면 이 단계로 돌아옵니다.`,resumeRecording:`버그 리포트 기록 중 — {{elapsed}}. 클릭하여 완료하세요.`,resumeReport:`리포트 계속하기`,unexpectedError:`예상치 못한 오류가 발생했습니다`,submittingStepConnection:`프린터 연결 확인 실행 중`,submittingStepVirtualPrinters:`가상 프린터 설정 확인 실행 중`,submittingStepLogScan:`알려진 문제가 있는지 최근 로그 스캔 중`,submittingStepSubmit:`GitHub에 보고서 제출 중`,diagnosticChecking:`프린터 연결 확인 중...`,diagnosticHealthy:`연결 확인 통과 — 프린터에서 문제가 발견되지 않았습니다.`,diagnosticSummary:`{{total}}개 프린터 중 {{problems}}개에서 연결 문제가 있습니다`,diagnosticIntro:`하나 이상의 프린터에 연결 문제가 있어 현재 문제의 원인일 수 있습니다. 아래에서 프린터를 펼쳐 수정 방법을 확인하세요 — 해결하면 버그 보고서 없이 문제가 해결될 수 있습니다. 아래에서 보고서를 제출할 수도 있습니다.`,logHealthSummary:`로그에서 알려진 문제가 발견되었습니다`,logHealthIntro:`최근 로그가 알려진 문제와 일치합니다. 아래 수정 방법을 확인하세요 — 해결하면 버그 보고서 없이 문제가 해결될 수 있습니다. 아래에서 보고서를 제출할 수도 있습니다.`},failureDetection:{title:`AI 실패 감지`,description:`자체 호스팅 Obico ML API로 인쇄를 모니터링하고 감지된 실패에 자동으로 조치합니다.`,mlUrl:`Obico ML API URL`,mlUrlHint:`자체 호스팅 Obico ml_api 컨테이너의 기본 URL (예: http://192.168.1.10:3333).`,mlToken:`ML API 토큰 (선택 사항)`,mlTokenPlaceholder:`서버가 ML_API_TOKEN 없이 실행 중이면 비워 두세요`,mlTokenHint:`Obico ml_api 컨테이너의 ML_API_TOKEN 환경 변수와 일치해야 합니다. 컨테이너가 토큰 없이 실행 중이면 비워 두세요.`,test:`테스트`,testSuccess:`ML API에 도달 가능하며 정상입니다.`,testSuccessTokenUnknown:`ML API에 도달 가능하며 정상입니다. 토큰은 확인할 수 없었습니다.`,testFailed:`ML API에 도달할 수 없습니다.`,sensitivity:`민감도`,sensitivityLow:`낮음 (오탐 적음)`,sensitivityMedium:`중간 (균형)`,sensitivityHigh:`높음 (조기 감지, 오탐 많음)`,sensitivityHint:`경고 및 실패를 트리거하는 신뢰도 임계값을 조정합니다.`,action:`감지된 실패에 대한 조치`,actionNotify:`알림만`,actionPause:`인쇄 일시 중지`,actionPauseOff:`일시 중지 후 전원 끄기`,pollInterval:`폴링 간격 (초)`,pollIntervalHint:`인쇄 중 각 프린터를 확인하는 빈도. 최소 5초, 최대 120초.`,externalUrlMissing:`외부 URL이 설정되지 않았습니다.`,externalUrlHint:`ML API가 URL을 통해 카메라 스냅샷을 가져옵니다. ML API 컨테이너가 Bambuddy에 도달할 수 있도록 일반 설정에서 외부 URL을 설정하세요.`,perPrinterTitle:`모니터링되는 프린터`,perPrinterHint:`감지 서비스가 감시할 프린터를 선택하세요.`,monitorAll:`연결된 모든 프린터 모니터링`,statusTitle:`상태`,serviceRunning:`서비스 실행 중`,thresholds:`낮음 / 높음 임계값`,activePrinters:`활성 인쇄물`,noActivePrints:`현재 실행 중인 인쇄물 없음.`,historyTitle:`최근 감지`,noHistory:`아직 감지 없음.`},makerworld:{title:`MakerWorld`,description:`MakerWorld 모델 URL을 붙여넣어 Bambu Handy 앱을 떠나지 않고 Bambuddy에서 직접 가져오고 인쇄하세요.`,pasteUrlHeader:`MakerWorld에서 가져오기`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… 또는 MakerWorld 링크 붙여넣기`,resolveButton:`확인`,signInRequiredTitle:`다운로드하려면 Bambu 클라우드 로그인 필요`,signInRequiredBody:`익명으로 모델 세부 정보를 탐색할 수 있지만 MakerWorld는 3MF 파일을 다운로드하려면 Bambu 클라우드 계정이 필요합니다.`,signInExpiredTitle:`Bambu 클라우드 로그인이 만료되었습니다`,signInExpiredBody:`Bambuddy에는 여전히 로그인되어 있지만 Bambu Lab이 저장된 토큰을 더 이상 허용하지 않아 다운로드가 실패합니다. Bambu 클라우드에 다시 로그인하세요.`,openCloudSettings:`클라우드 설정 열기`,untitledModel:`제목 없는 모델`,byCreator:`{{name}} 제작`,downloadsCount:`{{count}}회 다운로드`,licensePrefix:`라이선스`,alreadyImported:`이미 라이브러리에 있음`,openOnMakerworld:`MakerWorld에서 열기`,alreadyInLibrary:`이 모델이 이미 라이브러리에 있습니다 — 파일 관리자 → MakerWorld에서 찾으세요`,importSuccess:`{{filename}} 가져옴 — 파일 관리자 → MakerWorld에 저장됨`,platesHeader:`플레이트 ({{count}})`,plateDefaultName:`플레이트 {{n}}`,materialCount:`{{count}}개 필라멘트`,amsRequired:`AMS 필요`,slicedFor:`{{printer}}용으로 슬라이싱됨`,alsoCompatible:`호환 가능으로도 표시됨: {{printers}}`,importToLibrary:`저장`,sliceIn:`{{slicer}}에서 저장 및 슬라이싱`,disclaimer:`MakerWorld 통합은 커뮤니티가 문서화한 API 엔드포인트를 사용합니다. Bambuddy는 MakerWorld 또는 Bambu Lab과 제휴하거나 이들의 승인을 받지 않았습니다.`,lastImportSuccess:`라이브러리에 가져옴`,lastImportAlreadyInLibrary:`이미 라이브러리에 있음`,viewInLibrary:`파일 관리자에서 보기`,openInBambuStudio:`Bambu Studio에서 열기`,openInOrcaSlicer:`OrcaSlicer에서 열기`,importTo:`파일 관리자로 가져오기`,recentImportsHeader:`최근 가져오기`,phaseResolving:`확인 중`,phaseDownloading:`다운로드 중`,folderAuto:`MakerWorld (기본값)`,importAll:`모두 가져오기`,importAllProgress:`{{total}}개 중 {{current}}개 가져오는 중`,openGallery:`이미지 갤러리 열기`,galleryPrev:`이전 이미지`,galleryNext:`다음 이미지`,deleteImport:`라이브러리에서 제거`,importDeleting:`제거 중…`,importDeleted:`라이브러리에서 제거됨`,confirmDelete:`라이브러리에서 {{filename}}을(를) 제거하시겠습니까? 로컬 파일이 삭제되지만 MakerWorld에서 다시 가져올 수 있습니다.`,errors:{resolveFailed:`MakerWorld URL을 확인할 수 없습니다.`,downloadFailed:`다운로드 실패. 다시 시도하세요.`,deleteFailed:`라이브러리에서 파일을 제거할 수 없습니다.`}},gcodeViewer:{filamentSlot:`필라멘트 {{n}}`,loading:`툴패스를 읽는 중…`,loadFailed:`이 파일의 G코드를 불러올 수 없습니다.`,showTravel:`이동 경로`,topLayer:`최상단 레이어`,bottomLayer:`최하단 레이어`,noSource:`미리 볼 파일이 지정되지 않았습니다.`,view:{filament:`필라멘트`,feature:`유형`,height:`높이`,width:`너비`},feature:{wall:`벽`,sparseInfill:`성긴 채움`,solidInfill:`솔리드 채움`,bridge:`브리지 / 오버행`,support:`서포트`,skirt:`스커트 / 브림`,gapFill:`틈 채움`,ironing:`다림질`,primeTower:`프라임 타워`},back:`뒤로`,backToArchives:`인쇄 아카이브로 돌아가기`,backToFiles:`파일 관리자로 돌아가기`,plates:`플레이트`,plateN:`플레이트 {{n}}`},libraryTrash:{title:`휴지통`,headerButton:`휴지통`,headerTooltip:`휴지통으로 이동된 파일 보기`,backToFiles:`파일 관리자로 돌아가기`,subtitleAdmin:`삭제된 파일은 {{days}}일 동안 여기에 보관된 후 자동 삭제됩니다. 이 보기는 모든 사용자의 휴지통 파일을 표시합니다.`,subtitleUser:`삭제된 파일은 {{days}}일 동안 여기에 보관된 후 자동 삭제됩니다.`,loading:`휴지통 불러오는 중…`,loadError:`휴지통을 불러올 수 없습니다.`,empty:`휴지통이 비어 있습니다.`,summary:`{{count}}개 파일 · {{size}}`,emptyTrash:`휴지통 비우기`,restore:`복원`,purgeNow:`지금 삭제`,autoPurgeIn:`{{when}} 후 자동 삭제`,days:`일`,retentionLabel:`자동 삭제 기간`,selectAll:`모두 선택`,selectOne:`{{filename}} 선택`,selectionCount:`{{count}}개 선택됨`,bulkRestore:`선택 항목 복원`,bulkPurge:`선택 항목 삭제`,col:{filename:`파일`,folder:`폴더`,size:`크기`,deleted:`휴지통 이동일`,autoPurge:`자동 삭제일`,owner:`소유자`,actions:`작업`},confirm:{purgeTitle:`영구 삭제?`,purgeBody:`{{filename}}이(가) 디스크에서 삭제되며 복원할 수 없습니다.`,emptyTitle:`휴지통을 비우시겠습니까?`,emptyBody:`{{count}}개의 모든 파일이 디스크에서 삭제됩니다. 이 작업은 취소할 수 없습니다.`,bulkPurgeTitle:`선택한 파일을 영구 삭제하시겠습니까?`,bulkPurgeBody:`선택한 {{count}}개 파일이 디스크에서 삭제되며 복원할 수 없습니다.`,cta:`영구 삭제`},toast:{restored:`파일이 복원되었습니다.`,restoreFailed:`파일을 복원할 수 없습니다.`,purged:`파일이 영구 삭제되었습니다.`,purgeFailed:`파일을 삭제할 수 없습니다.`,emptied:`휴지통에서 {{count}}개 파일이 삭제되었습니다.`,emptyFailed:`휴지통을 비울 수 없습니다.`,retentionSaved:`자동 삭제가 {{days}}일로 설정되었습니다.`,retentionFailed:`보존 설정을 저장할 수 없습니다.`,bulkRestored:`{{count}}개 파일이 복원되었습니다.`,bulkPurged:`{{count}}개 파일이 삭제되었습니다.`}},libraryPurge:{title:`오래된 파일 삭제`,headerButton:`오래된 파일 삭제`,headerTooltip:`오래된 파일을 휴지통으로 일괄 이동`,description:`라이브러리에서 오래된 파일을 한 번에 정리합니다. 인쇄 기록이 있는 파일은 마지막 인쇄 날짜 기준으로, 한 번도 인쇄되지 않은 파일은 업로드 날짜 기준으로 계산됩니다.`,ageLabel:`다음보다 오래된 파일 이동`,days:`일`,includeNeverPrinted:`한 번도 인쇄되지 않은 파일 포함`,effectsTitle:`삭제 클릭 시 일어나는 일`,effect1:`일치하는 파일이 휴지통으로 이동됩니다 — 디스크에서 아직 삭제되지 않습니다.`,effect2:`보존 기간이 만료되기 전까지 언제든 휴지통에서 복원할 수 있습니다.`,effect3:`보존 기간 후 휴지통 청소기가 디스크에서 영구적으로 제거합니다.`,effect4:`외부(연결된) 폴더의 파일은 건너뜁니다 — Bambuddy는 자신이 소유하지 않은 바이트는 절대 삭제하지 않습니다.`,previewLoading:`일치하는 파일 수 확인 중…`,previewFailed:`삭제 미리보기를 불러올 수 없습니다.`,previewSummary:`{{count}}개 파일 · {{size}}이(가) 휴지통으로 이동됩니다`,andMore:`…및 {{count}}개 더`,warning:`휴지통 파일은 보존 기간이 만료될 때까지 저장 공간을 차지합니다. 즉시 디스크를 확보하려면 나중에 휴지통을 비우세요.`,confirmCta:`{{count}}개를 휴지통으로 이동`,purging:`휴지통으로 이동 중…`,toast:{success:`{{count}}개 파일을 휴지통으로 이동했습니다.`,failed:`파일을 삭제할 수 없습니다.`}},libraryAutoPurge:{enableLabel:`오래된 파일 자동 삭제`,enableDescription:`매일 한 번 관리자 삭제를 실행합니다. 파일이 먼저 휴지통으로 이동됩니다 — 즉시 삭제되지 않습니다.`,ageLabel:`다음보다 오래된 파일 자동 삭제`,ageDescription:`최소 7일, 최대 10년. 수동 삭제 버튼과 같은 날짜 규칙을 사용합니다.`,days:`일`,includeNeverPrinted:`한 번도 인쇄되지 않은 파일 포함`,saveFailed:`자동 삭제 설정을 저장할 수 없습니다.`},archivePurge:{headerButton:`오래된 것 삭제`,headerTooltip:`오래된 아카이브 일괄 삭제`,title:`오래된 아카이브 삭제`,description:`오래된 인쇄 기록을 정리합니다. 각 아카이브는 가장 최근 인쇄 완료 시점 기준으로 계산됩니다 — 아카이브를 다시 인쇄하면 날짜가 새로고침되므로 활성 작업은 절대 삭제되지 않습니다.`,ageLabel:`다음 기간 동안 인쇄되지 않은 아카이브 삭제`,days:`일`,effectsTitle:`삭제 클릭 시 일어나는 일`,effect1:`일치하는 각 아카이브가 데이터베이스에서 영구적으로 제거됩니다.`,effect2:`3MF, 썸네일, 타임랩스, 소스 3MF, F3D 디자인 파일 및 사진 폴더가 모두 디스크에서 삭제됩니다.`,effect3:`아카이브에 대한 휴지통이 없습니다 — 삭제는 즉각적이며 취소할 수 없습니다.`,effect4:`아카이브를 다시 인쇄하면 날짜 카운터가 초기화되므로 여전히 사용하는 아카이브는 안전합니다.`,previewLoading:`일치하는 아카이브 수 확인 중…`,previewFailed:`삭제 미리보기를 불러올 수 없습니다.`,previewSummary:`{{count}}개 아카이브 · {{size}}이(가) 삭제됩니다`,andMore:`…및 {{count}}개 더`,warning:`영구적입니다. 계속하기 전에 보관하고 싶은 것을 다운로드하거나 즐겨찾기에 추가하세요.`,confirmCta:`{{count}}개 아카이브 삭제`,purging:`삭제 중…`,toast:{success:`{{count}}개 아카이브가 삭제되었습니다.`,failed:`아카이브를 삭제할 수 없습니다.`},purgeStatsLabel:`통계에서도 제거`,purgeStatsHint:`일치하는 아카이브를 빠른 통계(필라멘트, 시간, 비용, 에너지)에서 삭제합니다. 이 옵션 없이는 빠른 통계는 모든 기여를 유지하고 파일만 디스크에서 제거됩니다.`},archiveAutoPurge:{enableLabel:`오래된 아카이브 자동 삭제`,enableDescription:`매일 한 번, 임계값 내에 인쇄되지 않은 아카이브를 영구적으로 삭제합니다. 아카이브를 다시 인쇄하면 카운터가 초기화됩니다. 휴지통 없음 — 삭제는 즉각적입니다.`,ageLabel:`다음 기간 동안 인쇄되지 않은 아카이브 자동 삭제`,ageDescription:`최소 7일, 최대 10년. 가장 최근 인쇄 완료 시점 기준 — 아카이브를 다시 인쇄하면 날짜가 새로고침됩니다. 아카이브, 3MF, 썸네일, 타임랩스 및 사진을 삭제합니다.`,days:`일`,runNow:`지금 아카이브 삭제`,saveFailed:`자동 삭제 설정을 저장할 수 없습니다.`,purgeStatsLabel:`통계에서도 제거`,purgeStatsDescription:`활성화되면 일일 정리 작업도 각 삭제된 아카이브를 빠른 통계(필라멘트, 시간, 비용, 에너지)에서 제거합니다. 기본값 비활성화 — 빠른 통계는 기여를 유지하고 파일만 디스크에서 제거됩니다.`},cameraTokens:{scope:{camera_stream:`카메라 스트림`,camwall:`카메라 월`,overlay:`스트리밍 오버레이`},title:`카메라 API 토큰`,navTitle:`카메라 API 토큰`,description:`Home Assistant, Frigate, 키오스크 화면 등 안정적인 주소가 필요한 도구에 카메라 스트림을 삽입하기 위한 장기 토큰입니다. 범위는 생성할 때 선택하며, 토큰은 언제든지 취소할 수 있습니다.`,loading:`불러오는 중…`,confirmRevoke:{title:`이 토큰을 취소하시겠습니까?`,body:`"{{name}}"을(를) 사용하는 모든 장치가 즉시 접근을 잃습니다. 이 작업은 취소할 수 없습니다.`,cancel:`취소`,confirm:`취소`},create:{scopeLabel:`범위`,hintCameraStream:`카메라 스트림 토큰은 카메라 스트림과 스냅숏만 가져올 수 있습니다. Home Assistant, Frigate 등 카메라 하나를 삽입하는 용도로 사용하세요.`,hintCamWall:`카메라 월 토큰은 로그인 없이 화면에서 /camwall을 엽니다. 모든 프린터의 이름과 상태, 카메라 스트림을 볼 수 있습니다. 파일 이름, 주소, 액세스 코드는 볼 수 없습니다.`,hintOverlay:`스트리밍 오버레이 토큰은 로그인 없이 화면에서 /overlay/{printerId}을 엽니다 — OBS나 모든 라이브 방송용입니다. 프린터 한 대의 카메라 스트림과 화면에 표시되는 파일 이름을 포함한 실시간 인쇄 상태를 볼 수 있습니다. 주소나 액세스 코드는 볼 수 없습니다.`,title:`새 토큰 만들기`,nameLabel:`토큰 이름`,namePlaceholder:`예: Home Assistant`,daysLabel:`만료까지 일 수`,submit:`만들기`,hint:`최대 수명은 365일입니다. 토큰 값은 생성 시 한 번만 표시됩니다 — 지금 복사하세요.`},created:{camWallUrlTitle:`이 화면용 카메라 월 주소`,camWallUrlHint:`이 주소를 화면에서 여세요. 주소를 읽을 수 있는 사람은 누구나 월을 볼 수 있으므로 열쇠처럼 다루세요. 토큰을 취소하면 해당 화면의 접근이 차단됩니다.`,overlayUrlTitle:`OBS용 오버레이 주소`,overlayUrlHint:`OBS에서 이것을 브라우저 소스로 추가하세요. /overlay/1의 숫자를 프린터의 번호(프린터 페이지의 주소에 표시됨)로 변경하세요. 주소를 읽을 수 있는 사람은 누구나 스트림을 볼 수 있으므로 열쇠처럼 다루세요 — 접근을 차단하려면 토큰을 취소하세요.`,title:`토큰 생성됨 — 지금 복사하세요`,warning:`이 토큰은 이 번만 볼 수 있습니다. 이 대화상자를 닫으면 다시는 볼 수 없습니다.`,copy:`복사`,dismiss:`저장했습니다`},list:{scope:`범위`,myTitle:`내 토큰`,allTitle:`모든 사용자 (관리자 보기)`,empty:`아직 토큰 없음.`,name:`이름`,owner:`소유자`,prefix:`접두사`,created:`생성일`,expires:`만료일`,lastUsed:`마지막 사용`,revoke:`취소`,expired:`만료됨`},toast:{created:`토큰 생성됨`,createFailed:`토큰 생성 실패`,revoked:`토큰 취소됨`,revokeFailed:`토큰 취소 실패`,loadFailed:`토큰 불러오기 실패`,copied:`클립보드에 복사됨`,copyFailed:`복사 실패 — 수동으로 선택하여 복사하세요`}},forecast:{title:`예측`,noSpools:`활성 스풀을 찾을 수 없습니다. 예측 데이터를 보려면 재고에 스풀을 추가하세요.`,noUsageData:`사용 데이터를 사용할 수 없습니다 — 재고 타임라인을 예측할 수 없습니다.`,sku:`SKU`,material:`재료`,stock:`재고`,dailyRate:`소비율`,daysLeft:`남은 일수`,emptyBy:`소진 예정일`,reorderBy:`재주문 기한`,actions:`작업`,trend:`추세`,estimated:`추정`,noData:`데이터 없음`,timeframe:`기간`,chartTitle:`예상 재고 — 상위 5개 재료`,dashedLinesROP:`점선 = 재주문 시점`,stockLevel:`재고 수준`,reorderPoint:`재주문 시점`,safetyMargin:`안전 마진`,trendLegend:`추세 (기록 기반, 95% 서비스 수준)`,estimatedLegend:`추정 (무게 변화)`,noDataLegend:`데이터 없음`,ropLabel:`ROP`,ssLabel:`SS`,safetyStockLegend:`안전 재고`,stockArrivalLegend:`재고 입고`,stockoutLegend:`재고 소진`,alertCount_one:`{{count}}개 알림`,alertCount_other:`{{count}}개 알림`,order:`주문`,save:`저장`,cancel:`취소`,settingsSaved:`설정 저장됨`,failedSaveSettings:`설정 저장 실패`,globalLeadTimeSaved:`전역 리드 타임 저장됨`,globalLeadTime:`전역 리드 타임`,globalLeadTimeHint:`전역 리드 타임 하한값 — 모든 SKU의 재주문 시점 계산에 사용됨`,skuLeadTimeOverride:`SKU 리드 타임 재정의`,skuLeadTimeHint:`0 = 전역 리드 타임 사용. 이 SKU에 대해 재정의하려면 >0으로 설정.`,safetyMarginLabel:`안전 마진`,effectiveLeadTime:`유효 리드 타임`,effectiveLeadTimeHint:`max(전역 {{global}}일, SKU {{sku}}일)`,reorderPointHint:`d̄ × LT + 안전 마진 — 재고가 이 수준에 도달하면 주문`,safetyMarginHint:`통계적 안전 재고 (z=1.65 × σ × √LT) + 사용자 정의 버퍼`,safetyMarginHintDays:`통계적 안전 재고 위에 추가되는 버퍼.{{approx}}`,safetyMarginHintDaysApprox:` ≈ 현재 소비율로 {{g}}g.`,safetyMarginHintG:`통계적 안전 재고 위에 추가되는 고정 무게 버퍼.{{approx}}`,safetyMarginHintGApprox:` ≈ 현재 소비율로 {{days}}일.`,individualSpools:`개별 스풀`,labelWeight:`라벨`,spoolCount_one:`스풀 {{count}}개`,spoolCount_other:`스풀 {{count}}개`,stockBreakRisk:`재고 소진 위험`,stockBreakDetail:`{{days}}일 남음, 리드 타임 {{lt}}일.`,stockBreakBefore:`보충 전 재고 소진`,reorderNow:`지금 재주문`,reorderTriggerPassed:`트리거 날짜 {{date}}가 지났습니다.`,shoppingList:`쇼핑 목록`,shoppingListItems_one:`({{count}}개 항목)`,shoppingListItems_other:`({{count}}개 항목)`,shoppingListEmpty:`쇼핑 목록이 비어 있습니다. 항목을 추가하려면 행의 장바구니 아이콘을 클릭하세요.`,addToCart:`쇼핑 목록에 추가`,alertsSnoozed:`이 SKU의 알림 음소거`,alertsEnabled:`이 SKU의 알림 음소거 해제`,addedToCart:`쇼핑 목록에 추가됨`,failedAddItem:`항목 추가 실패`,listView:`목록`,logisticsView:`물류`,qty:`수량`,weight:`무게`,leadTime:`리드 타임`,expectedRestock:`예상 재입고`,status:`상태`,note:`메모`,pending:`대기 중`,purchased:`구매됨`,received:`수령됨`,markPurchased:`구매됨으로 표시`,markReceived:`수령됨으로 표시 — 재고에 스풀 추가`,resetToPending:`대기 중으로 초기화`,remove:`제거`,clearAll:`모두 초기화`,downloadCsv:`CSV`,addToCartTitle:`쇼핑 목록에 추가`,byQuantity:`수량 기준`,byDuration:`기간 기준`,numberOfSpools:`스풀 수`,lastHowManyDays:`몇 일 동안 지속되어야 합니까?`,noUsageQty:`사용 데이터 없음 — 수량을 1로 설정합니다.`,noteOptional:`메모 (선택사항)`,notePlaceholder:`예: 프로젝트 X용, 긴급…`,addNSpools_one:`스풀 {{count}}개 추가`,addNSpools_other:`스풀 {{count}}개 추가`,onArrival:`입고 시`,stockBreakIn:`{{days}}일 후 재고 소진.`,stockRunsOutBefore:`{{lt}}일 리드 타임이 경과하기 전에 재고가 소진됩니다.`,atRate:`{{rate}}g/일 소비율로`,moreSpools_one:`스풀 {{count}}개 더`,moreSpools_other:`스풀 {{count}}개 더`,bridgeGap:`격차를 메우기 위해 필요합니다.`,noReadAccess:`재고 예측을 볼 권한이 없습니다.`,noWriteAccess:`예측 설정을 수정할 권한이 없습니다.`},diagnostic:{modalTitle:`연결 진단 — {{name}}`,running:`진단 실행 중...`,runningElapsed:`진단 실행 중... ({{elapsed}}초)`,waitingForReportHint:`프린터가 상태 보고를 게시하기를 기다리는 중 — 최대 {{max}}초 걸릴 수 있습니다.`,runFailed:`진단 실행 실패: {{error}}`,retry:`다시 실행`,runButton:`진단 실행`,sectionTitle:`연결 진단`,sectionDescription:`프린터가 연결되지 않거나 인쇄되지 않는 이유를 확인합니다 — 포트 연결 가능 여부, LAN 개발자 모드, Docker 네트워크 모드, 자격증명.`,noPrinters:`구성된 프린터가 없습니다.`,overall:{ok:`문제가 발견되지 않았습니다 — 프린터 연결이 정상입니다.`,warnings:`프린터가 작동하지만 일부 항목에 주의가 필요합니다.`,problems:`프린터가 연결되지 않거나 인쇄되지 않는 원인이 되는 문제가 발견되었습니다.`},check:{port_mqtt:{title:`제어 포트 (MQTT 8883)`,pass:`연결 가능 — 프린터가 제어 연결을 수락하고 있습니다.`,fail:`포트 8883에 연결할 수 없습니다. 프린터가 꺼져 있거나, IP 주소가 다르거나, 방화벽이 차단하고 있습니다. 프린터 IP를 확인하고 포트 8883이 차단되지 않았는지 확인하세요.`},port_ftps:{title:`파일 전송 포트 (FTPS 990)`,pass:`연결 가능 — 인쇄 파일 전송이 작동합니다.`,warn:`포트 990에 연결할 수 없습니다. 모니터링은 작동할 수 있지만 프린터로 파일 전송에 실패합니다. 포트 990이 차단되지 않았는지 확인하세요.`,warn_no_tls:`포트 990은 열려 있지만 프린터의 파일 서비스가 TLS 핸드셰이크를 완료하지 못합니다. 인쇄 파일, 미리보기, 타임랩스를 가져올 수 없어 아카이브가 비어 있게 됩니다. 프린터를 재시작하세요 — 포트 차단을 해제해도 해결되지 않습니다.`},external_storage:{title:`전송된 파일을 외부 저장소에 저장 (설치 단계 4)`,pass:`프린터가 이 옵션이 켜져 있다고 보고합니다 — 전송된 파일이 SD 카드에 저장되며 아카이브에 썸네일과 슬라이서 메타데이터가 포함됩니다.`,fail:`프린터가 이 옵션이 꺼져 있다고 보고합니다. "전송된 파일을 외부 저장소에 저장"을 활성화하세요 — 최신 펌웨어 (P2S 01.02 / Bambu Studio 2.6 이상)에서는 프린터의 인쇄 설정에 토글이 있고, 이전 버전에서는 Bambu Studio / OrcaSlicer의 장치 탭에 있습니다. 이 옵션이 없으면 아카이브된 모든 인쇄물에 썸네일과 슬라이서 메타데이터가 없습니다.`,skip:`확인되지 않음 — 활성 MQTT 연결이 필요합니다. 이 설정이 슬라이서에만 존재하는 이전 슬라이서에서는 프린터가 보고하지 않으므로, 옵션이 꺼져 있어도 이 검사는 통과합니다 — 설치 단계 4를 수동으로 확인하세요.`,skip_unsupported_model:`이 모델에는 SD 슬롯이 있지만 옵션을 켤 방법이 없습니다 — 현재 P1 시리즈 펌웨어는 Bambu Studio에 토글을 표시하지 않으며 프린터에 화면도 없습니다. 여기서 고칠 것은 없습니다. Bambu Lab이 펌웨어로 지원할 때까지 보관된 출력물에는 썸네일과 슬라이서 메타데이터가 없을 수 있습니다.`,fail_no_media:`옵션은 켜져 있지만 프린터 슬롯에 카드도 USB도 감지되지 않아 보낸 파일이 갈 곳이 없습니다. 하나 넣고 다시 출력하세요. 그전까지는 보관되는 모든 출력물에 썸네일과 슬라이서 메타데이터가 없습니다.`,warn_internal_storage:`옵션이 켜져 있고 저장소도 있지만 마지막 출력물은 Bambuddy가 읽을 수 없는 프린터 내부 저장소에 저장되었습니다. H2 시리즈와 P2S에서는 이 설정과 관계없이 Bambu Studio의 «인쇄» 버튼이 항상 그쪽으로 보냅니다. 출력물은 이름과 시간과 함께 보관되지만 썸네일과 슬라이서 메타데이터는 없습니다. 완전한 기록을 남기려면 Bambuddy에서 출력을 시작하거나, OrcaSlicer로 슬라이싱하거나, Bambu Studio에서 «보내기»로 «외부 저장소»를 고른 뒤 출력을 시작하세요.`,warn_internal_history:`옵션은 켜져 있고 저장소도 있지만, 마지막 출력은 이미 프린터에 있던 파일에서 실행되었습니다 — 화면에서의 재출력, Handy에서의 시작, 또는 이전에 보낸 파일입니다. 그 라이브러리는 Bambuddy가 읽을 수 없는 내부 저장소에 있으며, 그 출력에서는 아무것도 전송되지 않았으므로 어떤 설정으로도 바뀌지 않습니다. 이름과 시간과 함께 보관되기는 하지만 썸네일과 슬라이서 메타데이터는 없습니다. 온전한 보관을 원하면 Bambuddy에서 출력을 시작하거나 슬라이서에서 전송하세요.`},port_rtsps:{title:`카메라 포트 ({{protocol}} {{port}})`,pass:`연결 가능 — 카메라 스트림이 작동합니다.`,warn:`포트 {{port}}에 연결할 수 없습니다. 라이브 카메라 보기가 작동하지 않습니다. 인쇄에는 영향을 주지 않습니다.`},network_mode:{title:`Docker 네트워크 모드`,pass:`호스트 네트워크 모드로 실행 중입니다.`,warn:`Bambuddy가 Docker 브리지 네트워킹으로 실행 중입니다. 프린터 검색과 가상 프린터에는 호스트 네트워크 모드가 필요합니다 — "network_mode: host"로 컨테이너를 재생성하세요.`,skip:`Docker에서 실행 중이 아닙니다 — 해당 없음.`},subnet:{title:`네트워크 서브넷`,pass:`프린터와 Bambuddy가 같은 서브넷에 있습니다.`,warn:`프린터({{printer_ip}})와 Bambuddy({{host_ip}})가 다른 서브넷에 있습니다. 서브넷 간 라우팅이 구성되어 있지 않으면 서로 연결하지 못할 수 있습니다.`,skip:`서브넷을 확인할 수 없어 건너뜁니다.`},mqtt_auth:{title:`프린터 자격증명`,pass:`프린터가 연결을 수락했습니다.`,fail:`프린터에 도달할 수 있지만 Bambuddy가 연결되지 않았습니다. 액세스 코드 또는 시리얼 번호가 잘못됐을 가능성이 높습니다 — LAN 전용 모드나 개발자 모드를 토글할 때마다 액세스 코드가 변경되므로 프린터 화면에서 다시 복사하세요. 재부팅 중이거나 이미 동시 연결 한도에 도달한 프린터도 똑같이 보입니다.`,fail_auth_rejected:`프린터가 Bambuddy의 자격증명을 거부했습니다. 액세스 코드 또는 시리얼 번호가 잘못됐습니다 — LAN 전용 모드나 개발자 모드를 토글할 때마다 액세스 코드가 변경됩니다. 프린터 화면에서 다시 복사한 뒤 프린터 설정에 저장하세요.`,skip:`확인하지 않음 — 프린터에 연결할 수 없었습니다.`},developer_mode:{title:`LAN 개발자 모드`,pass:`개발자 모드가 활성화되어 있습니다.`,fail:`프린터에서 개발자 모드가 꺼져 있습니다. 프린터의 LAN 설정에서 활성화하고 확인을 누르세요. 이 없으면 인쇄가 시작되지 않습니다.`,skip:`확인할 수 없음 — 프린터에 연결되어 있어야 합니다.`},printer_publishing:{title:`프린터가 상태를 게시 중`,pass:`프린터가 상태 업데이트를 게시하고 있습니다 — AMS, 필라멘트, K-프로파일이 슬라이서에 올바르게 반영됩니다.`,fail:`MQTT 브로커는 연결을 수락했지만 프린터가 상태 보고를 게시하지 않았습니다. 거의 항상 시리얼 번호가 잘못되었거나 대소문자가 일치하지 않아서 발생합니다 — device//report 토픽은 대소문자를 구분합니다. 프린터 설정의 시리얼 번호를 프린터 화면 표시와 비교해 확인하세요.`,skip:`확인할 수 없음 — 프린터에 연결되어 있어야 합니다.`}}},systemHealth:{sectionTitle:`시스템 상태`,sectionDescription:`최근 로그에서 지원 티켓이 되기 전에 직접 해결할 수 있는 알려진 문제를 스캔합니다.`,rescan:`다시 스캔`,clean:`최근 {{times}}개 로그 항목에서 알려진 문제가 발견되지 않았습니다.`,logUnavailable:`파일 로깅이 비활성화되어 로그를 스캔할 수 없습니다. 이 확인을 사용하려면 파일 로깅을 활성화하세요.`,learnMore:`수정 방법`,fixLabel:`수정:`,occurrences:`{{times}}회 발견 — 마지막: {{lastSeen}}`,category:{layer8:`직접 해결 가능`,environment:`환경`,bug:`버그 보고 바람`},signature:{"ftp-auth-rejected":{name:`프린터가 액세스 코드를 거부함`,cause:`프린터가 파일 전송 로그인을 거부했습니다. 액세스 코드가 잘못됐거나 개발자 모드를 토글한 후 변경됐습니다.`,fix:`프린터 화면(LAN 설정)에서 액세스 코드를 다시 복사하여 Bambuddy의 프린터 설정에서 업데이트하세요.`},"ftp-connection-timeout":{name:`파일 전송 연결 시간 초과`,cause:`Bambuddy가 프린터의 파일 전송 포트(FTPS 990)에 연결할 수 없었습니다. 포트가 차단됐거나 프린터가 꺼져 있거나 다른 서브넷에 있습니다.`,fix:`Bambuddy와 프린터 사이에서 포트 990을 차단하는 것이 없는지 확인하고, 같은 네트워크에 있는지 확인하세요.`},"ftp-ssl-error":{name:`보안 파일 전송 핸드셰이크 실패`,cause:`프린터의 파일 서비스가 990 포트에서 TLS 없이 응답했습니다. 프린터 쪽 파일 서버가 멈춘 상태이며 방화벽이나 펌웨어 문제가 아닙니다.`,fix:`프린터를 재시작하세요. 그때까지 인쇄 파일, 커버 이미지, 타임랩스를 가져올 수 없지만 인쇄 자체에는 영향이 없습니다.`},"bambu-cloud-captcha":{name:`Bambu Cloud가 CAPTCHA를 요구합니다`,cause:`Bambu의 남용 방지 계층이 이 네트워크를 확인하고 있어 Bambu Cloud 로그인을 완료할 수 없습니다. 계정이나 이 설치 환경이 아니라 공용 IP 주소에 연결된 문제입니다.`,fix:`기다리세요. 보통 몇 시간 안에 해제되며 로그인을 반복하면 더 길어집니다. 그동안에는 브라우저 세션에서 가져온 액세스 토큰으로 로그인하세요.`},"mqtt-connection-flapping":{name:`프린터 연결이 계속 끊김`,cause:`제어 연결(MQTT 8883)이 반복적으로 끊어지고 다시 연결됩니다 — 주로 불안정한 네트워크 경로나 부분적으로 차단된 포트가 원인입니다.`,fix:`프린터의 Wi-Fi 신호를 확인하고, 유선 연결을 권장하며, 포트 8883이 안정적으로 연결 가능한지 확인하세요.`},"camera-connection-refused":{name:`카메라 스트림 연결 불가`,cause:`포트 RTSPS 322에서 라이브 카메라에 연결할 수 없었습니다. 포트가 차단됐거나 프린터에서 카메라 또는 LAN 라이브뷰가 꺼져 있습니다.`,fix:`프린터에서 카메라와 LAN 라이브뷰를 활성화하고 포트 322가 차단되지 않았는지 확인하세요. 인쇄에는 영향을 주지 않습니다.`},"database-locked":{name:`데이터베이스 쓰기 경합`,cause:`SQLite 데이터베이스에 부하 시 "database is locked" 오류가 발생합니다 — 여러 프린터를 동시에 실행할 때 흔한 문제입니다.`,fix:`Bambuddy를 외부 PostgreSQL 데이터베이스로 전환하세요. 설명서의 PostgreSQL 가이드를 참고하세요.`}}},vpDiagnostic:{title:`설정 확인 — {{name}}`,runButton:`설정 확인 실행`,running:`설정 확인 실행 중...`,runFailed:`설정 확인을 실행할 수 없습니다: {{error}}`,retry:`다시 실행`,overall:{ok:`모든 확인이 통과됐습니다 — 이 가상 프린터가 올바르게 설정되었습니다.`,warnings:`가상 프린터가 작동하지만 일부 항목에 주의가 필요합니다.`,problems:`슬라이서가 이 가상 프린터를 인식하거나 사용할 수 없는 원인이 되는 문제가 발견되었습니다.`},check:{enabled:{title:`가상 프린터 활성화`,fail:`이 가상 프린터가 꺼져 있습니다. 검색 가능하게 하려면 켜세요.`},running:{title:`서비스 실행 중`,fail:`가상 프린터가 활성화됐지만 서비스가 실행 중이 아닙니다. Bambuddy 로그를 확인하세요 — 바인드 IP 충돌이나 권한 오류가 보통 원인입니다.`},bind_interface:{title:`바인드 네트워크 인터페이스`,fail:`바인드 인터페이스가 설정되지 않았거나 이 호스트에 더 이상 존재하지 않습니다. 바인드 인터페이스 드롭다운에서 현재 인터페이스를 선택하세요.`},access_code:{title:`액세스 코드 설정됨`,fail:`액세스 코드가 설정되지 않았습니다. 슬라이서에는 여기에 설정한 것과 동일한 8자리 액세스 코드가 필요합니다.`},target_printer:{title:`대상 프린터`,fail:`대상 프린터가 선택되지 않았습니다. 프록시 모드에는 실제 프린터가 필요합니다.`,warn:`대상 프린터가 현재 오프라인입니다 — 재연결되면 프록시가 재개됩니다.`},port_ftps:{title:`파일 업로드 서비스 (포트 {{port}})`,fail:`바인드 IP의 포트 {{port}}에서 수신 중인 서비스가 없어 슬라이서가 파일을 업로드할 수 없습니다. 이 인터페이스의 포트 충돌이 일반적인 원인입니다.`},port_mqtt:{title:`제어 서비스 (포트 {{port}})`,fail:`바인드 IP의 포트 {{port}}에서 수신 중인 서비스가 없어 슬라이서가 연결하거나 상태를 표시할 수 없습니다.`},port_bind:{title:`검색 서비스 (포트 {{port}})`,fail:`바인드 IP의 포트 {{port}}에서 수신 중인 서비스가 없어 슬라이서의 검색 핸드셰이크가 실패합니다.`},privileged_ports:{title:`특권 포트 바인딩`,fail:`포트 {{port}}은(는) 1024 미만이며 이 서비스에는 바인딩 권한이 없습니다. 위에서 아무것도 수신 대기하지 않는 이유입니다. /etc/systemd/system/bambuddy.service에 AmbientCapabilities=CAP_NET_BIND_SERVICE를 추가하고 재시작하거나 "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))"를 실행하세요. Docker에서는 cap_add: [NET_BIND_SERVICE]를 추가합니다.`},certificate:{title:`TLS 인증서`,pass:`인증서가 준비됐습니다. Bambuddy CA 인증서(위)가 슬라이서의 신뢰 저장소에 가져와져 있는지 확인하세요.`,fail:`이 가상 프린터의 TLS 인증서가 없습니다. Bambuddy 데이터 디렉터리가 쓰기 가능한지 확인하세요.`}}}}},"pt-BR":{translation:{nav:{printers:`Impressoras`,archives:`Arquivos`,queue:`Fila de impressão`,stats:`Estatísticas`,profiles:`Perfis`,maintenance:`Manutenção`,projects:`Projetos`,inventory:`Inventário`,finance:`Finanças`,files:`Gerenciador de Arquivos`,makerworld:`MakerWorld`,notifications:`Notificações`,settings:`Configurações`,system:`Sistema`,collapseSidebar:`Recolher barra lateral`,expandSidebar:`Expandir barra lateral`,update:`Atualizar`,updateAvailable:`Atualização disponível: v{{version}}`,updateAvailableBanner:`Versão {{version}} está disponível!`,viewUpdate:`Ver atualização`,viewOnGithub:`Ver no GitHub`,keyboardShortcuts:`Atalhos de teclado (?)`,switchToLight:`Mudar para modo claro`,switchToDark:`Mudar para modo escuro`,switchToSystem:`Mudar para modo do sistema`,smartSwitches:`Interruptores inteligentes`,logout:`Sair`,installApp:`Instalar app`,installAppSuccess:`Bambuddy foi instalado`},common:{plusNMore:`+{{count}} outros`,save:`Salvar`,saving:`Salvando...`,cancel:`Cancelar`,delete:`Excluir`,edit:`Editar`,add:`Adicionar`,close:`Fechar`,confirm:`Confirmar`,loading:`Carregando...`,error:`Erro`,errorLoading:`Erro ao carregar`,retry:`Tentar novamente`,success:`Sucesso`,warning:`Aviso`,enabled:`Ativado`,disabled:`Desativado`,yes:`Sim`,no:`Não`,on:`Ligado`,off:`Desligado`,all:`Todos`,none:`Nenhum`,search:`Pesquisar`,filter:`Filtrar`,sort:`Ordenar`,refresh:`Atualizar`,download:`Baixar`,upload:`Enviar`,uploading:`Enviando...`,uploadFailed:`Falha no envio`,actions:`Ações`,status:`Status`,name:`Nome`,description:`Descrição`,date:`Data`,time:`Hora`,hours:`Horas`,minutes:`Minutos`,seconds:`Segundos`,days:`Dias`,enable:`Ativar`,disable:`Desativar`,permissions:`Permissões`,noPrinters:`Nenhuma impressora configurada`,noData:`Nenhum dado disponível`,linkNotFound:`Link não encontrado`,required:`Obrigatório`,optional:`Opcional`,dismiss:`Dispensar`,apply:`Aplicar`,reset:`Redefinir`,export:`Exportar`,import:`Importar`,clear:`Limpar`,selectAll:`Selecionar tudo`,deselectAll:`Desmarcar tudo`,noChange:`— Sem alterações —`,unchanged:`Inalterado`,unassigned:`Não atribuído`,unknown:`Desconhecido`,unknownError:`Erro desconhecido`,today:`Hoje`,tomorrow:`Amanhã`,asap:`O mais rápido possível`,overdue:`Atrasado`,now:`Agora`,collapse:`Recolher`,expand:`Expandir`,previous:`Anterior`,next:`Próximo`,viewArchive:`Ver arquivo`,viewInFileManager:`Ver no Gerenciador de Arquivos`,addedBy:`Adicionado por {{username}}`,prints:`impressões`,more:`+{{count}} mais`,ascending:`Crescente`,descending:`Decrescente`,back:`Voltar`,copy:`Copiar`,copied:`Copiado!`,printer:`Impressora`,remove:`Remover`,type:`Tipo`,print:`Imprimir`,rename:`Renomear`,move:`Mover`,create:`Criar`,duplicate:`Duplicar`,left:`Esquerda`,right:`Direita`,user:`Usuário`,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 da conta`,unlimited:`Ilimitado`,budgetPolicyHint:`Os saldos das contas registram os custos. A impressão é limitada apenas pelo orçamento do centro de custo selecionado; sem orçamento, é ilimitada.`,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:{addPreflight:{checking:`Verificando a conexão...`,warning:`Algumas verificações de conexão falharam. Esta impressora pode aparecer como offline. Revise as verificações abaixo, corrija o que puder ou salve mesmo assim.`,back:`Voltar`,saveAnyway:`Salvar mesmo assim`},title:`Impressoras`,addPrinter:`Adicionar Impressora`,editPrinter:`Editar Impressora`,deletePrinter:`Excluir Impressora`,printerName:`Nome da Impressora`,serialNumber:`Número de Série`,ipAddress:`Endereço IP / Nome do Host`,accessCode:`Código de Acesso`,model:`Modelo`,nozzleCount:`Número de Bicos`,autoArchive:`Arquivamento Automático`,status:{available:`Disponível`,idle:`Ocioso`,printing:`Imprimindo`,paused:`Pausado`,offline:`Offline`,problem:`Problema`,error:`Erro`,finished:`Concluído`,unknown:`Desconhecido`},temperatures:{nozzle:`Bico`,bed:`Cama`,chamber:`Câmara`},heaterHistory:{title:`Histórico de aquecedores`,openLabel:`Ver histórico de aquecedores`,nozzle:`Bico`,nozzle2:`Bico 2`,bed:`Cama`,chamber:`Câmara`,error:`Falha ao carregar histórico`,empty:`Nenhum dado registrado ainda`},progress:`{{percent}}% concluído`,timeRemaining:`{{time}} restante`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"?`,maintenanceOk:`Manutenção OK`,maintenanceWarning:`{{count}} aviso`,maintenanceWarning_plural:`{{count}} avisos`,maintenanceDue:`{{count}} devido`,maintenanceDue_plural:`{{count}} devido`,sort:{name:`Nome`,status:`Status`,model:`Modelo`,location:`Localização`,eta:`Tempo restante`,ascending:`Ordem crescente`,descending:`Ordem decrescente`},cardSize:{small:`Cartões pequenos`,medium:`Cartões médios`,large:`Cartões grandes`,extraLarge:`Cartões extra grandes`},pageView:{openCamWallPage:`Abrir o mural de câmeras como página`,cards:`Cartões`,camWall:`Mural de câmeras`},camWall:{page:{tokenRejected:`Este link do mural de câmeras não é mais válido. O token pode ter expirado ou sido revogado.`,loadFailed:`Não foi possível carregar as impressoras.`},noPrinters:`Nenhuma impressora para exibir`,noSignal:`Sem sinal`,live:`Ao vivo`,snap:`Foto`,off:`Desligado`,summary:`{{live}} ao vivo, {{snap}} fotos, {{total}} no total`,layer:`Camada {{cur}}/{{total}}`,timeLeft:`faltam {{time}}`,statusMode:{off:`Desligado`,compact:`Compacto`,full:`Completo`},settings:{title:`Configurações do mural de câmeras`,maxLive:`Máx. transmissões ao vivo`,maxLiveHint:`Quantos blocos transmitem ao vivo simultaneamente. Os demais atualizam como fotos.`,snapshotInterval:`Intervalo de foto (segundos)`,snapshotIntervalHint:`Com que frequência os blocos não ao vivo buscam uma nova foto.`,statusOverlay:`Sobreposição de status`,statusOverlayHint:`Compacto: apenas o selo de status. Completo: + progresso, camada e tempo restante.`}},hideOffline:`Ocultar offline`,nextAvailable:`Próximo disponível`,powerOn:`Ligar`,offlinePrintersWithPlugs:`Impressoras offline com tomadas inteligentes`,noPrintersConfigured:`Nenhuma impressora configurada ainda`,search:`Pesquisar impressoras...`,noSearchResults:`Nenhuma impressora corresponde à sua pesquisa ou filtros`,filter:{allStatuses:`Todos os status`,allLocations:`Todos os locais`},toolbar:{filters:`Filtros`,view:`Visualização`,actions:`Ações`},readyToPrint:`Pronto para imprimir`,external:`Externo`,extL:`Ext-L`,extR:`Ext-R`,deleteArchives:`Excluir arquivos de impressão`,noLabel:`Sem etiqueta`,printPreview:`Pré-visualização de impressão`,width:`Largura`,height:`Altura`,noObjectsFound:`Nenhum objeto encontrado`,objectsLoadedOnPrintStart:`Objetos são carregados quando uma impressão começa`,willBeSkipped:`Será ignorado`,name:`Nome`,serialCannotBeChanged:`Número de série não pode ser alterado`,locationHelp:`Usado para agrupar impressoras e filtrar trabalhos na fila`,wifiSignal:{veryWeak:`Muito fraco`,weak:`Fraco`,fair:`Regular`,good:`Bom`,excellent:`Excelente`},maintenanceUpToDate:`Toda a manutenção está em dia - Clique para ver`,maintenance:{title:`Em manutenção`,subtitle:`Esta impressora está pausada — sem conexão, não elegível para a fila, sem enviar notificações.`,pillLabel:`Manutenção`,exitButton:`Sair da manutenção`,menuEnter:`Entrar no modo manutenção`,menuExit:`Sair do modo manutenção`,toastEntered:`{{name}} está agora em modo manutenção`,toastExited:`{{name}} está online novamente`,confirmMidPrintTitle:`Entrar em modo manutenção durante uma impressão?`,confirmMidPrintMessage:`{{name}} está imprimindo no momento. Entrar em modo manutenção desconectará o MQTT e interromperá o acompanhamento do progresso e as notificações de conclusão para este trabalho. Continuar?`,editFieldLabel:`Modo manutenção`,editFieldHelp:`Quando ativado, esta impressora é pausada do MQTT, despacho de fila e notificações — útil para reparos, instalações paralelas do Bambuddy ou suspensão temporária.`},chamberLightOn:`Ligar luz da câmara`,chamberLightOff:`Desligar luz da câmara`,files:`Arquivos`,browseFiles:`Procurar arquivos da impressora`,autoOffAfterPrint:`Desligamento automático após impressão`,autoOffExecuted:`Desligamento automático executado - ligue a impressora para reiniciar`,hmsErrors:`Erros HMS`,viewHmsErrors:`Ver {{count}} erro(s) HMS`,resume:`Retomar`,pause:`Pausar`,stop:`Parar`,camera:`âmera`,skipObject:`Ignorar objeto`,reconnect:`Reconectar`,forceRefresh:`Forçar atualização`,forceRefreshSuccess:`Atualização solicitada`,mqttDebug:`Depuração MQTT`,printerInformation:`Informações da impressora`,copyToClipboard:`Copiar`,copied:`Copiado!`,state:`Estado`,wifiSignalLabel:`Sinal WiFi`,developerMode:`Modo desenvolvedor`,enabled:`Ativado`,disabled:`Desativado`,addedOn:`Adicionada em`,sdCard:`Cartão SD`,inserted:`Inserido`,notInserted:`Não inserido`,totalPrintHours:`Horas de impressão`,activeNozzle:`Ativo: {{nozzle}} bico`,amsSwitchInletTooltip:`Comutador de trajeto de filamento IN-{{inlet}} ({{side}}) — alimenta os dois bicos`,nozzleRack:`Suporte de bicos`,nozzleDocked:`Acoplado`,nozzleMounted:`Montado`,nozzleActive:`Ativo`,nozzleIdle:`Ocioso`,nozzleDiameter:`Diâmetro`,nozzleType:`Tipo`,nozzleStatus:`Status`,nozzleFilament:`Filamento`,nozzleWear:`Desgaste`,nozzleMaxTemp:`Temp Máx`,nozzleSerial:`Número de série`,nozzleHardenedSteel:`Aço Endurecido`,nozzleStainlessSteel:`Aço Inoxidável`,nozzleTungstenCarbide:`Carboneto de Tungstênio`,nozzleFlow:`Fluxo`,nozzleHighFlow:`Alto Fluxo`,nozzleStandardFlow:`Fluxo Padrão`,firmwareUpdate:`Atualização de Firmware`,firmwareInstructions:`No visor da impressora, vá para`,firmwareNav:`Navegar para`,settings:`Configurações`,firmware:`Firmware`,discoverPrinters:`Descobrir Impressoras`,searching:`Procurando...`,manualEntry:`Entrada Manual`,addFromCloud:`Adicionar da Nuvem`,toast:{printerDeleted:`Impressora excluída`,missingSpoolAssignment:`Impressão iniciada em {{printer}}. Atribuição de bobina ausente para: {{slots}}`,killSwitchTriggered:`O bloqueio de segurança de cobrança interrompeu uma impressão não autorizada em {{printer}}: {{filename}}`,billingChargeFailed:`A cobrança de {{filename}} em {{printer}} falhou. A reserva do orçamento foi mantida; verifique os logs do servidor.`,assignmentVerified:`Filamento carregado no compartimento {{slot}} ({{printer}})`,assignmentVerifiedNoKprofile:`Compartimento {{slot}} em {{printer}} carregado, mas o perfil de calibração de fluxo (perfil K) não foi aplicado`,assignmentNotConfirmed:`Não foi possível confirmar a atribuição do compartimento {{slot}} em {{printer}} — verifique o compartimento AMS`,printerAdded:`Impressora adicionada`,printerUpdated:`Impressora atualizada`,failedToDelete:`Falha ao excluir impressora`,failedToAdd:`Falha ao adicionar impressora`,connectionFailedNotAdded:`Não foi possível conectar à impressora. Verifique o IP, o número de série e o código de acesso, e confirme que o modo somente LAN está ativado. A impressora não foi adicionada.`,failedToUpdate:`Falha ao atualizar impressora`,commandSent:`Comando enviado`,failedToSendCommand:`Falha ao enviar comando`,turnedOn:`{{name}} ligado`,failedToPowerOn:`Falha ao ligar {{name}}`,scriptTriggered:`Script acionado`,printStopped:`Impressão parada`,printPaused:`Impressão pausada`,printResumed:`Impressão retomada`,referenceDeleted:`Referência excluída`,detectionAreaSaved:`Área de detecção salva`,failedToRunScript:`Falha ao executar script`,failedToStopPrint:`Falha ao parar impressão`,failedToPausePrint:`Falha ao pausar impressão`,failedToResumePrint:`Falha ao retomar impressão`,failedToControlChamberLight:`Falha ao controlar a luz da câmara`,failedToSetSpeed:`Falha ao definir a velocidade de impressão`,failedToUpdateSetting:`Falha ao atualizar configuração`,failedToSkipObjects:`Falha ao ignorar objetos`,failedToRereadRfid:`Falha ao reler RFID`,failedToCheckPlate:`Falha ao verificar a placa`,failedToUpdateLabel:`Falha ao atualizar etiqueta`,failedToDeleteReference:`Falha ao excluir referência`,failedToSaveDetectionArea:`Falha ao salvar área de detecção`,plateCheckEnabled:`Verificação da placa ativada`,plateCheckDisabled:`Verificação da placa desativada`,calibrationSaved:`Calibração salva!`,calibrationFailed:`Falha na calibração`,rfidRereadInitiated:`Releitura de RFID iniciada`,loadInitiated:`Carregando filamento…`,unloadInitiated:`Descarregando filamento…`,failedToLoad:`Falha ao carregar filamento`,failedToUnload:`Falha ao descarregar filamento`},connection:{connected:`Conectado`,offline:`Offline`},plateStatus:{markCleared:`Marcar placa como liberada`,cleared:`Placa liberada`,notCleared:`Placa não liberada`,inUse:`Placa em uso`},queue:{inQueue:`{{count}} impressão na fila`,inQueue_plural:`{{count}} impressões na fila`},controls:`Controles`,rfid:{reread:`Releitura de RFID`},ams:{load:`Carregar`,unload:`Descarregar`,feedTitle:`Carregar {{slot}} em qual bico?`,feedPrompt:`O Filament Track Switch pode direcionar este slot para qualquer um dos hotends. Escolha qual alimentar.`,feedLeft:`Bico esquerdo`,feedRight:`Bico direito`,feedAlreadyLoaded:`Já carregado`,switchNotReady:`O Filament Track Switch ainda não foi configurado. Atribua cada AMS a uma entrada na impressora e tente novamente.`},bedJog:{limitWarning:`Os limites de curso não são aplicados durante movimentos manuais — um bug do firmware da Bambu ignora os fins de curso por software em comandos remotos. Mova com cuidado para evitar colisões.`,title:`Controles de movimento`,bed:`Mesa`,step:`Passo (mm)`,up:`Mover mesa para cima`,down:`Mover mesa para baixo`,disabledWhilePrinting:`Desativado durante a impressão`,notHomedTitle:`Impressora não referenciada`,notHomedMessage:`A impressora não foi referenciada desde a última impressão. Execute a referência automática primeiro para um posicionamento seguro (estaciona o cabeçote, depois referencia X, Y e Z), ou mova assim mesmo — os fins de curso de software serão ignorados.`,homeZ:`Referência automática`,moveAnyway:`Mover assim mesmo`,homingStarted:`Referenciando impressora automaticamente…`},permission:{noAdd:`Você não tem permissão para adicionar impressoras`,noEdit:`Você não tem permissão para editar impressoras`,noDelete:`Você não tem permissão para excluir impressoras`,noControl:`Você não tem permissão para controlar impressoras`,noFiles:`Você não tem permissão para acessar arquivos de impressora`,noAmsRfid:`Você não tem permissão para reler RFID AMS`,noSmartPlugControl:`Você não tem permissão para controlar tomadas inteligentes`,noCamera:`Você não tem permissão para visualizar câmeras`},modal:{addTitle:`Adicionar Impressora`,editTitle:`Editar Impressora`,myPrinter:`Minha Impressora`,selectModel:`Selecionar modelo...`,locationGroup:`Localização / Grupo (opcional)`,locationPlaceholder:`ex.: Oficina, Escritório, Porão`,autoArchiveLabel:`Arquivar automaticamente impressões concluídas`,fromPrinterSettings:`A partir das configurações da impressora`,modelOptional:`Modelo (opcional)`,saveChanges:`Salvar alterações`},skipObjects:{tooltip:`Ignorar objetos`,onlyWhilePrinting:`Ignorar objetos (apenas durante a impressão)`,requiresMultiple:`Ignorar objetos (requer 2+ objetos)`,title:`Ignorar Objetos`,matchIdsInfo:`Correspondência de IDs com o display da sua impressora`,printerShowsIds:`A tela da impressora mostra os IDs dos objetos na placa de construção`,skipSelected:`Ignorar Selecionados`,skipping:`Ignorando...`,noObjectsSelected:`Nenhum objeto selecionado`,selectObjectsToSkip:`Selecione os objetos que deseja ignorar na impressão atual`,skipped:`Ignorado`,objectsSkipped:`Objetos ignorados`,activeCount:`{{count}} ativo`,waitForLayer:`Aguarde a camada 2+ para ignorar objetos (atualmente na camada {{layer}})`,skip:`Ignorar`,confirmTitle:`Ignorar Objeto?`,confirmMessage:`Tem certeza de que deseja ignorar "{{name}}"? Isso não pode ser desfeito.`,confirmAllMessage:`Todos os objetos restantes estão selecionados. Isso interromperá o trabalho de impressão. Continuar?`,confirmMultipleMessage:`Ignorar {{count}} objetos selecionados? Isso não pode ser desfeito.`},confirm:{deleteTitle:`Excluir Impressora`,deleteMessage:`Tem certeza de que deseja excluir "{{name}}"? Isso removerá todas as configurações de conexão.`,deleteArchivesNote:`Todo o histórico de impressão desta impressora será permanentemente excluído.`,keepArchivesNote:`O histórico de impressão será mantido, mas não estará mais associado a esta impressora.`,stopTitle:`Parar Impressão`,stopMessage:`Tem certeza de que deseja parar a impressão atual em "{{name}}"? Isso cancelará o trabalho de impressão.`,stopButton:`Parar Impressão`,pauseTitle:`Pausar Impressão`,pauseMessage:`Tem certeza de que deseja pausar a impressão atual em "{{name}}"?`,pauseButton:`Pausar Impressão`,resumeTitle:`Retomar Impressão`,resumeMessage:`Tem certeza de que deseja retomar a impressão em "{{name}}"?`,resumeButton:`Retomar Impressão`,powerOnTitle:`Ligar Impressora`,powerOnMessage:`Tem certeza de que deseja ligar a impressora "{{name}}"?`,powerOnButton:`Ligar`,powerOffTitle:`Desligar Impressora`,powerOffMessage:`Tem certeza de que deseja desligar a impressora "{{name}}"?`,powerOffWarning:`AVISO: "{{name}}" está imprimindo no momento! Tem certeza de que deseja desligar a impressora? Isso interromperá a impressão e pode danificar a impressora.`,powerOffButton:`Desligar`,haToggleTitle:`Alternar "{{name}}"`,haToggleMessage:`Alternar a entidade Home Assistant {{entity}}? Isso pode desligar a energia se estiver ligada no momento.`,haToggleWarning:`AVISO: "{{name}}" está imprimindo no momento! Alternar {{entity}} pode cortar a energia e interromper a impressão. Continuar?`,haToggleButton:`Alternar`},bulk:{select:`Selecionar`,selectAll:`Selecionar tudo`,selectByLocation:`Selecionar por local`,selected:`{{count}} selecionado(s)`,actions:{stop:`Parar`,pause:`Pausar`,resume:`Retomar`,clearPlate:`Limpar mesa`,clearHMS:`Limpar notificações`},confirm:{stopTitle:`Parar {{count}} impressões`,stopMessage:`Isso cancelará as impressões ativas em {{count}} impressora(s). Esta ação não pode ser desfeita.`,stopButton:`Parar todas`,pauseTitle:`Pausar {{count}} impressões`,pauseMessage:`Isso pausará as impressões ativas em {{count}} impressora(s).`,pauseButton:`Pausar todas`,clearPlateTitle:`Limpar {{count}} mesas de impressão`,clearPlateMessage:`Isso limpará a mesa de impressão em {{count}} impressora(s) e pode iniciar trabalhos na fila.`,clearPlateButton:`Limpar todas`},success:`{{action}} concluído em {{count}} impressora(s)`,partial:`{{succeeded}} bem-sucedido(s), {{failed}} falhou/falharam`,noneApplicable:`Nenhuma impressora selecionada está no estado correto para esta ação`,selectByState:`Selecionar por estado`},discovery:{title:`Descobrir Impressoras`,searching:`Procurando...`,scanning:`Escaneando...`,scanProgress:`Escaneando... {{scanned}}/{{total}}`,foundPrinters:`{{count}} impressora(s) encontrada(s)`,noPrintersFound:`Nenhuma impressora encontrada`,noPrintersFoundSubnet:`Nenhuma impressora encontrada na sub-rede especificada.`,noPrintersFoundNetwork:`Nenhuma impressora encontrada na rede.`,allConfigured:`Todas as impressoras descobertas já estão configuradas.`,alreadyAdded:`Já adicionada`,select:`Selecionar`,manualEntry:`Entrada Manual`,addFromCloud:`Adicionar da Nuvem`,subnetToScan:`Sub-rede para escanear`,dockerNote:`Docker detectado. Insira a sub-rede da sua impressora em notação CIDR. Requer network_mode: host no docker-compose.yml.`,scanSubnet:`Escanear Sub-rede para Impressoras`,discoverNetwork:`Descobrir Impressoras na Rede`,scanningSubnet:`Escaneando sub-rede para impressoras Bambu...`,scanningNetwork:`Escaneando rede...`,serialRequired:`Serial necessário`,unknown:`Desconhecido`,failedToStart:`Falha ao iniciar a descoberta`,customSubnetOption:`Sub-rede personalizada...`,customSubnetLabel:`Sub-rede personalizada (CIDR)`,customSubnetNote:`Use uma sub-rede personalizada se sua impressora estiver em uma rede diferente deste servidor. As portas FTP (990) e MQTT (8883) devem estar acessíveis através do limite de roteamento.`},drying:{start:`Iniciar secagem`,stop:`Parar secagem`,temperature:`Temperatura`,duration:`Duração`,hours:`horas`,timeRemaining:`{{time}} restante`,active:`Secagem`,targetSummary:`{{filament}} @ {{temp}}°C`,notSupported:`Secagem não suportada`,powerRequired:`Conecte o adaptador de energia AMS para ativar a secagem`,cannotDryNow:`O AMS não pode iniciar a secagem no momento`,startingDrying:`Iniciando secagem...`,toastCommandSent:`Comando de secagem enviado`,toastStopped:`Secagem interrompida`,toastNotStarted:`A impressora aceitou o comando, mas o AMS não iniciou a secagem. Verifique se o adaptador de energia do AMS está conectado e se a impressora está ociosa.`,screenOnly:`Nesta impressora, a secagem do AMS só pode ser controlada pela tela da própria impressora (limitação da Bambu)`,stoppingDrying:`Parando secagem...`,rotateTray:`Girar o carretel durante a secagem`,rotateUnavailableReason:`Indisponível — um slot deste AMS está carregado em direção ao cabeçote. O carretel está travado pelo tubo de alimentação e não pode girar. Retraia o filamento primeiro.`,startMode:`Horário de início`,modeNow:`Agora`,modeDelay:`Após um atraso`,modeAtTime:`Em um horário`,schedule:`Agendar`,scheduledFor:`Secagem agendada para {{time}}`,scheduledAsap:`Secagem agendada (aguardando a impressora)`,cancelScheduled:`Cancelar secagem agendada`,scheduleFailed:`Falha ao agendar a secagem`,retractFilament:`Recolha o filamento na saída do AMS para iniciar a secagem`,waitingAmsNotFound:`Aguardando a detecção do AMS`,waitingOffline:`Aguardando a impressora ficar online`,waitingPrinterBusy:`Aguardando a impressora ficar livre`,waitingAlreadyDrying:`Aguardando o ciclo de secagem atual terminar`,waitingInterrupted:`Interrompida, será retomada quando a impressora estiver livre`,scheduleFailedReason:`Falha na secagem agendada: {{reason}}`,scheduleFailedUnknown:`Erro desconhecido`,dismissFailed:`Dispensar`},amsBackup:{titleOn:`AMS Filament Backup está LIGADO. Clique para desativar.`,titleOff:`AMS Filament Backup está DESLIGADO. Clique para ativar.`,titleUnknown:`Estado do AMS Filament Backup indisponível nesta impressora.`,toastEnabled:`AMS Filament Backup ativado`,toastDisabled:`AMS Filament Backup desativado`,modalTitle:`AMS Filament Backup`,modalHelp:`Quando o slot ativo termina, a impressora alterna para slots com o mesmo preset e cor nesta ordem.`,modalNoSlots:`Nenhum filamento carregado.`,modalNoPairs:`Sem pares de backup — nenhum par de slots compartilha preset e cor.`,extruderRightShort:`D`,extruderLeftShort:`E`,stateOn:`Ativado`,stateOff:`Desativado`,stateUnknown:`Não suportado nesta impressora`},activeJobSlot:{title:`Este slot é o filamento {{n}} na impressão ativa`,ariaLabel:`Slot de impressão ativa {{n}}`},expectedSlot:{title:`A impressora está aguardando filamento neste slot`,ariaLabel:`Slot de filamento esperado {{n}}`,label:`{{ams}} · Slot {{slot}}`,external:`Bobina externa`},filaments:`Filamentos`,externalSpool:{hide:`Ocultar bobina externa`,show:`Mostrar bobina externa`},openCameraOverlay:`Abrir sobreposição da câmera`,openCameraWindow:`Abrir câmera em nova janela`,firmwareUpdateAvailable:`Atualização de firmware disponível: {{current}} → {{latest}}`,firmwareUpToDate:`Firmware {{version}} — Atualizado`,firmwareUpdateButton:`Atualizar`,plateDetection:{noPermission:`Você não tem permissão para atualizar impressoras`,enabledClick:`Verificação da placa ativada - Clique para desativar`,disabledClick:`Verificação da placa desativada - Clique para ativar`,manageCalibration:`Gerenciar calibração da detecção da placa`,calibrationRequired:`Calibração necessária`,calibrationInstructions:`Certifique-se de que a placa de construção esteja completamente vazia, em seguida clique em Calibrar.`,calibrationDescription:`A calibração captura uma imagem de referência da placa vazia. Verificações futuras compararão com esta referência para detectar objetos.`,calibrationTip:`Dica: Você pode armazenar até 5 calibrações para diferentes placas. O sistema usa automaticamente a melhor correspondência ao verificar.`,plateEmpty:`A placa parece vazia`,objectsDetected:`Objetos detectados na placa`,confidence:`Confiança`,difference:`Diferença`,analysisPreview:`Pré-visualização da análise:`,analysisLegend:`Caixa verde = área de detecção, Sobreposição vermelha = diferenças em relação à calibração`,savedReferences:`Referências salvas ({{count}}/{{max}})`,deleteReference:`Excluir referência`,labelPlaceholder:`Etiqueta...`,clickToEdit:`{{label}} - Clique para editar`,clickToAddLabel:`Clique para adicionar etiqueta`},speed:{title:`Velocidade de impressão`,silent:`Silencioso (50%)`,standard:`Padrão (100%)`,sport:`Sport (124%)`,ludicrous:`Ludicrous (166%)`},airduct:{title:`Modo do duto de ar`,cooling:`Resfriamento`,heating:`Aquecimento`},noSdCard:`Sem SD`,door:{open:`Aberta`,closed:`Fechada`},fans:{partCooling:`Ventilador de resfriamento da peça`,auxiliary:`Ventilador auxiliar`,leftAuxiliary:`Ventilador auxiliar esquerdo`,exhaust:`Exaustão`,chamber:`Ventilador da câmara`},clickToViewHmsErrors:`Clique para ver erros do HMS`,aiDetection:{safe:`Seguro`,warning:`Aviso`,failure:`Falha`,idle:`Ocioso`,error:`Não verificando`,unknown:`Iniciando`,tooltipError:`A Detecção de Falhas por IA não está verificando esta impressão: {{reason}} - clique para detalhes`,tooltipUnknown:`Detecção de Falhas por IA: aguardando o primeiro resultado - clique para detalhes`,errorHint:`Esta impressão não está sendo verificada. A detecção será retomada automaticamente assim que o problema abaixo for resolvido.`,tooltip:`Detecção de Falhas por IA: {{status}} (pontuação {{score}}) - clique para detalhes`,tooltipIdle:`Detecção de Falhas por IA ativada - o monitoramento começa na próxima impressão - clique para detalhes`,modalTitle:`Detecção de Falhas por IA - {{name}}`,currentStatus:`Status`,score:`Pontuação`,framesAnalyzed:`Quadros analisados`,idleHint:`Nenhuma impressão está sendo monitorada no momento. O monitoramento começa automaticamente na próxima impressão.`,lastError:`Último erro`,openSettings:`Abrir configurações`},estimatedCompletion:`Tempo estimado de conclusão`,plateNumber:`Placa {{number}}`,slotOptions:`Opções de slot`,amsPopup:{friendlyName:`Nome do AMS`,friendlyNamePlaceholder:`ex.: Nome amigável do AMS`,serialNumber:`Número de série`,firmwareVersion:`Firmware`,save:`Salvar`,clear:`Limpar`,noEditPermission:`Você não tem permissão para renomear unidades AMS`},firmwareModal:{title:`Atualização de Firmware`,titleUpToDate:`Informações do Firmware`,currentVersion:`Atual:`,latestVersion:`Última:`,releaseNotes:`Notas de Lançamento`,checkingPrereqs:`Verificando pré-requisitos...`,sdCardReady:`Cartão SD pronto. Clique abaixo para enviar o firmware.`,uploadedSuccess:`Firmware enviado para o cartão SD!`,applyInstructions:`Para aplicar a atualização na sua impressora:`,step1:`Na tela sensível ao toque da impressora, vá para Configurações`,step2:`Navegue até Firmware`,step3:`Selecione Atualizar a partir do cartão SD`,step4:`A atualização levará de 10 a 20 minutos`,done:`Concluído`,starting:`Iniciando...`,uploadFirmware:`Enviar Firmware`,uploadFailed:`Falha ao iniciar o envio: {{error}}`,uploadedToast:`Firmware enviado! Inicie a atualização na tela da impressora.`,availableVersions:`Versões disponíveis`,usable:`Utilizável`,unavailable:`Indisponível`,installed:`Instalada`,newerBadge:`mais recente`,olderBadge:`mais antiga`,currentBadge:`atual`},accessCodePlaceholder:`Deixe vazio para manter o atual`,roi:{title:`Área de Detecção (ROI)`,xStart:`Início X`,yStart:`Início Y`,width:`Largura`,height:`Altura`,instruction:`Ajuste a área de detecção para focar na placa de construção. A caixa verde na pré-visualização mostra a área atual.`},developerModeWarning:`O modo desenvolvedor LAN não está ativado em: {{names}}. Alguns recursos podem não funcionar.`,howToEnable:`Como ativar`,incompatibleFile:`Este arquivo foi fatiado para {{slicedFor}}, mas esta impressora é uma {{printerModel}}`,dropNotPrintable:`Apenas arquivos .gcode e .gcode.3mf podem ser impressos`,dropToPrint:`Solte para imprimir`,dropToQueue:`Solte para adicionar à fila`},archives:{media:{title:`Vídeos da impressão`,download:`Baixar vídeos da impressão`,searching:`Procurando vídeos na impressora…`,searchFailed:`Não foi possível procurar vídeos na impressora.`,none:`Nenhum timelapse ou trecho da câmera IP foi encontrado para esta impressão.`,attachedTimelapse:`Timelapse anexado`,printerFiles:`Arquivos ainda presentes na impressora`,downloadSelected:`Baixar selecionados`,printerMissing:`A impressora não está mais configurada`,timelapseUnavailable:`Não foi possível ler o diretório de timelapses`,ipcamUnavailable:`Não foi possível ler o diretório da câmera IP`},title:`Arquivos de Impressão`,no3mfBanner:{title:`Algumas impressões recentes não puderam ser arquivadas com miniaturas`,body:`O fatiador não deixou o arquivo .gcode.3mf no cartão SD da impressora, então o Bambuddy não conseguiu obter nem a miniatura nem os metadados do fatiador. Normalmente isso acontece porque "Armazenar arquivos enviados no armazenamento externo" está desligado no fatiador (aba Dispositivo do Bambu Studio / OrcaSlicer).`,docsLink:`Ver passo 4 da instalação`,docsLinkInternalStorage:`Por que isso acontece`,titleInternalStorage:`Algumas impressões recentes ficaram no armazenamento interno da impressora`,bodyInternalStorage:`O Bambu Studio colocou o arquivo fatiado no armazenamento interno da impressora em vez do cartão, então o Bambuddy não tinha nada para ler via FTP. Na série H2 e na P2S o botão «Imprimir» sempre faz isso: só «Enviar» oferece escolha, e ela também vem com «Cache» por padrão. Essas impressões continuam arquivadas com nome e tempos, apenas sem miniatura nem metadados do fatiador. Para arquivos completos, inicie a impressão pelo Bambuddy ou fatie no OrcaSlicer, ou então no Bambu Studio use «Enviar» com «Externo» e inicie a impressão depois. Todos precisam de um cartão ou pendrive na impressora.`,titleNoExternalStorage:`Algumas impressões recentes não puderam ser arquivadas — sem armazenamento na impressora`,bodyNoExternalStorage:`A impressora não detecta cartão nem pendrive no slot, então o arquivo fatiado não tinha onde ficar e o Bambuddy nada para ler. Insira um e a próxima impressão será arquivada por completo.`,titleInternalHistory:`Algumas impressões recentes começaram a partir de um arquivo que já estava na impressora`,bodyInternalHistory:`Essas impressões saíram da própria biblioteca da impressora: uma reimpressão pela tela dela, um início pelo Handy ou um arquivo enviado antes e impresso depois. O Bambuddy lê os arquivos de impressão por FTP, que só serve o cartão ou o pendrive, enquanto a impressora guarda essa biblioteca em uma área que o FTP não alcança, então não havia nenhum 3MF para ler. Nenhuma opção do fatiador muda isso, porque nada foi enviado para essas impressões. Elas continuam arquivadas com nome e tempos, e «Editar Arquivo» permite preencher à mão o filamento usado. Para um arquivo completo, inicie a impressão pelo Bambuddy ou pelo seu fatiador.`,dismissLabel:`Dispensar este aviso`},searchPlaceholder:`Pesquisar arquivos...`,filterByPrinter:`Filtrar por impressora`,filterByStatus:`Filtrar por status`,sortBy:`Ordenar por`,sortNewest:`Mais recentes primeiro`,sortOldest:`Mais antigos primeiro`,sortName:`Nome`,sortDuration:`Duração`,sortLargest:`Maiores primeiro`,sortSmallest:`Menores primeiro`,sortSize:`Tamanho`,noArchives:`Nenhum arquivo encontrado`,noArchivesSearch:`Nenhum arquivo corresponde à sua pesquisa`,originalPrintNotVisible:`Impressão original não visível - tente limpar os filtros`,noArchivesYet:`Ainda não há arquivos`,prints:`impressões`,pagination:{showing:`Mostrando`,to:`a`,of:`de`,show:`Mostrar`,page:`Página`,all:`Todos`},loadingArchives:`Carregando arquivos...`,releaseToUpload:`Solte para enviar`,showAll:`Mostrar todos`,showFavoritesOnly:`Mostrar apenas favoritos`,gridView:`Visualização em grade`,listView:`Visualização em lista`,calendarView:`Visualização em calendário`,logView:`Registro de impressão`,manageTags:`Gerenciar etiquetas`,showFailedPrints:`Mostrar impressões falhas`,hideFailedPrints:`Ocultar impressões falhas`,hideDuplicates:`Ocultar duplicados`,viewOriginalPrint:`Clique para visualizar a impressão original (#{{id}})`,printTime:`Tempo de impressão`,filamentUsed:`Filamento usado`,cost:`Custo`,preview:`Pré-visualizar`,deleteArchive:`Excluir arquivo`,deleteConfirm:`Tem certeza de que deseja excluir este arquivo?`,favorite:`Favorito`,unfavorite:`Remover dos favoritos`,viewDetails:`Ver detalhes`,status:{completed:`Concluído`,failed:`Falhou`,stopped:`Parado`},toast:{source3mfAttached:`Arquivo de origem 3MF anexado: {{filename}}`,failedUploadSource3mf:`Falha ao enviar arquivo de origem 3MF`,source3mfRemoved:`Arquivo de origem 3MF removido`,failedRemoveSource3mf:`Falha ao remover arquivo de origem 3MF`,f3dAttached:`F3D anexado: {{filename}}`,failedUploadF3d:`Falha ao enviar F3D`,f3dRemoved:`F3D removido`,failedRemoveF3d:`Falha ao remover F3D`,timelapseAttached:`Timelapse anexado: {{filename}}`,timelapseAlreadyAttached:`Timelapse já anexado`,noMatchingTimelapse:`Nenhum timelapse correspondente encontrado`,failedScanTimelapse:`Falha ao escanear timelapse`,failedAttachTimelapse:`Falha ao anexar timelapse`,timelapseRemoved:`Timelapse removido`,failedRemoveTimelapse:`Falha ao remover timelapse`,timelapseUploaded:`Timelapse enviado: {{filename}}`,failedUploadTimelapse:`Falha ao enviar timelapse`,archiveDeleted:`Arquivo excluído`,failedDeleteArchive:`Falha ao excluir arquivo`,addedToFavorites:`Adicionado aos favoritos`,removedFromFavorites:`Removido dos favoritos`,projectUpdated:`Projeto atualizado`,failedUpdateProject:`Falha ao atualizar projeto`,linkCopied:`Link copiado para a área de transferência`,failedCopyLink:`Falha ao copiar link`,photoDeleted:`Foto excluída`,failedDeletePhoto:`Falha ao excluir foto`,failedDeleteArchives:`Falha ao excluir arquivos`,failedUpdateFavorites:`Falha ao atualizar favoritos`,exportDownloaded:`Exportação baixada`,exportFailed:`Falha na exportação`},menu:{print:`Imprimir`,openInBambuStudio:`Abrir no Slicer`,slice:`Fatiar`,externalLink:`Link externo`,viewOnMakerWorld:`Ver no MakerWorld`,preview3d:`Pré-visualização 3D`,viewTimelapse:`Ver Timelapse`,scanForTimelapse:`Escanear Timelapse`,uploadTimelapse:`Enviar Timelapse`,removeTimelapse:`Remover Timelapse`,downloadSource3mf:`Baixar Source 3MF`,uploadSource3mf:`Enviar Source 3MF`,replaceSource3mf:`Substituir Source 3MF`,removeSource3mf:`Remover Source 3MF`,uploadF3d:`Enviar F3D`,replaceF3d:`Substituir F3D`,downloadF3d:`Baixar F3D`,removeF3d:`Remover F3D`,download:`Baixar`,copyDownloadLink:`Copiar link de download`,qrCode:`Qr Code`,viewPhotos:`Ver fotos`,viewPhotosCount:`Ver fotos ({{count}})`,projectPage:`Página do projeto`,addToFavorites:`Adicionar aos favoritos`,removeFromFavorites:`Remover dos favoritos`,edit:`Editar`,printLog:`Histórico de impressões`,goToProject:`Ir para o projeto: {{name}}`,addToProject:`Adicionar ao projeto`,removeFromProject:`Remover do projeto`,loading:`Carregando...`,noProjectsAvailable:`Nenhum projeto disponível`,searchProjects:`Pesquisar projetos…`,select:`Selecionar`,deselect:`Desmarcar`,delete:`Excluir`},permission:{noReprint:`Você não tem permissão para reimprimir este arquivo`,noAddToQueue:`Você não tem permissão para adicionar à fila`,noUpdateArchives:`Você não tem permissão para atualizar arquivos`,noUploadFiles:`Você não tem permissão para enviar arquivos`,noDownload:`Você não tem permissão para baixar arquivos`,noCopyLink:`Você não tem permissão para copiar links de download`,noDelete:`Você não tem permissão para excluir este arquivo`,noEdit:`Você não tem permissão para editar esta entrada`,noCreate:`Você não tem permissão para criar arquivos`},platePicker:{title:`Selecione a placa para visualizar`,hint:`Este arquivo contém várias placas. Escolha uma para abrir no visualizador GCode.`,plateLabel:`Placa {{index}}`,objectCount:`{{count}} objeto`,objectCount_plural:`{{count}} objetos`,noGcode:`Este arquivo não contém G-code fatiado para visualizar. Abra-o no Bambu Studio para fatiar primeiro.`},card:{previousPlate:`Placa anterior`,nextPlate:`Próxima placa`,plateNumber:`Placa {{index}}`,moreOptions:`Clique com o botão direito para mais opções`,addToFavorites:`Adicionar aos favoritos`,removeFromFavorites:`Remover dos favoritos`,cancelled:`cancelado`,failed:`falha`,duplicate:`duplicado`,duplicateTitle:`Este modelo já foi impresso antes`,openSource3mf:`Abrir source 3MF no Bambu Studio (clique com o botão direito para mais opções)`,downloadF3d:`Baixar arquivo de design do Fusion 360`,viewTimelapse:`Ver timelapse`,viewPhoto:`Ver 1 foto`,viewPhotos:`Ver {{count}} fotos`,openFolder:`Abrir pasta: {{name}}`,slicedFile:`Arquivo fatiado - pronto para imprimir`,sourceFile:`Apenas arquivo fonte - nenhum mapeamento AMS disponível`,gcode:`GCODE`,source:`SOURCE`,project:`Projeto: {{name}}`,runsBadge:`{{count}} impressões`,runsBadgeTitle:`{{count}} impressões no total — {{successful}} bem-sucedidas, {{failed}} com falha. Clique para ver o histórico completo.`,estimated:`Estimado: {{time}}`,actual:`Real: {{time}}`,accuracy:`Precisão: {{percent}}%`,filament:`{{weight}} g`,layer:`{{count}} camada`,layers:`{{count}} camadas`,object:`{{count}} objeto`,objects:`{{count}} objetos`,slicedFor:`Fatiado para {{model}}`,uploadedBy:`Enviado por`,noPermissionReprint:`Você não tem permissão para reimprimir`,noFileForReprint:`Nenhum arquivo 3MF disponível — o arquivo não pôde ser baixado da impressora quando a impressão foi registrada`,slicerAmsMapping:`Mapeamento de AMS salvo ({{printer}})`,slicerAmsMappingTooltip:`A escolha de slot AMS do fatiador foi salva para {{printer}}. Os números de slot só significam algo naquela impressora, portanto uma reimpressão só os reutiliza se voltar a mirar {{printer}}.`,noPermissionEdit:`Você não tem permissão para editar arquivos`,noPermissionDelete:`Você não tem permissão para excluir arquivos`,openInBambuStudio:`Abrir no Bambu Studio`,openInBambuStudioToSlice:`Abrir no Bambu Studio para fatiar`,slice:`Fatiar`,externalLink:`Link externo`,makerWorld:`MakerWorld – {{designer}}`,viewProject:`Ver projeto`,noExternalLink:`Nenhum link externo`,preview3d:`Visualização 3D`,download:`Baixar`,edit:`Editar`,delete:`Excluir`},runLog:{title:`Histórico de impressões`,modalTitle:`Histórico de impressões — {{name}}`,modalTitleFallback:`este arquivo`,empty:`Nenhum evento de impressão registrado para este arquivo ainda.`,col:{date:`Data`,status:`Status`,duration:`Duração`,filament:`Filamento`,cost:`Custo`},status:{completed:`Concluída`,failed:`Falhou`,cancelled:`Cancelada`,stopped:`Interrompida`,skipped:`Ignorada`,printing:`Imprimindo`}},modal:{deleteArchive:`Excluir Arquivo`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"? Esta ação não pode ser desfeita.`,deleteButton:`Excluir`,deletePurgeStats:`Remover também esta impressão das Quick Stats (filamento, tempo, custo, energia)`,deleteQueueItemsWarning:`{{count}} item(ns) de fila vinculado(s) a este arquivo também serão removidos.`,deleteBlockedByPrinting:`Não é possível excluir — {{count}} item(ns) de fila estão imprimindo agora. Pare a impressão primeiro e tente novamente.`,removeSource3mf:`Remover Source 3MF`,removeSource3mfConfirm:`Tem certeza de que deseja remover o arquivo source 3MF de "{{name}}"? Isso excluirá o arquivo original do projeto do fatiador.`,removeButton:`Remover`,removeF3d:`Remover F3D`,removeF3dConfirm:`Tem certeza de que deseja remover o arquivo de design do Fusion 360 de "{{name}}"?`,removeTimelapse:`Remover Timelapse`,removeTimelapseConfirm:`Tem certeza de que deseja remover o vídeo timelapse de "{{name}}"?`,timelapse:`{{name}} – Timelapse`,selectTimelapse:`Selecionar Timelapse`,selectTimelapseDesc:`Nenhuma correspondência automática encontrada. Selecione o timelapse para esta impressão:`,deleteArchives:`Excluir Arquivos`,deleteArchivesConfirm:`Tem certeza de que deseja excluir {{count}} arquivo(s)? Esta ação não pode ser desfeita.`,deleteCount:`Excluir {{count}}`},page:{title:`Arquivos`,printsCount:`{{filtered}} de {{total}} impressões`,dropFilesHere:`Solte arquivos .3mf aqui`,releaseToUpload:`Solte para enviar`,only3mfSupported:`Apenas arquivos .3mf são suportados`,close:`Fechar`,selected:`{{count}} selecionado(s)`,selectAll:`Selecionar Todos`,tags:`Etiquetas`,project:`Projeto`,favorite:`Favorito`,delete:`Excluir`,toggledFavorites:`Favoritos alternados para {{count}} arquivo(s)`,failedUpdateFavorites:`Falha ao atualizar favoritos`,archivesDeleted:`{{count}} arquivo(s) excluído(s)`,failedDeleteArchives:`Falha ao excluir arquivos`,photoDeleted:`Foto excluída`,failedDeletePhoto:`Falha ao excluir foto`},list:{name:`Nome`,printer:`Impressora`,date:`Data`,size:`Tamanho`,actions:`Ações`,hasTimelapse:`Possui timelapse`},log:{date:`Data`,printName:`Nome da Impressão`,printer:`Impressora`,user:`Usuário`,status:`Status`,duration:`Duração`,filament:`Filamento`,filamentUsed:`Filamento usado`,cost:`Custo`,energy:`Energia`,energyCost:`Custo de energia`,completedAt:`Concluído`,columns:`Colunas`,sortBy:`Ordenar por {{column}}`,allPrinters:`Todas as Impressoras`,allUsers:`Todos os Usuários`,allStatuses:`Todos os Status`,cancelled:`Cancelado`,skipped:`Ignorado`,dateFrom:`De`,dateTo:`Até`,noEntries:`Nenhuma entrada de registro de impressão encontrada`,showing:`Mostrando {{count}} de {{total}} entradas`,rowsPerPage:`Linhas`,page:`Página`,prev:`Anterior`,next:`Próxima`,clearLog:`Limpar Registro`,clearLogTitle:`Limpar Registro de Impressão`,clearLogConfirm:`Todas as entradas do registro de impressão serão permanentemente excluídas. Arquivos e itens da fila não serão afetados. Esta ação não pode ser desfeita. Tem certeza?`,clearLogButton:`Limpar Tudo`,cleared:`{{count}} entradas do registro de impressão limpas`,clearFailed:`Falha ao limpar o registro de impressão`,deleteEntryTitle:`Excluir entrada do registro de impressão`,deleteEntryConfirm:`Esta entrada será removida do registro e suas contribuições de filamento, tempo e custo desaparecerão das estatísticas rápidas. O arquivo correspondente (se houver) não é afetado. Esta ação não pode ser desfeita.`,entryDeleted:`Entrada do registro de impressão excluída`,entryDeleteFailed:`Falha ao excluir entrada do registro de impressão`,editEntryTitle:`Editar entrada do registro de impressão`,editEntryDescription:`Classifique esta impressão. O widget Análise de falhas agrupa por esses valores, então as atualizações são refletidas nas estatísticas imediatamente.`,entryUpdated:`Entrada do registro atualizada`,entryUpdateFailed:`Falha ao atualizar a entrada do registro`,statuses:{completed:`Concluída`,failed:`Falhou`,stopped:`Parada`,cancelled:`Cancelada`,skipped:`Ignorada`}}},dispatchToast:{untitled:`Trabalho de impressão`,startingPrints:`Iniciando impressões`,progressSummary:`{{complete}}/{{total}} concluídas • Processando: {{processing}}`,expandDetails:`Expandir detalhes do envio`,collapseDetails:`Recolher detalhes do envio`,awaitingPrinter:`Aguardando impressora…`,status:{processing:`Processando`,completed:`Concluída`,failed:`Falhou`},failed:{generic:`Falha no envio`,upload_failed:`Falha ao enviar para a impressora`,start_command_failed:`Impressora rejeitou o comando de início`},dismiss:`Fechar`},pipelineRuns:{title:`Execuções de pipeline`,loading:`Carregando…`,empty:`Nenhuma execução de pipeline ainda.`,filter:{pipeline:`Pipeline`,status:`Status`,target:`Destino`,all:`Todas`,allPipelines:`Todas as pipelines`,allStatus:`Todos os status`,allTargets:`Todos os destinos`,clear:`Limpar filtros`,noMatches:`Nenhuma execução corresponde aos filtros atuais.`},totalCount_one:`{{n}} execução`,totalCount_other:`{{n}} execuções`,copies:`{{n}} cópias`,failedCount:`{{n}} falharam`,copyN:`Cópia {{n}}`,retryFailed:`Repetir falhas`,retryOf:`nova tentativa de #{{n}}`,pagination:`{{start}}–{{end}} de {{total}}`,toast:{cancelled:`Execução cancelada`,cancelFailed:`Cancelamento falhou`,retryStarted:`Nova tentativa iniciada`,retryFailed:`Nova tentativa falhou`,cleared:`{{n}} execuções limpas`,clearFailed:`Falha ao limpar`},clearLog:`Limpar histórico`,clearConfirmTitle:`Limpar histórico?`,clearConfirmBody:`Excluir todas as execuções de pipeline concluídas, falhas, canceladas e com falha parcial? Execuções em andamento são mantidas. Isso não pode ser desfeito.`,clearConfirmAction:`Limpar`,jobStatus:{pending:`pendente`,awaiting_printer:`aguardando impressora`,queued:`na fila`,printing:`imprimindo`,completed:`concluída`,failed:`falhou`,cancelled:`cancelada`},cancelledByUser:`Cancelado pelo usuário`},queue:{filamentShort:{rowBadge:`Filamento insuficiente para a bobina atribuida`,rowTooltip:`O escalonador sinalizou este item. Clique em Play para ver o deficit por slot e decidir se quer imprimir mesmo assim.`,confirmTitle:`Filamento insuficiente`,confirmIntro:`A bobina atribuida nao pode cobrir pelo menos um slot. Imprimir mesmo assim?`,lineItem:`Slot {{slot}}: precisa de {{required}} g, restam {{remaining}} g`,unknown:`desconhecido`,printAnyway:`Imprimir mesmo assim`},slicerAmsMapping:{rowBadge:`Slots AMS salvos para esta impressora`,rowTooltip:`Este arquivo mantém os slots AMS exatos escolhidos pelo fatiador, salvos para a impressora deste item. Uma reimpressão nela pode reutilizar esses carretéis em vez de casar novamente por tipo e cor.`},title:`Fila de Impressão`,subtitle:`Agende e gerencie seus trabalhos de impressão`,editQueueItem:`Editar Item da Fila`,selectAllPlates:`Selecionar todas as {{count}} placas`,deselectAll:`Desmarcar tudo`,printQueued:`Impressão adicionada à fila`,printQueuedWillStartWhenIdle:`Iniciará quando a impressora estiver ociosa`,itemsQueued:`{{count}} itens adicionados à fila`,sending:`Enviando...`,sendingProgress:`Enviando {{current}}/{{total}}...`,adding:`Adicionando...`,addingProgress:`Adicionando {{current}}/{{total}}...`,savingProgress:`Salvando {{current}}/{{total}}...`,clearQueue:`Limpar Fila`,clearHistory:`Limpar Histórico`,emptyQueue:`Fila vazia`,position:`Posição`,scheduledTime:`Hora Agendada`,moveUp:`Mover para Cima`,moveDown:`Mover para Baixo`,startNow:`Iniciar Agora`,printingInProgress:`Impressão em andamento...`,viewArchive:`Ver Arquivo`,viewInFileManager:`Ver no Gerenciador de Arquivos`,itemCount:`{{count}} item`,itemCount_plural:`{{count}} itens`,dragToReorder:`Arraste para reordenar (apenas ASAP)`,reorderHint:`A posição afeta apenas itens ASAP. Itens agendados são executados no horário definido.`,sjf:{label:`SJF`,tooltip:`Trabalho mais curto primeiro — o agendador prioriza impressões mais curtas`},addedBy:`Adicionado por {{name}}`,nextInQueue:`Próximo na fila`,clearPlateSuccess:`Placa limpa — pronta para a próxima impressão`,plateNumber:`Placa {{index}}`,quantity:`Quantidade`,quantityHint:`Cria {{count}} itens na fila`,plateQuantityLabel:`Impressões de {{plate}}`,plateQuantityTotal_one:`{{count}} impressão no total`,plateQuantityTotal_other:`{{count}} impressões no total`,batchOrders:{title:`Pedidos em lote`,emptyTitle:`Nenhum pedido em lote`,emptyDescription:`Coloque na fila um arquivo com várias mesas, ou mais de uma cópia de uma mesa, e o pedido aparece aqui com o progresso.`,filter:{active:`Ativos`,completed:`Concluídos`,cancelled:`Cancelados`,all:`Todos`},status:{active:`Ativo`,completed:`Concluído`,cancelled:`Cancelado`},noTargets:`Apenas agrupamento`,noTargetsHint:`Criado antes das quantidades por mesa, então acompanha as impressões enfileiradas em vez de uma meta.`,dispatchRemaining:`Enfileirar {{count}} restantes`,dispatchPlate:`Enfileirar restantes`,strandedPlate:`Nada de onde copiar as configurações`,strandedNotice:`Não é possível enfileirar {{runs}} das {{owed}} impressões ainda devidas: essa placa não tem mais nenhuma impressão na fila ou concluída de onde copiar as configurações. Enfileire a placa uma vez a partir do arquivo ou cancele o pedido.`,dispatched:`Impressões restantes enfileiradas para {{name}}`,plateProgress:`{{completed}} de {{target}} prontas`,remaining:`{{count}} ainda devidas`,failed:`{{count}} falharam`,printing:`{{count}} imprimindo`,wholeFile:`Arquivo inteiro`,due:`Vence {{date}}`,costSoFar:`{{amount}} até agora`,costRemaining:`({{amount}} a gastar)`},activeBatches:`Lotes ativos`,batchProgress:`{{completed}} de {{total}} concluídos`,cancelBatch:`Cancelar restantes`,batchCancelled:`Itens restantes do lote cancelados`,cancelBatchConfirmTitle:`Cancelar lote`,cancelBatchConfirmMessage:`Encerrar este pedido? As impressões ainda na fila são canceladas e ele para de cobrar o que não produziu.`,batch:{defaultName:`Lote`,label:`{{count}} item`,label_plural:`{{count}} itens`,pendingCount:`{{count}} pendente`,pendingCount_plural:`{{count}} pendentes`,expand:`Expandir lote`,collapse:`Recolher lote`,groupAsBatch:`Agrupar como lote…`,groupAsBatchDescription:`Combine os {{count}} itens selecionados em um único lote recolhível.`,nameLabel:`Nome do lote`,namePlaceholder:`ex. Presentes de sexta`,create:`Criar lote`,ungroup:`Desagrupar`,ungroupConfirmTitle:`Desagrupar lote?`,ungroupConfirmMessage:`Os itens permanecerão na fila mas não estarão mais agrupados.`,dragGroup:`Arrastar grupo`},tabs:{batches:`Lotes`,queue:`Fila`,history:`Histórico`,timeline:`Linha do tempo`,pipelines:`Processos`},layout:{flatList:`Lista`,byPrinter:`Por impressora`,groupByPrinter:`Agrupar por impressora`},history:{emptyTitle:`Sem histórico ainda`,emptyDescription:`Impressões concluídas, canceladas e com falha aparecerão aqui.`,showMore:`Mostrar mais`,showingCount:`Mostrando {{shown}} de {{total}}`},dragGhost:{multiCount:`{{count}} itens`,batch:`{{name}} ({{count}} cópia)`,batch_plural:`{{name}} ({{count}} cópias)`},sections:{currentlyPrinting:`Imprimindo Atualmente`,queued:`Na Fila`,history:`Histórico`},status:{pending:`Pendente`,waiting:`Aguardando`,printing:`Imprimindo`,paused:`Pausado`,completed:`Concluído`,failed:`Falhou`,skipped:`Ignorado`,cancelled:`Cancelado`},summary:{printing:`Imprimindo`,queued:`Na Fila`,totalTime:`Tempo Total da Fila`,totalWeight:`Peso Total da Fila`,history:`Histórico`},filter:{allPrinters:`Todas as Impressoras`,unassigned:`Não Atribuído`,allStatus:`Todos os Status`,allLocations:`Todos os Locais`,any:`Qualquer`},sort:{byPosition:`Ordenar por Posição`,byName:`Ordenar por Nome`,byPrinter:`Ordenar por Impressora`,bySchedule:`Ordenar por Agendamento`,byDate:`Ordenar por Data`,ascendingOldest:`Crescente (mais antigo primeiro)`,descendingNewest:`Decrescente (mais recente primeiro)`},badges:{staged:`Preparado (início manual)`,requiresPrevious:`Requer sucesso anterior`,autoPowerOff:`Desligamento automático`,gcodeInjection:`G-code`},empty:{title:`Nenhuma impressão agendada`,description:`Agende uma impressão a partir da página de Arquivos usando a opção "Agendar" no menu de contexto, ou arraste e solte arquivos para começar.`},time:{etaIfStartedNow:`Horário de conclusão se este trabalho começasse agora`,asap:`ASAP`,overdue:`Atrasado`,now:`Agora`,lessThanMinute:`Em menos de um minuto`,inMinutes:`Em {{count}} min`,inHours:`Em {{count}} horas`},actions:{startPrint:`Iniciar Impressão`,stopPrint:`Parar Impressão`,requeue:`Reenfileirar`},bulkEdit:{title:`Editar {{count}} Item`,title_plural:`Editar {{count}} Itens`,description:`Apenas as configurações alteradas serão aplicadas aos itens selecionados.`,printer:`Impressora`,noChange:`— Sem alterações —`,queueOptions:`Opções de Fila`,staged:`Preparado (início manual)`,autoPowerOff:`Desligamento automático após impressão`,requirePrevious:`Requer sucesso anterior`,printOptions:`Opções de Impressão`,bedLevelling:`Nivelamento da Mesa`,flowCalibration:`Calibração de Fluxo`,vibrationCalibration:`Calibração de Vibração`,layerInspection:`Inspeção da Primeira Camada`,timelapse:`Timelapse`,useAms:`Usar AMS`,nozzleOffsetCali:`Calibração de offset dos bicos`,applyChanges:`Aplicar Alterações`,selectAll:`Selecionar Todos`,deselectAll:`Desmarcar Todos`,selected:`{{count}} selecionado(s)`,editSelected:`Editar Selecionados`,cancelSelected:`Cancelar Selecionados`},confirm:{cancelTitle:`Cancelar Impressão Agendada`,cancelMessage:`Tem certeza de que deseja cancelar "{{name}}"?`,stopTitle:`Parar Impressão`,stopMessage:`Tem certeza de que deseja parar a impressão atual "{{name}}"? Isso cancelará o trabalho de impressão na impressora.`,removeTitle:`Remover do Histórico`,removeMessage:`Tem certeza de que deseja remover "{{name}}" do histórico da fila?`,clearHistoryTitle:`Limpar Histórico`,clearHistoryMessage:`Tem certeza de que deseja remover todos os {{count}} itens do histórico?`,cancelButton:`Cancelar Impressão`,stopButton:`Parar Impressão`,thisPrint:`esta impressão`,thisItem:`este item`},toast:{cancelled:`Item da fila cancelado`,cancelFailed:`Falha ao cancelar item`,removed:`Item da fila removido`,keptForOrder:`Cancelado em vez de removido: é a única impressão de onde o pedido pode reenfileirar esta placa`,historyKeptForOrders:`{{kept}} mantidas porque pedidos ainda precisam delas.`,removeFailed:`Falha ao remover item`,stopped:`Impressão parada`,stopFailed:`Falha ao parar impressão`,released:`Impressão liberada para a fila`,startFailed:`Falha ao iniciar impressão`,reorderFailed:`Falha ao reordenar fila`,historyCleared:`Limpar {{count}} item(s) do histórico`,clearHistoryFailed:`Falha ao limpar histórico`,updateFailed:`Falha ao atualizar itens`,bulkCancelled:`Cancelado {{count}} item(s)`,bulkCancelFailed:`Falha ao cancelar itens`,batchCreated:`Lote "{{name}}" criado`,batchCreateFailed:`Falha ao criar o lote`,batchUngrouped:`{{count}} item(ns) desagrupado(s)`,batchUngroupFailed:`Falha ao desagrupar o lote`,resumedAfterFailure:`Fila retomada — {{restored}} trabalho(s) restaurado(s) para pendente`,resumeAfterFailureFailed:`Falha ao retomar a fila`},resumeAfterFailure:{banner:`{{printer}} está bloqueada por uma falha de impressão anterior — {{count}} trabalho(s) ignorado(s)`,bannerHint:`Resolva o problema da impressora e retome para restaurar os trabalhos ignorados e remover o bloqueio.`,button:`Retomar após falha`,confirmTitle:`Retomar a fila após a falha?`,confirmMessage:`Restaurar {{count}} trabalho(s) ignorado(s) em {{printer}} para pendente e remover o bloqueio da impressão anterior. Verifique se a impressora está pronta antes de continuar.`},timeline:{listView:`Lista`,timelineView:`Linha do tempo`,unassigned:`Não atribuído`,noData:`Nenhuma impressão agendada para este dia`,nothingCommitted:`Sem programações confirmadas nesta janela. Itens preparados, itens em espera e trabalhos ASAP em impressoras ociosas não são mostrados — defina um horário agendado ou libere um item preparado para vê-lo aqui.`,allDoneBy:`Todas as impressões concluídas até {{time}}`,staged:`Preparado`,filterAll:`Mostrar tudo`,filterPrinting:`Imprimindo`,filterQueued:`Na fila`,time:{anyMoment:`a qualquer momento`,minutesLeft:`{{minutes}}m restantes`,hoursLeft:`{{hours}}h restantes`,hoursMinutesLeft:`{{hours}}h {{minutes}}m restantes`},day:{previous:`Dia anterior`,next:`Próximo dia`,today:`Hoje`},window:{back12h:`Voltar 12 horas`,forward12h:`Avançar 12 horas`,now:`Agora`},printerColumnHeader:`Impressora`},permissions:{noStopPrint:`Você não tem permissão para parar impressões`,noStartPrint:`Você não tem permissão para iniciar impressões`,noEdit:`Você não tem permissão para editar este item da fila`,noCancel:`Você não tem permissão para cancelar este item da fila`,noRequeue:`Você não tem permissão para reenfileirar itens`,noRemove:`Você não tem permissão para remover este item da fila`,noClearHistory:`Você não tem permissão para limpar todo o histórico`,noEditItems:`Você não tem permissão para editar itens da fila`,noCancelItems:`Você não tem permissão para cancelar itens da fila`}},stats:{title:`Estatísticas`,subtitle:`Arraste os widgets para reorganizar. Clique no ícone de olho para ocultar.`,overview:`Visão Geral`,totalPrints:`Total de Impressões`,successRate:`Taxa de Sucesso`,totalPrintTime:`Tempo Total de Impressão`,printTime:`Tempo de Impressão`,totalFilament:`Filamento Total Utilizado`,filamentUsed:`Filamento Utilizado`,filamentCost:`Custo do Filamento`,totalCost:`Custo Total`,energyUsed:`Energia Utilizada`,energyCost:`Custo da Energia`,energyWarmingUpTooltip:`O monitoramento de energia ainda está coletando snapshots por hora. Os totais por período ficarão precisos quando houver pelo menos um snapshot antes do intervalo selecionado. Valores iniciais podem ser subestimados.`,averagePrintTime:`Tempo Médio de Impressão`,printsPerDay:`Impressões por Dia`,byPrinter:`Por Impressora`,printsByPrinter:`Impressões por Impressora`,byMaterial:`Por Material`,byMonth:`Por Mês`,last7Days:`Últimos 7 Dias`,last30Days:`Últimos 30 Dias`,last90Days:`Últimos 90 Dias`,allTime:`Todo o Tempo`,quickStats:`Estatísticas Rápidas`,printActivity:`Atividade de Impressão`,filamentTypes:`Tipos de Filamento`,filamentTrends:`Tendências de Filamento`,failureAnalysis:`Análise de Falhas`,timeAccuracy:`Precisão do Tempo`,successful:`Bem-sucedido:`,failed:`Falhou:`,cancelled:`Cancelado:`,perfectEstimate:`100% = estimativa perfeita`,noTimeAccuracyData:`Nenhum dado de precisão de tempo disponível`,noFilamentData:`Nenhum dado de filamento disponível`,noPrinterData:`Nenhum dado de impressora disponível`,noPrintData:`Nenhum dado de impressão disponível`,noPrintDataLast30Days:`Nenhum dado de impressão nos últimos 30 dias`,failureReasons:`Razões de Falha`,topFailureReasons:`Principais Razões de Falha`,failedPrintsCount:`{{failed}} / {{total}} impressões falharam`,lastWeekRate:`Última semana: {{rate}}%`,resetLayout:`Redefinir Layout`,recalculateCosts:`Recalcular Custos`,recalculateCostsHint:`Recalcular todos os custos do arquivo usando os preços atuais do filamento`,exportStats:`Exportar Estatísticas`,exportAsCsv:`Exportar como CSV`,exportAsExcel:`Exportar como Excel`,hiddenCount:`{{count}} Oculto`,exportDownloaded:`Exportação baixada`,exportFailed:`Falha na exportação`,layoutReset:`Layout redefinido`,recalculatedCosts:`Custos recalculados para {{count}} arquivos`,recalculateFailed:`Falha ao recalcular custos`,loadingStats:`Carregando estatísticas...`,noPermissionResetLayout:`Você não tem permissão para redefinir o layout`,noPermissionRecalculate:`Você não tem permissão para recalcular custos`,noPrintDataInRange:`Sem dados no período selecionado`,periodFilament:`Filamento usado`,periodCost:`Custo`,avgPerPrint:`Média por impressão`,usageOverTime:`Uso ao longo do tempo`,energyOverTime:`Energia ao longo do tempo`,filamentByWeight:`Peso`,printDuration:`Duração da impressão`,printerUtilization:`Utilização da impressora`,filamentSuccess:`Sucesso por material`,printHabits:`Hábitos de impressão`,printTimeOfDay:`Horário de impressão`,colorDistribution:`Distribuição de cores`,noColorData:`Nenhum dado de cor disponível`,records:`Recordes`,longestPrint:`Impressão mais longa`,heaviestPrint:`Impressão mais pesada`,mostExpensivePrint:`Mais cara`,busiestDay:`Dia mais movimentado`,successStreak:`Sequência de sucesso`,streakPrint:`impressão consecutiva`,streakPrints:`{{count}} impressões consecutivas`,printerStats:`Estatísticas da impressora`,hours:`horas`,avgPrints:`Méd. impressões`,noArchiveData:`Nenhum dado de impressão disponível`,filamentByTime:`Tempo`,avgWeight:`Méd. peso`,avgTime:`Méd. tempo`,filamentByPrints:`Impressões`,timeframe:{today:`Hoje`,"this-week":`Esta semana`,"this-month":`Este mês`,"last-7":`Últimos 7 dias`,"last-30":`Últimos 30 dias`,"last-90":`Últimos 90 dias`,"this-year":`Este ano`,"all-time":`Todo o período`,custom:`Personalizado`,from:`De`,to:`Até`},allUsers:`Todos os Usuários`,noUser:`Sem Usuário (Sistema)`,filterByUser:`Filtrar por Usuário`},maintenance:{title:`Manutenção`,overview:`Visão Geral`,allOk:`Todas as manutenções estão em dia`,dueCount:`{{count}} item pendente`,dueCount_plural:`{{count}} itens pendentes`,warningCount:`{{count}} aviso`,warningCount_plural:`{{count}} avisos`,totalPrintTime:`Tempo Total de Impressão`,nextMaintenance:`Próxima Manutenção`,nothingDue:`Nada pendente`,tasks:`Tarefas`,lastPerformed:`Última execução`,interval:`Intervalo`,hoursRemaining:`{{hours}}h restantes`,hoursOverdue:`{{hours}}h atrasadas`,markDone:`Marcar como Concluída`,performMaintenance:`Realizar Manutenção`,history:`Histórico`,noHistory:`Nenhum histórico de manutenção`,editPrintHours:`Editar Horas de Impressão`,currentHours:`Horas Atuais`,statusTab:`Status`,settingsTab:`Configurações`,overdueCount:`{{count}} atrasado`,dueSoonCount:`{{count}} prestes a vencer`,dueSoon:`Prestes a vencer`,allGood:`Tudo certo`,overdueBy:`Atrasado por {{duration}}`,dueIn:`Vence em {{duration}}`,timeLeft:`{{duration}} restantes`,day:`1 dia`,days:`{{count}} dias`,week:`1 semana`,weeks:`{{count}} semanas`,month:`1 mês`,months:`{{count}} meses`,year:`1 ano`,maintenanceTypes:`Tipos de Manutenção`,maintenanceTypesDescription:`Tipos de sistema e suas tarefas de manutenção personalizadas`,addCustomType:`Adicionar Tipo Personalizado`,restoreDefaults:`Restaurar Tarefas Padrão`,intervalType:`Tipo de Intervalo`,intervalValue:`Intervalo ({{type}})`,icon:`Ícone`,documentationLink:`Link da Documentação (opcional)`,assignToPrinters:`Atribuir a Impressoras`,selectAtLeastOnePrinter:`Selecione pelo menos uma impressora`,addType:`Adicionar Tipo`,custom:`Personalizado`,printHours:`Horas de Impressão`,calendarDays:`Dias de Calendário`,exampleName:`ex., Substituir Filtro HEPA`,viewDocumentation:`Ver documentação`,timeBasedInterval:`Intervalo baseado em tempo`,intervalOverrides:`Substituições de Intervalo`,intervalOverridesDescription:`Personalize os intervalos para impressoras específicas`,assignedToPrinters:`Atribuído a impressoras:`,noPrintersAssigned:`Nenhuma impressora atribuída`,addPrinterShort:`Adicionar:`,printersAssignedClick:`{{count}} impressora(s) atribuída(s) - clique para gerenciar`,removeFromPrinter:`Remover desta impressora`,types:{lubricateCarbonRods:`Lubricar Barras de Carbono`,lubricateRails:`Lubricar Trilhos Lineares`,cleanNozzle:`Limpar Bico/Hotend`,checkBelts:`Verificar Tensão das Correias`,cleanBuildPlate:`Limpar Plataforma de Impressão`,checkExtruder:`Verificar Engrenagens do Extrusor`,checkCooling:`Verificar Ventiladores de Resfriamento`,generalInspection:`Inspeção Geral`,cleanCarbonRods:`Limpar Barras de Carbono`,lubricateSteelRods:`Lubrificar Barras de Aço`,cleanSteelRods:`Limpar Barras de Aço`,cleanLinearRails:`Limpar Trilhos Lineares`,checkPtfeTube:`Verificar Tubo PTFE`,replaceHepaFilter:`Substituir Filtro HEPA`,replaceCarbonFilter:`Substituir Filtro de Carbono`,lubricateLeftNozzleRail:`Lubrificar Trilho do Bico Esquerdo`},maintenanceComplete:`Manutenção marcada como concluída`,typeUpdated:`Tipo de manutenção atualizado`,typeDeleted:`Tipo de manutenção excluído`,defaultsRestored:`Restauradas {{count}} tarefa(s) padrão`,printHoursUpdated:`Horas de impressão atualizadas`,printerAssigned:`Impressora atribuída`,printerRemoved:`Impressora removida`,deleteTypeConfirm:`Excluir "{{name}}"?`,deleteSystemTypeTitle:`Excluir tarefa de manutenção padrão?`,deleteSystemTypeMessage:`Tem certeza de que deseja excluir a tarefa de manutenção padrão "{{name}}"?`,noPermissionUpdate:`Você não tem permissão para atualizar itens de manutenção`,noPermissionPerform:`Você não tem permissão para realizar manutenção`,noPermissionEditTypes:`Você não tem permissão para editar tipos de manutenção`,noPermissionDeleteTypes:`Você não tem permissão para excluir tipos de manutenção`,noPermissionEditHours:`Você não tem permissão para editar horas de impressão`,noPermissionRemovePrinter:`Você não tem permissão para remover atribuições de impressora`,noPermissionAssignPrinter:`Você não tem permissão para atribuir impressoras`,noPermissionEditIntervals:`Você não tem permissão para editar intervalos`,configureSettings:`Configure tipos de manutenção e intervalos`},settings:{sliceEngine:`Motor de fatiamento`,sliceEngineSidecar:`Sidecar do servidor`,sliceEngineSidecarHint:`O fatiamento roda no servidor, no contêiner sidecar do fatiador.`,sliceEngineBrowser:`No navegador`,sliceEngineBrowserHint:`O fatiamento roda neste dispositivo, sem envolver o servidor.`,title:`Configurações`,general:`Geral`,tabs:{general:`Geral`,smartPlugs:`Tomadas Inteligentes`,sensors:`Sensores`,notifications:`Notificações`,queue:`Fluxo`,queueDispatch:`Fila e Dispatch`,queuePipelines:`Pipelines`,filament:`Filamento`,network:`Rede`,apiKeys:`Chaves API`,virtualPrinter:`Impressora Virtual`,failureDetection:`Detecção de Falhas`,users:`Autenticação`,backup:`Backup`,emailAuth:`Autenticação por Email`,ldap:`LDAP`,twoFa:`Autenticação 2FA`,oidc:`SSO / OIDC`,security:`Segurança`,spoolbuddy:`SpoolBuddy`},ldap:{title:`Autenticação LDAP`,enabledDesc:`A autenticação LDAP está ativada`,disabledDesc:`A autenticação LDAP está desativada`,disabledHint:`Configure e salve as configurações LDAP abaixo, depois ative.`,enabled:`Autenticação LDAP ativada`,disabled:`Autenticação LDAP desativada`,feature1:`Usuários podem fazer login com credenciais LDAP`,feature2:`A conta de administrador local permanece como fallback`,feature3:`Grupos LDAP são mapeados para grupos BamBuddy no login`,serverConfig:`Configuração do Servidor LDAP`,serverUrl:`URL do servidor`,serverUrlHint:`Use ldap:// para padrão ou ldaps:// para conexões SSL`,security:`Segurança`,securityHint:`StartTLS atualiza uma conexão simples para TLS. LDAPS usa TLS desde o início.`,bindDn:`Bind DN (conta de serviço)`,bindPassword:`Senha Bind`,searchBase:`Base DN de pesquisa`,userFilter:`Filtro de pesquisa de usuário`,userFilterHint:`{username} é substituído pelo nome de usuário. Use (uid={username}) para OpenLDAP.`,advanced:`Avançado`,autoProvision:`Provisionamento automático de usuários`,autoProvisionHint:`Criar automaticamente uma conta BamBuddy no primeiro login LDAP`,defaultGroup:`Grupo padrão`,defaultGroupNone:`— Nenhum (sem fallback) —`,defaultGroupHint:`Grupo de fallback atribuído quando um usuário LDAP se autentica mas não está em nenhum grupo LDAP mapeado. Deixe vazio para manter usuários não mapeados sem permissões.`,groupMapping:`Mapeamento de grupos (JSON)`,groupMappingHint:`Mapear DNs de grupos LDAP para grupos BamBuddy. Grupos disponíveis: `,testConnection:`Testar conexão`,settingsSaved:`Configurações LDAP salvas`,errors:{serverRequired:`URL do servidor LDAP é obrigatória`,searchBaseRequired:`Base DN de pesquisa é obrigatória`,enableAuthFirst:`Ative a autenticação primeiro`,configureLdapFirst:`Salve as configurações LDAP primeiro`}},email:{smtpSettings:`Configuração SMTP`,smtpHost:`Servidor SMTP`,smtpPort:`Porta SMTP`,security:`Segurança`,authentication:`Autenticação`,username:`Nome de Usuário`,password:`Senha`,fromEmail:`Email de Remetente`,fromName:`Nome de Remetente`,testConnection:`Testar Conexão SMTP`,testRecipient:`Email de Teste`,sendTest:`Enviar Email de Teste`,sending:`Enviando...`,save:`Salvar Configurações`,saving:`Salvando...`,advancedAuth:`Autenticação Avançada`,advancedAuthEnabled:`Autenticação Avançada está habilitada`,advancedAuthEnabledDesc:`Recursos de gerenciamento de usuários baseados em email estão ativos. Novos usuários receberão senhas geradas automaticamente por email, e os usuários podem redefinir suas senhas através do recurso de esqueci minha senha.`,advancedAuthDisabled:`Autenticação Avançada está desabilitada`,advancedAuthDisabledDesc:`Habilite a autenticação avançada para ativar recursos baseados em email para gerenciamento de usuários.`,enable:`Habilitar`,disable:`Desabilitar`,feature1:`Senhas são geradas automaticamente e enviadas por email para novos usuários`,feature2:`Usuários podem fazer login com nome de usuário ou email`,feature3:`Recurso de esqueci minha senha está disponível`,feature4:`Administradores podem redefinir senhas de usuários via email`,errors:{requiredFields:`Por favor, preencha todos os campos obrigatórios`,usernameRequired:`Nome de usuário é obrigatório quando a autenticação está habilitada`,enterTestEmail:`Por favor, insira um endereço de email de teste`,smtpServerAndEmail:`Por favor, preencha o servidor SMTP e o email de remetente antes de testar`,usernamePasswordRequired:`Nome de usuário e senha são obrigatórios quando a autenticação está habilitada`,configureSmtpFirst:`Por favor, configure e teste as configurações SMTP primeiro`,enableAuthFirst:`Por favor, habilite a autenticação primeiro para usar os recursos baseados em e-mail.`},success:{settingsSaved:`Configurações SMTP salvas com sucesso`},securityOptions:{starttls:`STARTTLS (Porta 587)`,ssl:`SSL/TLS (Porta 465)`,none:`Nenhuma (Porta 25)`},authOptions:{enabled:`Habilitado`,disabled:`Desabilitado`}},appearance:`Aparência`,notifications:`Notificações`,smartPlugs:`Tomadas Inteligentes`,spoolman:`Spoolman`,updates:`Atualizações`,language:`Idioma`,languageDescription:`Selecione seu idioma preferido`,theme:`Tema`,themeLight:`Claro`,themeDark:`Escuro`,themeSystem:`Sistema`,defaultView:`Visualização Padrão`,defaultViewDescription:`Página a ser exibida ao abrir o aplicativo`,checkForUpdates:`Verificar Atualizações`,autoUpdate:`Atualização Automática`,currentVersion:`Versão Atual`,latestVersion:`Última Versão`,upToDate:`Você está atualizado`,updateAvailable:`Atualização disponível`,notificationLanguage:`Idioma das Notificações`,notificationLanguageDescription:`Idioma para notificações push`,bedCooledThreshold:`Limite de Resfriamento da Cama`,bedCooledThresholdDescription:`Temperatura abaixo da qual a cama é considerada resfriada após uma impressão`,userNotificationsEnabled:`Notificações do Usuário`,userNotificationsEnabledDescription:`Ativa o menu de notificações do usuário e notificações por e-mail para eventos de impressão. Requer Autenticação Avançada.`,userNotificationsDisabledHint:`Ative a Autenticação Avançada para usar as notificações do usuário.`,notificationProviders:`Provedores de Notificação`,addProvider:`Adicionar Provedor`,editProvider:`Editar Provedor`,providerType:`Tipo de Provedor`,testNotification:`Testar Notificação`,testSuccess:`Notificação de teste enviada com sucesso`,testFailed:`Falha ao enviar notificação de teste`,quietHours:`Horas de Silêncio`,quietHoursDescription:`Não perturbe durante essas horas`,quietHoursStart:`Início`,quietHoursEnd:`Fim`,events:{title:`Eventos de Notificação`,printStart:`Impressão Iniciada`,printComplete:`Impressão Concluída`,printFailed:`Falha na Impressão`,printStopped:`Impressão Interrompida`,printProgress:`Marcos de Progresso`,printProgressDescription:`Notificar em 25%, 50%, 75%`,printerOffline:`Impressora Offline`,printerError:`Erro na Impressora`,filamentLow:`Filamento Baixo`,maintenanceDue:`Manutenção Pendente`,maintenanceDueDescription:`Notificar quando a manutenção for necessária`},smartPlug:{title:`Tomadas Inteligentes`,add:`Adicionar Tomada Inteligente`,edit:`Editar Tomada Inteligente`,name:`Nome`,ipAddress:`Endereço IP`,linkedPrinter:`Impressora Vinculada`,autoOn:`Ligar Automaticamente`,autoOnDescription:`Ligar quando a impressão começar`,autoOff:`Desligar Automaticamente`,autoOffDescription:`Desligar após a conclusão da impressão`,offDelay:`Atraso para Desligar`,offDelayMinutes:`Minutos após a impressão`,offDelayTemp:`Quando o bico estiver abaixo da temperatura`,currentState:`Estado Atual`,turnOn:`Ligar`,turnOff:`Desligar`},filamentTracking:`Rastreamento de Filamento`,filamentTrackingDesc:`Escolha como rastrear seus rolos de filamento. Você pode usar o inventário interno ou conectar a um servidor Spoolman externo.`,autoAddUnknownRfid:`Adicionar automaticamente carretéis RFID desconhecidos`,autoAddUnknownRfidDesc:`Cria automaticamente uma entrada de inventário quando um carretel com tag RFID desconhecido é detectado. Desligue se você pré-registra novos carretéis manualmente para evitar duplicatas.`,filamentChecks:`Verificações de filamento`,disableFilamentWarnings:`Desativar avisos de filamento`,disableFilamentWarningsDesc:`Não mostrar avisos sobre filamento insuficiente ao imprimir ou adicionar à fila`,preferLowestFilament:`Preferir filamento com menor resto`,preferLowestFilamentDesc:`Quando vários carretéis correspondem, usar o com menos filamento restante`,preferLowestFilamentBackupNote:`Só tem efeito quando o AMS Filament Backup está habilitado na impressora — caso contrário, a impressora não pode trocar para um segundo carretel quando o escolhido acabar.`,trackingModeBuiltIn:`Inventário Interno`,trackingModeBuiltInDesc:`Correspondência automática de RFID e rastreamento de uso incluídos`,trackingModeSpoolmanDesc:`Servidor de gerenciamento de filamento externo`,builtInFeatureRfid:`Detecta automaticamente rolos RFID da Bambu Lab no AMS`,builtInFeatureUsage:`Rastreia o consumo de filamento por impressão`,builtInFeatureCatalog:`Gerencia rolos, cores e perfis de fator K`,builtInFeatureThirdParty:`Rolos de terceiros podem ser atribuídos aos rolos do inventário`,amsSyncButton:`Sincronizar Pesos do AMS`,amsSyncTitle:`Sincronizar Pesos dos Rolos do AMS`,amsSyncMessage:`Isso substituirá todos os pesos dos rolos do inventário pelos valores atuais de % restante do AMS das impressoras conectadas. Use isso para recuperar dados de peso corrompidos. As impressoras devem estar online.`,amsSyncing:`Sincronizando...`,amsSyncSuccess:`{{synced}} rolo(s) sincronizado(s), {{skipped}} ignorado(s)`,amsSyncError:`Falha ao sincronizar pesos do AMS`,spoolmanAmsSyncButton:`Sincronizar pesos do Spoolman pelo AMS`,spoolmanAmsSyncTitle:`Sincronizar pesos dos rolos Spoolman pelo AMS`,spoolmanAmsSyncMessage:`Isso atualizará os pesos de todos os rolos Spoolman com base nos valores atuais de % restante do AMS das impressoras conectadas. As impressoras devem estar online.`,spoolmanAmsSyncing:`Sincronizando...`,spoolmanAmsSyncSuccess:`{{synced}} rolo(s) Spoolman sincronizado(s), {{skipped}} ignorado(s)`,spoolmanAmsSyncError:`Falha ao sincronizar pesos do Spoolman pelo AMS`,spoolmanAmsSyncErrorUnreachable:`Falha na sincronização (Spoolman inacessível)`,spoolmanAmsSyncErrorNotConfigured:`Falha na sincronização (Spoolman não configurado)`,spoolmanNotConfigured:`Spoolman não configurado`,spoolmanFilamentCatalogTitle:`Catálogo de filamentos Spoolman`,spoolmanFilamentCatalogDesc:`Nomes de filamentos e pesos tara da sua instância Spoolman. Nome e peso do carretel são editáveis aqui; todas as outras propriedades são gerenciadas diretamente no Spoolman.`,spoolmanUrl:`Spoolman URL`,spoolmanUrlHint:`URL do seu servidor Spoolman (por exemplo, http://localhost:7912)`,spoolmanConnected:`Conectado`,spoolmanDisconnected:`Desconectado`,status:`Status`,connect:`Conectar`,disconnect:`Desconectar`,howSyncWorks:`Como a Sincronização Funciona`,syncInfoRfidOnly:`Apenas rolos oficiais da Bambu Lab com RFID são sincronizados`,syncInfoAutoCreate:`Novos rolos são criados automaticamente no Spoolman na primeira sincronização`,syncInfoThirdPartySkipped:`Rolos não oficiais da Bambu Lab (terceiros, reabastecidos) são ignorados`,linkingExistingSpools:`Vinculando Rolos Existentes`,linkingExistingSpoolsDesc:`Para vincular rolos existentes do Spoolman ao seu AMS, passe o mouse sobre um slot do AMS e clique em "Vincular ao Spoolman".`,syncMode:`Modo de Sincronização`,syncModeAuto:`Automático`,syncModeManual:`Apenas Manual`,syncModeAutoDesc:`Os dados do AMS são sincronizados automaticamente quando alterações são detectadas`,syncModeManualDesc:`Somente sincronize quando acionado manualmente`,syncAmsData:`Sincronizar Dados do AMS`,syncAmsDataDesc:`Sincronize manualmente os dados do AMS da impressora com o Spoolman`,allPrinters:`Todas as Impressoras`,noDefaultPrinter:`Sem padrão (perguntar a cada vez)`,sidebarOrder:`Ordem da barra lateral`,saveThumbnails:`Salvar miniaturas`,captureFinishPhoto:`Capturar foto de conclusão`,noPrintersConfigured:`Nenhuma impressora configurada`,archiveMode:{always:`Sempre criar entrada de arquivo`,never:`Nunca criar entrada de arquivo`,ask:`Perguntar a cada vez`},checkForUpdatesLabel:`Verificar atualizações`,checkPrinterFirmware:`Verificar firmware da impressora`,includeBetaUpdates:`Incluir versões beta`,includeBetaUpdatesDesc:`Notificar sobre versões beta e pré-lançamento ao verificar atualizações`,localLogin:{disable:`Desativar login local com usuário/senha`,disableHint:`Quando ativado, somente provedores SSO podem fazer login. O LDAP não é afetado. Defina BAMBUDDY_LOCAL_LOGIN=true no servidor para manter um caminho de recuperação.`},enableRetry:`Habilitar tentativa`,homeAssistantDescription:`Controlar tomadas inteligentes via Home Assistant`,environmentManagedLabel:`(Gerenciado pelo Ambiente)`,autoEnabledViaEnv:`Habilitado automaticamente via variáveis de ambiente`,urlFromEnvReadOnly:`Valor definido pela variável de ambiente HA_URL (somente leitura)`,tokenFromEnvReadOnly:`Valor definido pela variável de ambiente HA_TOKEN (somente leitura)`,mqttConnectedTo:`Conectado a`,prometheusDescription:`Expor dados da impressora no formato Prometheus`,noSmartPlugsTitle:`Nenhuma tomada inteligente configurada`,noSmartPlugsDescription:`Adicione uma tomada inteligente baseada em Tasmota para monitorar o consumo de energia e automatizar o controle de energia.`,noProvidersTitle:`Nenhum provedor configurado`,noProvidersDescription:`Adicione um provedor para receber alertas.`,noTemplatesAvailable:`Nenhum modelo disponível. Reinicie o backend para gerar os modelos padrão.`,apiPermissionView:`Visualizar status da impressora e fila`,apiPermissionEdit:`Adicionar e remover itens da fila de impressão`,apiKeysEmptyTitle:`Nenhuma chave API`,apiKeysEmptyDescription:`Crie uma chave API para integrar com serviços externos.`,noUsersFound:`Nenhum usuário encontrado`,noGroupsFound:`Nenhum grupo encontrado`,noGroupsAvailable:`Nenhum grupo disponível`,passwordsDoNotMatch:`As senhas não coincidem`,systemGroupWarning:`Os nomes dos grupos do sistema não podem ser alterados`,authDisabledTitle:`Autenticação Desativada`,authDisabledFeature1:`Exigir login para acessar o sistema`,authDisabledFeature2:`Criar múltiplos usuários com permissões baseadas em grupos`,authDisabledFeature3:`Controlar acesso com mais de 50 permissões granulares`,userHasCreated:`Este usuário criou:`,userItemsQuestion:`O que você gostaria de fazer com esses itens?`,deleteUserConfirm:`Tem certeza de que deseja excluir este usuário?`,actionCannotBeUndone:`Esta ação não pode ser desfeita.`,addFirstSmartPlug:`Adicione sua primeira tomada inteligente`,providers:`Provedores`,log:`Registro`,testAll:`Testar tudo`,testResults:`Resultados do teste`,testPassedCount:`{{count}} aprovado`,testFailedCount:`{{count}} falhou`,messageTemplates:`Modelos de mensagem`,messageTemplatesDescription:`Personalize as mensagens de notificação para cada evento.`,apiKeys:`Chaves API`,apiKeysDescription:`Crie chaves API para integrações externas e webhooks.`,createKey:`Criar Chave`,apiKeyCreated:`Chave API criada com sucesso`,apiKeyCopyWarning:`Copie esta chave agora - ela não será exibida novamente!`,useInApiBrowser:`Usar no Navegador API`,apiKeyQrButton:`Código QR`,apiKeyQrTitle:`Escaneie para configurar`,apiKeyQrCaption:`Escaneie com seu app móvel para adicionar este servidor e a chave de API.`,apiKeyQrWarning:`Contém sua chave de API secreta — não compartilhe nem faça captura de tela onde outros possam ver.`,createNewApiKey:`Criar Nova Chave API`,keyName:`Nome da Chave`,keyNamePlaceholder:`e.g., Home Assistant, OctoPrint`,readStatus:`Status de Leitura`,readStatusDescription:`Visualizar status da impressora, fila, biblioteca, arquivos de impressão e pipelines do slicer`,manageQueue:`Gerenciar Fila`,manageQueueDescription:`Adicionar e remover itens da fila de impressão. Junto com "Gerenciar biblioteca", executar pipelines do slicer`,controlPrinter:`Controlar Impressora`,controlPrinterDescription:`Pausar, retomar e parar impressões`,manageLibrary:`Gerenciar biblioteca`,manageLibraryDescription:`Enviar, renomear, excluir e fatiar arquivos da biblioteca; importar modelos do MakerWorld. Junto com "Gerenciar Fila", executar pipelines do slicer`,manageInventory:`Gerenciar estoque`,manageInventoryDescription:`Criar, atualizar e excluir bobinas e registros de estoque. Necessário para quiosques SpoolBuddy (escaneamento NFC, leituras da balança, comandos de sistema do quiosque).`,manageMaintenance:`Gerenciar manutenção`,manageMaintenanceDescription:`Registrar manutenções concluídas, redefinir contadores, editar intervalos e gerenciar o catálogo de tipos de manutenção. Adequado a automações do Home Assistant que registram "limpei o bico" sem conceder controle mais amplo da impressora.`,manageArchives:`Gerenciar arquivos de impressão`,manageArchivesDescription:`Editar e excluir arquivos de impressão, incluindo a remoção de impressões antigas e da contribuição delas para as estatísticas. Adequado a automações que reduzem o histórico de impressão.`,manageProjects:`Gerenciar projetos`,manageProjectsDescription:`Criar, atualizar e excluir projetos e adicionar arquivos de impressão a eles. Adequado a automações que organizam as impressões em projetos.`,maintenanceBadge:`Manutenção`,archivesBadge:`Arquivos`,projectsBadge:`Projetos`,libraryBadge:`Biblioteca`,inventoryBadge:`Estoque`,cloudAccess:`Permitir acesso à nuvem`,cloudAccessDescription:`Lê predefinições e filamentos do Bambu Cloud em seu nome. Requer login no Bambu Cloud.`,cloudBadge:`Nuvem`,updateEnergyCost:`Atualizar preço da eletricidade`,updateEnergyCostDescription:`Permitir que esta chave envie POST de um novo preço por kWh para /settings/electricity-price. Útil para automações de tarifa dinâmica do Home Assistant (Tibber, Octopus, etc.). Este é o único campo de configuração gravável via API key.`,energyCostBadge:`Energia`,legacyKey:`Legado`,legacyKeyTooltip:`Criado antes da propriedade por usuário; recrie para acesso à nuvem`,unnamedKey:`Chave Sem Nome`,lastUsed:`Último uso`,read:`Ler`,control:`Controlar`,createFirstKey:`Crie sua primeira chave`,webhookEndpoints:`Endpoints de Webhook`,webhookApiKeyHint:`Use sua chave API no cabeçalho X-API-Key.`,webhook:{getAllStatus:`Obter status de todas as impressoras`,getSpecificStatus:`Obter status de uma impressora específica`,addToQueue:`Adicionar à fila de impressão`,pausePrint:`Pausar impressão`,resumePrint:`Retomar impressão`,stopPrint:`Parar impressão`},apiBrowser:`Navegador API`,apiBrowserDescription:`Explore e teste todos os endpoints de API disponíveis.`,apiKeyForTesting:`Chave API para Teste`,apiKeyPlaceholder:`Cole sua chave API aqui para testar endpoints autenticados...`,apiKeyHint:`Esta chave será enviada como cabeçalho X-API-Key nas solicitações.`,deleteApiKeyTitle:`Excluir Chave API`,deleteApiKeyMessage:`Tem certeza de que deseja excluir esta chave API? Quaisquer integrações usando esta chave deixarão de funcionar.`,deleteKey:`Excluir Chave`,amsDisplayThresholds:`Limiares de Exibição AMS`,amsThresholdsDescription:`Configure os limiares de cores para os indicadores de umidade e temperatura do AMS.`,humidity:`Umidade`,goodGreen:`Bom (verde)`,fairOrange:`Razoável (laranja)`,aboveFairBad:`Acima do limiar razoável mostra como vermelho (ruim)`,fairAlsoDryingThreshold:`Este limiar também é usado para acionar a secagem automática`,fairBelowDryingFloor:`A secagem automática não consegue atingir este valor: um AMS indica {{floor}}% ou mais enquanto aquece, então cada ciclo terminaria e recomeçaria de imediato. Aumente-o acima de {{floor}}% se usar a secagem automática.`,temperature:`Temperatura`,goodBlue:`Bom (azul)`,aboveFairHot:`Acima do limiar razoável mostra como vermelho (quente)`,tempAlarmThreshold:`Alarme acima de`,tempAlarmSeparateFromBand:`Apenas o limiar de alarme envia notificações — Bom e Razoável apenas colorem a exibição. Deixe vazio para alarmar no limiar razoável, como antes.`,tempAlarmMustBePositive:`Um limiar de 0 ou menos é ignorado — o alarme usa o limiar razoável.`,historyRetention:`Retenção de Histórico`,keepSensorHistory:`Manter histórico do sensor por`,historyRetentionDescription:`Dados antigos de umidade e temperatura serão automaticamente excluídos`,defaultPrintOptions:`Opções de impressão padrão`,defaultPrintOptionsDescription:`Defina valores padrão para opções de impressão. Podem ser alterados no diálogo de impressão.`,defaultBedLevelling:`Nivelamento da mesa`,defaultBedLevellingDesc:`Nivelar automaticamente a mesa antes da impressão`,defaultFlowCali:`Calibração de fluxo`,defaultFlowCaliDesc:`Calibrar fluxo de extrusão`,defaultVibrationCali:`Calibração de vibração`,defaultVibrationCaliDesc:`Reduzir artefatos de ringing`,defaultLayerInspect:`Inspeção da primeira camada`,defaultLayerInspectDesc:`Inspeção IA da primeira camada`,defaultTimelapse:`Timelapse`,defaultTimelapseDesc:`Gravar vídeo timelapse`,defaultNozzleOffsetCali:`Calibração de offset dos bicos`,defaultNozzleOffsetCaliDesc:`Calibrar offsets entre extrusores`,tempFanPresetsTitle:`Predefinições de temperatura e ventilador`,tempFanPresetsDescription:`Personalize os valores de seleção rápida exibidos nos popovers de temperatura e velocidade do ventilador do cartão da impressora. O botão Desligar sempre é exibido.`,tempFanPresetsNozzle:`Temperatura do bico`,tempFanPresetsBed:`Temperatura da mesa`,tempFanPresetsChamber:`Temperatura da câmara`,tempFanPresetsFan:`Velocidade do ventilador`,tempFanPresetsReset:`Restaurar padrões`,concurrentUploadsTitle:`Envios simultâneos`,concurrentUploadsDescription:`Quantas impressoras a fila pode abastecer com arquivos ao mesmo tempo. As impressoras recebem os arquivos lentamente (uma impressão grande pode levar vários minutos) e cada uma espera sua vez — portanto, em um parque maior, aumentar este valor evita que a última impressora de um lote tenha de esperar todas as transferências anteriores. Reduza-o se a sua rede ou o host do Bambuddy tiver dificuldade com transferências paralelas.`,concurrentUploadsLabel:`Impressoras abastecidas de uma vez`,concurrentUploadsHelp:`1 envia para uma impressora por vez (o comportamento anterior). O padrão é 4.`,staggeredStart:`Início escalonado`,staggeredStartDescription:`Tamanho de grupo e intervalo padrão ao escalonar inícios de lotes multi-impressora. Pode ser sobrescrito por lote no modal de impressão.`,preheatTitle:`Pré-aquecimento & Heat Soak`,preheatDescription:`Aquece a mesa (e a câmara, se suportada) e mantém a temperatura antes de iniciar cada impressão da fila. Útil para filamentos técnicos (PA, ABS) em impressoras sem aquecedor ativo de câmara — a mesa aquece a câmara por radiação enquanto o temporizador de soak roda. A temperatura alvo da mesa vem do arquivo de impressão; o comportamento da câmara depende do modelo da impressora.`,preheatEnabled:`Ativar pré-aquecimento & soak`,preheatEnabledDesc:`Quando desligado, as impressões na fila iniciam imediatamente. Cada item pode sobrescrever por impressão.`,preheatFilamentTargetsLabel:`Alvo da câmara por filamento (°C)`,preheatFilamentTargetsHint:`Bambuddy escolhe o alvo mais alto entre os slots AMS carregados; impressões apenas com PLA derivam 0 e pulam a fase da câmara automaticamente.`,preheatFilamentTargetsReset:`Redefinir para padrões`,preheatFilamentTargetsDefaultRow:`Outro / sem mapeamento`,preheatMaxWait:`Espera máx. (segundos)`,preheatMaxWaitHelp:`Teto da fase de aquecimento da câmara antes de passar ao soak.`,preheatSoak:`Soak (segundos)`,preheatSoakHelp:`Tempo de retenção após atingir o alvo ou expirar a espera máx.`,preheatHardwareTitle:`Comportamento por impressora:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E aquecem ativamente a câmara via M141. X1C/P2S leem a temperatura mas só aquecem a câmara por radiação da mesa. P1S/P1P/A1/A1 Mini não têm sensor de câmara — apenas o temporizador de soak se aplica.`,preheatPerItemDesc:`Aquece a mesa e a câmara antes desta impressão começar. Por padrão usa o interruptor global em Configurações → Workflow.`,preheatOverride_inherit:`Herdar`,preheatOverride_on:`Ligado`,preheatOverride_off:`Desligado`,calibrationMode_off:`Desligado`,calibrationMode_on:`Ligado`,calibrationMode_auto:`Auto`,preheatTargetOverride:`Sobrescrever alvo da câmara (°C, vazio = por filamento)`,plateClear:`Confirmação de placa livre`,requirePlateClear:`Exigir confirmação de placa livre`,requirePlateClearDescription:`Quando ativado, o agendador aguarda uma confirmação de placa livre por impressora antes de iniciar impressões na fila em impressoras com trabalhos concluídos. Desativar isso também oculta o indicador de status da placa e o botão "Marcar placa como liberada" nos cartões das impressoras.`,keepBedWarm:`Manter a mesa aquecida entre impressões`,keepBedWarmDesc:`Enquanto aguarda a confirmação de placa limpa, mantém a mesa na temperatura de aquecimento definida abaixo para que a câmara continue quente — ou na temperatura da mesa da próxima impressão, se for maior. Aplica-se apenas quando a próxima impressão requer aquecimento de câmara (ASA, ABS, PA, PC, etc.). Requer a confirmação de placa limpa ativada.`,keepWarmBedTemp:`Temperatura da mesa em aquecimento (°C)`,keepWarmBedTempHelp:`Usado sempre que a mesa serve para aquecer a câmara: durante a manutenção aquecida e no pré-aquecimento quando o arquivo de impressão não traz temperatura da mesa. Uma temperatura maior vinda do arquivo sempre prevalece.`,keepWarmMaxMinutes:`Parar de manter aquecido após (minutos)`,keepWarmMaxMinutesHelp:`Se a placa não for liberada dentro desse tempo, os aquecedores são desligados em vez de ficarem ligados indefinidamente.`,gcodeInjection:`Injeção de G-code`,gcodeInjectionDescription:`Configure G-code personalizado para injetar no início e/ou no final das impressões para sistemas de impressão automática como Farmloop, SwapMod, AutoClear e Printflow 3D. Os snippets são configurados por modelo de impressora e aplicados quando "Injetar G-code" está ativado em um item da fila.`,gcodeInjectionNoPrinters:`Nenhuma impressora encontrada. Adicione impressoras para configurar snippets de G-code.`,gcodeStartLabel:`G-code inicial`,gcodeEndLabel:`G-code final`,gcodeStartPlaceholder:`G-code inserido antes do início da impressão...`,gcodeEndPlaceholder:`G-code adicionado após o término da impressão...`,staggerGroupSize:`Tamanho do grupo`,staggerGroupSizeHelp:`Impressoras para iniciar simultaneamente por grupo`,staggerInterval:`Intervalo (minutos)`,staggerIntervalHelp:`Atraso entre o início de cada grupo`,queueDrying:`Secagem Automática`,queueDryingDescription:`Secar automaticamente o filamento AMS quando a impressora estiver ociosa entre impressões na fila. Usa o limite de umidade acima.`,queueDryingEnabled:`Ativar secagem automática`,queueDryingEnabledDescription:`Iniciar secagem AMS automaticamente quando a impressora estiver ociosa e a umidade estiver acima do limite`,queueDryingBlock:`Aguardar conclusão da secagem`,queueDryingBlockDescription:`Bloquear a fila de impressão até a secagem terminar. Quando desativado, impressões têm prioridade.`,ambientDryingEnabled:`Secagem ambiente`,ambientDryingEnabledDescription:`Secar automaticamente o filamento em impressoras ociosas quando a umidade exceder o limite, mesmo sem impressões na fila.`,printDryingEnabled:`Continuar secagem durante a impressão`,printDryingEnabledDescription:`Permite que a secagem automática continue funcionando durante uma impressão em hardware compatível (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L com firmware recente). A temperatura de secagem é limitada automaticamente 5°C abaixo do valor de inatividade para proteger as bobinas.`,dryingPresets:`Predefinições de secagem`,dryingPresetsDescription:`Temperatura e duração por tipo de filamento. AMS 2 Pro usa temperaturas mais baixas, AMS-HT suporta temperaturas mais altas.`,dryingFilament:`Filamento`,humidityThresholds:`Limites de umidade`,humidityThresholdsDescription:`Gatilho de umidade por tipo de filamento para secagem automática e alarmes. Cargas mistas em um AMS usam o limite mais baixo.`,humidityThresholdCol:`Limite`,humidityThresholdDefault:`Padrão (tipos desconhecidos)`,printModal:`Modal de Impressão`,expandCustomMapping:`Expandir mapeamento personalizado por padrão`,expandCustomMappingDescription:`Ao imprimir em várias impressoras, mostrar o mapeamento AMS por impressora expandido`,authentication:`Autenticação`,authEnabledDescription:`Sua instância está protegida com autenticação de usuário`,authDisabledDescription:`Ative para exigir login e gerenciar o acesso dos usuários`,authDisabledMessage:`Ative a autenticação para criar contas de usuário, gerenciar permissões e proteger sua instância do Bambuddy.`,enableAuthentication:`Ativar Autenticação`,currentUser:`Usuário Atual`,changePassword:`Alterar Senha`,admin:`Administrador`,users:`Usuários`,addUser:`Adicionar Usuário`,groups:`Grupos`,addGroup:`Adicionar Grupo`,system:`Sistema`,noDescription:`Sem descrição`,userCount:`{{count}} usuários`,permissionCount:`{{count}} permissões`,createUser:`Criar Usuário`,username:`Nome de Usuário`,enterUsername:`Digite o nome de usuário`,password:`Senha`,enterPassword:`Digite a senha`,passwordRequirements:`Pelo menos 8 caracteres, com uma maiúscula, uma minúscula, um dígito e um caractere especial.`,confirmPassword:`Confirmar Senha`,confirmPasswordPlaceholder:`Confirme a senha`,viewReleaseOnGitHub:`Ver lançamento no GitHub`,turnAllPlugsOn:`Ligar todas as tomadas`,turnAllPlugsOff:`Desligar todas as tomadas`,clearNotificationLogs:`Limpar Logs de Notificação`,clearLogsMessage:`Isso excluirá permanentemente todos os logs de notificação com mais de 30 dias. Esta ação não pode ser desfeita.`,clearLogs:`Limpar Logs`,resetUiPreferences:`Redefinir Preferências de UI`,resetUiPreferencesMessage:`Isso redefinirá todas as preferências de UI para os padrões: ordem da barra lateral, tema, layout do painel, modos de exibição e preferências de classificação. Suas impressoras, arquivos e configurações do servidor NÃO serão afetados. A página será recarregada após a limpeza.`,resetPreferences:`Redefinir Preferências`,deleteGroupTitle:`Excluir Grupo`,deleteGroupMessage:`Tem certeza de que deseja excluir este grupo? Usuários neste grupo perderão essas permissões.`,deleteGroup:`Excluir Grupo`,disableAuthenticationTitle:`Desativar Autenticação`,disableAuthenticationMessage:`Tem certeza de que deseja desativar a autenticação? Isso tornará sua instância do Bambuddy acessível sem login. Todos os usuários permanecerão no banco de dados, mas a autenticação será desativada.`,disableAuthentication:`Desativar Autenticação`,configureBambuddy:`Configurar Bambuddy`,systemDefault:`Padrão do Sistema`,archiveSettings:`Configurações de Arquivo`,newWindow:`Nova Janela`,embeddedOverlay:`Sobreposição Incorporada`,preferredSlicer:`Fatiador Preferido`,preferredSlicerDescription:`Fatiador usado para fatiamento no aplicativo via sidecar da API`,openInSlicerLabel:`Abrir no fatiador`,openInSlicerInherit:`Mesmo do fatiador da API`,openInSlicerDescription:`Fatiador de desktop usado pelo botão 'Abrir no fatiador'. Mantenha em 'Mesmo do fatiador da API' para herdar, ou escolha um fatiador diferente para uso local.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev têm bugs CLI conhecidos que bloqueiam o fatiamento de muitos 3MFs criados pela Bambu — veja issues upstream #12426 (segfault em arquivos multi-extrusor pintados) e #13386 (rejeição de validação estrita de intervalos de parâmetros). Bambu Studio é recomendado até as correções upstream chegarem.`,useSlicerApi:`Usar API do fatiador`,useSlicerApiDescription:`Quando ativo, as ações "Slice" abrem o modal do fatiador interno e chamam o sidecar slicer-API. Quando inativo (padrão), redirecionam ao fatiador desktop via esquema URI.`,slicerCard:`Fatiador`,orcaslicerApiUrl:`OrcaSlicer sidecar URL`,bambuStudioApiUrl:`Bambu Studio sidecar URL`,slicerStallTimeout:`Tempo limite de inatividade do fatiador (minutos)`,slicerStallTimeoutDescription:`Desiste de um fatiamento apos esse tempo sem progresso do sidecar. Modelos pesados que continuam relatando progresso nunca sao interrompidos, por mais que demorem. Sidecars que nao relatam progresso usam este valor como limite de tempo total.`,slicerApiUrlDescription:`URL do contêiner sidecar slicer-API. Deixe em branco para usar SLICER_API_URL / BAMBU_STUDIO_API_URL.`,externalCameras:`Câmeras Externas`,costTracking:`Rastreamento de Custos`,printsOnly:`Apenas Impressões`,totalConsumption:`Consumo Total`,dataManagement:`Gerenciamento de Dados`,storageUsage:`Uso de Armazenamento`,storageUsageDescription:`Detalhamento do uso de dados por categoria`,storageUsageTotal:`Total`,storageUsageErrors:`Erros`,storageUsageOtherBreakdown:`Outros (inclui ativos estáticos, scripts e arquivos de configuração)`,storageUsageSystem:`Sistema`,storageUsageData:`Dados`,storageUsageUnavailable:`Informações de uso de armazenamento indisponíveis`,clearNotificationLogsDescription:`Excluir logs de notificação com mais de 30 dias`,resetUiPreferencesDescription:`Redefinir ordem da barra lateral, tema, modos de exibição e preferências de layout. Impressoras, arquivos e configurações não são afetados.`,enableHomeAssistant:`Ativar Home Assistant`,enableMqtt:`Ativar MQTT`,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`,leaveEmptyForAnonymous:`Deixe vazio para anônimo`,leaveEmptyForNoAuth:`Deixe vazio para sem autenticação`,enterNewPassword:`Digite a nova senha`,confirmNewPassword:`Confirme a nova senha`,enterGroupName:`Digite o nome do grupo`,enterDescriptionOptional:`Digite a descrição (opcional)`,enterCurrentPassword:`Digite a senha atual`,enterNewPasswordMin6:`Digite a nova senha (mínimo 6 caracteres)`,toast:{keyCopied:`Chave copiada para a área de transferência`,copyFailed:`Falha ao copiar a chave`,keyAddedToBrowser:`Chave adicionada ao Navegador de API`,clearLogsFailed:`Falha ao limpar logs`,uiPreferencesReset:`Preferências de UI redefinidas. Atualizando...`,authDisabled:`Autenticação desativada com sucesso`,authDisableFailed:`Falha ao desativar a autenticação`,apiKeyCreated:`Chave de API criada`,apiKeyDeleted:`Chave de API excluída`,userCreated:`Usuário criado com sucesso`,userUpdated:`Usuário atualizado com sucesso`,userDeleted:`Usuário excluído com sucesso`,groupCreated:`Grupo criado com sucesso`,groupUpdated:`Grupo atualizado com sucesso`,groupDeleted:`Grupo excluído com sucesso`,fillRequiredFields:`Por favor, preencha todos os campos obrigatórios`,passwordsDoNotMatch:`As senhas não coincidem`,passwordTooShort:`A senha deve ter pelo menos 8 caracteres`,passwordNeedsUppercase:`A senha deve conter pelo menos uma letra maiúscula`,passwordNeedsLowercase:`A senha deve conter pelo menos uma letra minúscula`,passwordNeedsDigit:`A senha deve conter pelo menos um dígito`,passwordNeedsSpecial:`A senha deve conter pelo menos um caractere especial`,enterGroupName:`Por favor, insira um nome de grupo`,settingsSaved:`Configurações salvas`,noPermissionUpdate:`Você não tem permissão para alterar as configurações`,cameraSettingsSaved:`Configurações da câmera salvas`,enterCameraUrl:`Por favor, insira a URL da câmera`,passwordChanged:`Senha alterada com sucesso`,connectionFailed:`Falha na conexão`,testFailed:`Falha no teste`,cameraConnected:`Câmera conectada{{resolution}}`,cameraConnectedCoalesced:`Câmera conectada{{resolution}} (compartilhada com uma captura já em andamento)`},testConnection:`Testar Conexão`,catalog:{spoolCatalog:`Catálogo de Carretéis`,spoolCatalogDescription:`Pesos de carretéis vazios por marca/tipo. Usado para pesquisa automática de peso ao adicionar carretéis.`,searchCatalog:`Pesquisar no catálogo...`,addNewEntry:`Adicionar Nova Entrada`,namePlaceholder:`Nome (ex.: Bambu Lab - Plástico)`,weight:`Peso`,type:`Tipo`,default:`Padrão`,custom:`Personalizado`,noMatch:`Nenhuma entrada corresponde à sua pesquisa`,empty:`Nenhuma entrada no catálogo`,deleteEntry:`Excluir Entrada`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"?`,resetCatalog:`Redefinir Catálogo`,resetConfirm:`Redefinir catálogo para os padrões? Isso removerá todas as entradas personalizadas.`,loadFailed:`Falha ao carregar o catálogo de carretéis`,nameWeightRequired:`Nome e peso são obrigatórios`,entryAdded:`Entrada adicionada`,addFailed:`Falha ao adicionar entrada`,entryUpdated:`Entrada atualizada`,updateFailed:`Falha ao atualizar entrada`,entryDeleted:`Entrada excluída`,deleteFailed:`Falha ao excluir entrada`,resetSuccess:`Catálogo redefinido para os padrões`,resetFailed:`Falha ao redefinir catálogo`,exported:`Exportadas {{count}} entradas`,imported:`Importadas {{added}} entradas ({{skipped}} ignoradas)`,importFailed:`Falha ao importar: formato JSON inválido`,exportTooltip:`Exportar catálogo para JSON`,importTooltip:`Importar catálogo de JSON`,resetTooltip:`Redefinir para os padrões`,selectedCount:`{{count}} selecionados`,deleteSelected:`Excluir Selecionados`,bulkDeleteConfirm:`Tem certeza de que deseja excluir {{count}} entradas?`,bulkDeleted:`{{count}} entradas excluídas`,bulkDeleteFailed:`Falha ao excluir entradas`,material:`Material`,spoolWeight:`Peso do carretel`,color:`Cor`,updateSpoolWeight:`Atualizar peso do carretel`,filamentUpdated:`Filamento atualizado`,filamentUpdateFailed:`Falha ao atualizar filamento`,filamentUpdateInvalid:`Dados de filamento inválidos`,keepExistingSpoolWeight:`Manter peso antigo para carretéis existentes`,keepExistingSpoolWeightDesc:`Os carretéis já criados com este tipo de filamento mantêm o peso tara antigo. Novos carretéis usam o valor atualizado.`,applyToAllSpools:`Aplicar a todos os carretéis`,applyToAllSpoolsDesc:`Todos os cálculos de peso para este tipo de filamento usam imediatamente o novo peso tara.`},colorCatalog:{title:`Catálogo de Cores`,description:`Cores de filamento por fabricante/material. Usado para pesquisa automática de cores ao adicionar carretéis.`,searchColors:`Pesquisar cores...`,allManufacturers:`Todos os fabricantes`,addNewColor:`Adicionar Nova Cor`,manufacturer:`Fabricante`,colorName:`Nome da Cor`,hex:`Hex`,materialOptional:`Material (opcional)`,showing:`Mostrando {{filtered}} de {{total}} cores`,noMatch:`Nenhuma cor corresponde à sua pesquisa`,empty:`Nenhuma cor no catálogo`,deleteColor:`Excluir Cor`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"?`,resetCatalog:`Redefinir Catálogo de Cores`,resetConfirm:`Redefinir catálogo para os padrões? Isso removerá todas as cores personalizadas.`,sync:`Sincronizar`,starting:`Iniciando...`,syncTooltip:`Sincronizar do FilamentColors.xyz (2000+ cores, pode levar um minuto)`,loadFailed:`Falha ao carregar o catálogo de cores`,fieldsRequired:`Fabricante, nome da cor e cor hex são obrigatórios`,colorAdded:`Cor adicionada`,addFailed:`Falha ao adicionar cor`,colorUpdated:`Cor atualizada`,updateFailed:`Falha ao atualizar cor`,colorDeleted:`Cor excluída`,deleteFailed:`Falha ao excluir cor`,resetSuccess:`Catálogo de cores redefinido para os padrões`,resetFailed:`Falha ao redefinir catálogo`,syncUpToDate:`Já está atualizado ({{count}} cores verificadas)`,syncComplete:`Adicionadas {{added}} novas cores ({{skipped}} já existiam)`,syncError:`Erro de sincronização`,syncFailed:`Falha ao sincronizar do FilamentColors.xyz`,exported:`Exportadas {{count}} cores`,imported:`Importadas {{added}} cores ({{skipped}} ignoradas)`,importFailed:`Falha ao importar: formato JSON inválido`,selectedCount:`{{count}} selecionados`,deleteSelected:`Excluir Selecionados`,bulkDeleteConfirm:`Tem certeza de que deseja excluir {{count}} cores?`,bulkDeleted:`{{count}} cores excluídas`,bulkDeleteFailed:`Falha ao excluir cores`},dateFormat:`Formato de data`,dateFormatUs:`US (MM/DD/AAAA)`,dateFormatEu:`EU (DD/MM/AAAA)`,dateFormatIso:`ISO (AAAA-MM-DD)`,timeFormat:`Formato de hora`,timeFormat12:`12 horas (3:30 PM)`,timeFormat24:`24 horas (15:30)`,defaultPrinter:`Impressora padrão`,defaultPrinterDescription:`Pré-selecionar esta impressora para uploads, reimpressões e outras operações.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`Use o layout da barra lateral para reordenar itens, restaurar a visibilidade e gerenciar links personalizados.`,setDefault:`Definir padrão`,sidebarOrderSetDefaultHint:`Definir padrão aplica a ordem atual do menu aos usuários que ainda não personalizaram o seu.`,sidebarDefaultSet:`Ordem padrão do menu foi definida.`,sidebarDefaultCleared:`Ordem padrão do menu removida.`,sidebarDefaultFailed:`Falha ao definir a ordem padrão do menu.`,reset:`Redefinir`,darkMode:`Modo escuro`,lightMode:`Modo claro`,active:`(ativo)`,background:`Fundo`,accent:`Destaque`,style:`Estilo`,bgNeutral:`Neutro`,bgWarm:`Quente`,bgCool:`Frio`,bgOled:`OLED Preto`,bgSlate:`Azul ardósia`,bgForest:`Verde floresta`,accentGreen:`Verde`,accentTeal:`Azul-petróleo`,accentBlue:`Azul`,accentOrange:`Laranja`,accentPurple:`Roxo`,accentRed:`Vermelho`,styleClassic:`Clássico`,styleGlow:`Brilhante`,styleVibrant:`Vibrante`,themeToggleHint:`Alternar entre modo escuro, claro e sistema usando o ícone na barra lateral.`,progressInTitle:`Progresso na aba`,progressInTitleDescription:`Mostra a porcentagem da impressão ativa e um anel de progresso na aba do navegador.`,autoArchivePrints:`Arquivar impressões automaticamente`,autoArchiveDescription:`Salvar automaticamente arquivos 3MF quando impressões forem concluídas`,saveThumbnailsDescription:`Extrair e salvar imagens de pré-visualização dos arquivos 3MF`,captureFinishPhotoDescription:`Tirar foto da câmera da impressora quando a impressão for concluída. Bambuddy grava um timelapse curto durante a impressão para que a foto possa ser obtida do momento antes da mesa descer; o arquivo do timelapse é mantido se você habilitou o timelapse para esta impressão, caso contrário ele é excluído automaticamente após a captura da foto.`,finishPhotoRestorePlate:`Elevar a mesa para a foto final`,finishPhotoRestorePlateDescription:`A impressora baixa a mesa cerca de 100 mm ao fim de uma impressão, deixando a peça pronta abaixo do enquadramento da câmera. O Bambuddy a eleva novamente até logo acima da última camada impressa, tira a foto e depois a baixa de novo. Ignorado quando a altura da impressão é desconhecida ou há outro trabalho na fila.`,ffmpegNotInstalled:`ffmpeg não instalado`,ffmpegRequired:`A captura de câmera requer ffmpeg. Instale via brew install ffmpeg (macOS) ou apt install ffmpeg (Linux).`,camera:`Câmera`,cameraViewMode:`Modo de visualização da câmera`,cameraOverlayDescription:`A câmera abre em uma sobreposição redimensionável na tela principal`,cameraWindowDescription:`A câmera abre em uma janela separada do navegador`,externalCamerasDescription:`Configure câmeras externas para substituir a câmera integrada da impressora. Suporta streams MJPEG, RTSP, snapshots HTTP e câmeras USB (V4L2). Quando habilitada, a câmera externa é usada para visualização ao vivo e fotos de conclusão.`,cameraPlaceholderUsb:`Caminho do dispositivo (/dev/video0)`,cameraPlaceholderUrl:`URL da câmera (rtsp://... ou http://...)`,cameraTypeMjpeg:`Stream MJPEG`,cameraTypeRtsp:`Stream RTSP`,cameraTypeSnapshot:`Snapshot HTTP`,cameraTypeUsb:`Câmera USB (V4L2)`,cameraSnapshotUrl:`URL de captura (opcional)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`URL de frame único usado para miniaturas de notificação, fotos de finalização, frames do timelapse por camada e detecção de mesa. Timelapse e detecção de mesa requerem cada um seu próprio toggle por impressora — esta URL é apenas a fonte de imagem que eles usam quando ativos. Deixe em branco para capturar do stream ao vivo acima. Útil para go2rtc (/api/frame.jpeg) e câmeras IP com endpoint de captura dedicado.`,cameraRotation:`Rotação`,test:`Testar`,connected:`Conectado`,disconnected:`Desconectado`,currency:`Moeda`,defaultFilamentCost:`Custo padrão do filamento (por kg)`,electricityCost:`Custo da eletricidade por kWh`,energyDisplayMode:`Modo de exibição de energia`,energyModePrintDescription:`O painel mostra a soma da energia usada durante as impressões`,energyModeTotalDescription:`O painel mostra a energia total dos plugues inteligentes`,fileManager:`Gerenciador de arquivos`,createArchiveEntry:`Criar entrada de arquivo ao imprimir`,createArchiveEntryDescription:`Ao imprimir pelo gerenciador de arquivos, criar opcionalmente uma entrada de arquivo`,lowDiskSpaceWarning:`Aviso de pouco espaço em disco`,lowDiskSpaceDescription:`Mostrar aviso quando o espaço livre em disco ficar abaixo deste limite`,printerFirmware:`Firmware da impressora`,checkFirmwareDescription:`Verificar atualizações de firmware da Bambu Lab`,bambuddySoftware:`Software Bambuddy`,autoCheckDescription:`Verificar automaticamente novas versões ao iniciar`,checkNow:`Verificar agora`,updateAvailableVersion:`Atualização disponível: v{{version}}`,releaseNotes:`Notas da versão`,updateViaDocker:`Atualizar via Docker Compose:`,composeDirectory:`Diretório do Compose`,composeDirectoryHint:`Diretório que contém seu docker-compose.yml. Deixe em branco para omitir o cd.`,copyUpdateCommand:`Copiar comando de atualização`,updateViaHomeAssistant:`As atualizações são gerenciadas pelo Supervisor do Home Assistant. Abra Configurações → Complementos → Bambuddy no Home Assistant para instalar a nova versão.`,updateViaWindowsInstaller:`Instalações no Windows são atualizadas executando o instalador novamente. Baixe a nova versão abaixo — seus dados, configurações e impressoras são preservados.`,downloadWindowsInstaller:`Baixar instalador da v{{version}}`,installUpdate:`Instalar atualização`,latestVersionRunning:`Você está usando a versão mais recente`,failedToCheckUpdates:`Falha ao verificar atualizações: {{error}}`,backupRestore:`Backup e Restauração`,backupRestoreDescription:`Exportar/importar configurações e configurar backup do GitHub`,goToBackup:`Ir para backup`,externalUrl:`URL externa`,externalUrlDescription:`A URL externa onde o Bambuddy está acessível. Usada para imagens de notificação e integrações externas.`,bambuddyUrl:`URL do Bambuddy`,externalUrlHint:`Inclua protocolo e porta (ex: http://192.168.1.100:8000)`,ftpRetry:`Tentativa FTP`,ftpRetryDescription:`Tentar novamente operações FTP quando o WiFi da impressora é instável. Aplica-se a downloads 3MF, uploads de impressão, downloads de timelapse e atualizações de firmware.`,autoRetryDescription:`Tentar novamente automaticamente operações FTP que falharam`,retryAttempts:`Tentativas de reenvio`,retryDelay:`Atraso entre tentativas`,connectionTimeout:`Tempo limite de conexão`,time_one:`{{count}} vez`,time_other:`{{count}} vezes`,second_one:`{{count}} segundo`,second_other:`{{count}} segundos`,nSeconds:`{{count}} segundos`,increaseForWeakWifi:`Aumente para impressoras com WiFi fraco`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Conecte ao Home Assistant para controlar plugues inteligentes via API REST do HA. Suporta entidades switch, light, input_boolean e script.`,homeAssistantUrl:`URL do Home Assistant`,longLivedAccessToken:`Token de acesso de longa duração`,haTokenHint:`Crie um token no HA: Perfil → Tokens de acesso de longa duração → Criar token`,connectionSuccessful:`Conexão bem-sucedida`,connectionFailed:`Falha na conexão`,haConnectionSuccess:`Conectado com sucesso ao Home Assistant.`,haConnectionFailed:`Falha ao conectar ao Home Assistant.`,mqttPublishing:`Publicação MQTT`,mqttDescription:`Publique eventos do BamBuddy para um broker MQTT externo para integração com Node-RED, Home Assistant e outros sistemas de automação.`,mqttEnableDescription:`Publicar eventos no broker MQTT externo`,brokerHostname:`Hostname do broker`,port:`Porta`,usernameOptional:`Usuário (opcional)`,passwordOptional:`Senha (opcional)`,topicPrefix:`Prefixo do tópico`,topicPrefixHint:`Os tópicos serão: {{prefix}}/printers//status, etc.`,prometheusMetrics:`Métricas Prometheus`,prometheusEndpointDescription:`Expor métricas da impressora em /api/v1/metrics para monitoramento Prometheus/Grafana.`,bearerTokenOptional:`Token Bearer (opcional)`,bearerTokenHint:`Se definido, as requisições devem incluir Authorization: Bearer `,metricsConnectionStatus:`Status da conexão`,metricsPrinterState:`Estado da impressora (idle/printing/etc)`,metricsPrintProgress:`Progresso da impressão 0-100%`,metricsBedTemp:`Temperatura da mesa`,metricsNozzleTemp:`Temperatura do bico`,metricsPrintsTotal:`Total de impressões por resultado`,metricsMore:`...e mais (camadas, ventoinhas, fila, uso de filamento)`,smartPlugsDescription:`Conecte plugues inteligentes (Tasmota ou Home Assistant) para automatizar o controle de energia e rastrear o consumo energético das suas impressoras.`,allOn:`Ligar todos`,allOff:`Desligar todos`,addSmartPlug:`Adicionar plugue inteligente`,energySummary:`Resumo de energia`,currentPower:`Potência atual`,plugsOnline:`{{reachable}}/{{total}} plugues online`,today:`Hoje`,yesterday:`Ontem`,total:`Total`,enablePlugsForSummary:`Habilite os plugues para ver o resumo de energia`,addNotificationProvider:`Adicionar`,systemBadge:`(Sistema)`,creating:`Criando...`,changing:`Alterando...`,deleteUserAndItems:`Excluir usuário E seus itens`,deleteUserKeepItems:`Excluir usuário, manter itens (ficarão sem dono)`,ok:`OK`,twoFa:{totpTitle:`App Autenticador (TOTP)`,totpDesc:`Use um app como Google Authenticator, Aegis ou Authy.`,emailOtpTitle:`OTP por e-mail`,emailOtpDesc:`Envie um código único para {{email}} ao fazer login.`,emailOtpNoEmail:`Adicione um endereço de e-mail à sua conta para ativar este método.`,addEmailFirst:`Sua conta não tem endereço de e-mail. Peça a um administrador para adicionar um.`,setupTotp:`Configurar App Autenticador`,setupAuthApp:`Configurar App Autenticador`,setupInstructions:`Escaneie o código QR com seu app autenticador e confirme com um código.`,manualEntry:`Não consegue escanear? Digite este segredo manualmente:`,scannedContinue:`Código escaneado — continuar`,enterCodeToConfirm:`Digite o código de 6 dígitos do seu app autenticador para confirmar.`,activate:`Ativar`,disableTotp:`Desativar Autenticador`,disableConfirmHint:`Digite um código TOTP válido ou um código de backup para desativar o autenticador.`,totpDisabled:`App autenticador desativado.`,emailOtpEnabled:`OTP por e-mail ativado.`,emailOtpDisabled:`OTP por e-mail desativado.`,smtpRequired:`Por favor, configure e teste as configurações SMTP primeiro.`,invalidCode:`Código inválido. Por favor, tente novamente.`,enableEmailOtp:`Ativar OTP por e-mail`,disableEmailOtp:`Desativar OTP por e-mail`,emailSetupEnterCode:`Um código de verificação foi enviado para o seu endereço de e-mail. Digite-o abaixo para confirmar que você possui esta caixa de entrada.`,verifyAndEnable:`Verificar e Ativar`,emailDisablePasswordHint:`Digite a senha da sua conta para confirmar a desativação do OTP por e-mail.`,passwordPlaceholder:`Digite sua senha`,backupCodesTitle:`Salve seus códigos de backup`,backupCodesWarning:`Guarde estes códigos em lugar seguro. Cada código só pode ser usado uma vez.`,backupCodesRemaining:`{{count}} códigos de backup restantes`,savedCodes:`Códigos salvos`,regenBackup:`Regenerar códigos de backup`,regenBackupHint:`Digite seu código TOTP atual para gerar 10 novos códigos de backup.`,newBackupCodes:`Novos códigos de backup`,linkedAccounts:`Contas SSO vinculadas`,linkedAccountsDesc:`Estes provedores de identidade externos estão vinculados à sua conta.`,oidcUnlinked:`Conta desvinculada.`},sessionPolicy:{title:`Política de sessão`,description:`Duração máxima da sessão para novos logins de usuário. Tokens já emitidos mantêm sua expiração original.`,preset24h:`24 horas`,preset7d:`7 dias`,preset30d:`30 dias`,customHoursLabel:`Duração personalizada da sessão em horas`,hoursSuffix:`horas`,warning:`Sessões mais longas reduzem a proteção de logout automático. Recomendado apenas para implantações de usuário único confiáveis.`},oidc:{title:`Provedores SSO / OIDC`,desc:`Configure provedores OpenID Connect para login único.`,addProvider:`Adicionar provedor`,newProvider:`Novo provedor`,empty:`Nenhum provedor OIDC configurado ainda.`,created:`Provedor criado.`,updated:`Provedor atualizado.`,deleted:`Provedor excluído.`,refreshIcon:`Atualizar ícone`,removeIcon:`Remover ícone`,iconRefreshed:`Ícone atualizado.`,iconRemoved:`Ícone removido.`,iconFetchFailed:`Não foi possível obter o ícone da URL do provedor.`,deleteTitle:`Excluir provedor`,deleteMessage:`Excluir "{{name}}"? Todas as contas vinculadas serão desconectadas.`,form:{name:`Nome de exibição`,issuerUrl:`URL do emissor`,clientId:`ID do cliente`,clientSecret:`Client secret`,scopes:`Escopos`,iconUrl:`URL do ícone (opcional)`,enabled:`Ativado`,autoCreate:`Criar usuários automaticamente`,autoCreateDesc:`Cria automaticamente uma conta local no primeiro login.`,autoLink:`Vincular contas existentes automaticamente`,autoLinkDesc:`Vincula contas locais existentes por e-mail no primeiro login.`,secretHint:`deixe em branco para manter`,secretPlaceholder:`novo segredo`,emailClaim:`Claim de e-mail`,emailClaimDesc:`Claim JWT usado como identidade de e-mail. Use 'preferred_username' ou 'upn' para Azure Entra ID (que não envia email_verified). Use apenas nomes de claim confiáveis.`,emailClaimPlaceholder:`e-mail`,emailClaimCustomClaimAutoLinkWarning:`Claims personalizadas são seguras para vinculação automática apenas quando o valor é administrado pelo tenant (ex. Azure Entra ID upn / preferred_username). Não ative a vinculação automática se seu IdP permite que usuários auto-declarem essa claim.`,requireEmailVerified:`Exigir e-mail verificado`,requireEmailVerifiedDesc:`Aceitar o claim de e-mail apenas quando o provedor o marcar como verificado.`,requireEmailVerifiedWarning:`Aviso: o e-mail será aceito sem verificação. Use apenas com provedores confiáveis.`,requireEmailVerifiedAutoLink:`Desabilite o vínculo automático primeiro para alterar esta configuração.`,defaultGroup:`Grupo padrão`,defaultGroupDesc:`Grupo atribuído aos usuários criados automaticamente. Retorna a Viewers se não definido.`,defaultGroupViewersFallback:`Viewers (padrão)`,autologin:`Login automático`,autologinDesc:`Redirecionar visitantes não autenticados diretamente para este provedor. Apenas um provedor pode ter esta marcação.`}},encryption:{title:`Status de criptografia MFA`,enabledFromEnv:`Criptografia em repouso ativa (chave da variável de ambiente MFA_ENCRYPTION_KEY)`,enabledFromFile:`Criptografia em repouso ativa (chave do diretório de dados)`,enabledGenerated:`Criptografia em repouso ativa com chave auto-gerada`,notConfigured:`Criptografia em repouso não configurada`,notConfiguredDesc:`Os segredos TOTP e client_secrets OIDC são armazenados em texto plano. Defina MFA_ENCRYPTION_KEY ou reinicie o Bambuddy com um diretório de dados gravável para gerar automaticamente.`,allEncrypted:`Todos os segredos MFA são criptografados em repouso.`,legacyRowsLabel:`Linhas legadas em texto plano`,encryptedRowsLabel:`Linhas criptografadas`,legacyRowsWarning:`{{count}} linha(s) legada(s) em texto plano detectada(s). Salve novamente o provedor OIDC ou registre novamente o autenticador do usuário para migrar ao armazenamento criptografado.`,backupHint:`A chave auto-gerada é armazenada em DATA_DIR/.mfa_encryption_key e incluída em ZIPs de backup locais. Mantenha seus backups seguros ou defina MFA_ENCRYPTION_KEY explicitamente.`,decryptionBrokenTitle:`Chave de criptografia ausente`,decryptionBrokenError:`{{count}} registro(s) criptografado(s) não podem ser descriptografados pois a chave de criptografia não está mais disponível. Restaure o MFA_ENCRYPTION_KEY anterior ou DATA_DIR/.mfa_encryption_key para recuperar.`,migrationErrorWarning:`{{count}} linha(s) antiga(s) não puderam ser recriptografadas na inicialização. Verifique os logs do servidor e reinicie o Bambuddy para tentar novamente.`},spoolbuddy:{infoTitle:`Dispositivos SpoolBuddy`,infoBody:`Os kiosks SpoolBuddy se registram automaticamente via heartbeat. Cancele o registro de um dispositivo aqui se não estiver mais em uso ou se um duplicado obsoleto foi deixado por uma falha do daemon.`,duplicatesTitle:`{{count}} dispositivos registrados`,duplicatesBody:`Apenas o primeiro dispositivo registrado é usado pela interface do kiosk. Se algum destes for um duplicado obsoleto após uma falha, cancele seu registro — um dispositivo online se registrará novamente no próximo heartbeat.`,empty:`Nenhum dispositivo SpoolBuddy registrado ainda.`,online:`Online`,offline:`Offline`,unregister:`Cancelar registro`,unregisterSuccess:`Dispositivo removido`,unregisterError:`Falha ao cancelar registro`,confirmTitle:`Cancelar registro do dispositivo SpoolBuddy?`,confirmBody:`Isso removerá "{{hostname}}" ({{deviceId}}) do banco de dados. Se o dispositivo estiver online, ele se registrará novamente no próximo heartbeat.`,ipAddress:`Endereço IP`,firmware:`Firmware`,lastSeen:`Visto pela última vez`,daemonUptime:`Tempo ativo do daemon`,systemUptime:`Tempo ativo do sistema`,never:`nunca`,nfc:`NFC`,scale:`Balança`,cpuTemp:`Temp. CPU`,cpuLoad:`Carga da CPU`,memory:`Memória`,disk:`Disco`,update:`Atualizar`,updateConfirmTitle:`Atualizar daemon do Spoolbuddy?`,updateConfirmBody:`Iniciar uma atualização de software em "{{hostname}}"? O daemon será reiniciado após a aplicação.`,restartBrowser:`Reiniciar navegador`,restartBrowserConfirmTitle:`Reiniciar o navegador do kiosk?`,restartBrowserConfirmBody:`Reiniciar o navegador do kiosk em "{{hostname}}"? A tela ficará em branco brevemente.`,restartDaemon:`Reiniciar daemon`,restartDaemonConfirmTitle:`Reiniciar daemon do Spoolbuddy?`,restartDaemonConfirmBody:`Reiniciar o daemon do Spoolbuddy em "{{hostname}}"? O dispositivo ficará offline por alguns segundos.`,reboot:`Reiniciar`,rebootConfirmTitle:`Reiniciar o dispositivo?`,rebootConfirmBody:`Reiniciar "{{hostname}}"? O dispositivo ficará offline por cerca de um minuto.`,shutdown:`Desligar`,shutdownConfirmTitle:`Desligar o dispositivo?`,shutdownConfirmBody:`Desligar "{{hostname}}"? Será necessário acesso físico para ligá-lo novamente.`,commandConfirm:`Confirmar`,commandQueued:`Comando enfileirado`,commandError:`Falha ao enviar comando`},pipelineLimits:{title:`Limites de pipelines do slicer`,maxCopiesLabel:`Cópias máximas por execução`,maxCopiesDesc:`Limite superior de cópias que operadores podem solicitar ao executar uma pipeline. O limite rígido no lado do servidor é 1000.`},pipelines:{title:`Pipelines do Slicer`,subtitle:`Pacotes de predefinições reutilizáveis (impressora + processo + filamentos + tipo de mesa). Salve um a partir do diálogo Cortar e aplique com um clique no próximo arquivo.`,loading:`Carregando pipelines…`,loadError:`Não foi possível carregar as pipelines.`,confirmDelete:`Excluir esta pipeline? Isso não pode ser desfeito.`,staleWarning:`Uma ou mais predefinições referenciadas não existem mais. Salve novamente esta pipeline a partir do diálogo Cortar para corrigir.`,empty:{title:`Ainda não há pipelines.`,howto:`Abra o diálogo Cortar em qualquer arquivo, escolha impressora / processo / filamentos / mesa e clique em "Salvar como pipeline". Suas pipelines salvas aparecerão aqui.`},field:{name:`Nome da pipeline`,description:`Descrição`,targetPrinter:`Impressora de destino`,noTarget:`— Sem destino —`,targetKind:`Tipo de destino`,targetKindSpecific:`Impressora específica`,targetKindClass:`Classe de impressora`,targetModelClass:`Modelo de impressora`,fanoutStrategy:`Estratégia de distribuição`,fanout:{max_parallel:`Máximo paralelo — distribuir em qualquer impressora ociosa compatível`,round_robin:`Round robin — alternar entre impressoras elegíveis`,fill_one_first:`Encher uma primeiro — fixar todas as cópias em uma impressora`},fanoutShort:{max_parallel:`paralelo`,round_robin:`round robin`,fill_one_first:`primeiro um`}},action:{save:`Salvar`,cancel:`Cancelar`,rename:`Renomear`,delete:`Excluir`},slot:{printer:`Impressora`,process:`Processo`,filament:`Filamento`,filamentN:`Filamento {{n}}`,filamentAll:`Todos os {{n}} slots`,bed:`Mesa`},group:{profiles:`Perfis`,filaments:`Filamentos`},searchPlaceholder:`Buscar pipelines…`,filterTargetType:`Filtrar por tipo de destino`,filterTarget:`Filtrar por destino`,filter:{all:`Todos os destinos`,noTarget:`Sem destino`,count:`{{shown}} / {{total}}`,noMatches:`Nenhuma pipeline corresponde aos filtros atuais.`},toast:{saved:`Pipeline salva`,saveFailed:`Falha ao salvar`,deleted:`Pipeline excluída`,deleteFailed:`Falha ao excluir`},noTargetHint:`Defina uma impressora de destino para executar`,noTargetWarning:`Defina uma impressora de destino antes de executar esta pipeline.`,runs:{lastRun:`Última execução`,status:{queued:`na fila`,slicing:`cortando`,dispatching:`enviando`,in_progress:`imprimindo`,completed:`concluída`,failed:`falhou`,partial_failure:`falha parcial`,cancelled:`cancelada`}}}},notification:{printStarted:{title:`Impressão Iniciada`,body:`{{printer}}: {{filename}} iniciou a impressão`},printCompleted:{title:`Impressão Concluída`,body:`{{printer}}: {{filename}} foi concluída com sucesso`},printFailed:{title:`Falha na Impressão`,body:`{{printer}}: {{filename}} falhou`},printStopped:{title:`Impressão Interrompida`,body:`{{printer}}: {{filename}} foi interrompida`},printProgress:{title:`Progresso da Impressão`,body:`{{printer}}: {{filename}} está {{percent}}% concluída`},printerOffline:{title:`Impressora Offline`,body:`{{printer}} está offline`},printerError:{title:`Erro na Impressora`,body:`{{printer}} – {{error}}`},filamentLow:{title:`Filamento Baixo`,body:`{{printer}}: O filamento está acabando`},maintenanceDue:{title:`Manutenção Pendente`,body:`{{printer}}: {{items}} precisam de atenção`}},errors:{generic:`Algo deu errado`,networkError:`Erro de rede. Por favor, verifique sua conexão.`,notFound:`Não encontrado`,unauthorized:`Não autorizado`,serverError:`Erro no servidor`,validationError:`Por favor, verifique sua entrada`,printerConnectionFailed:`Falha ao conectar à impressora`,saveFailed:`Falha ao salvar alterações`,deleteFailed:`Falha ao excluir`,loadFailed:`Falha ao carregar dados`},hmsErrors:{title:`Erros - {{name}}`,noErrors:`Nenhum erro`,viewOnWiki:`Ver no Bambu Lab Wiki`,mqttVerifyFailedRemedy:`Ative o Modo Desenvolvedor na impressora, reinicie a impressora e inicie o trabalho novamente.`,unknownCode:`Código HMS desconhecido — consulte o wiki da Bambu Lab para mais detalhes.`,clearInstructions:`Limpe os erros na impressora para descartá-los aqui.`,clearErrors:`Limpar Erros`,clearSuccess:`Erros HMS limpos`,clearFailed:`Falha ao limpar erros HMS`,actionSuccess:`Ação enviada à impressora`,actionFailed:`Falha ao enviar ação`,runoutExpectedSlot:`O filamento acabou em {{ranOut}}. A impressora agora aguarda filamento compatível em {{expected}}. Insira uma bobina em {{expected}} e selecione Tentar novamente.`,runoutExpectedSlotOnly:`A impressora está aguardando filamento compatível em {{expected}}. Insira uma bobina ali e selecione Tentar novamente.`,runoutSlotUnknown:`O filamento acabou e a impressão está pausada. O Bambuddy não conseguiu determinar qual slot a impressora agora espera — verifique a tela da impressora para o slot solicitado.`,actions:{RESUME_PRINTING:`Retomar impressão`,RESUME_PRINTING_DEFECTS:`Retomar (defeitos aceitáveis)`,RESUME_PRINTING_PROBELM_SOLVED:`Retomar (problema resolvido)`,STOP_PRINTING:`Parar impressão`,CHECK_ASSISTANT:`Ver assistente`,FILAMENT_EXTRUDED:`Filamento extrudado, continuar`,RETRY_FILAMENT_EXTRUDED:`Ainda não extrudado, tentar novamente`,CONTINUE:`Finalizado, continuar`,LOAD_VIRTUAL_TRAY:`Carregar filamento`,OK_BUTTON:`OK`,FILAMENT_LOAD_RESUME:`Filamento carregado, retomar`,JUMP_TO_LIVEVIEW:`Ver ao vivo`,NO_REMINDER_NEXT_TIME:`Não lembrar da próxima vez`,REFRESH_NOZZLE:`Verificar novamente`,IGNORE_NO_REMINDER_NEXT_TIME:`Ignorar e não lembrar`,IGNORE_RESUME:`Ignorar e retomar`,PROBLEM_SOLVED_RESUME:`Problema resolvido, retomar`,TURN_OFF_FIRE_ALARM:`Entendido, desligar alarme de incêndio`,RETRY_PROBLEM_SOLVED:`Tentar novamente (problema resolvido)`,CANCLE:`Cancelar`,STOP_DRYING:`Parar secagem`,PROCEED:`Prosseguir`,OK_JUMP_RACK:`OK`,ABORT:`Abortar`,DISABLE_PURIFICATION:`Desativar purificação para esta impressão`,DONT_REMIND_NEXT_TIME:`Não me lembrar`,DBL_CHECK_CANCEL:`Cancelar`,DBL_CHECK_DONE:`Concluído`,DBL_CHECK_RETRY:`Tentar novamente`,DBL_CHECK_RESUME:`Retomar`,DBL_CHECK_OK:`Confirmar`,REMOVE_CLOSE_BTN:`Fechar`}},mqttDebug:{title:`MQTT Log de Depuração`,searchPlaceholder:`Pesquisar tópico ou payload...`,noMessages:`Nenhuma mensagem registrada ainda`,startLoggingHint:`Clique em "Iniciar Registro" para começar a capturar mensagens MQTT`,noMessagesMatch:`Nenhuma mensagem corresponde ao seu filtro`,adjustFilterHint:`Tente ajustar seus critérios de pesquisa ou filtro`,incoming:`Entrada`,outgoing:`Saída`,loggingStopped:`Registro interrompido`,loggingActive:`Registro ativo - as mensagens serão atualizadas automaticamente`,startLogging:`Iniciar Registro`,stopLogging:`Parar Registro`,clearLog:`Limpar Registro`,topic:`ópico`,timestamp:`Carimbo de Data/Hora`,direction:`Direção`,all:`Todos`},printerFiles:{zipStarted_one:`Download ZIP iniciado para {{count}} arquivo`,zipStarted_other:`Download ZIP iniciado para {{count}} arquivos`,zipPartial:`Download ZIP iniciado com {{successful}} de {{total}} arquivos; não foi possível obter os demais`,downloadFailed:`Falha no download: {{error}}`,unknownError:`Erro desconhecido`,shiftSelectHint:`Shift+clique para selecionar um intervalo`,selectFile:`Selecionar {{name}}`,deselectFile:`Desmarcar {{name}}`,title:`Gerenciador de Arquivos`,storageUsed:`Usado:`,storageFree:`Livre:`,filterPlaceholder:`Filtrar arquivos...`,deleteButton:`Excluir`,deleteFiles:`Excluir {{count}} arquivos`,deleteFileConfirm:`Excluir "{{name}}"? Isso não pode ser desfeito.`,deleteFilesConfirm:`Excluir {{count}} arquivos selecionados? Isso não pode ser desfeito.`,noFiles:`Nenhum arquivo na impressora`,printerUnavailable:`O serviço de arquivos da impressora está indisponível. Tente novamente quando a impressora estiver acessível.`,loadingFiles:`Carregando arquivos...`,failedToLoad:`Falha ao carregar arquivos`,toast:{filesDeleted:`Arquivos excluídos: {{count}}`,deleteFailed:`Falha ao excluir: {{error}}`}},confirm:{delete:`Tem certeza de que deseja excluir isso?`,unsavedChanges:`Você tem alterações não salvas. Tem certeza de que deseja sair?`,clearQueue:`Tem certeza de que deseja limpar a fila?`},login:{title:`Login Bambuddy`,subtitle:`Faça login na sua conta`,username:`Nome de usuário`,usernamePlaceholder:`Digite seu nome de usuário`,usernameOrEmail:`Nome de usuário ou Email`,usernameOrEmailPlaceholder:`Nome de usuário ou Email`,password:`Senha`,passwordPlaceholder:`Digite sua senha`,signIn:`Entrar`,signingIn:`Entrando...`,rememberMe:`Lembrar de mim`,forgotPassword:`Esqueceu sua senha?`,autologinFailed:`O login SSO automático falhou. Escolha um provedor abaixo para continuar.`,localDisabledNotice:`O login local está desativado. Use um dos provedores SSO abaixo.`,loginSuccess:`Login realizado com sucesso`,loginFailed:`Falha no login`,enterCredentials:`Por favor, insira nome de usuário e senha`,enterEmail:`Por favor, insira seu endereço de e-mail`,oidcLoginFailed:`Falha no login OIDC`,oidcErrors:{providerError:`O provedor de identidade retornou um erro`,missingParameters:`Parâmetros obrigatórios ausentes no callback OIDC`,invalidState:`Estado OIDC inválido ou já utilizado`,stateExpired:`Sessão OIDC expirada — tente novamente`,providerNotFound:`Provedor OIDC não encontrado`,discoveryFailed:`Falha ao obter o documento de descoberta OIDC`,invalidDiscovery:`Documento de descoberta OIDC inválido`,networkError:`Erro de rede durante a troca de token OIDC`,badResponse:`Resposta inesperada durante a troca de token OIDC`,noIdToken:`O provedor OIDC não retornou um token de ID`,validationFailed:`Falha na validação do token OIDC`,nonceMismatch:`Nonce OIDC não corresponde — possível ataque de replay`,missingSubClaim:`Token OIDC sem claim sub`,noLinkedAccount:`Nenhuma conta local vinculada a esta identidade OIDC`,accountInactive:`Sua conta está inativa`,userResolutionFailed:`Falha ao resolver sua conta`,internalError:`Erro interno durante o login OIDC`,tokenExchangeFailed:`Falha na troca de token OIDC`},forgotPasswordTitle:`Esqueceu a Senha`,forgotPasswordMessage:`Se você esqueceu sua senha, entre em contato com o administrador do sistema para redefini-la.`,forgotPasswordEmailMessage:`Digite seu endereço de email e enviaremos uma nova senha.`,emailAddress:`Endereço de Email`,emailPlaceholder:`seu.email@exemplo.com`,cancel:`Cancelar`,sending:`Enviando...`,sendResetEmail:`Enviar Email de Redefinição`,howToReset:`Como redefinir sua senha:`,resetStep1:`Entre em contato com o administrador do Bambuddy`,resetStep2:`Peça para redefinir sua senha na Gestão de Usuários`,resetStep3:`Eles podem definir uma nova senha temporária para você`,resetStep4:`Faça login com a nova senha e altere-a nas Configurações`,gotIt:`Entendi`,resetPassword:{title:`Definir nova senha`,subtitle:`Digite e confirme sua nova senha abaixo.`,newPassword:`Nova senha`,newPasswordPlaceholder:`Pelo menos 8 caracteres`,confirmPassword:`Confirmar senha`,confirmPasswordPlaceholder:`Repetir nova senha`,saving:`Salvando…`,submit:`Definir nova senha`,backToLogin:`Voltar para o login`,passwordsDoNotMatch:`As senhas não coincidem`,passwordTooShort:`A senha deve ter pelo menos 8 caracteres`,resetFailed:`Falha ao redefinir senha. O link pode ter expirado.`},twoFA:{title:`Autenticação em dois fatores`,subtitle:`Sua conta está protegida com 2FA. Insira o código de verificação abaixo.`,methodAuthenticator:`Aplicativo autenticador`,methodEmail:`Código por e-mail`,methodBackup:`Código de recuperação`,instructionsTotp:`Abra seu aplicativo autenticador e insira o código de 6 dígitos gerado para o Bambuddy.`,instructionsEmail:`Um código de 6 dígitos foi enviado para o seu e-mail. Ele é válido por 10 minutos.`,instructionsEmailNotSent:`Clique no botão abaixo para receber um código de verificação por e-mail.`,instructionsBackup:`Insira um dos seus códigos de recuperação de 8 caracteres. Cada código só pode ser utilizado uma vez.`,sendCodeButton:`Enviar código por e-mail`,sendingCode:`Enviando...`,resendCode:`Reenviar código`,codeLabel:`Código de verificação`,backupCodeLabel:`Código de recuperação`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`Verificar`,verifyingButton:`Verificando...`,backToLogin:`← Voltar para o login`,orContinueWith:`ou entrar com`,signInWith:`Entrar com {{provider}}`,enterCode:`Por favor, insira o código de verificação`,sendCodeFailed:`Falha ao enviar o código de verificação`,invalidCode:`Código inválido. Por favor, tente novamente.`}},setup:{title:`Bambuddy Configuração`,subtitle:`Configure a autenticação para sua instância do Bambuddy`,enableAuth:`Ativar Autenticação`,adminAccount:`Conta de Administrador`,adminAccountDesc:`Se usuários administradores já existirem, a autenticação será ativada usando as contas de administrador existentes. Deixe os campos abaixo vazios para usar os administradores existentes ou insira novas credenciais para criar um novo usuário administrador.`,adminUsername:`Nome de usuário do administrador`,adminPassword:`Senha do administrador`,optionalIfAdminExists:`(opcional se usuários administradores existirem)`,adminUsernamePlaceholder:`Digite o nome de usuário do administrador (opcional)`,adminPasswordPlaceholder:`Digite a senha do administrador (opcional)`,confirmPassword:`Confirmar Senha`,confirmPasswordPlaceholder:`Confirme a senha do administrador`,settingUp:`Configurando...`,completeSetup:`Concluir Configuração`,toast:{authEnabledAdminCreated:`Autenticação ativada e usuário administrador criado`,authEnabledExistingAdmins:`Autenticação ativada usando usuários administradores existentes`,setupCompleted:`Configuração concluída`,enterBothCredentials:`Por favor, insira o nome de usuário e a senha do administrador, ou deixe ambos vazios para usar os usuários administradores existentes`,passwordsDoNotMatch:`As senhas não coincidem`,passwordTooShort:`A senha deve ter pelo menos 6 caracteres`}},changePassword:{title:`Alterar Senha`,currentPassword:`Senha Atual`,currentPasswordPlaceholder:`Digite a senha atual`,newPassword:`Nova Senha`,newPasswordPlaceholder:`Digite a nova senha (mínimo 6 caracteres)`,confirmPassword:`Confirmar Senha`,confirmPasswordPlaceholder:`Confirme a nova senha`,passwordsDoNotMatch:`As senhas não coincidem`,passwordTooShort:`A senha deve ter pelo menos 6 caracteres`,changing:`Alterando...`,success:`Senha alterada com sucesso`,failed:`Falha ao alterar a senha`},plateAlert:{title:`Impressão Pausada!`,message:`Objetos detectados na mesa de impressão. A impressão foi automaticamente pausada. Por favor, limpe a mesa e retome a impressão.`,understand:`Entendi`},camera:{title:`Visualização da Câmera`,invalidPrinterId:`ID da impressora inválido`,live:`Ao Vivo`,snapshot:`Captura`,restartStream:`Reiniciar transmissão`,refreshSnapshot:`Atualizar captura`,fullscreen:`Tela Cheia`,exitFullscreen:`Sair da Tela Cheia`,connectingToCamera:`Conectando à câmera...`,capturingSnapshot:`Capturando imagem...`,connectionLost:`Conexão perdida`,connectionFailed:`Falha na conexão com a câmera`,reconnecting:`Reconectando em {{countdown}}s... (tentativa {{attempt}}/{{max}})`,reconnectNow:`Reconectar agora`,cameraUnavailable:`Câmera indisponível`,cameraUnavailableDesc:`Certifique-se de que a impressora está ligada e conectada.`,noCamera:`Nenhuma câmera disponível`,retry:`Tentar novamente`,cameraStream:`Transmissão da câmera`,zoomOut:`Reduzir zoom`,zoomIn:`Aumentar zoom`,resetZoom:`Redefinir zoom`,recording:`Gravando`,startRecording:`Iniciar gravação`,stopRecording:`Parar gravação`,chamberLight:`Alternar luz da câmara`,unavailable:`Câmera indisponível`,diagnose:{button:`Diagnóstico`,modalTitle:`Diagnóstico da câmera`,running:`Executando diagnóstico...`,runFailed:`Não foi possível executar o diagnóstico: {{error}}`,retry:`Executar novamente`,stage:{tcp_reachable:`Conectividade de rede`,first_frame:`Captura de frame`,live_stream_active:`Transmissão ao vivo ativa`},summary:{all_ok:`A câmera está funcionando. O diagnóstico concluiu todas as etapas com sucesso.`,live_stream_active_healthy:`A câmera está transmitindo com frames recentes — nenhum teste necessário.`,printer_unreachable:`Impressora inacessível. Verifique o endereço IP, a conexão de rede e se a impressora está ligada.`,camera_port_closed:`A impressora responde mas a porta da câmera está fechada. Verifique se o modo LAN e o modo desenvolvedor estão ativados nas configurações da impressora.`,no_frame:`Conexão com a câmera estabelecida mas nenhum frame recebido. Tente novamente ou verifique se a câmera está habilitada nas configurações da impressora.`,unknown_failure:`Diagnóstico da câmera falhou por motivo desconhecido. Consulte o log de suporte para mais detalhes.`},meta:{protocol:`Protocolo`,port:`Porta`,profile:`Perfil`}}},groups:{title:`Gerenciamento de Grupos`,subtitle:`Gerenciar grupos de permissão para controle de acesso`,backToSettings:`Voltar para Configurações`,createGroup:`Criar Grupo`,noPermission:`Você não tem permissão para acessar esta página.`,system:`Sistema`,noDescription:`Sem descrição`,usersCount:`{{count}} usuários`,permissionsCount:`{{count}} permissões`,edit:`Editar`,delete:`Excluir`,toast:{created:`Grupo criado com sucesso`,updated:`Grupo atualizado com sucesso`,deleted:`Grupo excluído com sucesso`,enterGroupName:`Por favor, insira um nome para o grupo`},modal:{editGroup:`Editar Grupo`,createGroup:`Criar Grupo`,cancel:`Cancelar`,saving:`Salvando...`,creating:`Criando...`,saveChanges:`Salvar Alterações`},form:{groupName:`Nome do Grupo`,groupNamePlaceholder:`Insira o nome do grupo`,systemGroupWarning:`Os nomes dos grupos do sistema não podem ser alterados`,description:`Descrição`,descriptionPlaceholder:`Insira a descrição (opcional)`,permissions:`Permissões ({{count}} selecionadas)`},deleteModal:{title:`Excluir Grupo`,message:`Tem certeza de que deseja excluir este grupo? Os usuários deste grupo perderão essas permissões.`,confirm:`Excluir Grupo`},editor:{title:`Editar Grupo`,createTitle:`Criar Grupo`,search:`Pesquisar permissões...`,selectAll:`Selecionar Tudo`,clearAll:`Limpar Tudo`,permissionsSelected:`{{count}} selecionada(s)`,noResults:`Nenhuma permissão corresponde à sua pesquisa`,websocketHint:`Necessário para atualizações em tempo real. Sem esta permissão, a interface recorre à sondagem periódica.`}},users:{title:`Gerenciamento de Usuários`,subtitle:`Gerenciar usuários e seu acesso à sua instância do Bambuddy`,backToSettings:`Voltar para Configurações`,createUser:`Criar Usuário`,noPermission:`Você não tem permissão para acessar esta página.`,admin:`Administrador`,noGroups:`Sem grupos`,active:`Ativo`,inactive:`Inativo`,edit:`Editar`,delete:`Excluir`,system:`Sistema`,noGroupsAvailable:`Nenhum grupo disponível`,table:{username:`Nome de Usuário`,groups:`Grupos`,status:`Status`,actions:`Ações`},toast:{created:`Usuário criado com sucesso`,updated:`Usuário atualizado com sucesso`,deleted:`Usuário excluído com sucesso`,fillRequired:`Por favor, preencha todos os campos obrigatórios`,passwordsDoNotMatch:`As senhas não coincidem`,passwordTooShort:`A senha deve ter pelo menos 6 caracteres`,ldapProvisioned:`Usuário LDAP "{{username}}" provisionado`},modal:{createUser:`Criar Usuário`,editUser:`Editar Usuário`,cancel:`Cancelar`,creating:`Criando...`,saving:`Salvando...`,saveChanges:`Salvar Alterações`,advancedAuthSubtitle:`com Autenticação Avançada`,tabsAriaLabel:`Fonte do usuário`,localTab:`Local`,ldapTab:`LDAP`,ldapSearchLabel:`Pesquisar diretório`,ldapSearchPlaceholder:`Digite um nome de usuário, nome ou e-mail...`,ldapMinChars:`Digite ao menos 2 caracteres para pesquisar`,ldapTypeToSearch:`Comece a digitar para pesquisar o diretório LDAP`,ldapSearching:`Pesquisando diretório...`,ldapNoResults:`Nenhum usuário correspondente no diretório`,ldapSearchError:`Falha na pesquisa do diretório. Verifique o status do servidor LDAP.`,ldapAlreadyProvisioned:`Já provisionado`,ldapSelectedLabel:`Selecionado`,ldapProvision:`Provisionar usuário`,ldapProvisioning:`Provisionando...`,ldapErrorProvision:`Falha no provisionamento. Verifique o status do servidor LDAP e tente novamente.`},form:{username:`Nome de Usuário`,usernamePlaceholder:`Insira o nome de usuário`,email:`E-mail`,emailPlaceholder:`user@example.com`,password:`Senha`,passwordPlaceholder:`Insira a senha`,confirmPassword:`Confirmar Senha`,confirmPasswordPlaceholder:`Confirme a senha`,newPasswordPlaceholder:`Insira a nova senha`,confirmNewPasswordPlaceholder:`Confirme a nova senha`,leaveBlankToKeep:`deixe em branco para manter a atual`,groups:`Grupos`,optional:`opcional`,autoGeneratedPassword:`Uma senha segura será gerada automaticamente e enviada por e-mail ao usuário.`,passwordManagedByAdvancedAuth:`A senha é gerenciada pela Autenticação Avançada. Use "Redefinir Senha" para enviar uma nova senha ao usuário por e-mail.`,resetPassword:`Redefinir Senha`,resettingPassword:`Redefinindo Senha...`},deleteModal:{title:`Excluir Usuário`,message:`Tem certeza de que deseja excluir este usuário? Esta ação não pode ser desfeita.`,confirm:`Excluir Usuário`}},streamOverlay:{title:`Sobreposição de stream`,invalidPrinterId:`ID da impressora inválido`,cameraStream:`Transmissão da câmera`,progress:`Progresso da impressão`,eta:`ETA`,printerIdle:`Impressora ociosa`,printerOffline:`Impressora offline`,builder:{title:`Sobreposição de transmissão`,description:`Monta a URL de uma sobreposição de transmissão: a câmera em tela cheia com os dados da impressão sobrepostos, para OBS, um painel de parede ou qualquer fonte de navegador. Escolha os campos e copie a URL.`,printer:`Impressora`,size:`Tamanho do texto`,sizeSmall:`Pequeno`,sizeMedium:`Médio`,sizeLarge:`Grande`,fps:`Taxa de quadros`,fpsHint:`Câmeras A1 e P1 chegam no máximo a cerca de 5 fps, qualquer que seja o valor pedido.`,token:`Token de sobreposição (opcional)`,tokenHint:`Só é necessário com login ativado: o OBS não tem sessão própria. Crie um acima com o escopo Sobreposição de transmissão.`,tokenWarning:`Esta URL contém um token: quem conseguir lê-la pode assistir à transmissão e ver o nome do arquivo. Revogue o token para cortar o acesso.`,fields:`Campos a exibir`,fieldPrinter:`Nome da impressora`,fieldFilename:`Nome do arquivo`,fieldStatus:`Status`,fieldProgress:`Barra de progresso`,fieldLayers:`Contagem de camadas`,fieldEta:`Tempo restante e previsão de término`,fieldCamera:`Imagem da câmera`,chamberHint:`A temperatura da câmara aparece apenas em modelos com sensor real: P1 e A1 informam um valor sem sentido, por isso ela é omitida.`,urlTitle:`URL da sobreposição`,open:`Abrir`,showPreview:`Mostrar prévia`,hidePreview:`Ocultar prévia`,previewTitle:`Prévia da sobreposição`},status:{printing:`Imprimindo`,paused:`Pausado`,finished:`Concluído`,failed:`Falhou`,idle:`Ocioso`,unknown:`Desconhecido`}},profiles:{title:`Perfis`,subtitle:`Gerencie seus presets de fatiador e calibrações de avanço de pressão`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`Perfis Locais`,kprofiles:`K-Perfis`},orcaCloud:{connectedAs:`Conectado como`,connectedShort:`Conectado ao Orca Cloud`,logout:`Desconectar`,noLogoutPermission:`Você não tem permissão para desconectar`,noConnectPermission:`Você não tem permissão para conectar ao Orca Cloud`,retry:`Tentar novamente`,connectButton:`Conectar Orca Cloud`,connect:{title:`Conectar ao Orca Cloud`,description:`Entre na sua conta Orca Cloud para sincronizar seus perfis de slicer no Bambuddy.`},device:{title:`Aprovar o Bambuddy no Orca Cloud`,instruction:`Abra o Orca Cloud e aprove este código. O Bambuddy se conecta automaticamente assim que você aprovar.`,codeLabel:`Seu código de pareamento`,openButton:`Abrir a página de aprovação do Orca Cloud`,manualHint:`Ou acesse {{url}} e insira o código acima.`,waiting:`Aguardando sua aprovação…`,cancel:`Cancelar`},profiles:{title:`Seus perfis do Orca Cloud ({{count}})`,refresh:`Atualizar`,empty:`Nenhum perfil encontrado na sua conta Orca Cloud ainda.`},toast:{disconnected:`Desconectado do Orca Cloud`},errors:{startFailed:`Não foi possível iniciar o login do Orca Cloud.`,denied:`O pareamento foi negado no Orca Cloud.`,expired:`O código de pareamento expirou. Clique em Conectar para tentar novamente.`,pollFailed:`A conexão foi perdida enquanto aguardava a aprovação. Tente novamente.`}},localProfiles:{title:`Perfis Locais`,subtitle:`Importe e gerencie presets de fatiador do OrcaSlicer`,import:`Importar Perfis`,importDesc:`Solte arquivos .bbscfg, .bbsflmt, .orca_filament, .zip ou .json aqui`,importing:`Importando...`,search:`Pesquisar presets locais...`,noPresets:`Nenhum preset local ainda`,noSearchResults:`Nenhum preset corresponde à sua busca`,badge:`Local`,edit:`Editar`,delete:`Excluir`,cancel:`Cancelar`,deleteConfirmTitle:`Excluir Preset`,deleteConfirm:`Tem certeza de que deseja excluir este preset? Esta ação não pode ser desfeita.`,source:`Fonte`,inheritsFrom:`Herdado de`,filamentType:`Tipo`,vendor:`Fornecedor`,compatiblePrinters:`Impressoras Compatíveis`,nozzleTemp:`Temperatura do Bico`,cost:`Custo`,density:`Densidade`,pressureAdvance:`Avanço de Pressão`,filament:`Filamento`,process:`Processo`,printer:`Impressora`,toast:{importSuccess:`{{count}} preset(s) importada(s)`,importSkipped:`{{count}} preset(s) ignorada(s) (duplicadas)`,importError:`{{count}} erro(s) durante a importação`,deleted:`Preset excluído`,updated:`Preset atualizado`}},connectedAs:`Conectado como`,signInExpiredTitle:`Sessão do Bambu Cloud expirada`,signInExpiredBody:`A Bambu Lab não aceita mais o token armazenado. Entre novamente para restaurar os perfis na nuvem, as importações do MakerWorld e a verificação de firmware.`,logout:`Sair`,noLogoutPermission:`Você não tem permissão para sair`,failedToLoad:`Falha ao carregar perfis`,retry:`Tentar novamente`,time:{justNow:`Agora mesmo`,minsAgo:`há {{count}} minutos`,hoursAgo:`há {{count}} horas`,daysAgo:`há {{count}} dias`},toast:{loggedOut:`Desconectado`},login:{title:`Conectar ao Bambu Cloud`,subtitle:`Sincronize seus presets de fatiador entre dispositivos`,email:`E-mail`,password:`Senha`,region:`Região`,regionGlobal:`Global`,regionChina:`China`,verificationCode:`Código de Verificação`,totpCode:`Código do Autenticador`,checkEmail:`Verifique seu email ({{email}}) para um código de 6 dígitos`,enterTotpHint:`Digite o código de 6 dígitos do seu aplicativo autenticador`,accessToken:`Token de Acesso`,accessTokenHint:`Cole seu token de acesso da Bambu Cloud. Contas da região China precisam usar este caminho (vinculadas ao celular — login por e-mail indisponível). Veja no wiki como obter o token dos cookies do MakerWorld.`,back:`Voltar`,loginButton:`Entrar`,verifyButton:`Verificar`,setTokenButton:`Definir Token`,useToken:`Usar token de acesso em vez disso`,captchaTitle:`O Bambu Cloud está pedindo um CAPTCHA`,captchaBody:`O Bambu está exigindo um CAPTCHA da sua rede antes de aceitar um login, e esse desafio não pode ser respondido pelo Bambuddy. Seu e-mail e sua senha não são o problema. O bloqueio está ligado ao seu endereço IP público e costuma passar sozinho em algumas horas; tentar de novo repetidamente prolonga o bloqueio. Para entrar agora, use um token de acesso obtido em uma sessão do navegador.`,useEmail:`Entrar com email em vez disso`,toast:{loggedIn:`Conectado com sucesso`,codeSent:`Código de verificação enviado para seu email`,enterTotp:`Digite o código do seu aplicativo autenticador`,tokenSet:`Token definido com sucesso`}},presets:{myPreset:`Meu preset (editável)`,duplicate:`Duplicar`,editable:`Editável`,failedToLoadDetails:`Falha ao carregar detalhes do preset`,deleteConfirm:`Excluir este preset?`,deleteWarning:`Isso excluirá permanentemente "{{name}}" do Bambu Cloud. Esta ação não pode ser desfeita.`,noDuplicatePermission:`Você não tem permissão para duplicar presets`,noEditPermission:`Você não tem permissão para editar presets`,noDeletePermission:`Você não tem permissão para excluir presets`,types:{filament:`Preset de filamento`,printer:`Preset de impressora`,process:`Preset de processo`},toast:{deleted:`Preset excluído`,created:`Preset criado`,updated:`Preset atualizado`,duplicated:`Preset duplicado`,fieldAdded:`Campo "{{key}}" adicionado`,exported:`Preset exportado`},baseLabel:`Base: {{name}}`,currentLabel:`Atual: {{name}}`,newPreset:`Novo Preset`,editPreset:`Editar Preset`,duplicatePreset:`Duplicar Preset`,createNewPreset:`Criar Novo Preset`,customizeSettings:`Personalizar configurações para seu novo preset`,compareWithBase:`Comparar com o preset base`,compare:`Comparar`,basePreset:`Preset Base`,selectBasePreset:`Selecionar preset base...`,presetName:`Nome do Preset`,myCustomPreset:`Meu preset personalizado`,inheritsFrom:`Herdado de`,dropJsonToImport:`Solte o arquivo JSON para importar`,tabs:{common:`Comum`,allFields:`Todos os Campos`},availableFields:`Campos Disponíveis`,searchFieldsPlaceholder:`Pesquisar campos...`,noMatchingFields:`Nenhum campo correspondente`,allFieldsAdded:`Todos os campos adicionados`,addCustomField:`Adicionar campo personalizado`,yourOverrides:`Suas Substituições`,noOverridesYet:`Nenhuma substituição ainda`,clickFieldsToAdd:`Clique nos campos à esquerda para adicioná-los`,saveAsTemplate:`Salvar como modelo`,jsonTip:`Dica: Arraste e solte um arquivo .json em qualquer lugar deste modal para importar configurações`},cloudView:{searchPlaceholder:`Pesquisar presets...`,templates:`Modelos`,refresh:`Atualizar`,newPreset:`Novo Preset`,clearFilters:`Limpar filtros`,compareMode:`Modo de Comparação`,selectAnotherPreset:`Selecionar outro preset {{type}}`,clickTwoPresets:`Clique em dois presets do mesmo tipo para comparar`,selectFirst:`1. Selecionar primeiro`,selectSecond:`2. Selecionar segundo`,compareNow:`Comparar Agora`,lastSynced:`Última sincronização:`,showingCount:`Mostrando {{showing}} de {{total}} presets`,noPresetsFound:`Nenhum preset encontrado`,columns:{filament:`Filamento`,process:`Processo`,printer:`Impressora`},noFilamentPresets:`Nenhum preset de filamento`,noProcessPresets:`Nenhum preset de processo`,noPrinterPresets:`Nenhum preset de impressora`,filters:{type:`Tipo`,owner:`Proprietário`,printer:`Impressora`,nozzle:`Bico`,filament:`Filamento`,layer:`Camada`,all:`Todos`,myPresets:`Meus Presets`,builtIn:`Integrado`,process:`Processo`},noTemplatesPermission:`Você não tem permissão para gerenciar modelos`,noRefreshPermission:`Você não tem permissão para atualizar perfis`,noCreatePermission:`Você não tem permissão para criar presets`},templates:{title:`Modelos Rápidos`,noTemplates:`Nenhum modelo ainda`,createFirst:`Crie modelos a partir do editor de presets`,typeFilter:`Tipo:`,deleteTitle:`Excluir Modelo`,deleteWarning:`Esta ação não pode ser desfeita`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"?`,namePlaceholder:`Nome do modelo`,descriptionPlaceholder:`Descrição`,settingsJson:`Configurações (JSON)`,fieldsCount:`{{count}} campos`,shownInModals:`Exibido em modais`,hiddenInModals:`Oculto em modais`,apply:`Aplicar`,toast:{deleted:`Modelo excluído`,updated:`Modelo atualizado`,created:`Modelo criado`,applied:`Modelo aplicado`}}},support:{debugLoggingActive:`Registro de depuração ativo`,manageLogs:`Gerenciar`,collectItem7:`Conectividade da impressora e versões de firmware`,collectItem8:`Status de integração (Spoolman, MQTT, HA)`,collectItem9:`Interfaces de rede (somente sub-redes)`,collectItem10:`Versões de pacotes Python`,collectItem11:`Verificações de integridade do banco de dados`,collectItem12:`Detalhes do ambiente Docker`,bundleGenerating:`Gerando pacote...`,bundleStepConnection:`Executando verificações de conectividade das impressoras`,bundleStepVirtualPrinters:`Executando verificações de configuração das impressoras virtuais`,bundleStepLogScan:`Analisando registros recentes em busca de problemas conhecidos`,bundleStepBuild:`Criando o ZIP do pacote de suporte`},fileManager:{variants:{badge:`{{count}} versões`,groupAction:`Agrupar como versões`,groupTooltip:`Marcar estes arquivos como o mesmo trabalho fatiado para impressoras diferentes`,grouped:`{{count}} arquivos agrupados como versões`,printAlternatives:`Imprimir ({{count}} alternativas)`},title:`Gerenciador de Arquivos`,subtitle:`Organize e gerencie seus arquivos de impressão`,uploadFiles:`Enviar Arquivos`,newFolder:`Nova Pasta`,folderName:`Nome da Pasta`,folderNamePlaceholder:`ex.: Peças Funcionais`,renameFile:`Renomear Arquivo`,renameFolder:`Renomear Pasta`,invalidFilenameChar:`O caractere "{{char}}" não é permitido em nomes de arquivos de impressão. O cartão SD da impressora rejeita: < > : " / \\ | ? *`,moveFiles:`Mover {{count}} Arquivo(s)`,rootNoFolder:`Raiz (Sem Pasta)`,current:`Atual`,linkFolder:`Vincular Pasta`,linkFolderDescription:`Vincular "{{name}}" a um projeto ou arquivo para acesso rápido.`,project:`Projeto`,archive:`Arquivo`,noProjectsFound:`Nenhum projeto encontrado`,noArchivesFound:`Nenhum arquivo encontrado`,unlink:`Desvincular`,link:`Vincular`,dragDropFiles:`Arraste e solte os arquivos aqui`,dropFilesHere:`Solte os arquivos aqui`,releaseToUpload:`Solte para enviar`,orClickToBrowse:`ou clique para procurar`,allFileTypesSupported:`Todos os tipos de arquivos são suportados. Arquivos ZIP serão extraídos.`,zipFilesDetected:`Arquivos ZIP detectados`,zipExtractOptions:`Arquivos ZIP serão extraídos. Escolha como lidar com a estrutura de pastas:`,preserveZipStructure:`Preservar estrutura de pastas do ZIP`,createFolderFromZip:`Criar pasta a partir do nome do arquivo ZIP`,stlThumbnailGeneration:`Geração de miniaturas STL`,zipMayContainStl:`Arquivos ZIP podem conter arquivos STL. Miniaturas podem ser geradas durante a extração.`,thumbnailsCanBeGenerated:`Miniaturas podem ser geradas para arquivos STL. Modelos grandes podem levar mais tempo para processar.`,generateThumbnailsForStl:`Gerar miniaturas para arquivos STL`,threemfDetected:`Arquivos 3MF detectados`,threemfExtractionInfo:`Modelo da impressora, material, cor e configurações de impressão serão extraídos automaticamente dos arquivos 3MF.`,willBeExtracted:`Será extraído`,filesExtracted:`{{count}} arquivos extraídos`,uploadComplete:`Upload concluído: {{succeeded}} bem-sucedidos`,uploadFailed:`Falha no envio`,zipFilesFailed:`{{count}} arquivos falharam`,uploading:`Enviando...`,changeLink:`Alterar link...`,linkTo:`Vincular a...`,linkToProjectOrArchive:`Vincular a projeto ou arquivo`,generateThumbnail:`Gerar miniatura`,generateThumbnails:`Gerar miniaturas`,generateThumbnailsForMissing:`Gerar miniaturas para arquivos STL que não possuem`,gridView:`Visualização em grade`,listView:`Visualização em lista`,lowDiskSpaceWarning:`Aviso de pouco espaço em disco`,lowDiskSpaceDetails:`Apenas {{free}} livres de {{total}} no total. O limite está definido para {{threshold}} GB nas configurações.`,files:`Arquivos`,folders:`Pastas`,size:`Tamanho`,free:`Livre`,allFiles:`Todos os arquivos`,allExternal:`Externos`,externalIsEmpty:`Nenhum arquivo externo`,externalEmptyDescription:`Os arquivos das suas pastas externas vinculadas aparecerão aqui.`,wrap:`Quebrar texto`,enableTextWrapping:`Ativar quebra de texto`,disableTextWrapping:`Desativar quebra de texto`,collapse:`Recolher`,collapseFoldersByDefault:`Recolher pastas por padrão`,expandFoldersByDefault:`Expandir pastas por padrão`,folderSort:`Ordenar pastas`,folderSortByName:`Por nome`,folderSortByActivity:`Por atividade recente`,dragToResizeTooltip:`Arraste para redimensionar, clique duas vezes para redefinir`,searchFiles:`Pesquisar arquivos...`,searchSubfoldersHint:`Incluindo subpastas`,readme:{truncated:`Truncado`,show:`Mostrar README`,hide:`Ocultar README`,label:`README`},tags:{title:`Tags`,subtitle:`Rotule arquivos para filtros transversais — brinquedos, seguro para crianças, somente PETG, o que precisar.`,manage:`Tags`,manageTitle:`Gerenciar catálogo de tags`,add:`Nova tag`,edit:`Renomear tag`,name:`Nome`,fileCount:`Arquivos`,empty:`Ainda não há tags. Crie uma para começar a rotular arquivos.`,noMatches:`Nenhuma tag correspondente.`,createPlaceholder:`ex.: brinquedos, infantil, petg`,createButton:`Criar`,nameRequired:`O nome é obrigatório.`,searchPlaceholder:`Filtrar tags...`,created:`Tag criada.`,updated:`Tag renomeada.`,deleted:`Tag removida.`,saveFailed:`Não foi possível salvar a tag.`,deleteFailed:`Não foi possível remover a tag.`,applyFailed:`Não foi possível aplicar as tags.`,applyAdd:`Adicionar tags`,applyRemove:`Remover tags`,applyAddSuccess:`{{count}} tag(s) adicionada(s) em {{files}} arquivo(s).`,applyRemoveSuccess:`{{count}} tag(s) removida(s) em {{files}} arquivo(s).`,actionAdd:`Adicionar aos arquivos selecionados`,actionRemove:`Remover dos arquivos selecionados`,tagAction:`Marcar`,bulkTitle:`Marcar {{count}} arquivo(s) selecionado(s)`,bulkTooltip:`Adicionar ou remover tags em cada arquivo selecionado.`,noPermission:`Você não tem permissão para marcar arquivos.`,filterLabel:`Filtrando por:`,clearAll:`Limpar tudo`,confirmDelete:`Excluir a tag "{{name}}"?`,confirmDeleteMessage:`Isto remove a tag do catálogo. Os arquivos mantêm as outras tags.`,confirmDeleteInUseMessage:`Esta tag está em {{count}} arquivo(s). Excluí-la remove o chip de todos; os arquivos em si ficam intactos.`,editAria:`Editar {{name}}`,deleteAria:`Excluir {{name}}`},allTypes:`Todos os tipos`,prints:`Impressões`,ascending:`Crescente`,descending:`Decrescente`,showModified:`Mostrar datas de modificação`,hideModified:`Ocultar datas de modificação`,lastModified:`Última modificação`,lastActivity:`Última atividade`,resultsCount:`{{showing}} de {{total}} arquivos`,selectAll:`Selecionar tudo`,deselectAll:`Desmarcar tudo`,selected:`{{count}} selecionado(s)`,adding:`Adicionando...`,loadingFiles:`Carregando arquivos...`,folderIsEmpty:`A pasta está vazia`,noFilesYet:`Nenhum arquivo ainda`,folderEmptyDescription:`Envie arquivos ou mova arquivos para esta pasta para começar.`,noFilesDescription:`Envie arquivos para começar a organizar seus arquivos relacionados à impressão.`,noMatchingFiles:`Nenhum arquivo correspondente`,noMatchingFilesDescription:`Nenhum arquivo corresponde aos seus critérios de pesquisa ou filtro.`,clearFilters:`Limpar filtros`,printedCount:`Impresso {{count}}x`,uploadedBy:`Enviado por`,deleteFolder:`Excluir pasta`,deleteFile:`Excluir arquivo`,deleteFilesCount:`Excluir {{count}} arquivos`,deleteFolderConfirm:`Tem certeza de que deseja excluir esta pasta? Todos os arquivos dentro também serão excluídos.`,deleteFileConfirm:`Tem certeza de que deseja excluir este arquivo?`,deleteFilesConfirm:`Tem certeza de que deseja excluir {{count}} arquivos selecionados? Esta ação não pode ser desfeita.`,deleting:`Excluindo...`,noPermissionRenameFolder:`Você não tem permissão para renomear pastas`,noPermissionLinkFolder:`Você não tem permissão para vincular pastas`,noPermissionDeleteFolder:`Você não tem permissão para excluir pastas`,onlyEmptyFoldersDeletable:`Você só pode excluir pastas vazias`,noPermissionPrint:`Você não tem permissão para imprimir`,noPermissionSlice:`Você não tem permissão para fatiar arquivos`,noPermissionAddToQueue:`Você não tem permissão para adicionar à fila`,noPermissionDownload:`Você não tem permissão para baixar arquivos`,noPermissionPreview:`Você não tem permissão para pré-visualizar arquivos`,preview3d:`Pré-visualização 3D`,noPermissionRenameFile:`Você não tem permissão para renomear este arquivo`,noPermissionGenerateThumbnail:`Você não tem permissão para gerar miniaturas`,noPermissionDeleteFile:`Você não tem permissão para excluir este arquivo`,noPermissionCreateFolder:`Você não tem permissão para criar pastas`,noPermissionUpload:`Você não tem permissão para enviar arquivos`,noPermissionMoveFiles:`Você não tem permissão para mover arquivos`,noPermissionDeleteFiles:`Você não tem permissão para excluir arquivos`,linkExternal:`Vincular externo`,linkExternalFolder:`Vincular pasta externa`,linkExternalFolderDescription:`Montar um diretório do host (NAS, USB, compartilhamento de rede) no Gerenciador de Arquivos. Os arquivos não são copiados — são acessados diretamente do caminho original.`,externalFolderNamePlaceholder:`ex. Impressões NAS`,externalPath:`Caminho do host`,externalPathHelp:`Caminho absoluto do diretório no host Docker. Deve estar montado como bind no contêiner.`,readOnly:`Somente leitura`,readOnlyHelp:`impede uploads e exclusões`,showHiddenFiles:`Mostrar arquivos ocultos (arquivos ponto)`,externalFolder:`Pasta externa`,scanFolder:`Escanear`,toast:{folderCreated:`Pasta criada`,openInSlicerFailed:`Não foi possível abrir no fatiador`,folderDeleted:`Pasta excluída`,fileDeleted:`Arquivo excluído`,filesDeleted:`Excluídos {{count}} arquivos`,filesMoved:`Arquivos movidos`,folderLinked:`Pasta vinculada`,folderUnlinked:`Pasta desvinculada`,externalFolderLinked:`Pasta externa vinculada e escaneada`,folderScanned:`Escaneamento concluído: {{added}} adicionados, {{removed}} removidos`,addedToQueue:`Adicionado {{count}} arquivo(s) à fila`,addedToQueuePartial:`Adicionado {{added}} arquivo(s), {{failed}} falharam`,failedToAddToQueue:`Falha ao adicionar arquivos: {{error}}`,fileRenamed:`Arquivo renomeado`,folderRenamed:`Pasta renomeada`,thumbnailsGenerated:`Geradas {{count}} miniatura(s)`,thumbnailsGeneratedPartial:`Geradas {{succeeded}} miniatura(s), {{failed}} falharam`,noStlMissingThumbnails:`Nenhum arquivo STL sem miniatura`,failedToGenerateThumbnails:`Falha ao gerar miniaturas: {{error}}`,thumbnailGenerated:`Miniatura gerada`,failedToGenerateThumbnail:`Falha ao gerar miniatura: {{error}}`}},projects:{parentLabel:`Projeto principal`,parentNone:`Nenhum (projeto de nível superior)`,parentHint:`Aninhe este projeto em outro para que seus números sejam somados em um projeto mestre`,partOf:`Parte de {{name}}`,subProjectCount:`{{count}} sub-projetos`,subProjectsOf:`Sub-projetos de {{name}}`,title:`Projetos`,subtitle:`Organize e acompanhe seus projetos de impressão 3D`,newProject:`Novo Projeto`,editProject:`Editar Projeto`,deleteProject:`Excluir Projeto`,projectName:`Nome do Projeto`,description:`Descrição`,noProjects:`Nenhum projeto ainda`,noProjectsFiltered:`Nenhum projeto {{status}}`,noProjectsFilteredHelp:`Você não tem nenhum projeto {{status}}. Os projetos aparecerão aqui quando seu status mudar.`,createFirst:`Crie seu primeiro projeto para começar a organizar impressões relacionadas, acompanhar o progresso e gerenciar suas construções.`,createFirstButton:`Crie Seu Primeiro Projeto`,create:`Criar`,files:`Arquivos`,prints:`Impressões`,plates:`Placas`,parts:`Peças`,lastModified:`Última Modificação`,deleteConfirm:`Tem certeza de que deseja excluir este projeto? Arquivos e itens da fila serão desvinculados, mas não excluídos.`,addFiles:`Adicionar Arquivos`,removeFile:`Remover Arquivo`,viewDetails:`Ver Detalhes`,namePlaceholder:`ex., Voron 2.4 Build`,descriptionPlaceholder:`Descrição opcional...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`A URL deve começar com http:// ou https://`,openExternalUrl:`Abrir URL do projeto`,coverImageLabel:`Imagem de capa`,coverImageAlt:`Imagem de capa do projeto`,coverImageUpload:`Enviar`,coverImageReplace:`Substituir`,coverImageRemove:`Remover`,color:`Cor`,targetPlates:`Placas Alvo`,targetPlatesPlaceholder:`ex., 25`,targetPlatesHelp:`Número de trabalhos de impressão`,targetParts:`Peças Alvo`,targetPartsPlaceholder:`ex., 150`,targetPartsHelp:`Total de objetos necessários`,targetSets:`Cópias por arquivo`,targetSetsPlaceholder:`ex.: 10`,targetSetsHelp:`Quantas vezes cada arquivo imprimível deve ser impresso`,tagsLabel:`Tags (separadas por vírgula)`,tagsPlaceholder:`ex., voron, funcional, presente`,dueDate:`Data de Vencimento`,priority:`Prioridade`,priorityLow:`Baixa`,priorityNormal:`Normal`,priorityHigh:`Alta`,priorityUrgent:`Urgente`,statusActive:`Ativo`,statusCompleted:`Concluído`,statusArchived:`Arquivado`,done:`Concluído`,completed:`Concluído`,failed:`Falhou`,inQueue:`Na fila`,noPrintsYet:`Nenhuma impressão ainda`,printJobs:`Trabalhos de impressão (placas)`,partsPrinted:`Peças impressas`,failedParts:`Peças falhadas`,import:`Importar`,export:`Exportar`,importProject:`Importar projeto`,exportAll:`Exportar todos os projetos`,loading:`Carregando projetos...`,noEditPermission:`Você não tem permissão para editar projetos`,noDeletePermission:`Você não tem permissão para excluir projetos`,noCreatePermission:`Você não tem permissão para criar projetos`,noImportPermission:`Você não tem permissão para importar projetos`,noExportPermission:`Você não tem permissão para exportar projetos`,toast:{created:`Projeto criado`,updated:`Projeto atualizado`,deleted:`Projeto excluído`,imported:`Projeto importado`,multipleImported:`{{count}} projetos importados`,importFailed:`Falha na importação`,exported:`Projetos exportados (apenas metadados)`}},projectDetail:{notFound:`Projeto não encontrado`,backToProjects:`Voltar para Projetos`,export:`Exportar`,exportProject:`Exportar projeto`,noExportPermission:`Você não tem permissão para exportar projetos`,noEditPermission:`Você não tem permissão para editar projetos`,partOf:`Parte de:`,priorityLabel:`Prioridade:`,noPrints:`Nenhuma impressão neste projeto ainda`,status:{active:`Ativo`,completed:`Concluído`,archived:`Arquivado`},priority:{low:`Baixa`,normal:`Normal`,high:`Alta`,urgent:`Urgente`},dueDate:{overdue:`Atrasado`,today:`Vence hoje`,daysLeft:`{{count}} dias restantes`},progress:{platesProgress:`Progresso das Placas`,partsProgress:`Progresso das Peças`,setsProgress:`Conjuntos completos`,sets:`conjuntos`,setsHint:`Um conjunto está completo quando cada arquivo imprimível atinge esse número`,printJobs:`Trabalhos de Impressão`,parts:`Peças`,percentComplete:`{{percent}}% concluído`,remaining:`{{count}} restantes`},stats:{printJobs:`Trabalhos de Impressão`,total:`total`,failed:`{{count}} falhou`,partsPrinted:`{{count}} peças impressas`,printTime:`Tempo de Impressão`,filamentUsed:`Filamento Usado`},cost:{title:`Rastreamento de Custos`,filamentCost:`Custo do Filamento`,energy:`Energia`,totalCost:`Custo Total`,total:`Total`,includesBom:`incl. lista de materiais`,budget:`Orçamento`,remaining:`Restante`},subProjects:{title:`Sub-projetos ({{count}})`,jobs:`{{count}} trabalhos`},rollup:{title:`Incluindo {{count}} sub-projetos`,progress:`Progresso geral`,percentComplete:`{{percent}}% concluído`},notes:{title:`Notas`,noEditPermission:`Você não tem permissão para editar notas`,placeholder:`Adicione notas sobre este projeto...`,empty:`Nenhuma nota ainda. Clique em Editar para adicionar notas.`},files:{title:`Arquivos`,linkFolders:`Vincular pastas do Gerenciador de Arquivos`,forQuickAccess:`a este projeto para acesso rápido.`,fileCount:`{{count}} arquivo(s)`,empty:`Nenhuma pasta vinculada. Vá para o Gerenciador de Arquivos e vincule uma pasta a este projeto.`,printedCount:`Impresso {{count}} vez(es)`,progressTooltip:`{{done}} de {{target}} impressões concluídas`,noFiles:`Nenhum arquivo nesta pasta.`},bom:{title:`Lista de Materiais`,acquired:`{{completed}}/{{total}} adquiridos`,showAll:`Mostrar todos`,hideDone:`Ocultar concluídos`,addPart:`Adicionar Peça`,noAddPermission:`Você não tem permissão para adicionar peças`,partNamePlaceholder:`Nome da peça (ex.: parafusos M3x8)`,partName:`Nome da peça`,qty:`Quantidade`,price:`Preço ({{currency}})`,sourcingUrlPlaceholder:`URL de fornecimento (opcional)`,remarksPlaceholder:`Observações (opcional)`,deletePart:`Excluir Peça`,deleteConfirm:`Tem certeza de que deseja excluir "{{name}}"?`,noUpdatePermission:`Você não tem permissão para atualizar peças`,noEditPermission:`Você não tem permissão para editar peças`,noDeletePermission:`Você não tem permissão para excluir peças`,totalCost:`Custo total:`,empty:`Nenhuma peça na lista de materiais. Adicione hardware, eletrônicos ou outros componentes para rastrear o que precisa ser adquirido.`},timeline:{title:`Linha do Tempo de Atividades`,empty:`Nenhuma atividade ainda.`},template:{saveAsTemplate:`Salvar como Modelo`,noCreatePermission:`Você não tem permissão para criar modelos`},queue:{title:`Fila`,viewAll:`Ver todos`,printing:`{{count}} imprimindo`,queued:`{{count}} na fila`},prints:{title:`Impressões ({{count}})`},toast:{projectUpdated:`Projeto atualizado`,partAdded:`Peça adicionada`,partRemoved:`Peça removida`,exportFailed:`Falha na exportação`,projectExported:`Projeto exportado`,templateCreated:`Modelo criado`}},system:{title:`Informações do Sistema`,version:`Versão`,uptime:`Tempo de Atividade`,cpuUsage:`Uso da CPU`,memoryUsage:`Uso da Memória`,diskUsage:`Uso do Disco`,networkInfo:`Informações de Rede`,logs:`Registros`,debugMode:`Modo de Depuração`,enableDebug:`Ativar Registro de Depuração`,disableDebug:`Desativar Registro de Depuração`,downloadLogs:`Baixar Logs`,clearLogs:`Limpar Logs`,dockerInfo:`Informações do Docker`,containerName:`Nome do Contêiner`,imageName:`Nome da Imagem`,platform:`Plataforma`,architecture:`Arquitetura`},sponsors:{sectionTitle:`Independente e financiado pela comunidade`,tagline:`O Bambuddy é gratuito e continua assim porque há quem escolha apoiá-lo. Sem VC, sem dependência de nuvem.`,viewSupporters:`Ver apoiadores`,toastPrints:`Você concluiu {{count}} impressões com o Bambuddy. O Bambuddy continua gratuito graças a quem o apoia.`,toastCost:`Você acompanhou {{total}} de filamento com o Bambuddy. Veja quem mantém o projeto independente.`,toastArchives:`{{count}} impressões arquivadas com o Bambuddy. Veja quem o mantém independente.`,toastAnniversary:`Um ano com o Bambuddy! Veja quem mantém o projeto independente.`,toastVersionUpdate:`Atualizado para v{{version}}. O Bambuddy continua gratuito graças a quem o apoia.`,toastBusiness:`Você usa o Bambuddy em {{count}} impressoras? Existe um plano de suporte para equipes: correções prioritárias, emissão de nota fiscal e contato direto com o mantenedor.`,businessCta:`Bambuddy para empresas`,businessTitle:`Bambuddy para empresas`,businessTagline:`Você está gerenciando {{count}} impressoras. Suporte prioritário, licenciamento comercial e faturamento estão disponíveis para equipes e fazendas de impressão.`},library:{title:`Biblioteca de Filamentos`,addFilament:`Adicionar Filamento`,editFilament:`Editar Filamento`,deleteFilament:`Excluir Filamento`,vendor:`Fornecedor`,material:`Material`,color:`Cor`,kFactor:`Fator K`,temperature:`Temperatura`,noFilaments:`Nenhum filamento na biblioteca`,deleteConfirm:`Tem certeza de que deseja excluir este filamento?`,importFromPrinter:`Importar da Impressora`,exportToFile:`Exportar para Arquivo`,runWithPipeline:{actionLabel:`Executar com pipeline`,noPermission:`Você não tem permissão para executar pipelines`,modalTitle:`Executar com pipeline`,confirmTitle:`Confirmar execução`,confirmIntro:`A pré-verificação encontrou problemas com esta execução`,sourceHint:`Origem`,pipelineHint:`Pipeline`,targetHint:`Destino`,pipelineListAria:`Pipelines disponíveis`,runAnyway:`Executar mesmo assim`,loading:`Carregando…`,empty:`Ainda não há pipelines salvas. Abra o diálogo Cortar e clique em "Salvar como pipeline" para criar uma.`,noTarget:`Sem impressora de destino`,noTargetMessage:`Esta pipeline não tem impressora de destino. Abra-a em Configurações para escolher uma.`,copies:`Cópias`,copiesHint:`máx {{n}}`,classTarget:`Qualquer {{model}}`,toast:{started:`Execução da pipeline iniciada`,failed:`Não foi possível iniciar a execução`},issue:{printerNotSet:`Sem impressora de destino nesta pipeline.`,printerNotFound:`Impressora de destino não existe mais.`,printerDisabled:`Impressora de destino está desativada.`,printerOffline:`Impressora de destino está offline.`,filamentType:`Slot de filamento {{slot}}: esperado {{expected}}, AMS tem {{actual}}`,filamentColor:`Slot de filamento {{slot}}: cor diferente (esperado {{expected}}, AMS tem {{actual}})`,amsSlotMissing:`Slot AMS {{slot}} indisponível nesta impressora`,filamentUnverified:`Slot de filamento {{slot}} vem de uma predefinição da nuvem / padrão e não pôde ser verificado estaticamente.`,noClassMatches:`Nenhuma impressora nesta instalação corresponde à classe de modelo de destino da pipeline ({{expected}}).`,classNotSet:`O destino da pipeline está configurado como classe de impressora, mas nenhum modelo foi escolhido.`}}},slicerSettings:{presetValuesOutdatedSidecar:`Exibindo os padrões do fatiador: seu sidecar é mais antigo que este recurso e não consegue informar os valores de um perfil. Atualize a imagem do sidecar para vê-los. Tudo o que você não alterar continua usando o perfil.`,presetValuesNotConfigured:`Exibindo os padrões do fatiador: nenhum sidecar está configurado, portanto os valores de um perfil não podem ser lidos. Tudo o que você não alterar continua usando o perfil.`,presetValuesSidecarUnavailable:`Exibindo os padrões do fatiador: o sidecar não respondeu, portanto os valores de um perfil não podem ser lidos. Tudo o que você não alterar continua usando o perfil.`,presetValuesUnavailable:`Exibindo os padrões do fatiador: não foi possível ler os valores do perfil escolhido. Tudo o que você não alterar continua usando o perfil.`,filamentDefault:`Padrão`,fromFile:`do arquivo`,fromFileHint:`O designer alterou isto no arquivo de origem. O valor é {{value}}.`,fromFilePrinterCoupled:`impressora do designer`,fromFilePrinterCoupledHint:`Ajustado para a impressora para a qual este arquivo foi projetado — pode estar errado ou fora de faixa na sua.`,fromFileOverridesPreset:`substitui o perfil`,fromFileOverridesPresetHint:`O arquivo define {{value}} enquanto o perfil escolhido usa {{preset}}. Marque apenas se o arquivo deve prevalecer.`,useFromFile:`Usar o valor do arquivo de origem para {{option}}`,otherFromFile:`Outras configurações deste arquivo`,fromFileSummary:`O designer alterou {{count}} configurações de processo neste arquivo. Só as que você marcar são usadas.`,fromFileUseAll:`Usar as configurações do designer`,fromFileUseAllHint:`Marca as configurações que valem em outras impressoras. As ajustadas para a impressora do designer, e as que definem o preset escolhido, ficam desmarcadas.`,fromFileClear:`Limpar {{count}}`,loading:`Carregando configurações do fatiador…`,mode:{simple:`Simples`,advanced:`Avançado`,expert:`Especialista`},searchPlaceholder:`Buscar configurações`,resetAll:`Redefinir {{count}}`,resetOption:`Redefinir para o padrão`,noMatches:`Nenhuma configuração corresponde a esta busca.`},slice:{filamentSlotUnset:`não definido`,processSettingsEmbedded:`Não é usado enquanto “Usar as configurações internas do arquivo” estiver ativo — as configurações do próprio arquivo conduzem este fatiamento.`,processSettingsInactive:`Inativo`,presetsHidden:`{{count}} ocultos`,showAllPresets:`Mostrar todos`,showFewerPresets:`Mostrar menos`,processSettings:`Configurações de processo`,processSettingsHint:`Ajuste o perfil escolhido para este fatiamento. Tudo o que você não alterar permanece como o perfil define.`,processSettingsChanged:`{{count}} alterados`,processSettingsUnchanged:`Padrões do perfil`,title:`Fatiar modelo`,action:`Fatiar`,actionAll:`Fatiar todas as {{count}} bandejas`,actionAllTitle:`Fatiar todas as bandejas em uma saída multi-bandeja única (um único arquivo). A seleção de filamento cobre cada slot definido pelo projeto.`,allPlatesToggle:`Fatiar todas as {{count}} bandejas`,slicing:`Fatiando…`,printer:`Perfil de impressora`,process:`Perfil de processo`,filament:`Perfil de filamento`,filamentSlot:`Filamento {{index}} ({{type}})`,selectPreset:`— Selecione uma predefinição —`,loadingPresets:`Carregando predefinições…`,analyzingPlateFilaments:`Analisando filamentos da mesa…`,analyzingPlateFilamentsHint:`Executando uma fatia de pré-visualização para descobrir quais slots AMS esta mesa usa. Cacheado depois — reabrir é instantâneo.`,previewToast:`Analisando {{name}} – {{elapsed}}`,previewWithProgress:`Analisando {{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,notUsedByPlate:`— não usado por esta mesa`,noPresetsForSlot:`Nenhuma predefinição disponível`,otherPrinters:`Outras impressoras`,presetsLoadFailed:`Falha ao carregar predefinições. Abra Configurações → Perfis para importá-las primeiro.`,refreshPresets:`Atualizar`,refreshPresetsTitle:`Atualizar predefinições — buscar as listagens mais recentes da nuvem e dos pacotes (use após excluir uma predefinição no Bambu Studio ou Bambu Handy)`,allPresetsRequired:`Todas as predefinições devem ser selecionadas`,useEmbedded:`Usar as configurações incorporadas do arquivo`,useEmbeddedHint:`Fatiar como o designer configurou (paredes, preenchimento, filamento) em vez dos perfis acima. Disponível porque sua impressora corresponde à do arquivo.`,autoOrient:`Orientar os objetos automaticamente`,autoOrientHint:`O fatiador gira cada objeto para o lado que imprime melhor antes de fatiar. Substitui a orientação salva no arquivo.`,autoArrange:`Organizar automaticamente na mesa`,autoArrangeHint:`O fatiador posiciona os objetos para que não se sobreponham. Substitui a disposição do arquivo.`,enqueuing:`Enviando trabalho de fatiamento…`,queued:`Na fila…`,failed:`Falha ao fatiar. Verifique os logs do sidecar.`,startedToast:`Fatiando {{name}} em segundo plano…`,queuedToast:`Na fila: {{name}} – {{elapsed}}`,runningToast:`Fatiando {{name}} – {{elapsed}}`,runningWithProgress:`{{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,runningWithProgressMultiPlate:`Bandeja {{plateIndex}} de {{plateCount}} • {{name}} – {{stage}} ({{percent}}%) – {{elapsed}}`,completedToast:`{{name}} fatiado`,externalWriteFallbackToast:`Salvo na biblioteca interna: não foi possível gravar na pasta externa`,failedTitle:`Falha ao fatiar`,failedToast:`Falha ao fatiar {{name}}: {{detail}}`,tier:{local:`Importado`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`Padrão`},cloud:{notAuthenticated:`Faça login no Bambu Cloud (Configurações → Perfis → Bambu Cloud) para ver as predefinições.`,expired:`Sessão do Bambu Cloud expirou – faça login novamente para atualizar as predefinições.`,unreachable:`Bambu Cloud está inacessível agora. Predefinições locais e padrão ainda funcionam.`},orcaCloud:{notAuthenticated:`Entre no Orca Cloud (Perfis → Orca Cloud) para ver seus presets Orca.`,expired:`Sessão do Orca Cloud expirada — entre novamente para atualizar seus presets Orca.`,unreachable:`Orca Cloud está indisponível no momento. Outros presets continuam funcionando.`},bedType:{label:`Mesa de impressão`,auto:`Auto (usar predefinição de processo)`,coolPlate:`Cool Plate`,coolPlateSuperTack:`Cool Plate SuperTack`,engineering:`Engineering Plate`,highTemp:`High Temp Plate`,texturedPEI:`Textured PEI Plate`,smoothPEI:`Smooth PEI Plate`},pipelines:{label:`Pipeline`,applyAria:`Aplicar pipeline`,applyPrompt:`Aplicar pipeline…`,empty:`Nenhuma pipeline salva`,saveButton:`Salvar como pipeline`,saveTitle:`Salvar a seleção atual dos quatro slots como uma pipeline reutilizável`,namePlaceholder:`Nome da pipeline`,nameAria:`Novo nome de pipeline`,toast:{applied:`"{{name}}" aplicada`,saved:`Pipeline salva`,saveFailed:`Falha ao salvar`}}},spoolman:{title:`Integração com Spoolman`,enabled:`Spoolman Ativado`,url:`URL do Spoolman`,connected:`Conectado`,disconnected:`Não Conectado`,testConnection:`Testar Conexão`,sync:`Sincronizar`,syncing:`Sincronizando...`,lastSync:`Última Sincronização`,linkToSpoolman:`Vincular ao Spoolman`,openInSpoolman:`Abrir no Spoolman`,unlinkSpool:`Desvincular Carretel`,unlinkConfirmTitle:`Remover atribuição do carretel?`,unlinkConfirmMessage:`Isso removerá o carretel deste slot. Os dados do próprio carretel permanecerão inalterados.`,selectSpool:`Selecionar Carretel`,noUnlinkedSpools:`Nenhum carretel não atribuído disponível`,linkSuccess:`Carretel atribuído com sucesso`,linkFailed:`Falha ao atribuir carretel`,unlinkSuccess:`Atribuição do carretel removida com sucesso`,unlinkFailed:`Falha ao remover atribuição do carretel`,linkedSpool:`Carretel atribuído`,spoolId:`Carretel ID (Spool ID)`,fillSourceLabel:`(Spoolman)`,weight:`Peso`,remaining:`Restante`,disableWeightSync:`Desativar Sincronização de Peso Estimado do AMS`,disableWeightSyncDesc:`Não atualize a capacidade restante a partir das estimativas do AMS. Use isso se preferir o rastreamento de uso do Spoolman em vez das estimativas baseadas em porcentagem do AMS. Novos carretéis ainda usarão a estimativa do AMS como seu peso inicial.`,reportPartialUsage:`Relatar Uso Parcial para Impressões Falhadas`,reportPartialUsageDesc:`Quando uma impressão falha ou é cancelada, relate o filamento estimado usado até aquele ponto com base no progresso das camadas.`},locations:{title:`Locais de armazenamento`,subtitle:`Gerencie prateleiras, gavetas e outros locais físicos para bobinas`,add:`Adicionar local`,addShort:`Adicionar`,edit:`Editar local`,name:`Nome`,spools:`Bobinas`,sensors:`Sensores`,empty:`Nenhum local de armazenamento. Crie sua primeira prateleira ou gaveta.`,manage:`Locais`,createPlaceholder:`ex. Prateleira A, Gaveta 1`,nameRequired:`O nome do local é obrigatório`,created:`Local criado`,updated:`Local atualizado`,deleted:`Local excluído`,saveFailed:`Falha ao salvar local`,deleteFailed:`Falha ao excluir local`,deleteBlocked:`Remova todas as bobinas deste local antes de excluir`,confirmDelete:`Excluir «{{name}}»?`,confirmDeleteMessage:`Este local será removido do catálogo. Mova as bobinas primeiro.`,confirmDeleteMessageWithSensors:`Este local será removido do catálogo. Mova as bobinas primeiro. Os sensores conectados também serão excluídos.`},inventory:{title:`Inventário de Carretéis`,subtitle:`Gerencie seus carretéis`,addToInventory:`Adicionar ao Inventário`,addToInventoryPending:`Adicionando...`,addToInventorySuccess:`Carretel adicionado ao inventário`,addToInventoryFailed:`Falha ao adicionar carretel ao inventário`,unknownSpoolTitle:`Novo filamento detectado`,unknownSpoolMessage:`Um carretel com tag RFID desconhecido foi detectado em {{location}}. Adicioná-lo ao seu inventário agora?`,unknownSpoolSlot:`Slot`,bulk:{selectAllVisible:`Selecionar todos os visíveis`,selectRow:`Selecionar linha`,selectGroup:`Selecionar grupo`,selectionCount:`{{count}} selecionados`,edit:`Editar`,printLabels:`Imprimir etiquetas`,resetUsage:`Redefinir uso`,restore:`Restaurar`,archive:`Arquivar`,delete:`Excluir`,clearSelection:`Limpar seleção`,editTitle:`Editar carretéis em massa`,editSubtitle:`Aplica-se a {{count}} carretéis selecionados. Apenas os campos marcados serão atualizados.`,editHint:`Digite em um campo para marcá-lo para atualização — apenas linhas marcadas são enviadas. Deixar um campo vazio mantém os carretéis inalterados (limpar campos só é feito por carretel).`,useCustom:`Usar "{{value}}"`,toggleField:`Ativar atualização deste campo`,changeCount:`{{count}} campos serão atualizados.`,applyPending:`Aplicando...`,applyButton:`Aplicar a {{count}} carretéis`,deleteTitle:`Excluir carretéis selecionados`,archiveTitle:`Arquivar carretéis selecionados`,restoreTitle:`Restaurar carretéis selecionados`,resetUsageTitle:`Redefinir uso dos carretéis selecionados`,deleteMessage:`Excluir permanentemente {{count}} carretéis? Esta ação não pode ser desfeita.`,archiveMessage:`Arquivar {{count}} carretéis? Eles podem ser restaurados depois.`,restoreMessage:`Restaurar {{count}} carretéis arquivados?`,resetUsageMessage:`Redefinir o contador "Total Consumido" em {{count}} carretéis? O peso restante é preservado.`,updateSuccess:`{{count}} carretéis atualizados`,updateFailed:`Atualização em massa falhou`,updatePartial:`{{ok}} carretéis atualizados, {{failed}} falharam`,updateAllFailed:`Todas as {{count}} atualizações falharam — a seleção é mantida para nova tentativa`,deleteSuccess:`{{count}} carretéis excluídos`,deleteFailed:`Exclusão em massa falhou`,deletePartial:`{{ok}} carretéis excluídos, {{failed}} falharam`,deleteAllFailed:`Todas as {{count}} exclusões falharam — a seleção é mantida para nova tentativa`,archiveSuccess:`{{count}} carretéis arquivados`,archiveFailed:`Arquivamento em massa falhou`,archivePartial:`{{ok}} carretéis arquivados, {{failed}} falharam`,archiveAllFailed:`Todos os {{count}} arquivamentos falharam — a seleção é mantida para nova tentativa`,restoreSuccess:`{{count}} carretéis restaurados`,restoreFailed:`Restauração em massa falhou`,restorePartial:`{{ok}} carretéis restaurados, {{failed}} falharam`,restoreAllFailed:`Todas as {{count}} restaurações falharam — a seleção é mantida para nova tentativa`,invalidHex:`Digite 6 caracteres hex (RRGGBB) ou 8 (RRGGBBAA). Caso contrário o campo não será aplicado.`},spoolmanMixedContentTitle:`Spoolman não pode carregar em HTTPS — conteúdo misto bloqueado pelo navegador`,spoolmanMixedContentBody:`O Bambuddy é servido via HTTPS (pelo seu reverse proxy), mas a URL do Spoolman ainda é HTTP. Os navegadores bloqueiam conteúdo misto por segurança, então a interface embutida do Spoolman não consegue carregar. O Spoolman também precisa estar acessível via HTTPS.`,spoolmanMixedContentFixReverseProxy:`Coloque o Spoolman atrás do mesmo reverse proxy do Bambuddy (Traefik / Nginx / Caddy) com HTTPS e atualize a URL do Spoolman em Configurações com o novo endereço HTTPS.`,spoolmanMixedContentFixOpenNewTab:`Como alternativa, abra o Spoolman em uma nova aba via HTTP — as regras de conteúdo misto só se aplicam a frames embutidos, uma aba independente funciona normalmente.`,spoolmanOpenInNewTab:`Abrir Spoolman em nova aba`,labels:{title:`Imprimir etiquetas de bobinas`,selectedCount:`{{count}} selecionado`,pickSpools:`Escolha para quais bobinas imprimir etiquetas:`,monochrome:`Monocromático (impressora preto e branco)`,monochromeHint:`Remove a amostra de cor e amplia o texto`,startingPosition:`Posição inicial da etiqueta`,startingPositionRange:`Somente modelos em folha: L7160 aceita 1–21; 5160 aceita 1–30.`,startingPositionInvalid:`Digite um número inteiro de 1 a {{capacity}}.`,startingPositionFirst:`A impressão começa na posição 1.`,startingPositionSkipped:`As posições de 1 a {{lastPosition}} ficarão vazias na primeira folha.`,startingPositionRangeError:`A posição inicial deve estar entre 1 e {{capacity}} para esta folha.`,searchPlaceholder:`Buscar por nome, marca ou #ID`,filterByMaterial:`Material:`,allMaterials:`Tudo`,selectVisible:`Selecionar todos visíveis ({{count}})`,deselectVisible:`Desmarcar visíveis`,clearAll:`Limpar tudo`,noSpoolsToShow:`Nenhuma bobina para mostrar. Ajuste o filtro e tente novamente.`,noMatches:`Nenhuma bobina corresponde à pesquisa ou filtro atual.`,printOne:`Imprimir etiqueta desta bobina`,printLabels:`Imprimir etiquetas…`,bulkTitle:`Escolha bobinas para etiquetar entre as {{count}} exibidas`,noSpoolsTitle:`Nenhuma bobina para rotular`,error:`Não foi possível gerar etiquetas: {{msg}}`,sortBy:{label:`Ordenar:`,id:`Por ID`,color:`Por cor`},templates:{amsHolderSmall:{label:`Suporte AMS — pequeno (74 × 33 mm)`,hint:`Uma etiqueta por página; corresponde à etiqueta imprimível do modelo MakerWorld 752566 (Suporte de etiquetas de filamento AMS).`},amsHolderLarge:{label:`Suporte AMS — grande (75 × 55 mm)`,hint:`Uma etiqueta por página; encaixa na variante com inserto em cartão do Suporte de etiquetas de filamento AMS. Espaço suficiente para amostra de cor, marca, material, ID e QR code.`},box40x30:{label:`Etiqueta de caixa (40 × 30 mm)`,hint:`Uma etiqueta por página; tamanho comum de rolo DK/Brother, ideal para etiquetar sacos de filamento e caixas de armazenamento.`},box:{label:`Box label (62 × 29 mm)`,hint:`Uma etiqueta por página; tamanho para Brother PT/QL e etiquetas pequenas Dymo.`},averyL7160:{label:`Avery L7160 — A4 sheet (38.1 × 63.5 mm × 21)`,hint:`Formato de folha UE; 21 etiquetas por página A4.`},avery5160:{label:`Avery 5160 — US Letter sheet (25.4 × 66.7 mm × 30)`,hint:`Formato de folha US; 30 etiquetas por página Letter.`}}},csv:{importButton:`Importar CSV`,exportButton:`Exportar CSV`,modalTitle:`Importar carretéis de CSV`,selectFile:`Escolha um arquivo CSV ou arraste-o aqui`,dragHint:`Cabeçalho: material (obrigatório), brand, subtype, color_name, rgba, …`,parsing:`Lendo arquivo…`,previewError:`Não foi possível ler o arquivo CSV`,validCount:`{{count}} válidos`,errorCount:`{{count}} com erro`,skippedCount:`{{count}} ignorados`,colRow:`Linha`,colStatus:`Status`,colColor:`Cor`,colorResolved:`Cor preenchida pelo catálogo`,colorCrossMaterial:`Cor obtida de um material diferente — sem correspondência exata no catálogo`,duplicateExisting:`Já existe uma bobina com este material, marca e cor — ela será importada mesmo assim como uma nova bobina`,spoolmanHint:`No modo Spoolman, use a importação/exportação CSV integrada do Spoolman.`,importValidRows:`Importar {{count}} linhas válidas`,noValidRows:`Nenhuma linha válida`,importing:`Importando…`,importSuccess:`{{count}} carretéis importados`,importError:`Falha na importação`,exportError:`Falha na exportação`},addSpool:`Adicionar Carretel`,editSpool:`Editar Carretel`,copySpool:`Copiar Carretel`,material:`Material`,selectMaterial:`Selecionar material...`,subtype:`Subtipo`,brand:`Marca`,searchBrand:`Pesquisar marca...`,useCustomBrand:`Usar "{{brand}}"`,useCustomMaterial:`Usar material personalizado: {{material}}`,suggestedOptions:`Sugeridos`,allOptions:`Todos`,colorName:`Nome da Cor`,colorNamePlaceholder:`Branco Jade, Vermelho Fogo...`,color:`Cor`,hexColor:`Cor Hexadecimal`,pickColor:`Escolher cor personalizada`,labelWeight:`Peso da Etiqueta`,coreWeight:`Peso do Carretel Vazio`,searchSpoolWeight:`Pesquisar peso do carretel...`,weightUsed:`Usado`,currentWeight:`Peso Restante`,measuredWeight:`Peso Medido`,spoolName:`Bobina`,costPerKg:`Custo por kg`,storageLocation:`Local de armazenamento`,temperature:`Temperatura`,humidity:`Umidade`,battery:`Bateria`,storageLocationPlaceholder:`ex. Prateleira A, Gaveta 1`,openInInventory:`Abrir no inventário`,measuredWeightError:`O peso medido deve estar entre {{min}}g e {{max}}g.`,slicerFilament:`Filamento do Fatiador`,slicerFilamentName:`Nome do Predefinido do Fatiador`,slicerPreset:`Predefinido do Fatiador`,searchPresets:`Pesquisar predefinições de filamento...`,selectedPreset:`Selecionado`,noPresetsFound:`Nenhuma predefinição encontrada`,tempOverrides:`Substituições de Temperatura`,note:`Nota`,notePlaceholder:`Quaisquer notas adicionais sobre este spool...`,category:`Categoria`,categoryPlaceholder:`ex. Produção, Protótipo, Cliente A`,categoryNone:`Sem categoria`,storageLocationNone:`Sem local definido`,lowStockThresholdOverride:`Limite de estoque baixo (este carretel)`,lowStockThresholdOverrideHelp:`Deixe em branco para usar o limite global ({{global}}%).`,clearRfid:`Limpar tag RFID`,rfidCleared:`Tag RFID limpa`,archive:`Arquivar`,restore:`Restaurar`,noSpools:`Nenhum carretel ainda. Adicione seu primeiro carretel para começar.`,noAvailableSpools:`Nenhum carretel disponível. Adicione um carretel ao seu inventário ou desatribua um de outro slot primeiro.`,kProfiles:`K-Perfis`,addKProfile:`Adicionar K-Perfil`,assignSpool:`Atribuir Carretel`,unassignSpool:`Desatribuir`,assignSuccess:`Carretel atribuído e slot AMS configurado`,assignPendingInsert:`Atribuído. O slot será configurado quando você inserir o carretel.`,assignFailed:`Falha ao atribuir carretel`,selectSpool:`Selecione um carretel para atribuir a este slot`,assigned:`Atribuído`,assigning:`Atribuindo...`,searchSpools:`Pesquisar carretéis...`,showAllSpools:`Mostrar todos os carretéis`,spoolmanSpools:`Bobinas Spoolman`,allMaterials:`Todos os Materiais`,filterByBrand:`Filtrar por marca...`,showArchived:`Mostrar arquivados`,quickAdd:`Adição rápida (Estoque)`,quantity:`Quantidade`,stock:`Estoque`,configured:`Configurado`,spoolsCreated:`{{count}} carretéis criados`,spoolsPartiallyCreated:`{{created}} de {{total}} carretéis criados (alguns falharam)`,spoolCreated:`Carretel criado`,spoolUpdated:`Carretel atualizado`,spoolDeleted:`Carretel excluído`,deepLinkSpoolNotFound:`Carretel não encontrado`,deepLinkFetchFailed:`Não foi possível carregar o carretel — tente novamente`,spoolArchived:`Carretel arquivado`,spoolRestored:`Carretel restaurado`,kProfileSaveFailed:`Não foi possível salvar as configurações do perfil K`,syncWeightSpoolNotFound:`Carretel não encontrado — pode ter sido excluído`,syncWeightSpoolmanUnreachable:`Spoolman está inacessível — tente novamente mais tarde`,syncWeightFailed:`Falha ao sincronizar o peso`,spoolmanUnreachable:`Spoolman está inacessível — tente novamente mais tarde`,deleteSpoolNotFound:`Carretel não encontrado — pode já ter sido excluído`,deleteFailed:`Falha ao excluir carretel`,archiveSpoolNotFound:`Carretel não encontrado — pode já ter sido excluído`,archiveFailed:`Falha ao arquivar carretel`,restoreSpoolNotFound:`Carretel não encontrado — pode já ter sido excluído`,restoreFailed:`Falha ao restaurar carretel`,saveFailed:`Falha ao salvar as alterações`,tagClearFailed:`Falha ao limpar a tag`,deleteConfirm:`Tem certeza de que deseja excluir este carretel? Esta ação não pode ser desfeita.`,archiveConfirm:`Tem certeza de que deseja arquivar este carretel?`,advancedSettings:`Configurações Avançadas`,filamentInfoTab:`Informações do Filamento`,paProfileTab:`Perfil PA`,filamentInfo:`Filamento`,additional:`Adicional`,loadingPresets:`Carregando predefinições da nuvem...`,cloudConnected:`Nuvem conectada`,cloudNotConnected:`Nuvem não conectada (usando padrões)`,recentColors:`Recentes`,searchColors:`Pesquisar cores...`,searchResults:`Resultados da pesquisa`,allColors:`Todas as cores`,commonColors:`Cores comuns`,showLess:`Mostrar menos`,showAll:`Mostrar tudo`,noColorsFound:`Nenhuma cor corresponde à sua pesquisa`,noResults:`Nenhum resultado encontrado`,extraColorsLabel:`Cores extras`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`Cole 2 a 8 paradas hex, separadas por vírgulas. Renderizado como gradiente.`,extraColorsInvalid:`Hex inválidos ignorados: {{tokens}}`,colorEffectLabel:`Efeito`,colorEffect:{none:`Nenhum`,sparkle:`Brilho`,wood:`Madeira`,marble:`Mármore`,glow:`Brilho`,matte:`Fosco`,silk:`Silk`,galaxy:`Galáxia`,rainbow:`Arco-íris`,metal:`Metal`,translucent:`Translúcido`,gradient:`Gradiente`,dualColor:`Dupla cor`,triColor:`Tricolor`,multicolor:`Multicolor`},selectMaterialFirst:`Por favor, selecione um material primeiro na aba Informações do Filamento.`,noPrintersConfigured:`Nenhuma impressora configurada. Adicione impressoras para usar perfis PA.`,matchingFilter:`Correspondente`,anyBrand:`Qualquer marca`,anyVariant:`Qualquer variante`,autoSelect:`Seleção automática`,matches:`correspondências`,match:`correspondência`,noMatches:`Nenhuma correspondência`,connected:`Conectado`,offline:`Offline`,printerOffline:`A impressora está offline. Conecte-se para visualizar os perfis de calibração.`,noKProfilesMatch:`Nenhum K-perfil corresponde ao filamento selecionado.`,leftNozzle:`Bico Esquerdo`,rightNozzle:`Bico Direito`,profilesSelected:`perfil(is) de calibração selecionado(s)`,totalInventory:`Inventário Total`,totalConsumed:`Total Consumido`,byMaterial:`Por Material`,inPrinter:`Na Impressora`,lowStock:`Estoque Baixo`,sinceTracking:`Desde o início do rastreamento`,resetConsumedCounter:`Zerar contador`,resetConsumedCounterTooltip:`Zerar o contador de gramas consumidas desta bobina. O peso restante não é alterado.`,resetConsumedCounterConfirm:`Zerar o contador de gramas consumidas desta bobina? As impressões futuras voltarão a contar do zero. A bobina em si, o cálculo do peso restante e as configurações não são alterados.`,resetAllConsumedCounters:`Zerar todos os contadores`,resetAllConsumedCountersTooltip:`Zerar o contador de gramas consumidas em todas as bobinas. Os pesos restantes não são alterados.`,resetAllConsumedCountersConfirm:`Zerar o contador de gramas consumidas nas {{count}} bobinas (incluindo as arquivadas)? Isso limpa o "Total Consumido" para que as impressões futuras contem do zero. Bobinas e pesos restantes não são alterados.`,consumedCounterReset:`Contador zerado`,allConsumedCountersReset:`Contador zerado em {{count}} bobina(s)`,resetConsumedCounterFailed:`Falha ao zerar o contador`,loadedInAms:`Carregado no AMS/Ext`,remaining:`Restante`,weightCheck:`Verificação de Peso`,lastWeighed:`Última pesagem`,neverWeighed:`Nunca pesado`,search:`Pesquisar carretéis...`,showing:`Mostrando`,to:`até`,of:`de`,show:`Mostrar`,spools:`carretéis`,spool:`carretel`,page:`Página`,noSpoolsMatch:`Nenhum resultado encontrado`,noSpoolsMatchDesc:`Tente ajustar sua pesquisa ou filtros para encontrar o que você está procurando.`,active:`Ativo`,archived:`Arquivado`,all:`Todos`,used:`Usado`,new:`Novo`,clearFilters:`Limpar filtros`,table:`Tabela`,cards:`Cartões`,net:`Líquido`,groupSimilar:`Agrupar`,groupedSpools:`{{count}} carretéis idênticos`,groupedRows:`linhas`,columns:`Colunas`,configureColumns:`Configurar Colunas`,configureColumnsDesc:`Arraste para reordenar as colunas ou use as setas. Alterne a visibilidade com o ícone de olho.`,visible:`Visível`,reset:`Redefinir`,cancel:`Cancelar`,applyChanges:`Aplicar Alterações`,moveUp:`Mover para cima`,moveDown:`Mover para baixo`,hideColumn:`Ocultar coluna`,showColumn:`Mostrar coluna`,linkToSpool:`Vincular ao Carretel`,tagLinked:`Tag vinculada ao carretel`,tagLinkFailed:`Falha ao vincular tag`,tagAlreadyLinked:`Tag já vinculada a outro carretel`,unknownTag:`Tag RFID desconhecida detectada`,usageHistory:`Histórico de Uso`,noUsageHistory:`Nenhum uso registrado ainda`,printName:`Nome da Impressão`,weightConsumed:`Peso Consumido`,clearHistory:`Limpar`,historyCleared:`Histórico de uso limpo`,fillSourceLabel:`(Inv)`,lowStockThresholdError:`O limite deve estar entre 0.1 e 99.9`,assignMismatchTitle:`Incompatibilidade de material`,assignMismatchMessage:`O material do carretel selecionado "{{spoolMaterial}}" não corresponde ao material da bandeja "{{trayMaterial}}" para {{location}}. Atribuir mesmo assim?`,assignMismatchConfirm:`Atribuir mesmo assim`,assignPartialMismatchMessage:`O material do carretel "{{spoolMaterial}}" é semelhante, mas não corresponde exatamente a "{{trayMaterial}}" em {{location}}. Deseja prosseguir?`,assignProfileMismatchMessage:`O perfil do carretel "{{spoolProfile}}" não corresponde ao perfil da bandeja "{{trayProfile}}" em {{location}}. Deseja prosseguir?`,assignReconfigureNote:`O slot do AMS será reconfigurado para usar o perfil do carretel.`,spoolmanFilamentCatalog:`Catálogo de filamentos Spoolman`,pickFromSpoolmanCatalog:`Escolher do catálogo Spoolman…`,spoolmanFilamentSelected:`Filamento selecionado do catálogo Spoolman`,spoolmanFilamentUnlinked:`Vínculo com o catálogo de filamentos removido`,noSpoolmanFilaments:`Nenhum filamento encontrado no catálogo Spoolman`,spoolmanFilamentColorSwatch:`Cor do filamento`,spoolWeightManagedBySpoolman:`O peso do carretel vazio é gerenciado por tipo de filamento no Spoolman`,spoolmanCatalogLoadFailed:`Falha ao carregar catálogo de filamentos do Spoolman`},timelapse:{title:`Timelapse`,create:`Criar Timelapse`,download:`Baixar`,delete:`Excluir`,preview:`Visualizar`,frameRate:`Taxa de Quadros`,quality:`Qualidade`,processing:`Processando...`,noTimelapses:`Nenhum timelapse disponível`},ams:{title:`AMS`,slot:`Slot`,empty:`Vazio`,emptySlot:`Slot vazio`,slotEmpty:`Vazio`,slotUnconfigured:`?`,emptySlotReset:`Nenhum carretel atribuído`,unknown:`Desconhecido`,humidity:`Umidade`,temperature:`Temperatura`,filamentType:`Tipo de Filamento`,filamentColor:`Cor`,remaining:`Restante`,history:`Histórico do AMS`,noHistory:`Nenhum histórico disponível`,configureSlot:`Configurar Slot`,externalSpool:`Carretel Externo`,profile:`Perfil`,kFactor:`Fator K`,kFactorShort:`K`,fill:`Preencher`,configure:`Configurar`,used:`usado`,remainingUnit:`restante`},printModal:{variants:{editNote:`Estas alternativas foram definidas ao enfileirar o trabalho. Cancele e enfileire de novo para alterá-las.`,title:`Alternativas de impressora`,help:`Um trabalho, uma vaga na fila. A primeira impressora compatível que ficar livre imprime o arquivo dela.`,unknownModel:`Modelo desconhecido`,plateFor:`Mesa para {{filename}}`,moveUp:`Mover para cima`,moveDown:`Mover para baixo`,queued:`Na fila com {{count}} alternativas`},selectPrinter:`Selecionar Impressora`,selectPlate:`Selecionar Placa`,filamentMapping:`Mapeamento de Filamento`,useArchiveMapping:`Mapeamento`,useArchiveMappingTooltip:`Selecionar todos os slots a partir do mapeamento de AMS salvo com este arquivo (do fatiador), em vez de corresponder por tipo/cor.`,clickToChangeSlot:`Clique para alterar a atribuição do slot`,reRead:`Reler`,plateN:`Placa {{n}}`,plateFilamentsUnreadable:`Não foi possível ler os filamentos de uma placa selecionada, portanto ela não pode ser mapeada. Desmarque-a para enfileirar as demais.`,totalCost:`Custo total:`,slotRemainingShort:` - {{grams}}g rest.`,printSettings:`Configurações de Impressão`,bedLeveling:`Nivelamento da Mesa`,flowCalibration:`Calibração de Fluxo`,vibrationCalibration:`Calibração de Vibração`,layerInspection:`Inspeção da Primeira Camada`,timelapse:`Timelapse`,cancel:`Cancelar`,noPrintersAvailable:`Nenhuma impressora disponível`,printerBusy:`Impressora ocupada`,printerOffline:`Impressora offline`,sameTypeDifferentColor:`Mesmo tipo, cor diferente`,filamentTypeNotLoaded:`Tipo de filamento não carregado`,statusReady:`Pronto`,statusColorMismatch:`Cor diferente`,statusTypeNotFound:`Tipo não encontrado`,requiredTooltip:`Necessário: {{name}} - {{color}}`,manuallySelected:`Selecionado manualmente`,autoMatched:`Correspondido automaticamente`,selectSlot:`Escolher slot`,sameTypeDifferentColorDetail:`Mesmo tipo, cor diferente: precisa de {{required}}, o slot tem {{loaded}}`,requiredTypeNotInPrinter:`Tipo de filamento necessário não encontrado na impressora.`,whenToPrint:`Quando imprimir`,asap:`O quanto antes`,queue:`Fila`,schedule:`Agendar`,dateTime:`Data e hora`,invalidDateTime:`Digite uma data e hora válidas`,openCalendar:`Abrir calendário`,requireManualStart:`Exigir início manual`,requirePreviousSuccess:`Iniciar somente se a impressão anterior foi concluída com sucesso`,autoOffAfter:`Desligar impressora ao finalizar`,helpAsap:`A impressão será adicionada ao topo da fila e começará assim que uma impressora elegível estiver ociosa.`,helpSchedule:`A impressão começará no horário agendado se a impressora estiver ociosa. Se estiver ocupada, aguardará até ficar disponível.`,helpQueue:`A impressão será adicionada ao fim da fila.`,leftNozzle:`L`,rightNozzle:`R`,leftNozzleTooltip:`Bico esquerdo`,rightNozzleTooltip:`Bico direito`,ftsSameInletHint:`Todos os filamentos desta impressão estão no comutador de trajeto de filamento IN-{{inlet}}. Trocar entre filamentos da mesma entrada é mais lento — mova um para um AMS da outra entrada.`,rackPosition:`Posição no rack`,rackPositionTooltip:`Qual bico do rack imprime este filamento. As posições são numeradas como na impressora.`,rackEmptyPosition:`Esta posição do rack está vazia`,rackWrongNozzle:`Tem um bico {{has}}; este filamento precisa de {{needs}}`,filamentOverride:`Substituição de Filamento`,filamentOverrideHint:`Substitua opcionalmente os filamentos para atribuição baseada em modelo. O agendador usará os filamentos selecionados em vez dos valores originais do 3MF.`,originalFilament:`Original`,overrideWith:`Substituir por`,resetToOriginal:`Restaurar original`,insufficientFilamentTitle:`Filamento insuficiente`,waitingForAmsStatus:`Aguardando o status do AMS de {{printer}}…`,insufficientFilamentMessage:`Alguns dos carretéis atribuídos têm menos filamento restante do que o necessário para esta impressão:`,insufficientFilamentLine:`{{printer}} - {{slot}}: necessário {{required}}g, restante {{remaining}}g`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: necessário {{required}}g, {{remaining}}g disponíveis entre bobinas correspondentes (AMS Filament Backup)`,printAnyway:`Imprimir mesmo assim`,forceColorMatch:`Forçar correspondência de cor`,staggerPrinterStarts:`Escalonar inícios`,staggerGroupSize:`Tamanho do grupo`,staggerInterval:`Intervalo (min)`,staggerPreview:`{{printers}} impressoras → {{groups}} grupos de {{size}}, iniciando a cada {{interval}} min`,staggerLastGroup:`último grupo: {{count}}`,staggerTotal:`total: {{minutes}} min`,staggerToPrinters:`Escalonar para {{count}} impressoras`,gcodeInjection:`Injetar G-code de auto-impressão`,insufficientBudget:`Orçamento insuficiente`,unlimitedNoBudget:`Ilimitado – nenhum limite de orçamento foi definido.`,noPrintableCostCenters:`Não há nenhum centro de custo ativo disponível para impressão. Peça a um administrador para conceder acesso de impressão.`},backup:{includesEncryptionKey:`Backups locais incluem o arquivo da chave de criptografia MFA (DATA_DIR/.mfa_encryption_key), então o backup ZIP é autossuficiente. Trate o ZIP como sensível — quem tiver o arquivo pode descriptografar os client secrets OIDC e os segredos TOTP armazenados.`,title:`Bakup e Restauração`,createBackup:`Criar Backup`,restoreBackup:`Restaurar Backup`,restoreDescription:`Substituir todos os dados a partir de um arquivo de backup`,downloadBackup:`Baixar Backup`,uploadBackup:`Enviar Backup`,lastBackup:`Último Backup`,autoBackup:`Backup automático`,backupNow:`Fazer Backup Agora`,restoreWarning:`Aviso: Restaurar um backup substituirá todos os dados atuais.`,includeArchives:`Incluir Arquivos`,includeSettings:`Incluir Configurações`,includeProfiles:`Incluir Perfis`,backupSuccess:`Backup criado com sucesso`,restoreSuccess:`Backup restaurado com sucesso`,backupFailed:`Falha ao criar backup`,restoreFailed:`Falha ao restaurar backup`,restoreNote:`A impressora virtual será parada durante a restauração`,githubBackup:`Backup GitHub`,enabled:`Ativado`,cloudLoginRequired:`Login no Bambu Cloud necessário. Entre em Perfis → Perfis Cloud para ativar o backup GitHub.`,cloudLoginRequiredShort:`Login Cloud necessário`,githubDescription:`Sincronize automaticamente seus perfis com um repositório GitHub privado para backup e histórico de versões.`,repoIsPrivate:`O repositório é privado — seguro para backup.`,repoIsPublicWarning:`O repositório está PÚBLICO. Os backups do Bambuddy incluem credenciais MQTT, tokens do Home Assistant, tokens do Prometheus, seu e-mail do Bambu Cloud e os códigos de acesso das impressoras via K-profiles. Salvar está bloqueado até que você torne o repositório privado nas configurações do seu provedor.`,repoVisibilityUnknown:`Não foi possível determinar a visibilidade do repositório. O Bambuddy se recusa a fazer backup em qualquer destino não confirmado como privado; salvar será bloqueado.`,repositoryUrl:`URL do repositório`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`Permitir HTTP inseguro`,allowInsecureHttpHint:`Ativar para instâncias auto-hospedadas em redes privadas sem TLS`,personalAccessToken:`Token de acesso pessoal`,tokenSaved:`(salvo)`,enterNewToken:`Digite um novo token para atualizar`,tokenHintGitHub:`Token de granularidade fina com acesso de leitura e escrita a Contents, ou token clássico com o escopo repo.`,tokenHintGitLab:`Token com o escopo api, ou read_repository junto com write_repository.`,tokenHintGitea:`Token com o escopo write:repository.`,tokenHintForgejo:`Token com o escopo write:repository. Um token limitado somente a este repositório já basta.`,branch:`Branch`,provider:`Provedor Git`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`Apenas manual`,hourly:`A cada hora`,daily:`Diário`,weekly:`Semanal`,includeInBackup:`Incluir no backup`,kProfiles:`K-Perfis`,kProfilesDescription:`Calibração de avanço de pressão das impressoras conectadas`,noPrintersConnected:`Nenhuma impressora conectada`,printersConnected:`{{connected}}/{{total}} conectadas`,cloudProfiles:`Perfis Cloud`,cloudProfilesDescription:`Predefinições de filamento, impressora e processo do Bambu Cloud e do Orca Cloud`,cloudProfilesAccounts:`Contas conectadas — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}`,appSettings:`Configurações do App`,appSettingsDescription:`Configuração do Bambuddy (banco de dados completo)`,spoolInventory:`Inventário de bobinas`,spoolInventoryDescription:`Bobinas de filamento, histórico de uso e rastreamento de custos`,printArchives:`Arquivos de impressão`,printArchivesDescription:`Metadados do histórico de impressão (sem arquivos gcode/3MF)`,lastBackupAt:`Último backup:`,noBackupsYet:`Nenhum backup ainda`,next:`Próximo:`,startingBackup:`Iniciando backup...`,test:`Testar`,enableBackup:`Ativar backup`,testConnection:`Testar conexão`,enterRepoUrl:`Digite a URL do repositório`,enterRepoAndToken:`Digite a URL do repositório e o token de acesso`,repoRequired:`A URL do repositório é obrigatória`,tokenRequired:`O token de acesso é obrigatório`,githubBackupEnabled:`Backup GitHub ativado`,tokenUpdated:`Token atualizado`,settingsSaved:`Configurações salvas`,failedToSave:`Falha ao salvar: {{message}}`,backupCompleteFiles:`Backup concluído - {{count}} arquivos atualizados`,backupSkippedNoChanges:`Backup ignorado - sem alterações`,backupFailed2:`Falha no backup: {{message}}`,clearedLogs:`{{count}} logs removidos`,failedToClearLogs:`Falha ao limpar logs: {{message}}`,restoreFromGit:{button:`Restaurar do Git`,title:`Restaurar do backup Git`,subtitle:`Escolha um commit e o que deve ser restaurado`,commitLabel:`Commit do backup`,latestCommit:`Backup mais recente (ponta do branch)`,categoriesLabel:`O que restaurar`,inspecting:`Lendo o conteúdo do backup...`,itemCount:`{{count}} no backup`,overwriteLabel:`Sobrescrever entradas existentes`,overwriteOn:`As entradas existentes serão atualizadas a partir do backup.`,overwriteOff:`Apenas as entradas ausentes são adicionadas; as existentes permanecem intactas.`,selectedCount:`{{count}} selecionados`,restoring:`Restaurando...`,confirmTitle:`Restaurar do backup?`,confirmMessage:`As categorias selecionadas serão restauradas deste commit. As entradas ausentes são adicionadas e as existentes permanecem como estão.`,confirmMessageOverwrite:`As categorias selecionadas serão restauradas deste commit, sobrescrevendo as entradas que já existem localmente. Não é possível desfazer.`,kprofilesOverwriteCaveat:`Os perfis K são a exceção: gravar um slot sempre substitui a calibração na impressora.`,tally:`{{restored}} restaurados, {{skipped}} ignorados, {{failed}} com falha`,reloadHint:`Recarregue o Bambuddy para que os dados restaurados apareçam em todos os lugares.`,partialHint:`As categorias listadas acima foram concluídas e estão salvas. As que faltam não chegaram a ser executadas.`,failed:`Falha na restauração.`,loadFailed:`Não foi possível ler o repositório de backup.`,details:{notPresent:`Não está presente neste commit de backup`,unreadableJson:`JSON ilegível: {{paths}}`,settingsNoPayload:`Nenhuma configuração nos dados`,settingsCredentialsWillSkip:`{{count}} chaves parecidas com credenciais serão ignoradas`,settingsCompanionWillSkip:`{{count}} chaves parecidas com credenciais serão ignoradas, e {{companion}} chaves que dependem delas ficarão desligadas`,settingsCompanionOnlyWillSkip:`{{companion}} chaves ficarão desligadas - a credencial que cada uma precisa não pode ser restaurada de um backup`,spoolsUsageCount:`incluindo {{count}} registros de consumo`,archivesMetadataOnly:`Somente metadados - arquivos 3MF e miniaturas não ficam em um backup Git`,kprofilesPrinterCount:`em {{count}} impressoras`},notes:{noData:`Não há dados desse tipo neste backup`,archivesPrinterMissing:`Alguns arquivos referenciavam impressoras que não existem mais - vínculo removido`,archivesProjectMissing:`Alguns arquivos referenciavam projetos que não existem mais - vínculo removido`,archivesOwnerCleared:`Alguns arquivos referenciavam usuários que não existem mais - o proprietário foi limpo, então eles só ficam visíveis para usuários com a permissão archives:read_all até que um administrador os reatribua`,archivesOwnerUnmatched:`Alguns arquivos apontam para um proprietário que esta instância não tem - o proprietário foi limpo em vez de deduzido do id de usuário da cópia, então eles só ficam visíveis para usuários com a permissão archives:read_all até que um administrador os reatribua`,archivesOwnerUnknown:`Alguns arquivos foram restaurados sem proprietário - este backup não registra nenhum, então eles só ficam visíveis para usuários com a permissão archives:read_all até que um administrador os atribua`,archivesUndeleted:`Arquivos excluídos desde o backup voltaram a ficar visíveis - a sobrescrita estava ligada`,archivesMetadataOnly:`Os arquivos restaurados contêm apenas metadados - os arquivos 3MF e as miniaturas não ficam em um backup Git`,spoolUsageUnresolved:`{{count}} registros de consumo ignorados - o carretel deles não está na lista de carretéis deste backup, então não há a que vinculá-los.`,spoolUsageUnlinked:`{{count}} registros de consumo restaurados sem o vínculo com o histórico de impressão - selecione Arquivos de impressão junto com Inventário de carretéis para mantê-lo.`,spoolTagKept:`{{count}} etiquetas de carretel foram mantidas como estavam - o backup teria apagado uma etiqueta lida desde então, ou a teria movido para um segundo carretel.`,settingsCredentialsSkipped:`{{count}} chaves parecidas com credenciais ignoradas - digite os segredos novamente à mão`,settingsAuthSkipped:`{{count}} configurações de autenticação ignoradas - altere-as em Configurações > Autenticação para que as verificações de bloqueio continuem valendo`,settingsCompanionSkipped:`{{keys}} ficaram desligados - a credencial que cada um precisa não pode ser restaurada de um backup e esta instância não tem nenhuma armazenada, então ligá-los deixaria a integração sem autenticação`,settingsMqttRelayFailed:`Configurações MQTT restauradas, mas o relay não pôde ser reconectado - reinicie o Bambuddy`,kprofilesAlwaysOverwrite:`Os perfis K sempre sobrescrevem o slot correspondente na impressora`,kprofilesAckUnreliable:`Uma impressora que não responde ainda conta como restaurada - verifique os perfis na impressora`,kprofilesPrinterMissing:`Nenhuma impressora com o número de série {{serial}} - ignorado`,kprofilesPrinterOffline:`{{printer}} ({{serial}}) não está conectada - ignorado`,kprofilesUnknownNozzle:`Diâmetro de bico inesperado {{nozzle}} para {{serial}} - enviado como está`,kprofilesUnmatched:`{{count}} perfis para {{nozzle}} não tinham correspondente em {{printer}} - adicionados como novos perfis`,kprofilesSendFailed:`Não foi possível enviar os perfis de {{nozzle}} para {{printer}} ({{serial}})`,kprofilesRefused:`{{printer}} ({{serial}}) recusou os perfis de {{nozzle}}: {{reason}}`,kprofilesStepFailed:`Não foi possível concluir a etapa dos perfis K - {{reason}}. O que foi restaurado antes continua salvo.`}},history:`Histórico`,clear:`Limpar`,date:`Data`,status:`Status`,trigger:`Tipo`,triggers:{manual:`Backup manual`,scheduled:`Backup agendado`,restore:`Restauração`},commit:`Commit`,localBackup:`Backup local`,localBackupDescription:`Crie um backup completo dos seus dados do Bambuddy incluindo banco de dados, arquivos, uploads e todos os ficheiros.`,downloadBackupLabel:`Baixar backup`,completeBackupZip:`Backup completo: banco de dados + todos os arquivos (ZIP)`,download:`Baixar`,preparingBackup:`Preparando backup...`,creatingArchive:`Criando arquivo de backup... Isso pode demorar para backups grandes.`,downloadingFile:`Baixando arquivo de backup...`,backupDownloaded:`Backup baixado com sucesso`,failedToCreateBackup:`Falha ao criar backup: {{message}}`,restore:`Restaurar`,restoreReplacesAll:`A restauração substitui todos os dados.`,restoreReplacesAllDetail:`Seu banco de dados e arquivos atuais serão completamente substituídos. É necessário reiniciar após a restauração.`,restoreConfirmTitle:`Restaurar backup`,restoreConfirmMessage:`Tem certeza de que deseja restaurar de "{{filename}}"? Isso substituirá completamente seu banco de dados e todos os arquivos. O aplicativo precisará ser reiniciado após a restauração.`,restoreConfirmButton:`Restaurar backup`,uploadingFile:`Enviando arquivo de backup...`,backupRestoredRestart:`Backup restaurado. Por favor, reinicie o Bambuddy.`,failedToRestore:`Falha ao restaurar backup. Verifique o formato do arquivo.`,reloadNow:`Recarregar agora`,creatingBackup:`Criando backup`,restoringBackup:`Restaurando backup`,preparing:`Preparando...`,processing:`Processando...`,doNotClosePage:`Por favor, não feche esta página nem navegue para outro lugar. Esta operação pode levar vários minutos para backups grandes.`,restoring:`Restaurando...`,restoreComplete:`Restauração concluída`,restoreFailed2:`Falha na restauração`,importSettings:`Importar configurações de um arquivo de backup`,pleaseWaitRestoring:`Aguarde enquanto seus dados estão sendo restaurados`,selectBackupFile:`Clique para selecionar um arquivo de backup (.json ou .zip)`,duplicateHandling:`Como funciona o tratamento de duplicatas:`,matchPrinters:`Impressoras`,matchPrintersBy:`correspondência por número de série`,matchSmartPlugs:`Tomadas inteligentes`,matchSmartPlugsBy:`correspondência por endereço IP`,matchNotificationProviders:`Provedores de notificação`,matchNotificationProvidersBy:`correspondência por nome`,matchFilaments:`Filamentos`,matchFilamentsBy:`correspondência por nome + tipo + marca`,matchArchives:`Arquivos`,matchArchivesBy:`correspondência por hash de conteúdo (sempre ignorado)`,matchPendingUploads:`Uploads pendentes`,matchPendingUploadsBy:`correspondência por nome do arquivo`,matchSettingsTemplates:`Configurações e modelos`,matchSettingsTemplatesBy:`sempre sobrescritos`,replaceExisting:`Substituir dados existentes`,keepExisting:`Manter dados existentes`,overwriteDescription:`Sobrescrever itens que já existem com dados do backup`,keepDescription:`Restaurar apenas itens que ainda não existem`,overwriteCaution:`Cuidado:`,overwriteWarning:`A sobrescrita substituirá suas configurações atuais pelos dados do backup. Códigos de acesso das impressoras nunca são sobrescritos por segurança.`,cancel:`Cancelar`,processingBackup:`Processando arquivo de backup...`,itemsRestored:`Itens restaurados`,itemsSkipped:`Itens ignorados`,restored:`Restaurados`,skippedAlreadyExist:`Ignorados (já existem)`,filesCategory:`Arquivos (3MF, miniaturas, etc.)`,andMore:`...e mais {{count}}`,newApiKeysGenerated:`Novas chaves API geradas`,keysShownOnce:`Estas chaves são exibidas apenas uma vez. Copie-as agora!`,copy:`Copiar`,noDataFound:`Nenhum dado para restaurar foi encontrado no arquivo de backup.`,close:`Fechar`,scheduledBackup:`Backups agendados`,scheduledBackupDescription:`Cria automaticamente snapshots de backup conforme agendamento. O diretório de saída pode ser montado em um NAS ou armazenamento externo.`,frequency:`Frequência`,backupTime:`Tempo`,retention:`Retenção`,retentionDescription:`Número de backups a manter`,outputPath:`Caminho de saída`,outputPathPlaceholder:`Padrão: {{path}}`,outputPathDescription:`Deixe em branco para o local padrão`,runNow:`Executar agora`,backupFiles:`Arquivos de backup`,noScheduledBackups:`Sem backups ainda`,deleteBackup:`Excluir`,deleteBackupConfirm:`Excluir este arquivo de backup?`,backupRunning:`Backup em andamento...`,scheduledBackupComplete:`Backup concluído com sucesso`,scheduledBackupFailed:`Falha no backup`,nextBackup:`Próximo backup`,backupSize:`Tamanho`,localTimeHint:`Horário local ({{tz}})`,defaultPathLabel:`Padrão:`,pathCheck:{title:`O Bambuddy não consegue gravar neste diretório`,howToFix:`Como corrigir:`,sandboxed:`O serviço do Bambuddy não consegue gravar em {{path}}. Sua unit do systemd roda com ProtectSystem=strict, o que torna todo diretório fora dos diretórios de instalação, dados e logs somente leitura para o serviço - mesmo um em que você consegue gravar pelo seu próprio shell.`,read_only:`{{path}} está em um sistema de arquivos somente leitura.`,permission_denied:`O Bambuddy não tem permissão para gravar em {{path}}. Verifique o dono e as permissões do diretório.`,no_space:`O sistema de arquivos que contém {{path}} está cheio.`,not_a_directory:`{{path}} existe, mas não é um diretório.`,missing:`{{path}} não existe e não pôde ser criado.`,error:`O Bambuddy não consegue gravar em {{path}}.`,ephemeralTitle:`Estes backups não sobrevivem à recriação do contêiner`,container_ephemeral:`{{path}} está dentro do contêiner do Bambuddy, não no host. Backups gravados ali são perdidos quando o contêiner é recriado. Monte o diretório do host:`},categories:{settings:`Configurações`,notification_providers:`Provedores de notificação`,notification_templates:`Modelos de notificação`,smart_plugs:`Tomadas inteligentes`,printers:`Impressoras`,filaments:`Filamentos`,maintenance_types:`Tipos de manutenção`,archives:`Arquivos`,projects:`Projetos`,pending_uploads:`Uploads pendentes`,external_links:`Links externos`,api_keys:`Chaves API`}},tags:{title:`Etiquetas`,addTag:`Adicionar Tag`,editTag:`Editar Tag`,deleteTag:`Excluir Tag`,tagName:`Nome da Tag`,tagColor:`Cor da Tag`,noTags:`Nenhuma tag`,deleteConfirm:`Tem certeza de que deseja excluir esta tag?`,manageTags:`Gerenciar Tags`},uploadModal:{title:`Upload Arquivos 3MF`,dragDrop:`Arraste e solte arquivos .3mf aqui`,or:`ou`,browseFiles:`Procurar Arquivos`,extractionInfo:`O modelo da impressora será extraído automaticamente dos metadados do arquivo 3MF.`,uploaded:`enviado`,failed:`falhou`,uploading:`Enviando...`,upload:`Enviar`,uploadFailed:`Falha no envio`},editArchive:{title:`Editar Arquivo`,name:`Nome`,namePlaceholder:`Nome da impressão`,printer:`Impressora`,noPrinter:`Nenhuma impressora`,project:`Projeto`,noProject:`Nenhum projeto`,itemsPrinted:`Itens Impressos`,itemsPrintedHelp:`Número de itens produzidos neste trabalho de impressão`,filamentUsed:`Filamento usado (g)`,filamentUsedPlaceholder:`ex.: 46.16`,filamentUsedHelp:`Informe manualmente quando uma impressão for arquivada sem o 3MF, para que ela ainda conte nos totais de filamento. Reescanear um arquivo que tem o 3MF lê o valor novamente do arquivo.`,notes:`Notas`,notesPlaceholder:`Adicione notas sobre esta impressão...`,externalLink:`Link Externo`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Link para Printables, Thingiverse ou outra fonte`,tags:`Etiquetas`,tagsPlaceholder:`Adicionar tags...`,addMoreTags:`Adicionar mais tags...`,matchingTags:`Correspondendo "{{query}}"`,existingTags:`Tags existentes`,clickToAdd:`(clique para adicionar)`,status:`Status`,failureReason:`Motivo da Falha`,selectReason:`Selecione o motivo...`,photos:`Fotos do Resultado da Impressão`,photosHelp:`Clique em + para adicionar fotos do seu resultado impresso`,printResult:`Resultado da Impressão`,saving:`Salvando...`,failureReasons:{adhesionFailure:`Falha de adesão`,spaghettiDetached:`Spaghetti / Destacado`,layerShift:`Deslocamento de camada`,cloggedNozzle:`Bico entupido`,filamentRunout:`Fim do filamento`,warping:`Empenamento`,stringing:`Fios`,underExtrusion:`Subextrusão`,powerFailure:`Falha de energia`,userCancelled:`Cancelado pelo usuário`,other:`Outro`},statuses:{completed:`Concluído`,failed:`Falhou`,aborted:`Cancelado`,printing:`Imprimindo`}},kProfiles:{title:`Perfis K`,noPrintersConfigured:`Nenhuma impressora configurada`,addPrinterInSettings:`Adicione uma impressora nas Configurações para gerenciar K-profiles`,noActivePrinters:`Nenhuma impressora ativa`,enablePrinterConnection:`Ative a conexão da impressora para visualizar seus K-profiles`,loadingProfiles:`Carregando K-Profiles...`,printerOffline:`Impressora Offline`,printerOfflineDesc:`A impressora selecionada não está conectada. Ligue-a para visualizar os K-profiles.`,noMatchingProfiles:`Nenhum Perfil Correspondente`,noMatchingProfilesDesc:`Nenhum perfil corresponde aos seus critérios de pesquisa`,noKProfiles:`Nenhum K-Profile`,noKProfilesDesc:`Nenhum perfil de avanço de pressão encontrado para bico de {{diameter}}mm`,createFirstProfile:`Criar Primeiro Perfil`,printer:`Impressora`,nozzle:`Bico`,refresh:`Atualizar`,addProfile:`Adicionar Perfil`,export:`Exportar`,import:`Importar`,select:`Selecionar`,selectAll:`Selecionar Todos`,delete:`Excluir`,searchPlaceholder:`Pesquisar por nome ou filamento...`,allExtruders:`Todos os Extrusores`,leftOnly:`Apenas Esquerdo`,rightOnly:`Apenas Direito`,allFlow:`Todo Fluxo`,hfOnly:`Apenas HF`,sOnly:`Apenas S`,sortName:`Ordenar: Nome`,sortKValue:`Ordenar: Valor K`,sortFilament:`Ordenar: Filamento`,leftExtruder:`Extrusor Esquerdo`,rightExtruder:`Extrusor Direito`,modal:{addTitle:`Adicionar K-Profile`,editTitle:`Editar K-Profile`,profileName:`Nome do Perfil`,profileNamePlaceholder:`Meu Perfil PLA`,kValue:`Valor K`,kValuePlaceholder:`0.020`,kValueHelp:`Faixa típica: 0.01 - 0.06 para PLA, 0.02 - 0.10 para PETG`,filament:`Filamento`,selectFilament:`Selecionar filamento...`,source:{local:`Importado`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`Integrado`},noFilamentsHelp:`Nenhum filamento disponível. Entre na Bambu Cloud ou importe predefinições em Perfis → Perfis Locais.`,searchFilaments:`Buscar filamentos...`,noFilamentMatches:`Nenhum filamento corresponde a essa busca`,flowType:`Tipo de Fluxo`,highFlow:`Alto Fluxo`,standard:`Padrão`,nozzleSize:`Tamanho do Bico`,extruder:`Extrusor`,extruders:`Extrusores`,left:`Esquerdo`,right:`Direito`,notes:`Notas (armazenadas localmente)`,notesPlaceholder:`Adicione notas sobre este perfil...`,notesHelp:`As notas são salvas no Bambuddy, não na impressora`,syncing:`Sincronizando com a impressora...`,savingExtruder:`Salvando no extrusor {{current}}/{{total}}...`,pleaseWait:`Por favor, aguarde`},deleteConfirm:{title:`Excluir Perfil`,cannotUndo:`Isso não pode ser desfeito`,message:`Tem certeza de que deseja excluir "{{name}}" da impressora?`},bulkDelete:{title:`Excluir Perfis`,cannotUndo:`Isso não pode ser desfeito`,message:`Tem certeza de que deseja excluir {{count}} perfis selecionados da impressora?`},toast:{profileSaved:`K-profile salvo`,profilesSaved:`K-profile salvo em {{count}} extrusores`,selectAtLeastOneExtruder:`Por favor, selecione pelo menos um extrusor`,selectFilament:`Selecione um filamento primeiro`,filamentNotResolvable:`Sem ID de filamento Bambu para {{name}} — a impressora não consegue armazenar um perfil`,profileDeleted:`K-profile excluído`,profilesDeleted:`{{count}} perfis excluídos`,exportedProfiles:`{{count}} perfis exportados`,importedProfiles:`{{count}} de {{total}} perfis importados`,noProfilesToExport:`Nenhum perfil para exportar`,invalidFileFormat:`Formato de arquivo inválido`,failedToParseImport:`Falha ao analisar o arquivo de importação`,failedToSaveBatch:`Falha ao salvar K-profiles`,noteSaved:`Nota salva`,failedToSaveNote:`Falha ao salvar nota`},permission:{noRead:`Você não tem permissão para atualizar perfis`,noCreate:`Você não tem permissão para adicionar perfis`,noUpdate:`Você não tem permissão para atualizar K-profiles`,noDelete:`Você não tem permissão para excluir K-profiles`,noExport:`Você não tem permissão para exportar perfis`,noImport:`Você não tem permissão para importar perfis`}},virtualPrinter:{title:`Impressora Virtual`,running:`Em execução`,stopped:`Parada`,description:{default:`Ative uma impressora virtual que aparece no Bambu Studio e no OrcaSlicer. Os arquivos enviados para esta impressora serão arquivados diretamente sem impressão.`,proxy:`Ative um proxy que retransmite o tráfego do slicer para uma impressora real, permitindo impressão remota em qualquer rede.`},enable:{title:`Ativar Impressora Virtual`,visibleInSlicer:`Visível como "Bambuddy" na descoberta do slicer`,proxyingTo:`Proxy para {{name}}`,notActive:`Não ativo`},model:{title:`Modelo da Impressora`,description:`Selecione qual modelo de impressora emular.`,restartWarning:`Alterar o modelo reiniciará a impressora virtual`},accessCode:{title:`Código de acesso`,isSet:`O código de acesso está definido`,notSet:`Nenhum código de acesso definido — necessário para ativar.`,placeholder:`Digite um código de 8 caracteres`,placeholderChange:`Digite um novo código para alterar`,hint:`Deve ter exatamente 8 caracteres. Usado pelos slicers para autenticação.`,charCount:`({{count}}/8)`,inheritedFromTarget:`Herdado da impressora alvo`,derivedFromTargetHint:`Usa o código de acesso da impressora alvo. A ponte encaminha a autenticação do slicer para a impressora real, então os códigos precisam corresponder — edite o código nas configurações da impressora para alterá-lo.`,reveal:`Mostrar código de acesso`,hide:`Ocultar código de acesso`},targetPrinter:{title:`Impressora Alvo`,configured:`Proxy alvo configurado`,notConfigured:`Nenhuma impressora alvo selecionada - necessário para o modo proxy`,placeholder:`Selecione uma impressora...`,hint:`Selecione a impressora para a qual o tráfego do slicer será enviado. A impressora deve estar no modo LAN.`,noPrinters:`Nenhuma impressora configurada. Adicione uma impressora primeiro para usar o modo proxy.`},remoteInterface:{title:`Substituição da Interface de Rede`,configured:`Substituição da interface ativa`,optional:`Opcional - use se o IP detectado automaticamente estiver errado (por exemplo, várias NICs, Docker, VPN)`,placeholder:`Detecção automática (padrão)...`,hint:`Substitua o endereço IP anunciado via SSDP e usado no certificado TLS. Útil quando o Bambuddy possui várias interfaces de rede.`},mode:{title:`Modo`,archive:`Arquivar`,archiveDesc:`Arquivar arquivos imediatamente`,review:`Revisar`,reviewDesc:`Revisar antes de arquivar`,queue:`Fila`,queueDesc:`Arquivar e adicionar à fila`,proxy:`Proxy`,proxyDesc:`Retransmitir para impressora real`},autoDispatch:{title:`Envio automático`,description:`Iniciar impressões automaticamente quando adicionadas à fila. Quando desativado, as impressões aguardam envio manual.`},queueForceColorMatch:{title:`Forçar correspondência de cor`,description:`Recusa enviar para uma impressora que não tenha exatamente o tipo e cor de filamento carregados. Desativado por padrão — sem isto, a fila usa apenas correspondência por modelo e pode escolher uma impressora com a cor errada carregada.`},saveAmsMapping:{title:`Salvar mapeamento de AMS`,description:`Persiste a escolha de slot AMS feita pelo próprio fatiador (do comando MQTT project_file) no arquivo, para que uma reimpressão posterior reutilize o mesmo carretel físico em vez de derivá-lo novamente do tipo/cor do arquivo. Desativado por padrão.`},gcodeInjection:{title:`Injeção de G-code`,description:`Aplica os trechos de G-code configurados por modelo nas Configurações aos trabalhos deste VP. Desativado por padrão.`},tailscaleDisabled:{title:`Integração Tailscale`,description:`Ative para marcar este VP como exposto via Tailscale. Mostra o endereço Tailscale do host para você saber qual IP colar no fatiador. A etapa de importação CA é inalterada — este toggle não afeta certificados.`},setupRequired:{title:`Configuração Necessária`,description:`O recurso de impressora virtual requer configuração adicional do sistema antes de funcionar. Isso inclui encaminhamento de portas, regras de firewall e configurações específicas da plataforma.`,readGuide:`Leia o guia de configuração antes de ativar`},howItWorks:{title:`Como funciona`,step1:`Complete o guia de configuração para sua plataforma`,step2:`Ative a impressora virtual e defina um código de acesso`,step3:`No Bambu Studio ou OrcaSlicer, vá para "Adicionar Impressora"`},status:{title:`Detalhes do Status`,printerName:`Nome da Impressora`,model:`Modelo`,serialNumber:`Número de Série`,mode:`Modo`,pendingFiles:`Arquivos Pendentes`,targetPrinter:`Impressora Alvo`,ftpPort:`Porta FTP`,mqttPort:`Porta MQTT`,ftpConnections:`Conexões FTP`,mqttConnections:`Conexões MQTT`},toast:{updated:`Configurações da impressora virtual atualizadas`,failedToUpdate:`Falha ao atualizar as configurações`,copyFailed:`Falha ao copiar — selecione o texto manualmente`,accessCodeRequired:`Defina um código de acesso primeiro`,targetPrinterRequired:`Selecione uma impressora alvo primeiro`,bindIpRequired:`Defina um IP de ligação primeiro`,accessCodeEmpty:`O código de acesso não pode estar vazio`,accessCodeLength:`O código de acesso deve ter exatamente 8 caracteres`,targetCodeChangedRebind:`O código de acesso agora corresponde à nova impressora alvo. Adicione este dispositivo novamente no seu slicer para usar o novo código.`,created:`Impressora virtual criada`,failedToCreate:`Falha ao criar impressora virtual`,deleted:`Impressora virtual excluída`,failedToDelete:`Falha ao excluir impressora virtual`},list:{title:`Impressoras Virtuais`,add:`Adicionar`,addFirst:`Adicionar Impressora Virtual`,empty:`Nenhuma impressora virtual configurada. Adicione uma para começar.`},bindIp:{title:`Interface de Rede`,placeholder:`Selecionar interface...`,hint:`Interface de rede para esta impressora virtual. Deve ser única por impressora.`},proxy:{accessCodeHint:`No modo proxy, use o código de acesso da impressora alvo no slicer. A conexão é encaminhada de forma transparente para a impressora real.`},addDialog:{title:`Adicionar Impressora Virtual`,name:`Nome`,hint:`Você pode configurar o código de acesso, impressora alvo e outras configurações após a criação.`,create:`Criar`},deleteConfirm:{title:`Excluir Impressora Virtual`,message:`Tem certeza que deseja excluir "{{name}}"? Isso irá parar todos os serviços desta impressora.`},archiveNameSource:{title:`Origem do nome do arquivo`,description:`Escolha como os novos arquivos são nomeados quando chegam pela impressora virtual. "Metadados" usa o título embutido pelo slicer no 3MF (padrão). "Nome do arquivo" usa o nome que o Bambu Studio enviou via FTP. Nota: o Bambu Studio sobrescreve o nome digitado no diálogo "enviar para impressora" com o campo Título do 3MF quando presente, portanto ambos os modos costumam produzir a mesma string.`,metadata:`Metadados`,filename:`Nome do arquivo`},caCert:{title:`Certificado do slicer`,description:`As impressoras virtuais usam um certificado TLS assinado pela CA do Bambuddy. Importe este certificado CA para o armazenamento de confiança do seu slicer uma única vez para que ele aceite a conexão — sem precisar copiá-lo pela linha de comando.`,copy:`Copiar`,copied:`Copiado`,download:`Baixar`,fingerprint:`SHA-256`}},modelViewer:{openInSlicer:`Abrir no Slicer`,openInSlicerWith:`Abrir em {{slicer}}`,moreSlicerOptions:`Mais opções de fatiador`,openInSlicerFailed:`Não foi possível abrir no fatiador`,tabs:{model:`Modelo 3D`},notAvailable:`Não disponível`,plates:`Placas`,allPlates:`Todas as Placas`,plateNumber:`Placa {{number}}`,plateCount:`{{count}} placa`,plateCount_other:`{{count}} placas`,objectCount:`{{count}} objeto`,objectCount_other:`{{count}} objetos`,filamentCount:`{{count}} filamento`,filamentCount_other:`{{count}} filamentos`,eta:`ETA {{minutes}} min`,noPreview:`Pré-visualização não disponível para este arquivo`,pagination:{pageOf:`Página {{current}} de {{total}}`,prev:`Anterior`,next:`Próximo`},errors:{failedToLoad:`Falha ao carregar o arquivo`,noMeshes:`Nenhuma malha encontrada no arquivo 3MF`,unsupportedFormat:`Formato de arquivo não suportado`}},maintenanceDescriptions:{lubricateCarbonRods:`Aplique lubrificante nos eixos de carbono para um movimento suave`,lubricateRails:`Aplique lubrificante nos trilhos lineares para um movimento suave`,cleanNozzle:`Limpe o hotend e o bico para evitar entupimentos`,checkBelts:`Verifique a tensão das correias para impressões precisas`,cleanBuildPlate:`Limpe a placa de construção para melhor adesão`,checkExtruder:`Verifique as engrenagens do extrusor quanto ao desgaste`,checkCooling:`Verifique se os ventiladores de resfriamento estão funcionando corretamente`,generalInspection:`Inspeção geral da impressora`,cleanCarbonRods:`Limpe os eixos de carbono para reduzir o atrito`,lubricateSteelRods:`Aplique lubrificante nas barras de aço para um movimento suave`,cleanSteelRods:`Limpe as barras de aço para reduzir o atrito`,cleanLinearRails:`Limpe os trilhos lineares para remover poeira e detritos`,checkPtfeTube:`Verifique o tubo PTFE quanto ao desgaste ou danos`,replaceHepaFilter:`Substitua o filtro HEPA para qualidade do ar`,replaceCarbonFilter:`Substitua o filtro de carbono ativado`,lubricateLeftNozzleRail:`Lubrifique o trilho do bico esquerdo (série H2)`},haSensors:{label:`Sensores`,unavailable:`Indisponível`,blocksPrints:`{{entity}} — segura as impressões enquanto houver alerta`,states:{open:`Aberto`,closed:`Fechado`,unlocked:`Destrancado`,locked:`Trancado`,detected:`Detectado`,clear:`Livre`,wet:`Molhado`,dry:`Seco`,problem:`Problema`,ok:`OK`,running:`Em funcionamento`,stopped:`Parado`,on:`Ligado`,off:`Desligado`},sectionTitle:`Sensores do Home Assistant (impressoras)`,add:`Adicionar sensor`,addTitle:`Adicionar sensor do Home Assistant`,editTitle:`Editar sensor do Home Assistant`,empty:`Nenhum sensor ainda. Vincule um contato de porta ou um termômetro do Home Assistant para exibi-lo no cartão da impressora.`,unknownPrinter:`Impressora desconhecida`,badgeBlocks:`Segura impressões`,badgeNotifies:`Notifica`,badgeHidden:`Oculto no cartão`,printer:`Impressora`,entity:`Entidade`,searchPlaceholder:`Buscar entidades...`,noEntities:`Nenhuma entidade correspondente`,name:`Nome exibido`,alertWhen:`Alertar quando`,alertNever:`Nunca — apenas exibir`,alertAbove:`Acima de`,alertBelow:`Abaixo de`,alertHint:`O estado de alerta destaca o sensor no cartão da impressora e habilita as opções abaixo.`,showOnCard:`Mostrar no cartão da impressora`,notifyOnAlert:`Enviar uma notificação quando o alerta começar`,blockPrint:`Segurar as impressões na fila enquanto houver alerta`,blockPrintHint:`Os trabalhos permanecem na fila e começam sozinhos quando o sensor normaliza. Ignorado enquanto o Home Assistant estiver inacessível.`,toast:{created:`Sensor adicionado`,updated:`Sensor salvo`,deleted:`Sensor removido`},error:{pickEntity:`Escolha uma entidade do Home Assistant`,nameRequired:`Informe um nome exibido`,printerRequired:`Escolha uma impressora`,alertRequired:`Defina primeiro uma condição de alerta`}},locationHaSensors:{sectionTitle:`Sensores do Home Assistant (locais de armazenamento)`,sectionDescription:`Vincule sensores de temperatura, umidade ou bateria do Home Assistant aos seus locais de armazenamento para exibir leituras em tempo real no cartão do filamento e na tabela. É permitido apenas um sensor por categoria em cada local.`,add:`Adicionar sensor`,addTitle:`Adicionar sensor do Home Assistant`,editTitle:`Editar sensor do Home Assistant`,empty:`Nenhum sensor ainda. Vincule um sensor de temperatura ou umidade do Home Assistant para exibi-lo no cartão do filamento.`,unknownLocation:`Local desconhecido`,location:`Local de armazenamento`,showOnCard:`Mostrar no cartão do filamento`,overwriteConfirm:{title:`Substituir o sensor existente?`,messageTemperature:`"{{location}}" já tem um sensor de temperatura vinculado: {{name}}. Continuar irá substituí-lo.`,messageHumidity:`"{{location}}" já tem um sensor de umidade vinculado: {{name}}. Continuar irá substituí-lo.`,messageBattery:`"{{location}}" já tem um sensor de bateria vinculado: {{name}}. Continuar irá substituí-lo.`},autoAdd:{confirmTitle:`Adicionar também os outros sensores?`,confirmMessage:`O Bambuddy também encontrou outros sensores para este local. Escolha quais adicionar também.`,added:`Também adicionado: {{names}}`,noneFound:`Nenhum sensor de temperatura, umidade ou bateria correspondente foi encontrado para este local.`,onlyThisOne:`Apenas este`},options:{buttonLabel:`Opções do sensor`,title:`Opções do Sensor de Local`,description:`Esses valores são usados quando um sensor de temperatura, umidade ou bateria é vinculado automaticamente junto com o primeiro sensor de um local.`,generalSettings:`Configurações gerais`,pollInterval:`Intervalo de atualização (segundos)`,pollIntervalHint:`Com que frequência o Bambuddy consulta o Home Assistant e atualiza os valores dos sensores na tela. Mínimo de 60 segundos.`,colorizeValues:`Colorir os valores dos sensores de acordo com seus limites de alerta`,aboveColor:`Cor acima do limite`,belowColor:`Cor abaixo do limite`,optimalColor:`Cor para o valor ideal`,colors:{red:`Vermelho`,orange:`Laranja`,yellow:`Amarelo`,green:`Verde`,blue:`Azul`,purple:`Roxo`,pink:`Rosa`},saved:`Opções salvas`,saveFailed:`Falha ao salvar as opções`,reset:`Redefinir`,resetConfirm:{title:`Redefinir todos os sensores de local existentes?`,message:`Isso sobrescreve os limites de alerta, notificações e visibilidade no cartão de todos os sensores de temperatura, umidade e bateria de locais existentes com os valores configurados acima, e restaura o nome de cada sensor para o nome amigável do Home Assistant — os sensores de impressora não são afetados. Isso não pode ser desfeito. Dependendo da quantidade de sensores, isso pode levar um momento.`},resetDone:`Aplicado a {{count}} sensores de local`,resetFailed:`Falha ao redefinir os sensores de local`},deleteAllConfirm:{title:`Excluir todos os sensores?`,message:`Isso remove todos os {{count}} sensores vinculados a "{{location}}". Esta ação não pode ser desfeita.`},currentlyBound:`Atualmente vinculado: {{entity}}`,error:{locationRequired:`Escolha um local de armazenamento`},toast:{created:`Sensor adicionado`,updated:`Sensor salvo`,deleted:`Sensor removido`}},smartPlugs:{offline:`Offline`,admin:`Administrador`,openPlugAdminPage:`Abrir o painel de administração da tomada inteligente`,deleteSmartPlug:`Excluir Tomada Inteligente`,turnOnSmartPlug:`Ligar Tomada Inteligente`,turnOffSmartPlug:`Desligar Tomada Inteligente`,turnOn:`Ligar`,turnOff:`Desligar`,addSmartPlug:{scanningNetwork:`Procurando na rede...`,chooseEntity:`Escolha uma entidade...`,connectionFailed:`Falha na conexão`,searchEntities:`Pesquisar entidades...`,searchPowerSensors:`Pesquisar sensores de energia...`,searchEnergySensors:`Pesquisar sensores de energia...`,placeholders:{plugName:`Tomada da Sala`,mqttStateOnValue:`ON, true, 1`,mqttSameAsPower:`Mesmo que o tópico de energia, ou diferente`}},linkedTo:`Vinculado a:`,monitorOnly:`Apenas monitoramento`,alerts:`Alertas`,scheduleOn:`Ligar {{time}}`,scheduleOff:`Desligar {{time}}`,on:`Ligado`,off:`Desligado`,power:`Potência`,kwhToday:`kWh Hoje`,settings:`Configurações`,automationSettings:`Configurações de automação`,showInSwitchbar:`Mostrar na barra de interruptores`,quickAccessSidebar:`Acesso rápido pela barra lateral`,enabled:`Ativado`,enableAutomation:`Ativar automação para este plugue`,autoOn:`Auto Ligar`,autoOnDescription:`Ligar quando a impressão iniciar`,autoOff:`Auto Desligar`,autoOffDescription:`Desligar quando a impressão terminar (única vez)`,autoOffPersistent:`Manter ativado`,autoOffPersistentDescription:`Permanecer ativado entre impressões em vez de única vez`,controlsPrinterPower:`Alimenta a impressora`,controlsPrinterPowerDescription:`Desative se esta tomada alimenta apenas um acessório (ventoinha do filtro, luzes). Caso contrário, desligá-la marca a impressora como offline.`,autoOffAfterDrying:`Desligar Após Secagem`,autoOffAfterDryingDescription:`Desligar quando a secagem do AMS terminar`,delayAfterDryingMinutes:`Atraso após secagem (minutos)`,turnOffDelayMode:`Modo de atraso para desligar`,time:`Tempo`,temp:`Temp.`,delayMinutes:`Atraso (minutos)`,tempThreshold:`Limite de temperatura (°C)`,tempThresholdDescription:`Desliga quando o bico esfria abaixo desta temperatura`,edit:`Editar`,deleteConfirm:`Tem certeza que deseja excluir "{{name}}"? Esta ação não pode ser desfeita.`,turnOnConfirm:`Tem certeza que deseja ligar "{{name}}"?`,turnOffConfirm:`Tem certeza que deseja desligar "{{name}}"? Isso cortará a energia do dispositivo conectado.`,failedToTurn:`Falha ao {{action}} "{{name}}"`,unknown:`Desconhecido`,addTitle:`Adicionar plugue inteligente`,editTitle:`Editar plugue inteligente`,stopScanning:`Parar varredura`,discoverTasmota:`Descobrir dispositivos Tasmota`,foundDevices:`{{count}} dispositivo(s) encontrado(s) - clique para selecionar:`,noDevicesFound:`Nenhum dispositivo Tasmota encontrado na sua rede`,haNotConfigured:`Home Assistant não está configurado. Configure em`,haSettingsPath:`Configurações → Rede → Home Assistant`,selectEntity:`Selecionar entidade *`,ipAddress:`Endereço IP *`,nameLabel:`Nome *`,username:`Usuário`,password:`Senha`,authHint:`Deixe vazio se seu dispositivo Tasmota não requer autenticação`,linkToPrinter:`Vincular à impressora`,noPrinter:`Sem impressora (apenas controle manual)`,linkingDescription:`A vinculação permite ligar/desligar automaticamente ao iniciar/terminar impressão`,powerAlerts:`Alertas de potência`,alertAbove:`Alertar se acima (W)`,alertBelow:`Alertar se abaixo (W)`,alertDescription:`Receba notificações quando o consumo de energia ultrapassar estes limites. Deixe vazio para desativar essa direção.`,dailySchedule:`Programação diária`,turnOnAt:`Ligar às`,turnOffAt:`Desligar às`,scheduleDescription:`Ligar/desligar automaticamente o plugue nestes horários diariamente. Deixe vazio para pular essa ação.`,showOnPrinterCard:`Mostrar no cartão da impressora`,displayOnPrinterCard:`Exibir botão no cartão da impressora`,connectedResult:`Conectado!`,deviceLabel:`Dispositivo: {{name}} - `,stateLabel:`Estado: {{state}}`,test:`Testar`,delete:`Excluir`,save:`Salvar`,add:`Adicionar`,cancel:`Cancelar`,failedToStartScan:`Falha ao iniciar varredura`,nameRequired:`Nome é obrigatório`,entityRequired:`Entidade é obrigatória para plugues Home Assistant`,mqttTopicRequired:`Pelo menos um tópico MQTT deve ser configurado para potência, energia ou monitoramento de estado`,loadingEntities:`Carregando entidades...`,loading:`Carregando...`,failedToLoadEntities:`Falha ao carregar entidades: {{error}}`,noEntitiesMatching:`Nenhuma entidade encontrada correspondente a "{{search}}"`,noEntitiesAvailable:`Nenhuma entidade disponível`,searchingEntities:`Buscando todas as entidades ({{count}} encontradas)`,showingEntities:`Mostrando switch, light, input_boolean ({{count}} disponíveis)`,energyMonitoringOptional:`Monitoramento de energia (Opcional)`,energyMonitoringHint:`Pesquise e selecione sensores que fornecem dados de potência/energia.`,powerSensorW:`Sensor de potência (W)`,energyTodayKwh:`Energia hoje (kWh)`,totalEnergyKwh:`Energia total (kWh)`,noMatchingSensors:`Nenhum sensor correspondente`,none:`Nenhum`,mqttNotConfigured:`Broker MQTT não configurado. Defina o endereço do broker em`,mqttSettingsPath:`Configurações → Rede → Publicação MQTT`,mqttNotConfiguredSuffix:`(você não precisa ativar a publicação, apenas preencha os detalhes do broker).`,mqttMonitorOnlyDescription:`Plugues MQTT recebem dados de potência/energia via assinatura MQTT. O controle liga/desliga não está disponível - use seu broker MQTT ou sistema de automação residencial.`,powerMonitoring:`Monitoramento de potência`,energyMonitoring:`Monitoramento de energia`,stateMonitoring:`Monitoramento de estado`,optional:`opcional`,topic:`Tópico`,jsonPath:`Caminho JSON`,multiplier:`Multiplicador`,onValue:`Valor ON`,mqttPowerHint:`O caminho JSON extrai o valor do payload JSON (ex: "power_l1"). Deixe vazio se o tópico publica valores numéricos brutos. @@ -45,7 +48,7 @@ ON değeri: "ON" anlamına gelen tam string. Otomatik algılama için boş bıra Значение «включено» — точная строка, означающая включённое состояние. Оставьте пустым для автоматического распознавания ON, true и 1.`,restControl:`Управление`,restOnUrl:`URL включения`,restOffUrl:`URL выключения`,restOnBody:`Тело запроса включения`,restOffBody:`Тело запроса выключения`,restMethod:`Метод HTTP`,restHeaders:`Пользовательские заголовки (JSON)`,restStatusUrl:`URL состояния`,restStatusPath:`Путь JSON состояния`,restStatusOnValue:`Значение «включено»`,restPowerUrl:`URL мощности`,restPowerPath:`Путь JSON мощности`,restPowerMultiplier:`Множитель мощности`,restEnergyUrl:`URL энергии`,restEnergyPath:`Путь JSON энергии`,restEnergyTotalPath:`Путь JSON полной энергии`,restEnergyTotalMultiplier:`Множитель полной энергии`,restEnergyTotalPathHint:`например, aenergy.total`,restEnergyTotalHint:`Многие розетки, включая все устройства Shelly, передают только накопительный счётчик энергии, который никогда не сбрасывается. Его следует указывать здесь, а не в поле выше: если считать его суточным расходом, значение не сбросится в полночь, а данные за вчера и общий расход останутся пустыми. Bambuddy вычисляет расход за сегодня и вчера по этому счётчику; для накопления данных потребуется один-два дня. Shelly передаёт ватт-часы, поэтому используйте множитель 0.001.`,restEnergyMultiplier:`Множитель энергии`,restUrlRequired:`Для REST-розетки необходимо указать хотя бы один URL: включения или выключения`,restHeadersHint:`например, {"Authorization": "Bearer your-token"}`,restBodyHint:`например, ON или {"state": "on"}`,restStatusHint:`URL для опроса текущего состояния`,restPathHint:`например, state или data.power.status`,restPowerUrlHint:`Отдельный URL данных мощности; если пусто, используется URL состояния`,restEnergyUrlHint:`Отдельный URL данных энергии; если пусто, используется URL состояния`,restEnergyHint:`Для каждого значения можно использовать отдельный URL либо URL состояния. Множители используются для преобразования единиц, например 0.001 для Вт·ч→кВт·ч.`,testConnection:`Проверить подключение`,connectionSuccess:`Подключение успешно`,noSwitchesInSwitchbar:`На панели переключателей нет устройств`,enableSwitchbarHint:`Включите «Показывать на панели переключателей» в разделе «Настройки → Умные розетки»`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`Электронная почта`,discord:`Discord`,webhook:`Вебхук`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`Уведомления по электронной почте через SMTP`,telegram:`Уведомления через Telegram-бота`,discord:`Отправка в канал Discord через вебхук`,ntfy:`Бесплатные push-уведомления с возможностью самостоятельного размещения сервера`,pushover:`Простые и надёжные push-уведомления`,callmebot:`Бесплатные уведомления WhatsApp через CallMeBot`,webhook:`Универсальный HTTP POST-запрос на любой URL`,homeassistant:`Постоянные уведомления на панели Home Assistant`,bark:`iOS push-уведомления через Bark (можно разместить у себя)`},lastSuccess:`Последняя отправка: {{date}}`,error:`Ошибка`,printer:`Принтер:`,allPrinters:`Все принтеры`,sendTestNotification:`Отправить тестовое уведомление`,eventSettings:`Настройки событий`,enabled:`Включено`,sendFromProvider:`Отправлять уведомления через этого провайдера`,printEvents:`События печати`,printerStatus:`Состояние принтера`,amsAlarms:`Предупреждения AMS`,amsHtAlarms:`Предупреждения AMS-HT`,printQueue:`Очередь печати`,start:`Запуск`,plateCheck:`Проверка пластины`,complete:`Завершено`,failed:`Ошибка`,stopped:`Остановлено`,progress:`Ход печати`,offline:`Не в сети`,lowFilament:`Мало филамента`,maintenance:`Обслуживание`,amsHumidity:`Влажность AMS`,amsTemp:`Температура AMS`,amsDryingSuspended:`Сушка приостановлена`,amsHtHumidity:`Влажность AMS-HT`,amsHtTemp:`Температура AMS-HT`,bedCooled:`Стол остыл`,firstLayer:`Первый слой`,quiet:`Тихий режим`,digest:`Сводка в {{time}}`,printStarted:`Печать началась`,plateNotEmpty:`Пластина не пуста`,plateNotEmptyDescription:`Перед печатью на пластине обнаружены объекты`,plateClearRequired:`Требуется подтверждение стола`,plateClearRequiredDescription:`Печать завершена, очередь ждет подтверждения`,plateClear:`Стол свободен`,printCompleted:`Печать завершена`,bedCooledLabel:`Стол остыл`,bedCooledDescription:`После печати температура стола опустилась ниже заданного порога`,firstLayerCompleteLabel:`Первый слой завершён`,firstLayerCompleteDescription:`Уведомить со снимком после завершения первого слоя`,missingSpoolAssignmentLabel:`Катушка не назначена`,billingChargeFailedLabel:`Ошибка списания`,billingChargeFailedDescription:`Уведомлять, если не удалось учесть стоимость печати`,missingSpoolAssignmentDescription:`Уведомить при запуске печати, если для необходимых слотов не назначены катушки`,printFailed:`Ошибка печати`,printStopped:`Печать остановлена`,progressMilestones:`Этапы выполнения`,progressMilestonesDescription:`Уведомлять при 25%, 50% и 75%`,printerOffline:`Принтер не в сети`,printerError:`Ошибка принтера`,aiFailureDetection:`Обнаружение сбоев с помощью ИИ`,aiFailureDetectionDescription:`Уведомить, если Obico AI обнаружит возможный сбой печати`,lowFilamentLabel:`Заканчивается филамент`,maintenanceDue:`Требуется обслуживание`,maintenanceDueDescription:`Уведомить, когда принтеру потребуется обслуживание`,amsHumidityHigh:`Высокая влажность в AMS`,amsHumidityHighDescription:`Влажность в обычной AMS превысила заданный порог`,amsTemperatureHigh:`Высокая температура в AMS`,amsTemperatureHighDescription:`Температура в обычной AMS превысила заданный порог`,amsDryingSuspendedTitle:`Автоматическая сушка приостановлена`,amsDryingSuspendedDescription:`Автоматическая сушка блока AMS прекращена: влажность так и не опустилась ниже порога`,amsHtHumidityHigh:`Высокая влажность в AMS-HT`,amsHtHumidityHighDescription:`Влажность в AMS-HT превысила заданный порог`,amsHtTemperatureHigh:`Высокая температура в AMS-HT`,amsHtTemperatureHighDescription:`Температура в AMS-HT превысила заданный порог`,inventoryAlerts:`Уведомления о запасах`,stockReorderAlert:`Пора заказывать`,stockReorderAlertDescription:`Запас по SKU достиг точки повторного заказа`,stockBreakAlert:`Риск исчерпания запаса`,stockBreakAlertDescription:`Запас закончится раньше, чем поступит пополнение`,jobAdded:`Задание добавлено`,jobAddedDescription:`Задание добавлено в очередь`,jobAssigned:`Задание назначено`,jobAssignedDescription:`Задание по модели назначено принтеру`,jobStarted:`Задание запущено`,jobStartedDescription:`Задание из очереди отправлено на печать`,jobWaiting:`Задание ожидает`,jobWaitingDescription:`Задание ожидает филамент или свободный принтер`,jobSkipped:`Задание пропущено`,jobSkippedDescription:`Задание пропущено из-за ошибки предыдущего`,jobFailed:`Не удалось запустить задание`,jobFailedDescription:`Задание не удалось отправить на печать`,queueComplete:`Очередь завершена`,queueCompleteDescription:`Все задания в очереди завершены`,quietHours:`Тихие часы`,noNotificationsDuring:`Не отправлять уведомления в это время`,editProviderToChangeQuietHours:`Измените провайдера, чтобы настроить тихие часы`,dailyDigest:`Ежедневная сводка`,batchNotifications:`Объединять уведомления в одну ежедневную сводку`,sendAt:`Отправлять в {{time}}`,editProviderToChangeDigestTime:`Измените провайдера, чтобы настроить время сводки`,edit:`Изменить`,deleteProvider:`Удалить провайдера уведомлений`,deleteConfirm:`Удалить «{{name}}»? Это действие нельзя отменить.`,delete:`Удалить`,addTitle:`Добавить провайдера уведомлений`,editTitle:`Изменить провайдера уведомлений`,nameLabel:`Название *`,namePlaceholder:`Мои уведомления`,providerTypeLabel:`Тип провайдера *`,configuration:`Настройка`,testConfiguration:`Проверить настройку`,printerFilter:`Фильтр принтеров`,onlyFromPrinter:`Отправлять уведомления только о событиях этого принтера`,quietHoursDnd:`Тихие часы (не беспокоить)`,quietStart:`Начало`,quietEnd:`Окончание`,dailyDigestLabel:`Ежедневная сводка`,sendDigestAt:`Отправлять сводку в`,digestCollected:`События будут собраны и отправлены одной сводкой в указанное время`,notificationEvents:`События для уведомлений`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(после завершения печати)`,haSensorAlert:`Оповещение датчика принтера`,haSensorAlertDescription:`(связанный датчик Home Assistant требует внимания)`,locationHaSensorAlert:`Оповещение датчика места хранения`,locationHaSensorAlertDescription:`(датчик Home Assistant, связанный с местом хранения, требует внимания)`,eventPriority:{sectionTitle:`Приоритет ntfy`,helpNtfy:`Выберите приоритет для каждого включённого события. ntfy использует его для усиления оповещений: звука, видимости и поведения push-уведомлений. Для неуказанных событий используется приоритет по умолчанию сервера ntfy.`,min:`Минимальный`,low:`Низкий`,default:`Обычный`,high:`Высокий`,urgent:`Срочный`},cancel:`Отмена`,save:`Сохранить`,add:`Добавить`,nameRequired:`Укажите название`,fieldRequired:`Поле «{{field}}» обязательно`,haDataInvalid:`Поле Data должно быть корректным JSON-объектом, напр. {"priority": "high", "ttl": 0}`,phoneNumber:`Номер телефона`,apiKey:`Ключ API`,serverUrl:`URL сервера`,topic:`Тема`,authToken:`Токен авторизации`,userKey:`Ключ пользователя`,appToken:`Токен приложения`,priority:`Приоритет`,pushoverRetry:`Повтор экстренного уведомления (с)`,pushoverExpire:`Срок действия экстренного уведомления (с)`,botToken:`Токен бота`,chatId:`ID чата`,telegramThreadId:`ID темы форума`,telegramThreadIdHelp:`Необязательно. Отправляет в конкретную тему форум-группы — последнее число в ссылке на тему (t.me/c/.../25). Оставьте пустым для темы General.`,telegramThreadIdInvalid:`ID темы форума должен быть числом.`,smtpServer:`SMTP-сервер`,smtpPort:`Порт SMTP`,security:`Защита соединения`,authentication:`Аутентификация`,username:`Имя пользователя`,password:`Пароль`,fromEmail:`Адрес отправителя`,toEmail:`Адрес получателя`,webhookUrl:`URL вебхука`,payloadFormat:`Формат данных`,authorization:`Авторизация`,titleFieldName:`Имя поля заголовка`,messageFieldName:`Имя поля сообщения`,editTemplate:`Изменить шаблон: {{name}}`,titleLabel:`Заголовок`,bodyLabel:`Текст`,titlePlaceholder:`Заголовок уведомления...`,bodyPlaceholder:`Текст уведомления...`,availableVariables:`Доступные переменные`,clickToInsert:`Нажмите, чтобы вставить в позицию курсора в тексте`,livePreview:`Предварительный просмотр`,hide:`Скрыть`,show:`Показать`,loadingPreview:`Загрузка предварительного просмотра...`,enterTemplateContent:`Введите содержимое шаблона для предварительного просмотра`,titlePreview:`Заголовок:`,bodyPreview:`Текст:`,resetToDefault:`Восстановить стандартный шаблон`,titleRequired:`Укажите заголовок`,bodyRequired:`Введите текст уведомления`,notificationLog:`Журнал уведомлений`,showFailedOnly:`Только неудачные`,last24Hours:`Последние 24 часа`,last7Days:`Последние 7 дней`,last30Days:`Последние 30 дней`,last90Days:`Последние 90 дней`,justNow:`Только что`,noFailedNotifications:`Неудачных уведомлений нет`,noNotificationsLogged:`В журнале пока нет уведомлений`,unknownProvider:`Неизвестный провайдер`,logTitle:`Заголовок`,logMessage:`Сообщение`,logError:`Ошибка`,logProvider:`Провайдер: {{type}}`,logTime:`Время: {{time}}`,refresh:`Обновить`,clearOld:`Удалить старые`,statsSummary:`За последние {{days}} дней:`,statsNotifications:`уведомлений`,statsSent:`отправлено: {{count}}`,statsFailed:`ошибок: {{count}}`,eventTypes:{print_start:`Печать началась`,print_complete:`Печать завершена`,print_failed:`Ошибка печати`,print_stopped:`Печать остановлена`,print_progress:`Ход печати`,printer_offline:`Принтер не в сети`,printer_error:`Ошибка принтера`,filament_low:`Заканчивается филамент`,maintenance_due:`Требуется обслуживание`,test:`Тест`},userEmail:{title:`Уведомления`,emailNotifications:`Уведомления по электронной почте`,emailNotificationsDesc:`Получать письма о собственных заданиях печати. Для отправки используются системные параметры SMTP из раздела расширенной аутентификации.`,sendingTo:`Уведомления будут отправляться на адрес`,noEmailWarning:`Для вашей учётной записи не указан адрес электронной почты. Обратитесь к администратору.`,printJobNotifications:`Уведомления о заданиях печати`,printJobNotificationsDesc:`Выберите события, при которых будут отправляться письма о запущенных вами заданиях.`,printJobStarts:`Запуск задания печати`,printJobStartsDesc:`Уведомлять о начале вашего задания печати.`,printJobFinishes:`Завершение задания печати`,printJobFinishesDesc:`Уведомлять об успешном завершении вашего задания печати.`,printErrors:`Ошибки печати`,printErrorsDesc:`Уведомлять, если задание завершилось ошибкой или при печати возникла проблема.`,printJobStops:`Остановка задания печати`,printJobStopsDesc:`Уведомлять об отмене или остановке вашего задания печати.`,saveSuccess:`Настройки уведомлений сохранены.`,saveError:`Не удалось сохранить настройки уведомлений.`}},richTextEditor:{bold:`Полужирный`,italic:`Курсив`,underline:`Подчёркивание`,bulletList:`Маркированный список`,numberedList:`Нумерованный список`,alignLeft:`По левому краю`,alignCenter:`По центру`,alignRight:`По правому краю`,addLink:`Добавить ссылку`,removeLink:`Удалить ссылку`},externalLinks:{title:`Ссылки на боковой панели`,sidebarLayout:`Боковая панель`,sidebarLayoutDescription:`Показывайте или скрывайте встроенные страницы, добавляйте внешние ссылки и перетаскивайте пункты, меняя порядок навигации.`,systemPages:`Страницы Bambuddy`,externalLinks:`Внешние ссылки`,visibleInSidebar:`Показывается на боковой панели`,hiddenFromSidebar:`Скрыто с боковой панели`,requiredInSidebar:`Обязательный пункт боковой панели`,hidePage:`Скрыть страницу`,showPage:`Показать страницу`,settingsCannotBeHidden:`Настройки нельзя скрыть`,noLinksConfigured:`Внешние ссылки не настроены`,deleteLink:`Удалить ссылку`,removeCustomIcon:`Удалить пользовательский значок`,openInNewTab:`Открывать в новой вкладке`,placeholders:{linkName:`Моя ссылка`}},keyboardShortcuts:{title:`Горячие клавиши`,navigation:`Навигация`,archivesSection:`Архив`,kProfilesSection:`K-профили`,generalSection:`Общие`,shortcuts:{goToPrinters:`Перейти к принтерам`,goToArchives:`Перейти в архив`,goToQueue:`Перейти к очереди`,goToStats:`Перейти к статистике`,goToProfiles:`Перейти к облачным профилям`,goToSettings:`Перейти к настройкам`,focusSearch:`Перейти в строку поиска`,openUploadModal:`Открыть окно загрузки`,clearSelection:`Снять выделение / убрать фокус с поля`,contextMenu:`Контекстное меню карточки`,refreshProfiles:`Обновить профили`,newProfile:`Новый профиль`,exitSelectionMode:`Выйти из режима выделения`,showHelp:`Показать эту справку`},footer:`Нажмите Esc или щёлкните снаружи, чтобы закрыть`},notificationLog:{title:`Журнал уведомлений`,events:{printStarted:`Печать началась`,printComplete:`Печать завершена`,printFailed:`Ошибка печати`,printStopped:`Печать остановлена`,progress:`Ход выполнения`,printerOffline:`Принтер не в сети`,printerError:`Ошибка принтера`,lowFilament:`Заканчивается филамент`,maintenanceDue:`Требуется обслуживание`,test:`Тест`},timeAgo:{justNow:`Только что`,minutesAgo:`{{minutes}} мин назад`,hoursAgo:`{{hours}} ч назад`}},restoreBackup:{title:`Восстановление резервной копии`,restoring:`Восстановление...`,restoreComplete:`Восстановление завершено`,restoreFailed:`Ошибка восстановления`,importSettings:`Импортировать настройки из файла резервной копии`,pleaseWait:`Подождите, пока данные восстанавливаются`,clickToSelect:`Нажмите, чтобы выбрать файл резервной копии (.json или .zip)`,howDuplicateHandling:`Как обрабатываются совпадения:`,categories:{printers:`Принтеры`,smartPlugs:`Умные розетки`,notificationProviders:`Провайдеры уведомлений`,filaments:`Филаменты`,archives:`Архив`,pendingUploads:`Ожидающие загрузки`,settingsTemplates:`Настройки и шаблоны`},matchingInfo:{printers:`сопоставляются по серийному номеру`,smartPlugs:`сопоставляются по IP-адресу`,notificationProviders:`сопоставляются по названию`,filaments:`сопоставляются по названию, типу и бренду`,archives:`сопоставляются по хешу содержимого`,pendingUploads:`сопоставляются по имени файла`,settingsTemplates:`всегда перезаписываются`},replaceExisting:`Заменить существующие данные`,keepExisting:`Сохранить существующие данные`,replaceDescription:`Перезаписать уже существующие элементы данными из резервной копии`,keepDescription:`Восстановить только отсутствующие элементы`,caution:`Внимание:`,cautionText:`При перезаписи текущая конфигурация будет заменена данными из резервной копии. В целях безопасности коды доступа к принтерам никогда не перезаписываются.`,itemsRestored:`Восстановлено элементов`,itemsSkipped:`Пропущено элементов`,restored:`Восстановлено`,skipped:`Пропущено (уже существует)`,filesLabel:`Файлы (3MF, миниатюры и т. п.)`,newApiKeysGenerated:`Созданы новые ключи API`,newApiKeysWarning:`Эти ключи показываются только один раз. Скопируйте их сейчас!`,processingBackup:`Обработка резервной копии...`,noDataFound:`В резервной копии не найдено данных для восстановления.`,failedToRestore:`Не удалось восстановить резервную копию. Проверьте формат файла.`},backupExport:{title:`Экспорт резервной копии`,selectData:`Выберите данные для включения`,selectAll:`Выбрать всё`,selectNone:`Снять выделение`,categoryDescriptions:{settings:`Язык, тема и настройки обновлений`,notifications:`ntfy, Pushover, Discord и другие`,templates:`Пользовательские шаблоны сообщений`,smartPlugs:`Конфигурация розеток Tasmota`,externalLinks:`Ссылки на внешние сервисы в боковой панели`,printers:`Сведения о принтерах (без кодов доступа)`,plateDetection:`Эталонные изображения пустых пластин`,filaments:`Типы и стоимость филамента`,maintenance:`Пользовательские графики обслуживания`,archives:`Все данные печати и файлы (3MF, миниатюры, фотографии)`,projects:`Проекты, позиции спецификаций и вложения`,pendingUploads:`Загрузки виртуальных принтеров, ожидающие проверки`,apiKeys:`Ключи API вебхуков (при импорте создаются новые)`},requiresPrinters:`Необходимо выбрать раздел «Принтеры»`,zipFileWarning:`Будет создан ZIP-файл.`,zipFileDescription:`В него войдут все файлы 3MF, миниатюры, таймлапсы и фотографии. Операция может занять некоторое время, а файл — получиться большим.`,includeAccessCodes:`Включить коды доступа`,includeAccessCodesDescription:`Для переноса на другой компьютер`,includeAccessCodesWarning:`Коды доступа попадут в файл открытым текстом. Храните резервную копию в безопасном месте!`,categoriesSelected:`Выбрано категорий: {{selectedCount}}`},pendingUploads:{placeholders:{notes:`Добавьте примечания об этой печати...`},discardUpload:`Отклонить загрузку`,archiveAllUploads:`Добавить все загрузки в архив`,discardAllUploads:`Отклонить все загрузки`,archive:`В архив`,timeAgo:{justNow:`Только что`,minutesAgo:`{{minutes}} мин назад`,hoursAgo:`{{hours}} ч назад`,daysAgo:`{{days}} дн. назад`}},apiBrowser:{placeholders:{requestBody:`Тело запроса JSON...`,searchEndpoints:`Поиск конечных точек...`}},configureAmsSlot:{title:`Настройка слота AMS`,slotConfigured:`Слот настроен!`,configuringSlot:`Настраивается слот:`,slotLabel:`{{ams}}, слот {{slot}}`,searchPresets:`Поиск профилей...`,colorPlaceholder:`Название или HEX-код цвета (например: brown, FF8800)`,clearCustomColor:`Очистить пользовательский цвет`,noCloudPresets:`Облачных профилей нет. Войдите в Bambu Cloud для синхронизации.`,noPresetsAvailable:`Нет доступных профилей. Войдите в Bambu Cloud или импортируйте локальные профили.`,noMatchingPresets:`Подходящие профили не найдены.`,custom:`Пользовательский`,builtin:`Встроенный`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,settingsSentToPrinter:`Настройки отправлены на принтер`,filamentProfile:`Профиль филамента`,kProfileLabel:`K-профиль (Pressure Advance)`,filteringFor:`Фильтр по материалу: {{material}}`,noKProfile:`Без K-профиля (стандартное значение 0,020)`,noMatchingKProfiles:`Подходящие K-профили не найдены. Будет использовано стандартное значение K=0,020.`,otherKProfiles:`Другие K-профили на этом принтере`,selectFilamentFirst:`Сначала выберите профиль филамента`,kFromCalibration:`K={{value}} из калибровки принтера`,customColorLabel:`Пользовательский цвет (необязательно)`,presetColors:`Цвета {{name}}:`,showLessColors:`Показать меньше цветов`,showMoreColors:`Показать больше цветов`,clear:`Очистить`,hexLabel:`HEX: #{{hex}}`,resetting:`Сброс...`,resetSlot:`Сбросить слот`,cancel:`Отмена`,configuring:`Настройка...`,configureSlot:`Настроить слот`},githubBackup:{title:`Резервное копирование в Git`,history:`История`,downloadBackup:`Скачать резервную копию`,restoreBackup:`Восстановить резервную копию`,noBackupsYet:`Резервных копий пока нет`},emailSettings:{placeholders:{fromName:`BamBuddy`}},tagManagement:{searchTags:`Поиск меток...`,renameTag:`Переименовать метку`,deleteTag:`Удалить метку`},notificationTemplates:{placeholders:{title:`Заголовок уведомления...`,body:`Текст уведомления...`}},batchTag:{placeholders:{newTag:`Введите новую метку...`}},photoGallery:{deletePhoto:`Удалить фотографию`},filamentHoverCard:{copySpoolUuid:`Скопировать UUID катушки`},kProfilesView:{hasNote:`Есть примечание`,copyProfile:`Копировать профиль`},layout:{openMenu:`Открыть меню`,noPermissionSystemInfo:`У вас нет разрешения на просмотр системной информации`},dashboard:{dragToReorder:`Перетащите, чтобы изменить порядок`,hideWidget:`Скрыть виджет`},notificationProviderCard:{deleteNotificationProvider:`Удалить провайдера уведомлений`},fileManagerModal:{closeFileManager:`Закрыть файловый менеджер`,sortFiles:`Сортировать файлы`,goToParentFolder:`Перейти в родительскую папку`,threeView:`Просмотр 3D`},embeddedCameraViewer:{refreshStream:`Обновить поток`,close:`Закрыть`,zoomOut:`Уменьшить`,resetZoom:`Сбросить масштаб`,zoomIn:`Увеличить`,dragToResize:`Перетащите, чтобы изменить размер`},timelapseViewer:{skipBack5s:`Назад на 5 с`,skipForward5s:`Вперёд на 5 с`},notificationProviders:{descriptions:{email:`Уведомления по электронной почте через SMTP`,telegram:`Уведомления через Telegram-бота`,discord:`Отправка в канал Discord через вебхук`,ntfy:`Бесплатные push-уведомления с возможностью самостоятельного размещения сервера`,pushover:`Простые и надёжные push-уведомления`,callmebot:`Бесплатные уведомления WhatsApp через CallMeBot`,webhook:`Обычный HTTP POST на любой URL`}},logViewer:{searchPlaceholder:`Поиск по сообщению или имени логгера...`,noLogEntries:`Записи журнала не найдены`},switchbarPopover:{noSwitchesInSwitchbar:`На панели переключателей нет устройств`},projectPageModal:{placeholders:{title:`Название`,designer:`Автор`,license:`Лицензия`,description:`Введите описание...`,profileTitle:`Название профиля`,profileDescription:`Описание профиля...`}},spoolmanSettings:{},time:{unknown:`—`,waiting:`Ожидание`,justNow:`Только что`,now:`Сейчас`,minsAgo:`{{count}} мин назад`,inMins:`через {{count}} мин`,hoursAgo:`{{count}} ч назад`,inHours:`через {{count}} ч`,daysAgo:`{{count}} дн. назад`,inDays:`через {{count}} дн.`},spoolbuddy:{nav:{dashboard:`Панель`,ams:`AMS`,inventory:`Катушки`,writeTag:`Запись метки`,settings:`Настройки`},status:{nfcReady:`NFC готов`,nfcOff:`NFC выключен`,offline:`Не в сети`,online:`В сети`,noPrinters:`Нет принтеров`,deviceOffline:`Устройство не в сети`,waitingConnection:`Ожидание подключения устройства...`,systemReady:`Система готова`,status:`Состояние`},dashboard:{readyToScan:`Готово к сканированию`,idleMessage:`Поставьте катушку на весы для идентификации`,nfcHint:`Метка NFC будет считана автоматически`,device:`Устройство`,syncWeight:`Синхронизировать массу`,weightSynced:`Синхронизировано!`,unknownTag:`Неизвестная метка`,newTag:`Обнаружена новая метка`,onScale:`на весах`,linkSpool:`Связать с катушкой`,linkTagTitle:`Связать метку с катушкой`,linkTag:`Связать метку`,selectSpool:`Выберите катушку, с которой нужно связать эту метку:`,noUntagged:`Катушки без меток не найдены`,tagDetected:`Метка обнаружена`,noTag:`Метка отсутствует`,tagId:`Метка`,grossWeight:`Масса брутто`,spoolSize:`Размер катушки`,close:`Закрыть`,currentSpool:`Текущая катушка`,plateReady:`Пластина готова: {{name}}`,plateReadyLabel:`Пластины, готовые к очистке`,plateClearAction:`Очищено`,plateClearedToast:`Пластина отмечена как очищенная`,plateClearFailed:`Не удалось отметить пластину как очищенную`},modal:{spoolDetected:`Катушка обнаружена`,assignToAms:`Назначить в AMS`,syncWeight:`Синхронизировать массу`,weightSynced:`Синхронизировано!`,syncing:`Синхронизация...`,newTagDetected:`Обнаружена новая метка`,addToInventory:`Добавить в учёт`,assignToAmsTitle:`Назначить в AMS`,selectSlot:`Выберите слот`,assign:`Назначить`,assigning:`Назначение...`,assignSuccess:`Назначено!`,assignPendingInsert:`Назначено. Слот будет настроен после установки катушки.`,assignError:`Не удалось назначить катушку. Повторите попытку.`,noPrinterSelected:`Выберите принтер...`,noAmsDetected:`На этом принтере AMS не обнаружена`,slot:`Слот`},weight:{noReading:`Нет показаний`,stable:`Стабильно`,measuring:`Измерение...`,tare:`Тарировать`,calibrate:`Калибровать`},spool:{remaining:`Остаток`,material:`Материал`,brand:`Бренд`,color:`Цвет`,coreWeight:`Сердечник`,labelWeight:`По этикетке`,scaleWeight:`По весам`,netWeight:`Нетто`,lastUsed:`Последнее использование`},ams:{noData:`AMS не обнаружена`,connectAms:`Подключите AMS, чтобы увидеть слоты филамента`,noPrinter:`Принтер не выбран`,selectPrinter:`Выберите принтер на верхней панели`,printerDisconnected:`Принтер отключён`,humidity:`Влажность`,level:`Уровень`,active:`Активен`,slot:`Слот`,empty:`Пусто`},inventory:{search:`Поиск катушек...`,empty:`В учёте нет катушек`,noResults:`Подходящие катушки не найдены`,spools:`катушек`,addSpool:`Добавить катушку`},settings:{tabDevice:`Устройство`,tabDisplay:`Экран`,tabScale:`Весы`,tabUpdates:`Обновления`,nfcReader:`Считыватель NFC`,type:`Тип`,connection:`Подключение`,notConnected:`Н/Д`,deviceInfo:`Сведения об устройстве`,hostname:`Хост`,uptime:`Время работы`,systemConfig:`Бэкенд и авторизация`,backendUrl:`URL бэкенда Bambuddy`,apiToken:`Токен API`,apiTokenPlaceholder:`Введите токен API`,saveConfig:`Сохранить конфигурацию`,systemQueued:`Конфигурация поставлена в очередь.`,nfcDiagnostic:`Диагностика NFC`,scaleDiagnostic:`Диагностика весов`,readTagDiagnostic:`Диагностика чтения метки`,testNfc:`Проверить считыватель`,testScale:`Проверить точность`,testReadTag:`Считать метку`,systemFieldsRequired:`Необходимо указать URL бэкенда.`,brightness:`Яркость`,saved:`Сохранено`,noBacklight:`Подсветка DSI не обнаружена. Для управления яркостью требуется дисплей DSI.`,screenBlank:`Тайм-аут отключения экрана`,screenBlankDesc:`Экран выключается при бездействии. Коснитесь его для пробуждения.`,displayNote:`Яркость регулируется программным фильтром.`,scaleCalibration:`Калибровка весов`,currentWeight:`Текущая масса`,tareOffset:`Тара`,calFactor:`Коэффициент`,knownWeight:`Эталонная масса`,calStep1:`Уберите всё с весов и нажмите «Установить ноль».`,calStep2:`Положите на весы груз известной массы.`,setZero:`Установить ноль`,calibrateNow:`Калибровать`,calibrated:`Откалибровано`,tareSet:`Команда тарирования отправлена. Ожидание устройства...`,tareComplete:`Тарирование завершено!`,tareTimedOut:`Истекло время ожидания тарирования — демон SpoolBuddy запущен?`,tareFailed:`Не удалось отправить команду тарирования`,zeroSet:`Нулевая точка установлена. Положите на весы груз известной массы.`,calibrationDone:`Калибровка завершена!`,calibrationFailed:`Ошибка калибровки`,lastCalibrated:`Последняя калибровка`,stable:`Стабильно`,settling:`Стабилизация...`,firmware:`Прошивка`,scale:`Весы`,noDevice:`Устройство SpoolBuddy не найдено`,daemonVersion:`Версия демона`,currentVersion:`Текущая`,versionPending:`Ожидание демона...`,checking:`Проверка...`,checkUpdates:`Проверить обновления`,updateAvailable:`Доступно обновление`,updateInstructions:`Обновление по SSH: запустите установочный скрипт SpoolBuddy.`,upToDate:`Установлена актуальная версия`,includeBeta:`Включать бета-версии`},writeTag:{tabExisting:`Существующая катушка`,tabNew:`Новая катушка`,tabReplace:`Заменить метку`,searchPlaceholder:`Поиск по материалу, цвету или бренду...`,noUntaggedSpools:`Нет катушек без меток`,noTaggedSpools:`Нет катушек с метками`,selectSpool:`Выберите катушку, затем положите чистую метку NTAG на считыватель`,placeTag:`Положите метку NTAG на считыватель`,tagReady:`Метка обнаружена — можно записывать`,writeTag:`Записать метку`,replaceTag:`Заменить метку`,writing:`Запись метки...`,waiting:`Ожидание SpoolBuddy...`,writeSuccess:`Метка успешно записана!`,writeFailed:`Ошибка записи`,queueFailed:`Не удалось поставить команду записи в очередь`,tryAgain:`Повторить`,cancel:`Отмена`,replaceWarning:`Старая метка будет отвязана и заменена новой.`,deviceOffline:`SpoolBuddy не в сети`,material:`Материал`,colorName:`Название цвета`,color:`Цвет`,brand:`Бренд`,weight:`Масса (г)`,createSpool:`Создать катушку`,creating:`Создание...`,spoolCreated:`Катушка создана! Можно записывать метку.`,createFailed:`Не удалось создать катушку`,incompleteDataWarning:`Метка записана с неполными данными Spoolman`},quickMenu:{printerPower:`Питание принтера`,systemControls:`Система`,restartDaemon:`Перезапустить демон`,restartBrowser:`Перезапустить браузер`,reboot:`Перезагрузить`,shutdown:`Выключить`,swipeToClose:`Проведите вниз, чтобы закрыть`,confirmTitle:`Подтверждение`,confirmShutdown:`Выключить SpoolBuddy? Для повторного включения потребуется физический доступ.`,confirmReboot:`Перезагрузить SpoolBuddy?`,confirmRestartDaemon:`Перезапустить демон SpoolBuddy? NFC и весы временно будут недоступны.`,confirmRestartBrowser:`Перезапустить браузер киоска? Экран ненадолго погаснет.`,confirm:`Подтвердить`,confirmPlugOn:`Включить {{name}}?`,confirmPlugOff:`Выключить {{name}}?`,turnOn:`Включить`,turnOff:`Выключить`}},diagnostic:{modalTitle:`Диагностика подключения — {{name}}`,running:`Выполняется диагностика...`,runningElapsed:`Выполняется диагностика... ({{elapsed}} с)`,waitingForReportHint:`Ожидание публикации отчёта о состоянии принтера — это может занять до {{max}} секунд.`,runFailed:`Не удалось выполнить диагностику: {{error}}`,retry:`Запустить снова`,runButton:`Запустить диагностику`,sectionTitle:`Диагностика подключения`,sectionDescription:`Проверьте, почему принтер не подключается или не печатает: доступность портов, режим разработчика LAN, сетевой режим Docker и учётные данные.`,noPrinters:`Принтеры не настроены.`,overall:{ok:`Проблем не обнаружено — подключение к принтеру исправно.`,warnings:`Принтер должен работать, но некоторые пункты требуют внимания.`,problems:`Обнаружены проблемы, объясняющие, почему принтер не подключается или не печатает.`},check:{port_mqtt:{title:`Порт управления (MQTT 8883)`,pass:`Доступен — принтер принимает управляющие подключения.`,fail:`Порт 8883 недоступен. Принтер выключен, имеет другой IP-адрес либо подключение блокирует межсетевой экран. Проверьте IP-адрес принтера и доступность порта 8883.`},port_ftps:{title:`Порт передачи файлов (FTPS 990)`,pass:`Доступен — отправка файлов печати будет работать.`,warn:`Порт 990 недоступен. Мониторинг может работать, но отправка заданий на принтер завершится ошибкой. Убедитесь, что порт 990 не заблокирован.`,warn_no_tls:`Порт 990 открыт, но файловая служба принтера не завершает рукопожатие TLS. Файлы печати, обложки и таймлапсы получить невозможно, поэтому архивы остаются пустыми. Перезагрузите принтер — разблокировка порта не поможет.`},external_storage:{title:`Сохранять отправленные файлы во внешнем хранилище (шаг 4 установки)`,pass:`Принтер сообщает, что параметр включён: отправленные файлы будут сохраняться на SD-карте, а в архиве появятся миниатюры и метаданные слайсера.`,fail:`Принтер сообщает, что параметр выключен. Включите «Сохранять отправленные файлы во внешнем хранилище»: в новых прошивках (P2S 01.02 / Bambu Studio 2.6+) переключатель находится в настройках печати принтера, в старых — на вкладке «Устройство» Bambu Studio / OrcaSlicer. Без этого у всех архивных заданий не будет миниатюр и метаданных слайсера.`,skip:`Не проверено — требуется активное подключение MQTT. В старых версиях слайсеров этот параметр существует только в слайсере и принтер его не сообщает, поэтому проверка может пройти даже при выключенном параметре. Проверьте шаг 4 установки вручную.`,skip_unsupported_model:`В этой модели есть слот SD-карты, но включить соответствующую функцию невозможно: текущая прошивка серии P1 не предоставляет переключатель в Bambu Studio, а у принтера нет экрана. Исправлять здесь нечего. Пока Bambu Lab не добавит поддержку в прошивку, архивные задания могут сохраняться без миниатюр и метаданных слайсера.`,fail_no_media:`Параметр включён, но принтер не видит ни карты, ни флешки в слоте, поэтому отправленным файлам некуда деваться. Вставьте накопитель и напечатайте снова — до тех пор у каждой архивной печати не будет ни миниатюры, ни метаданных слайсера.`,warn_internal_storage:`Параметр включён и накопитель на месте, но последняя печать всё равно ушла во внутреннюю память принтера, которую Bambuddy не может прочитать. На серии H2 и P2S кнопка «Печать» в Bambu Studio всегда отправляет туда, независимо от этого параметра. Печати архивируются с именем и временем, но без миниатюры и метаданных слайсера. Чтобы архивы были полными, запускайте печать из Bambuddy, нарезайте в OrcaSlicer или в Bambu Studio используйте «Отправить» с «Внешним накопителем», а затем запускайте печать.`,warn_internal_history:`Опция включена и накопитель на месте, но последняя печать шла из файла, который уже был на принтере, — повторная печать с его экрана, запуск из Handy или файл, отправленный раньше. Эта библиотека лежит во внутренней памяти, которую Bambuddy не читает, и никакие настройки этого не меняют: для той печати ничего не отправлялось. Она по-прежнему архивируется с именем и временем, но без миниатюры и метаданных слайсера. Чтобы архивы были полными, запускайте печать из Bambuddy или отправляйте её из слайсера.`},port_rtsps:{title:`Порт камеры ({{protocol}} {{port}})`,pass:`Доступен — видеопоток камеры будет работать.`,warn:`Порт {{port}} недоступен. Просмотр камеры в реальном времени работать не будет. На печать это не влияет.`},network_mode:{title:`Сетевой режим Docker`,pass:`Используется сетевой режим host.`,warn:`Bambuddy запущен в Docker с сетью bridge. Для обнаружения принтеров и виртуального принтера требуется режим host — пересоздайте контейнер с параметром «network_mode: host».`,skip:`Bambuddy запущен не в Docker — проверка неприменима.`},subnet:{title:`Подсеть`,pass:`Принтер и Bambuddy находятся в одной подсети.`,warn:`Принтер ({{printer_ip}}) и Bambuddy ({{host_ip}}) находятся в разных подсетях. Без настроенной маршрутизации между подсетями они могут быть недоступны друг для друга.`,skip:`Не удалось определить подсеть — проверка пропущена.`},mqtt_auth:{title:`Учётные данные принтера`,pass:`Принтер принял подключение.`,fail:`Принтер доступен, но Bambuddy к нему не подключён. Скорее всего, неверны код доступа или серийный номер — код доступа изменяется при каждом переключении режима «Только LAN» или режима разработчика, поэтому снова скопируйте его с экрана принтера. Так же выглядит принтер, который перезагружается или уже исчерпал лимит одновременных подключений.`,fail_auth_rejected:`Принтер отклонил учётные данные Bambuddy. Код доступа или серийный номер неверны — код доступа изменяется при каждом переключении режима «Только LAN» или режима разработчика. Снова скопируйте его с экрана принтера и сохраните в настройках принтера.`,skip:`Не проверено — принтер недоступен.`},developer_mode:{title:`Режим разработчика LAN`,pass:`Режим разработчика включён.`,fail:`Режим разработчика на принтере ВЫКЛЮЧЕН. Включите его в настройках LAN принтера и подтвердите кнопкой OK. Без него задания печати не запускаются.`,skip:`Не удалось проверить — требуется активное подключение к принтеру.`},printer_publishing:{title:`Принтер публикует состояние`,pass:`Принтер публикует обновления состояния — AMS, филаменты и K-профили будут корректно передаваться в слайсер.`,fail:`MQTT-брокер принял подключение, но принтер не опубликовал ни одного отчёта о состоянии. Почти всегда причина в неверном регистре или ошибке в серийном номере: тема device//report чувствительна к регистру. Сверьте серийный номер в настройках принтера с номером на его экране.`,skip:`Не удалось проверить — требуется активное подключение к принтеру.`}}},systemHealth:{sectionTitle:`Состояние системы`,sectionDescription:`Проверяет последние журналы на известные проблемы, которые обычно можно исправить самостоятельно до обращения в поддержку.`,rescan:`Проверить снова`,clean:`В последних {{times}} записях журнала известные проблемы не найдены.`,logUnavailable:`Запись журналов в файл отключена, поэтому выполнить проверку невозможно. Включите файловое журналирование.`,learnMore:`Как исправить`,fixLabel:`Исправление:`,occurrences:`Обнаружено {{times}} раз; последний раз — {{lastSeen}}`,category:{layer8:`Можно исправить самостоятельно`,environment:`Окружение`,bug:`Сообщите об ошибке`},signature:{"ftp-auth-rejected":{name:`Принтер отклонил код доступа`,cause:`Принтер отклонил вход в службу передачи файлов. Код доступа неверен либо изменился после переключения режима разработчика.`,fix:`Снова скопируйте код доступа с экрана принтера в настройках LAN и обновите его в настройках принтера Bambuddy.`},"ftp-connection-timeout":{name:`Истекло время подключения к службе передачи файлов`,cause:`Bambuddy не смог подключиться к порту передачи файлов принтера (FTPS 990). Порт заблокирован, принтер выключен либо находится в другой подсети.`,fix:`Убедитесь, что порт 990 между Bambuddy и принтером не блокируется и оба устройства находятся в доступных друг другу сетях.`},"ftp-ssl-error":{name:`Ошибка защищённого соединения с файловой службой`,cause:`Файловая служба принтера ответила на порту 990 без TLS. Её файловый сервер завис — это неисправность самого принтера, а не межсетевого экрана или прошивки.`,fix:`Перезапустите принтер. До этого файлы печати, обложки и таймлапсы получить нельзя, но на саму печать это не влияет.`},"bambu-cloud-captcha":{name:`Bambu Cloud требует пройти CAPTCHA`,cause:`Защита Bambu от злоупотреблений проверяет эту сеть, поэтому вход в Bambu Cloud завершить невозможно. Это связано с публичным IP-адресом, а не с вашей учётной записью или этой установкой.`,fix:`Подождите: обычно проверка снимается за несколько часов, а повторные попытки входа её продлевают. Пока что войдите с помощью токена доступа из сессии браузера.`},"mqtt-connection-flapping":{name:`Подключение к принтеру постоянно обрывается`,cause:`Управляющее соединение MQTT 8883 постоянно разрывается и восстанавливается. Обычно причина в нестабильной сети или частично заблокированном порте.`,fix:`Проверьте уровень Wi‑Fi у принтера, по возможности используйте проводное подключение и убедитесь в стабильной доступности порта 8883.`},"camera-connection-refused":{name:`Видеопоток камеры недоступен`,cause:`Камера недоступна по порту RTSPS 322. Порт заблокирован либо на принтере выключены камера или просмотр по LAN.`,fix:`Включите камеру и просмотр по LAN на принтере и убедитесь, что порт 322 не заблокирован. На печать это не влияет.`},"database-locked":{name:`Конфликт записи в базу данных`,cause:`Под нагрузкой SQLite выдаёт ошибки «database is locked». Это часто происходит при одновременной работе с несколькими принтерами.`,fix:`Переведите Bambuddy на внешнюю базу PostgreSQL. См. руководство по PostgreSQL в документации.`}}},vpDiagnostic:{title:`Проверка настройки — {{name}}`,runButton:`Запустить проверку`,running:`Выполняется проверка настройки...`,runFailed:`Не удалось выполнить проверку: {{error}}`,retry:`Запустить снова`,overall:{ok:`Все проверки пройдены — виртуальный принтер настроен правильно.`,warnings:`Виртуальный принтер должен работать, но некоторые пункты требуют внимания.`,problems:`Обнаружены проблемы, из-за которых слайсер не видит или не может использовать виртуальный принтер.`},check:{enabled:{title:`Виртуальный принтер включён`,fail:`Виртуальный принтер выключен. Включите его, чтобы он обнаруживался в сети.`},running:{title:`Службы запущены`,fail:`Виртуальный принтер включён, но его службы не работают. Проверьте журнал Bambuddy: обычно запуску мешает конфликт IP-адреса привязки или ошибка прав доступа.`},bind_interface:{title:`Сетевой интерфейс привязки`,fail:`Интерфейс привязки не задан или больше не существует на этом хосте. Выберите актуальный интерфейс в списке «Интерфейс привязки».`},access_code:{title:`Код доступа задан`,fail:`Код доступа не задан. В слайсере необходимо указать тот же восьмизначный код, который задан здесь.`},target_printer:{title:`Целевой принтер`,fail:`Целевой принтер не выбран. Для режима прокси необходимо указать реальный принтер.`,warn:`Целевой принтер сейчас не в сети. Перенаправление возобновится после его подключения.`},port_ftps:{title:`Служба загрузки файлов (порт {{port}})`,fail:`На порту {{port}} выбранного IP-адреса никто не слушает, поэтому слайсер не сможет загружать файлы. Обычно причина в конфликте порта на этом интерфейсе.`},port_mqtt:{title:`Служба управления (порт {{port}})`,fail:`На порту {{port}} выбранного IP-адреса никто не слушает, поэтому слайсер не сможет подключиться и отображать состояние.`},port_bind:{title:`Служба обнаружения (порт {{port}})`,fail:`На порту {{port}} выбранного IP-адреса никто не слушает, поэтому сетевое обнаружение слайсером не работает.`},privileged_ports:{title:`Привязка к привилегированным портам`,fail:`Порт {{port}} ниже 1024, и этой службе не разрешено его занимать — поэтому выше ничего не слушает. Добавьте AmbientCapabilities=CAP_NET_BIND_SERVICE в /etc/systemd/system/bambuddy.service и перезапустите либо выполните "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))". В Docker добавьте cap_add: [NET_BIND_SERVICE].`},certificate:{title:`Сертификат TLS`,pass:`Сертификат готов. Убедитесь, что сертификат центра сертификации Bambuddy, указанный выше, импортирован в доверенное хранилище слайсера.`,fail:`Сертификат TLS для этого виртуального принтера отсутствует. Проверьте права записи в каталог данных Bambuddy.`}}},bugReport:{title:`Сообщить об ошибке`,description:`Описание`,descriptionPlaceholder:`Что пошло не так? Опишите проблему...`,email:`Электронная почта (необязательно)`,emailPlaceholder:`your@email.com`,emailPrivacy:`Указанный адрес будет добавлен в сворачиваемый раздел задачи GitHub, чтобы сопровождающий мог с вами связаться.`,screenshot:`Снимок экрана`,uploadOrPaste:`Загрузите, вставьте или перетащите изображение`,dataCollectedSummary:`Какие данные включаются в отчёт?`,dataIncluded:`Включаются:`,dataIncludedList:`Версия приложения, ОС, архитектура, версия Python, статистика базы данных (только количества), модели принтеров, количество сопел, версии прошивок, состояние подключений, состояние интеграций (Spoolman, MQTT, HA), неконфиденциальные настройки, количество сетевых интерфейсов, сведения о Docker и версии зависимостей.`,dataNeverIncluded:`Никогда не включаются:`,dataNeverIncludedList:`Имена принтеров, серийные номера, коды доступа, пароли, IP-адреса, адреса электронной почты, ключи API, токены, URL вебхуков, имена хостов и пользователей.`,submit:`Отправить`,startLogging:`Начать отладочную запись`,stepEnableLogging:`Отладочная запись включена`,stepReproduce:`Теперь воспроизведите проблему`,stepStopLogging:`Остановить и отправить отчёт`,stopAndSubmit:`Остановить и отправить`,maxDuration:`Автоматическая остановка через {{minutes}} мин`,stoppingLogs:`Сбор журналов и отправка...`,submitting:`Отправка отчёта об ошибке...`,submittingStepConnection:`Проверка подключений к принтерам`,submittingStepVirtualPrinters:`Проверка настройки виртуальных принтеров`,submittingStepLogScan:`Поиск известных проблем в последних журналах`,submittingStepSubmit:`Отправка отчёта в GitHub`,submitSuccess:`Отчёт об ошибке успешно отправлен!`,submitFailed:`Не удалось отправить отчёт об ошибке`,diagnosticChecking:`Проверка подключений к принтерам...`,diagnosticHealthy:`Проверка подключения пройдена — проблем с принтерами не обнаружено.`,diagnosticSummary:`Проблемы с подключением обнаружены у {{problems}} из {{total}} принтеров`,diagnosticIntro:`У одного или нескольких принтеров есть проблема подключения, которая может быть причиной сбоя. Разверните сведения о принтере ниже и посмотрите способ исправления — возможно, отчёт об ошибке не потребуется. При необходимости его всё равно можно отправить ниже.`,logHealthSummary:`В журналах найдены известные проблемы`,logHealthIntro:`Последние записи журнала совпадают с известными проблемами. Посмотрите способы исправления ниже — возможно, отчёт об ошибке не потребуется. При необходимости его всё равно можно отправить.`,thankYou:`Спасибо!`,submitted:`Отчёт об ошибке отправлен.`,viewIssue:`Открыть задачу`,closeKeepsRecording:`Вы можете закрыть эту панель, пока воспроизводите проблему: запись продолжается, и при повторном открытии вы вернётесь сюда.`,resumeRecording:`Идёт запись отчёта об ошибке — {{elapsed}}. Нажмите, чтобы завершить.`,resumeReport:`Продолжить отчёт`,unexpectedError:`Произошла непредвиденная ошибка`},failureDetection:{title:`Обнаружение сбоев с помощью ИИ`,description:`Контролируйте печать через собственный сервер Obico ML API и автоматически реагируйте на обнаруженные сбои.`,mlUrl:`URL Obico ML API`,mlUrlHint:`Базовый URL собственного контейнера Obico ml_api, например http://192.168.1.10:3333.`,mlToken:`Токен ML API (необязательно)`,mlTokenPlaceholder:`Оставьте пустым, если сервер работает без ML_API_TOKEN`,mlTokenHint:`Должен совпадать с переменной окружения ML_API_TOKEN вашего контейнера Obico ml_api. Оставьте пустым, если контейнер работает без токена.`,test:`Проверить`,testSuccess:`ML API доступен и работает.`,testSuccessTokenUnknown:`ML API доступен и работает. Проверить токен не удалось.`,testFailed:`Не удалось подключиться к ML API.`,sensitivity:`Чувствительность`,sensitivityLow:`Низкая (меньше ложных срабатываний)`,sensitivityMedium:`Средняя (сбалансированная)`,sensitivityHigh:`Высокая (раннее обнаружение, больше ложных срабатываний)`,sensitivityHint:`Определяет пороги уверенности, при которых создаются предупреждения и фиксируются сбои.`,action:`Действие при обнаружении сбоя`,actionNotify:`Только уведомить`,actionPause:`Приостановить печать`,actionPauseOff:`Приостановить печать и отключить питание`,pollInterval:`Интервал проверки (секунды)`,pollIntervalHint:`Как часто проверять каждый принтер во время печати. Минимум 5 с, максимум 120 с.`,externalUrlMissing:`Внешний URL не задан.`,externalUrlHint:`ML API получает снимок камеры по URL. Укажите внешний URL в общих настройках, чтобы контейнер ML API мог обращаться к Bambuddy.`,perPrinterTitle:`Контролируемые принтеры`,perPrinterHint:`Выберите принтеры, за которыми будет следить служба обнаружения.`,monitorAll:`Контролировать все подключённые принтеры`,statusTitle:`Состояние`,serviceRunning:`Служба работает`,thresholds:`Низкий / высокий порог`,activePrinters:`Активные задания`,noActivePrints:`Сейчас ничего не печатается.`,historyTitle:`Последние обнаружения`,noHistory:`Обнаружений пока нет.`},makerworld:{title:`MakerWorld`,description:`Вставьте URL модели MakerWorld, чтобы импортировать и напечатать её прямо из Bambuddy — без перехода в приложение Bambu Handy.`,pasteUrlHeader:`Импорт из MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… или любая ссылка MakerWorld`,resolveButton:`Получить данные`,signInRequiredTitle:`Для загрузки требуется вход в Bambu Cloud`,signInRequiredBody:`Просматривать сведения о модели можно анонимно, но для загрузки файлов 3MF MakerWorld требует учётную запись Bambu Cloud.`,signInExpiredTitle:`Срок авторизации в Bambu Cloud истёк`,signInExpiredBody:`Вы по-прежнему авторизованы в Bambuddy, но Bambu Lab перестал принимать сохранённый токен, поэтому загрузки завершатся ошибкой. Выполните вход в Bambu Cloud снова.`,openCloudSettings:`Открыть настройки облака`,untitledModel:`Модель без названия`,byCreator:`Автор: {{name}}`,downloadsCount:`Загрузок: {{count}}`,licensePrefix:`Лицензия`,alreadyImported:`Уже в библиотеке`,openOnMakerworld:`Открыть на MakerWorld`,alreadyInLibrary:`Эта модель уже есть в библиотеке — найдите её в разделе «Файлы → MakerWorld».`,importSuccess:`Импортирован файл {{filename}} — сохранён в «Файлы → MakerWorld».`,platesHeader:`Пластины ({{count}})`,plateDefaultName:`Пластина {{n}}`,materialCount:`Филаментов: {{count}}`,amsRequired:`Требуется AMS`,slicedFor:`Нарезано для {{printer}}`,alsoCompatible:`Также отмечено как совместимое: {{printers}}`,importToLibrary:`Сохранить`,sliceIn:`Сохранить и нарезать в {{slicer}}`,disclaimer:`Интеграция с MakerWorld использует документированные сообществом конечные точки API. Bambuddy не связан с MakerWorld или Bambu Lab и не одобрен ими.`,lastImportSuccess:`Импортировано в библиотеку`,lastImportAlreadyInLibrary:`Уже в библиотеке`,viewInLibrary:`Открыть в файловом менеджере`,openInBambuStudio:`Открыть в Bambu Studio`,openInOrcaSlicer:`Открыть в OrcaSlicer`,importTo:`Импортировать в файловый менеджер`,recentImportsHeader:`Недавние импорты`,phaseResolving:`Получение данных`,phaseDownloading:`Загрузка`,folderAuto:`MakerWorld (по умолчанию)`,importAll:`Импортировать всё`,importAllProgress:`Импорт {{current}} из {{total}}`,openGallery:`Открыть галерею изображений`,galleryPrev:`Предыдущее изображение`,galleryNext:`Следующее изображение`,deleteImport:`Удалить из библиотеки`,importDeleting:`Удаление…`,importDeleted:`Удалено из библиотеки`,confirmDelete:`Удалить {{filename}} из библиотеки? Локальный файл будет удалён, но пластину можно снова импортировать из MakerWorld.`,errors:{resolveFailed:`Не удалось обработать эту ссылку MakerWorld.`,downloadFailed:`Ошибка загрузки. Повторите попытку.`,deleteFailed:`Не удалось удалить файл из библиотеки.`}},gcodeViewer:{filamentSlot:`Филамент {{n}}`,loading:`Чтение траектории…`,loadFailed:`Не удалось загрузить G-код этого файла.`,showTravel:`Холостые перемещения`,topLayer:`Верхний слой`,bottomLayer:`Нижний слой`,noSource:`Файл для предпросмотра не указан.`,view:{filament:`Филамент`,feature:`Тип`,height:`Высота`,width:`Ширина`},feature:{wall:`Стенки`,sparseInfill:`Разреженное заполнение`,solidInfill:`Сплошное заполнение`,bridge:`Мост / нависание`,support:`Поддержка`,skirt:`Юбка / кайма`,gapFill:`Заполнение зазоров`,ironing:`Разглаживание`,primeTower:`Башня очистки`},back:`Назад`,backToArchives:`Вернуться в архив печати`,backToFiles:`Вернуться в файловый менеджер`,plates:`Пластины`,plateN:`Пластина {{n}}`},libraryTrash:{title:`Корзина`,headerButton:`Корзина`,headerTooltip:`Просмотреть файлы, перемещённые в корзину`,backToFiles:`Вернуться к файлам`,subtitleAdmin:`Удалённые файлы хранятся здесь {{days}} дней, затем удаляются автоматически. Показаны файлы всех пользователей.`,subtitleUser:`Удалённые файлы хранятся здесь {{days}} дней, затем удаляются автоматически.`,loading:`Загрузка корзины…`,loadError:`Не удалось загрузить корзину.`,empty:`Корзина пуста.`,summary:`{{count}} файлов · {{size}}`,emptyTrash:`Очистить корзину`,restore:`Восстановить`,purgeNow:`Удалить сейчас`,autoPurgeIn:`Автоудаление через {{when}}`,days:`дней`,retentionLabel:`Автоудаление через`,selectAll:`Выбрать всё`,selectOne:`Выбрать {{filename}}`,selectionCount:`Выбрано: {{count}}`,bulkRestore:`Восстановить выбранные`,bulkPurge:`Удалить выбранные`,col:{filename:`Файл`,folder:`Папка`,size:`Размер`,deleted:`Перемещён в корзину`,autoPurge:`Автоудаление`,owner:`Владелец`,actions:`Действия`},confirm:{purgeTitle:`Удалить навсегда?`,purgeBody:`Файл {{filename}} будет удалён с диска без возможности восстановления.`,emptyTitle:`Очистить корзину?`,emptyBody:`Все файлы ({{count}}) будут удалены с диска. Отменить это действие нельзя.`,bulkPurgeTitle:`Удалить выбранные файлы навсегда?`,bulkPurgeBody:`Выбранные файлы ({{count}}) будут удалены с диска без возможности восстановления.`,cta:`Удалить навсегда`},toast:{restored:`Файл восстановлен.`,restoreFailed:`Не удалось восстановить файл.`,purged:`Файл удалён навсегда.`,purgeFailed:`Не удалось удалить файл.`,emptied:`Из корзины удалено файлов: {{count}}.`,emptyFailed:`Не удалось очистить корзину.`,retentionSaved:`Срок автоудаления: {{days}} дней.`,retentionFailed:`Не удалось сохранить срок хранения.`,bulkRestored:`Восстановлено файлов: {{count}}.`,bulkPurged:`Удалено файлов: {{count}}.`}},libraryPurge:{title:`Очистить старые файлы`,headerButton:`Очистить старые`,headerTooltip:`Массово переместить старые файлы в корзину`,description:`За один проход убирает старые файлы из библиотеки. Для печатавшихся файлов возраст считается от даты последней печати, для ни разу не печатавшихся — от даты загрузки.`,ageLabel:`Переместить файлы старше`,days:`дней`,includeNeverPrinted:`Включить файлы, которые ни разу не печатались`,effectsTitle:`Что произойдёт после нажатия «Очистить»`,effect1:`Подходящие файлы будут перемещены в корзину, но пока не удалены с диска.`,effect2:`Их можно восстановить из корзины до окончания срока хранения.`,effect3:`После окончания срока хранения очистка корзины окончательно удалит их с диска.`,effect4:`Файлы во внешних подключённых папках пропускаются: Bambuddy не удаляет чужие данные.`,previewLoading:`Подсчёт подходящих файлов…`,previewFailed:`Не удалось выполнить предварительный расчёт.`,previewSummary:`В корзину будет перемещено: {{count}} файлов · {{size}}`,andMore:`…и ещё {{count}}`,warning:`Файлы в корзине продолжают занимать место до окончания срока хранения. Чтобы освободить диск сразу, после операции очистите корзину.`,confirmCta:`Переместить в корзину: {{count}}`,purging:`Перемещение в корзину…`,toast:{success:`Перемещено в корзину файлов: {{count}}.`,failed:`Не удалось очистить файлы.`}},libraryAutoPurge:{enableLabel:`Автоматически очищать старые файлы`,enableDescription:`Раз в сутки запускает административную очистку. Сначала файлы попадают в корзину и не удаляются немедленно.`,ageLabel:`Автоматически очищать файлы старше`,ageDescription:`Минимум 7 дней, максимум 10 лет. Используется тот же способ расчёта возраста, что и при ручной очистке.`,days:`дней`,includeNeverPrinted:`Включить файлы, которые ни разу не печатались`,saveFailed:`Не удалось сохранить настройки автоочистки.`},archivePurge:{headerButton:`Очистить старые`,headerTooltip:`Массово удалить старые записи архива`,title:`Очистить старые записи архива`,description:`Удаляет старую историю печати. Возраст записи считается от последнего завершения печати; повторная печать обновляет дату, поэтому используемые записи не удаляются.`,ageLabel:`Удалить записи, которые не печатались последние`,days:`дней`,effectsTitle:`Что произойдёт после нажатия «Очистить»`,effect1:`Каждая подходящая запись будет скрыта из списков, а связанные файлы удалены с диска: 3MF, миниатюра, таймлапс, исходный 3MF, проект F3D и фотографии.`,effect2:`Строка архива останется в базе, поэтому быстрая статистика сохранит вклад по филаменту, времени, стоимости и энергии — как при обычном удалении отдельной записи.`,effect3:`Установите флажок «Также удалить из статистики», чтобы исключить вклад из быстрой статистики. Это действие необратимо.`,effect4:`Повторная печать обновляет дату записи, поэтому используемые архивы не удаляются.`,purgeStatsLabel:`Также удалить из статистики`,purgeStatsHint:`Исключает соответствующие записи из быстрой статистики по филаменту, времени, стоимости и энергии. Без этого удаляются только файлы, а статистика сохраняется.`,previewLoading:`Подсчёт подходящих записей…`,previewFailed:`Не удалось выполнить предварительный расчёт.`,previewSummary:`Будет удалено: {{count}} записей · {{size}}`,andMore:`…и ещё {{count}}`,warning:`Файлы будут удалены с диска без возможности восстановления. Перед продолжением скачайте или добавьте в избранное всё, что нужно сохранить.`,confirmCta:`Удалить записей: {{count}}`,purging:`Удаление…`,toast:{success:`Удалено записей архива: {{count}}.`,failed:`Не удалось очистить архив.`}},archiveAutoPurge:{enableLabel:`Автоматически очищать старые записи архива`,enableDescription:`Раз в сутки скрывает записи из списков и удаляет их файлы с диска, если они не печатались в течение заданного срока. Повторная печать сбрасывает отсчёт.`,ageLabel:`Автоматически удалять записи, которые не печатались последние`,ageDescription:`Минимум 7 дней, максимум 10 лет. Срок считается от последнего завершения печати; повторная печать обновляет дату. Удаляются 3MF, миниатюра, таймлапс, исходный 3MF, F3D и фотографии.`,days:`дней`,purgeStatsLabel:`Также удалить из статистики`,purgeStatsDescription:`Если включено, ежедневная очистка исключает удалённые записи из быстрой статистики по филаменту, времени, стоимости и энергии. По умолчанию выключено: статистика сохраняется, удаляются только файлы.`,runNow:`Очистить архив сейчас`,saveFailed:`Не удалось сохранить настройки автоочистки.`},cameraTokens:{scope:{camera_stream:`Поток камеры`,camwall:`Стена камер`,overlay:`Оверлей для стрима`},title:`Токены API камеры`,navTitle:`Токены API камеры`,description:`Долгоживущие токены для встраивания видеопотока в Home Assistant, Frigate, киоски и другие системы, которым нужен постоянный URL. Каждый токен даёт доступ только к потоку камеры и может быть отозван в любой момент.`,loading:`Загрузка...`,confirmRevoke:{title:`Отозвать этот токен?`,body:`Все устройства, использующие «{{name}}», немедленно потеряют доступ. Отменить это действие нельзя.`,cancel:`Отмена`,confirm:`Отозвать`},create:{scopeLabel:`Область действия`,hintCameraStream:`Токен потока камеры позволяет получать только видеопотоки и снимки. Используйте его для Home Assistant, Frigate и других систем, встраивающих изображение с одной камеры.`,hintCamWall:`Токен стены камер открывает страницу /camwall на экране без авторизации. Он позволяет видеть названия и состояния всех принтеров, а также видеопотоки с их камер. Имена файлов, адреса и коды доступа недоступны.`,hintOverlay:`Токен оверлея для стрима открывает страницу /overlay/{printerId} на экране без авторизации — для OBS или любой прямой трансляции. Он даёт доступ к видеопотоку одного принтера и его текущему статусу печати, включая имя файла, отображаемое на экране. Адреса и коды доступа недоступны.`,title:`Создать токен`,nameLabel:`Название токена`,namePlaceholder:`Например, Home Assistant`,daysLabel:`Срок действия, дней`,submit:`Создать`,hint:`Максимальный срок действия — 365 дней. Значение токена показывается только один раз при создании — скопируйте его сейчас.`},created:{camWallUrlTitle:`URL стены камер для этого экрана`,camWallUrlHint:`Откройте этот адрес на экране. Любой, кто получит URL, сможет наблюдать за стеной камер, поэтому обращайтесь с ним как с ключом. Отзовите токен, чтобы отключить экран.`,overlayUrlTitle:`URL оверлея для OBS`,overlayUrlHint:`Добавьте этот адрес как источник браузера (Browser Source) в OBS. Замените число в /overlay/1 на номер вашего принтера (его можно узнать из URL на странице «Принтеры»). Любой, кто получит URL, сможет смотреть трансляцию, поэтому обращайтесь с ним как с ключом — отзовите токен, чтобы прекратить доступ.`,title:`Токен создан — скопируйте его сейчас`,warning:`Это единственный раз, когда токен отображается. После закрытия окна посмотреть его снова будет невозможно.`,copy:`Копировать`,dismiss:`Я сохранил токен`},list:{scope:`Область действия`,myTitle:`Мои токены`,allTitle:`Все пользователи (режим администратора)`,empty:`Токенов пока нет.`,name:`Название`,owner:`Владелец`,prefix:`Префикс`,created:`Создан`,expires:`Истекает`,lastUsed:`Последнее использование`,revoke:`Отозвать`,expired:`Истёк`},toast:{created:`Токен создан`,createFailed:`Не удалось создать токен`,revoked:`Токен отозван`,revokeFailed:`Не удалось отозвать токен`,loadFailed:`Не удалось загрузить токены`,copied:`Скопировано в буфер обмена`,copyFailed:`Не удалось скопировать — выделите и скопируйте вручную`}},forecast:{title:`Прогноз`,noSpools:`Активные катушки не найдены. Добавьте катушки в учёт, чтобы увидеть прогноз.`,noUsageData:`Нет данных о расходе — невозможно спрогнозировать остатки.`,sku:`Артикул`,material:`Материал`,stock:`Запас`,dailyRate:`Расход`,daysLeft:`Осталось дней`,emptyBy:`Закончится к`,reorderBy:`Заказать до`,actions:`Действия`,trend:`Тренд`,estimated:`Оценка`,noData:`Нет данных`,timeframe:`Период`,chartTitle:`Прогноз запаса — 5 основных материалов`,dashedLinesROP:`Пунктирные линии — точки заказа`,stockLevel:`Уровень запаса`,reorderPoint:`Точка заказа`,safetyMargin:`Страховой запас`,trendLegend:`Тренд (по истории, уровень обслуживания 95%)`,estimatedLegend:`Оценка (по изменению массы)`,noDataLegend:`Нет данных`,ropLabel:`ТЗ`,ssLabel:`СЗ`,safetyStockLegend:`Страховой запас`,stockArrivalLegend:`Поступление`,stockoutLegend:`Исчерпание запаса`,alertCount_one:`{{count}} предупреждение`,alertCount_other:`{{count}} предупреждений`,order:`Заказать`,save:`Сохранить`,cancel:`Отмена`,settingsSaved:`Настройки сохранены`,failedSaveSettings:`Не удалось сохранить настройки`,globalLeadTimeSaved:`Общий срок поставки сохранён`,globalLeadTime:`Общий срок поставки`,globalLeadTimeHint:`Минимальный общий срок поставки, используемый при расчёте точки заказа для всех артикулов`,skuLeadTimeOverride:`Переопределение срока поставки`,skuLeadTimeHint:`0 — использовать общий срок поставки. Значение больше 0 переопределяет его для этого артикула.`,safetyMarginLabel:`Страховой запас`,effectiveLeadTime:`Фактический срок поставки`,effectiveLeadTimeHint:`макс. (общий {{global}} дн., для артикула {{sku}} дн.)`,reorderPointHint:`средний расход × срок поставки + страховой запас — заказывайте, когда остаток достигнет этого уровня`,safetyMarginHint:`Статистический страховой запас (z=1,65 × σ × √LT) плюс заданный пользователем резерв`,safetyMarginHintDays:`Резерв поверх статистического страхового запаса.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}} г при текущем расходе.`,safetyMarginHintG:`Фиксированный весовой резерв поверх статистического страхового запаса.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}} дн. при текущем расходе.`,individualSpools:`Отдельные катушки`,labelWeight:`Метка`,spoolCount_one:`{{count}} катушка`,spoolCount_other:`{{count}} катушек`,stockBreakRisk:`Риск исчерпания запаса`,stockBreakDetail:`Осталось {{days}} дн., срок поставки {{lt}} дн.`,stockBreakBefore:`Запас закончится до пополнения`,reorderNow:`Заказать сейчас`,reorderTriggerPassed:`Дата заказа {{date}} уже прошла.`,shoppingList:`Список покупок`,shoppingListItems_one:`({{count}} позиция)`,shoppingListItems_other:`({{count}} позиций)`,shoppingListEmpty:`Список покупок пуст. Нажмите значок корзины в нужной строке, чтобы добавить позицию.`,addToCart:`Добавить в список покупок`,alertsSnoozed:`Отключить предупреждения для артикула`,alertsEnabled:`Включить предупреждения для артикула`,addedToCart:`Добавлено в список покупок`,failedAddItem:`Не удалось добавить позицию`,listView:`Список`,logisticsView:`Логистика`,qty:`Кол-во`,weight:`Масса`,leadTime:`Срок поставки`,expectedRestock:`Ожидаемое пополнение`,status:`Состояние`,note:`Примечание`,pending:`Ожидается`,purchased:`Куплено`,received:`Получено`,markPurchased:`Отметить как купленное`,markReceived:`Отметить как полученное — катушки будут добавлены в запас`,resetToPending:`Вернуть в ожидание`,remove:`Удалить`,clearAll:`Очистить всё`,downloadCsv:`CSV`,addToCartTitle:`Добавить в список покупок`,byQuantity:`По количеству`,byDuration:`По сроку`,numberOfSpools:`Количество катушек`,lastHowManyDays:`На сколько дней должно хватить?`,noUsageQty:`Нет данных о расходе — количество установлено равным 1.`,noteOptional:`Примечание (необязательно)`,notePlaceholder:`например, для проекта X, срочно…`,addNSpools_one:`Добавить {{count}} катушку`,addNSpools_other:`Добавить {{count}} катушек`,onArrival:`После поступления`,stockBreakIn:`Запас закончится через {{days}} дн.`,stockRunsOutBefore:`Запас закончится раньше, чем истекут {{lt}} дн. срока поставки.`,atRate:`При расходе {{rate}} г/день требуется`,moreSpools_one:`ещё {{count}} катушка`,moreSpools_other:`ещё {{count}} катушек`,bridgeGap:`чтобы перекрыть дефицит.`,noReadAccess:`У вас нет прав на просмотр прогноза запасов.`,noWriteAccess:`У вас нет прав на изменение настроек прогноза.`}}},uk:{translation:{nav:{printers:`Принтери`,archives:`Архіви`,queue:`Черга друку`,stats:`Статистика`,profiles:`Профілі`,maintenance:`Технічне обслуговування`,projects:`Проєкти`,inventory:`Філамент`,finance:`Фінанси`,files:`Менеджер файлів`,makerworld:`MakerWorld`,notifications:`Сповіщення`,settings:`Налаштування`,system:`Система`,collapseSidebar:`Згорнути бічну панель`,expandSidebar:`Розгорнути бічну панель`,update:`Оновити`,updateAvailable:`Доступне оновлення: v{{version}}`,updateAvailableBanner:`Доступна версія {{version}}!`,viewUpdate:`Переглянути оновлення`,viewOnGithub:`Переглянути на GitHub`,keyboardShortcuts:`Комбінації клавіш (?)`,switchToLight:`Перейти у світлий режим`,switchToDark:`Перейти у темний режим`,switchToSystem:`Перейти в системний режим`,smartSwitches:`Розумні перемикачі`,logout:`Вийти`,installApp:`Встановити додаток`,installAppSuccess:`Bambuddy встановлено`},common:{plusNMore:`ще {{count}}`,save:`Зберегти`,saving:`Збереження...`,cancel:`Скасувати`,delete:`Видалити`,edit:`Редагувати`,add:`Додати`,close:`Закрити`,confirm:`Підтвердити`,loading:`Завантаження...`,error:`Помилка`,errorLoading:`Помилка завантаження даних`,retry:`Повторити`,success:`Успіх`,warning:`Попередження`,enabled:`Увімкнено`,disabled:`Вимкнено`,yes:`Так`,no:`Ні`,on:`Увімкнено`,off:`Вимкнено`,all:`Усі`,none:`Жодного`,search:`Пошук`,filter:`Фільтр`,sort:`Сортувати`,refresh:`Оновити`,download:`Завантажити`,upload:`Вивантажити`,uploading:`Вивантаження...`,uploadFailed:`Не вдалося вивантажити`,actions:`Дії`,status:`Статус`,name:`Назва`,description:`Опис`,date:`Дата`,time:`Час`,hours:`год`,minutes:`хв`,seconds:`с`,days:`дн.`,enable:`Увімкнути`,disable:`Вимкнути`,permissions:`Дозволи`,noPrinters:`Принтери не налаштовані`,noData:`Немає даних`,linkNotFound:`Посилання не знайдено`,required:`Обов’язковий`,optional:`Необов’язково`,dismiss:`Закрити`,apply:`Застосувати`,reset:`Скинути`,export:`Експортувати`,import:`Імпортувати`,clear:`Очистити`,selectAll:`Вибрати всі`,deselectAll:`Зняти вибір із усіх`,noChange:`— Без змін —`,unchanged:`Без змін`,unassigned:`Не призначено`,unknown:`Невідомо`,unknownError:`Невідома помилка`,today:`Сьогодні`,tomorrow:`Завтра`,asap:`Якнайшвидше`,overdue:`Протерміновано`,now:`Зараз`,collapse:`Згорнути`,expand:`Розгорнути`,previous:`Попередній`,next:`Далі`,viewArchive:`Переглянути архів`,viewInFileManager:`Переглянути в менеджері файлів`,addedBy:`Додав {{username}}`,prints:`друків`,more:`+ ще {{count}}`,ascending:`За зростанням`,descending:`За спаданням`,back:`Назад`,copy:`Копіювати`,copied:`Скопійовано!`,printer:`Принтер`,remove:`Видалити`,type:`Тип`,print:`Друкувати`,rename:`Перейменувати`,move:`Перемістити`,create:`Створити`,duplicate:`Дублювати`,left:`Ліворуч`,right:`Праворуч`,user:`Користувач`,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:`Баланс рахунку`,unlimited:`Без обмежень`,budgetPolicyHint:`Баланс рахунку використовується для обліку витрат. Друк обмежується лише бюджетом вибраного центру витрат; без бюджету обмежень немає.`,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:{title:`Принтери`,addPrinter:`Додати принтер`,addPreflight:{checking:`Перевірка підключення...`,warning:`Деякі перевірки підключення завершилися невдало. Принтер може відображатися як офлайн. Перегляньте результати нижче, усуньте можливі проблеми або все одно збережіть принтер.`,back:`Назад`,saveAnyway:`Усе одно зберегти`},editPrinter:`Редагувати принтер`,deletePrinter:`Видалити принтер`,printerName:`Назва принтера`,serialNumber:`Серійний номер`,ipAddress:`IP-адреса / ім’я хоста`,accessCode:`Код доступу`,model:`Модель`,nozzleCount:`Кількість сопел`,autoArchive:`Автоархів`,status:{available:`Доступний`,idle:`Неактивний`,printing:`Друк`,paused:`Призупинено`,offline:`Не в мережі`,problem:`Проблема`,error:`Помилка`,finished:`Готово`,unknown:`Невідомий`},temperatures:{nozzle:`Сопло`,bed:`Стіл`,chamber:`Камера`},heaterHistory:{title:`Історія нагрівання`,openLabel:`Переглянути історію нагрівання`,nozzle:`Сопло`,nozzle2:`Сопло 2`,bed:`Стіл`,chamber:`Камера`,error:`Не вдалося завантажити історію`,empty:`Дані ще не записані`},progress:`{{percent}}% виконано`,timeRemaining:`Залишилося {{time}}`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"?`,maintenanceOk:`Технічне обслуговування в порядку`,maintenanceWarning:`{{count}} попередження`,maintenanceWarning_plural:`{{count}} попередження`,maintenanceDue:`Потрібне обслуговування: {{count}}`,maintenanceDue_plural:`Потрібне обслуговування: {{count}}`,sort:{name:`Назва`,status:`Статус`,model:`Модель`,location:`Розташування`,eta:`Орієнтовне завершення`,ascending:`Сортувати за зростанням`,descending:`Сортувати за спаданням`},cardSize:{small:`Маленькі картки`,medium:`Середні картки`,large:`Великі картки`,extraLarge:`Дуже великі картки`},pageView:{openCamWallPage:`Відкрити панель камер як окрему сторінку`,cards:`Картки`,camWall:`Панель камер`},camWall:{page:{tokenRejected:`Це посилання на панель камер більше не дійсне. Можливо, термін дії токена минув або токен було відкликано.`,loadFailed:`Не вдалося завантажити список принтерів.`},noPrinters:`Немає принтерів для показу`,noSignal:`Немає сигналу`,live:`Наживо`,snap:`Знімок`,off:`Вимкнено`,summary:`{{live}} наживо, {{snap}} знімки, {{total}} всього`,layer:`Шар {{cur}}/{{total}}`,timeLeft:`Залишилося {{time}}`,statusMode:{off:`Вимкнено`,compact:`Компактний`,full:`Повний`},settings:{title:`Налаштування Cam Wall`,maxLive:`Максимальна кількість прямих трансляцій`,maxLiveHint:`Кількість плиток, що одночасно показують пряму трансляцію. Решта оновлюються як знімки.`,snapshotInterval:`Інтервал знімка (секунди)`,snapshotIntervalHint:`Як часто плитки без прямої трансляції отримують новий знімок.`,statusOverlay:`Накладення стану`,statusOverlayHint:`Компактний: лише значок стану. Повний: значок, прогрес, шар і час, що залишився.`}},hideOffline:`Приховати офлайн-принтери`,nextAvailable:`Наступний доступний`,powerOn:`Увімкнути`,offlinePrintersWithPlugs:`Офлайн-принтери з розумними розетками`,noPrintersConfigured:`Принтерів ще не налаштовано`,search:`Пошук принтерів...`,noSearchResults:`Немає принтерів, які відповідають вашому пошуку або фільтрам`,filter:{allStatuses:`Усі статуси`,allLocations:`Усі розташування`},toolbar:{filters:`Фільтри`,view:`Вигляд`,actions:`Дії`},readyToPrint:`Готовий до друку`,external:`Зовнішній`,extL:`Ext-L`,extR:`Ext-R`,deleteArchives:`Видалити архіви друку`,noLabel:`Без етикетки`,printPreview:`Попередній перегляд`,width:`Ширина`,height:`Висота`,noObjectsFound:`Об’єктів не знайдено`,objectsLoadedOnPrintStart:`Об’єкти завантажуються після початку друку`,willBeSkipped:`Буде пропущено`,name:`Назва`,serialCannotBeChanged:`Серійний номер не можна змінити`,locationHelp:`Використовується для групування принтерів і фільтрації завдань у черзі`,wifiSignal:{veryWeak:`Дуже слабкий`,weak:`Слабкий`,fair:`Задовільний`,good:`Добрий`,excellent:`Чудово`},maintenanceUpToDate:`Усі роботи з технічного обслуговування виконано — натисніть, щоб переглянути`,maintenance:{title:`На технічному обслуговуванні`,subtitle:`Роботу цього принтера призупинено: він не підключається, не отримує завдань із черги й не надсилає сповіщень.`,pillLabel:`Технічне обслуговування`,exitButton:`Вийти з технічного обслуговування`,menuEnter:`Увійти в режим обслуговування`,menuExit:`Вийти з режиму обслуговування`,toastEntered:`{{name}} зараз у режимі обслуговування`,toastExited:`{{name}} знову в мережі`,confirmMidPrintTitle:`Перевести принтер у режим обслуговування під час друку?`,confirmMidPrintMessage:`{{name}} зараз друкує. Перехід у режим обслуговування відключить MQTT і припинить відстеження перебігу друку та сповіщення про завершення цього завдання. Продовжити?`,editFieldLabel:`Режим обслуговування`,editFieldHelp:`Коли режим увімкнено, принтер відключається від MQTT, не отримує завдань із черги й не надсилає сповіщень. Використовуйте цей режим під час ремонту, паралельного розгортання Bambuddy або тимчасового виведення принтера з роботи.`},chamberLightOn:`Увімкнути світло в камері`,chamberLightOff:`Вимкнути світло в камері`,files:`Файли`,browseFiles:`Переглянути файли принтера`,autoOffAfterPrint:`Автоматичне вимкнення після друку`,autoOffExecuted:`Автоматичне вимкнення виконано — увімкніть принтер, щоб скинути стан`,hmsErrors:`Помилки HMS`,viewHmsErrors:`Переглянути помилки HMS ({{count}})`,resume:`Відновити`,pause:`Призупинити`,stop:`Зупинити`,camera:`Камера`,skipObject:`Пропустити об’єкт`,reconnect:`Підключитися знову`,forceRefresh:`Примусово оновити`,forceRefreshSuccess:`Оновлення запитано`,mqttDebug:`Налагодження MQTT`,printerInformation:`Інформація про принтер`,copyToClipboard:`Копіювати`,copied:`Скопійовано!`,state:`Стан`,wifiSignalLabel:`Сигнал Wi‑Fi`,developerMode:`Режим розробника`,enabled:`Увімкнено`,disabled:`Вимкнено`,addedOn:`Додано`,sdCard:`SD-картка`,inserted:`Вставлено`,notInserted:`Не вставлено`,totalPrintHours:`Загальний час друку`,activeNozzle:`Активне сопло: {{nozzle}}`,amsSwitchInletTooltip:`Перемикач тракту філаменту IN-{{inlet}} ({{side}}) — подає на обидва сопла`,nozzleRack:`Стійка сопел`,nozzleDocked:`У док-станції`,nozzleMounted:`Установлено`,nozzleActive:`Активний`,nozzleIdle:`Неактивний`,nozzleDiameter:`Діаметр`,nozzleType:`Тип`,nozzleStatus:`Статус`,nozzleFilament:`Філамент`,nozzleWear:`Знос`,nozzleMaxTemp:`Макс. температура`,nozzleSerial:`Серійний номер`,nozzleHardenedSteel:`Загартована сталь`,nozzleStainlessSteel:`Нержавіюча сталь`,nozzleTungstenCarbide:`Карбід вольфраму`,nozzleFlow:`Потік`,nozzleHighFlow:`Високий потік`,nozzleStandardFlow:`Стандартний`,firmwareUpdate:`Оновлення прошивки`,firmwareInstructions:`На сенсорному екрані принтера перейдіть до`,firmwareNav:`Перейдіть до`,settings:`Налаштування`,firmware:`Прошивка`,discoverPrinters:`Знайти принтери`,searching:`Пошук...`,manualEntry:`Ввести вручну`,addFromCloud:`Додати з хмари`,toast:{printerDeleted:`Принтер видалено`,missingSpoolAssignment:`Друк на {{printer}} розпочато. Для слотів {{slots}} не призначено котушки.`,killSwitchTriggered:`Аварійний вимикач білінгу зупинив несанкціонований друк на {{printer}}: {{filename}}`,billingChargeFailed:`Не вдалося нарахувати вартість {{filename}} на {{printer}}. Резерв бюджету збережено; перевірте журнали сервера.`,assignmentVerified:`Філамент завантажено в слот AMS {{slot}} принтера {{printer}}`,assignmentVerifiedNoKprofile:`Слот AMS {{slot}} на {{printer}} завантажено, але калібрування потоку (K-профіль) не застосовано`,assignmentNotConfirmed:`Не вдалося підтвердити призначення для слота {{slot}} на {{printer}} — перевірте слот AMS`,printerAdded:`Додано принтер`,printerUpdated:`Принтер оновлено`,failedToDelete:`Не вдалося видалити принтер`,failedToAdd:`Не вдалося додати принтер`,connectionFailedNotAdded:`Не вдалося підключитися до принтера. Перевірте IP, серійний номер і код доступу, а також підтвердьте, що режим лише для LAN увімкнено. Принтер не додано.`,failedToUpdate:`Не вдалося оновити принтер`,commandSent:`Команда надіслана`,failedToSendCommand:`Не вдалося надіслати команду`,turnedOn:`{{name}} увімкнено`,failedToPowerOn:`Не вдалося ввімкнути {{name}}`,scriptTriggered:`Сценарій запущено`,printStopped:`Друк зупинено`,printPaused:`Друк призупинено`,printResumed:`Друк відновлено`,referenceDeleted:`Еталонне зображення видалено`,detectionAreaSaved:`Область виявлення збережено`,failedToRunScript:`Не вдалося запустити сценарій`,failedToStopPrint:`Не вдалося зупинити друк`,failedToPausePrint:`Не вдалося призупинити друк`,failedToResumePrint:`Не вдалося відновити друк`,failedToControlChamberLight:`Не вдалося керувати світлом камери`,failedToSetSpeed:`Не вдалося встановити швидкість друку`,failedToUpdateSetting:`Не вдалося оновити налаштування`,failedToSkipObjects:`Не вдалося пропустити об’єкти`,failedToRereadRfid:`Не вдалося перечитати RFID`,failedToCheckPlate:`Не вдалося перевірити друкарську пластину`,failedToUpdateLabel:`Не вдалося оновити мітку`,failedToDeleteReference:`Не вдалося видалити еталонне зображення`,failedToSaveDetectionArea:`Не вдалося зберегти область виявлення`,plateCheckEnabled:`Перевірку друкарської пластини ввімкнено`,plateCheckDisabled:`Перевірку друкарської пластини вимкнено`,calibrationSaved:`Калібрування збережено!`,calibrationFailed:`Не вдалося виконати калібрування`,rfidRereadInitiated:`Розпочато повторне зчитування RFID`,loadInitiated:`Завантаження філаменту...`,unloadInitiated:`Вивантаження філаменту...`,failedToLoad:`Не вдалося завантажити філамент`,failedToUnload:`Не вдалося вивантажити філамент`},connection:{connected:`Підключено`,offline:`Не в мережі`},plateStatus:{markCleared:`Позначити друкарську пластину як очищену`,cleared:`Друкарську пластину очищено`,notCleared:`Друкарську пластину не очищено`,inUse:`Друкарська пластина використовується`},queue:{inQueue:`У черзі: {{count}}`,inQueue_plural:`У черзі: {{count}}`},controls:`Елементи керування`,rfid:{reread:`Перечитати RFID`},ams:{load:`Завантажити`,unload:`Вивантажити`,feedTitle:`У яке сопло завантажити {{slot}}?`,feedPrompt:`Filament Track Switch може спрямувати цей слот до будь-якого з хотендів. Виберіть, у який подавати.`,feedLeft:`Ліве сопло`,feedRight:`Праве сопло`,feedAlreadyLoaded:`Уже завантажено`,switchNotReady:`Filament Track Switch ще не налаштовано. Призначте кожній AMS вхід на принтері й спробуйте ще раз.`},bedJog:{limitWarning:`Під час ручного переміщення межі ходу не контролюються: через помилку прошивки Bambu віддалені команди ігнорують програмні кінцеві обмежувачі. Переміщуйте стіл обережно, щоб уникнути зіткнення.`,title:`Керування переміщенням`,bed:`Стіл`,step:`Крок (мм)`,up:`Перемістити стіл угору`,down:`Перемістити стіл униз`,disabledWhilePrinting:`Вимкнено під час друку`,notHomedTitle:`Принтер не відкалібровано за початковою позицією`,notHomedMessage:`Після останнього друку принтер не виконував пошук початкової позиції. Для безпечного позиціювання спочатку запустіть автопозиціювання: принтер припаркує друкувальну головку та визначить початкові координати X, Y і Z. Або продовжте переміщення без нього — програмні кінцеві обмежувачі буде обійдено.`,homeZ:`Запустити автопозиціювання`,moveAnyway:`Усе одно перемістити`,homingStarted:`Виконується автопозиціювання принтера…`},permission:{noAdd:`Ви не маєте дозволу додавати принтери`,noEdit:`Ви не маєте дозволу редагувати принтери`,noDelete:`Ви не маєте дозволу на видалення принтерів`,noControl:`Ви не маєте дозволу керувати принтерами`,noFiles:`Ви не маєте дозволу на доступ до файлів принтера`,noAmsRfid:`Ви не маєте дозволу на повторне читання AMS RFID`,noSmartPlugControl:`Ви не маєте дозволу керувати розумними розетками`,noCamera:`У вас немає дозволу на перегляд камер`},modal:{addTitle:`Додати принтер`,editTitle:`Редагувати принтер`,myPrinter:`Мій принтер`,selectModel:`Вибрати модель…`,locationGroup:`Розташування/група (необов’язково)`,locationPlaceholder:`наприклад, майстерня, офіс, підвал`,autoArchiveLabel:`Автоматичне архівування завершених роздруківок`,fromPrinterSettings:`З налаштувань принтера`,modelOptional:`Модель (необов’язково)`,saveChanges:`Зберегти зміни`},skipObjects:{tooltip:`Пропустити об’єкти`,onlyWhilePrinting:`Пропустити об’єкти (лише під час друку)`,requiresMultiple:`Пропустити об’єкти (потрібно щонайменше 2 об’єкти)`,title:`Пропустити об’єкти`,matchIdsInfo:`Зіставте ідентифікатори з дисплеєм принтера`,printerShowsIds:`На екрані принтера показано ідентифікатори об’єктів на друкарській пластині`,skipSelected:`Пропустити вибране`,skipping:`Пропускання…`,noObjectsSelected:`Об’єкти не вибрано`,selectObjectsToSkip:`Виберіть об’єкти, які потрібно пропустити під час поточного друку`,skipped:`пропущено`,objectsSkipped:`Об’єкти пропущено`,activeCount:`Активних: {{count}}`,waitForLayer:`Щоб пропускати об’єкти, дочекайтеся другого шару або пізніше (зараз шар {{layer}})`,skip:`Пропустити`,confirmTitle:`Пропустити об’єкт?`,confirmMessage:`Ви впевнені, що бажаєте пропустити "{{name}}"? Це неможливо скасувати.`,confirmAllMessage:`Вибрано всі об’єкти, що залишилися. Це зупинить завдання друку. Продовжити?`,confirmMultipleMessage:`Пропустити вибрані об’єкти ({{count}})? Цю дію неможливо скасувати.`},confirm:{deleteTitle:`Видалити принтер`,deleteMessage:`Ви впевнені, що хочете видалити "{{name}}"? Це призведе до видалення всіх налаштувань підключення.`,deleteArchivesNote:`Усю історію друку для цього принтера буде остаточно видалено.`,keepArchivesNote:`Історія друку буде збережена, але більше не пов’язана з цим принтером.`,stopTitle:`Зупинити друк`,stopMessage:`Ви впевнені, що хочете зупинити поточний друк на "{{name}}"? Це призведе до скасування завдання друку.`,stopButton:`Зупинити друк`,pauseTitle:`Призупинити друк`,pauseMessage:`Ви впевнені, що хочете призупинити поточний друк на "{{name}}"?`,pauseButton:`Призупинити друк`,resumeTitle:`Відновити друк`,resumeMessage:`Ви впевнені, що бажаєте відновити друк на "{{name}}"?`,resumeButton:`Відновити друк`,powerOnTitle:`Увімкнути принтер`,powerOnMessage:`Увімкнути живлення принтера «{{name}}»?`,powerOnButton:`Увімкнути`,powerOffTitle:`Вимкнути принтер`,powerOffMessage:`Вимкнути живлення принтера «{{name}}»?`,powerOffWarning:`УВАГА: «{{name}}» зараз друкує. Вимкнення живлення перерве друк і може пошкодити принтер. Продовжити?`,powerOffButton:`Вимкнути`,haToggleTitle:`Перемкнути "{{name}}"`,haToggleMessage:`Перемкнути об’єкт Home Assistant {{entity}}? Це може вимкнути живлення, якщо воно зараз увімкнено.`,haToggleWarning:`УВАГА: "{{name}}" зараз друкується! Перемикання {{entity}} може вимкнути живлення та перервати друк. Продовжити?`,haToggleButton:`Перемкнути`},bulk:{select:`Вибрати`,selectAll:`Вибрати усі`,selectByLocation:`Вибрати за розташуванням`,selected:`Вибрано: {{count}}`,actions:{stop:`Зупинити`,pause:`Призупинити`,resume:`Відновити`,clearPlate:`Очистити стіл`,clearHMS:`Очистити сповіщення`},confirm:{stopTitle:`Зупинити завдання друку: {{count}}`,stopMessage:`Активний друк буде скасовано на вибраних принтерах ({{count}}). Цю дію неможливо скасувати.`,stopButton:`Зупинити все`,pauseTitle:`Призупинити завдання друку: {{count}}`,pauseMessage:`Активний друк буде призупинено на вибраних принтерах ({{count}}).`,pauseButton:`Призупинити все`,clearPlateTitle:`Очистити столи ({{count}})`,clearPlateMessage:`Столи вибраних принтерів ({{count}}) буде позначено очищеними, що може запустити завдання з черги.`,clearPlateButton:`Очистити все`},success:`Дію «{{action}}» виконано на принтерах: {{count}}`,partial:`{{succeeded}} вдалося, {{failed}} не вдалося`,noneApplicable:`Немає вибраних принтерів у належному стані для цієї дії`,selectByState:`Вибрати за станом`},discovery:{title:`Знайти принтери`,searching:`Пошук...`,scanning:`Сканування...`,scanProgress:`Сканування... {{scanned}}/{{total}}`,foundPrinters:`Знайдено принтерів: {{count}}`,noPrintersFound:`Принтерів не знайдено`,noPrintersFoundSubnet:`Немає принтерів у вказаній підмережі.`,noPrintersFoundNetwork:`У мережі не знайдено принтерів.`,allConfigured:`Усі знайдені принтери вже налаштовані.`,alreadyAdded:`Вже додано`,select:`Вибрати`,manualEntry:`Ввести вручну`,addFromCloud:`Додати з хмари`,subnetToScan:`Підмережа для сканування`,dockerNote:`Виявлено Docker. Введіть підмережу принтера в нотації CIDR. У docker-compose.yml потрібен параметр network_mode: host.`,scanSubnet:`Сканувати підмережу для принтерів`,discoverNetwork:`Знайти принтери в мережі`,scanningSubnet:`Сканування підмережі для принтерів Bambu...`,scanningNetwork:`Сканування мережі...`,serialRequired:`Потрібен серійний номер`,unknown:`Невідомий`,failedToStart:`Не вдалося запустити пошук`,customSubnetOption:`Спеціальна підмережа...`,customSubnetLabel:`Спеціальна підмережа (CIDR)`,customSubnetNote:`Укажіть власну підмережу, якщо принтер перебуває в іншій мережі, ніж сервер. Порти FTP (990) і MQTT (8883) мають бути доступні через маршрутизатор.`},drying:{start:`Почати сушіння`,stop:`Зупинити сушіння`,temperature:`Температура`,duration:`Тривалість`,hours:`години`,timeRemaining:`Залишилося {{time}}`,active:`Сушіння`,targetSummary:`{{filament}} при {{temp}}°C`,notSupported:`Сушіння не підтримується`,powerRequired:`Підключіть адаптер живлення AMS, щоб увімкнути сушіння`,cannotDryNow:`AMS зараз не може почати сушіння`,startingDrying:`Запуск сушіння…`,toastCommandSent:`Надіслано команду сушіння`,toastStopped:`Сушіння зупинено`,toastNotStarted:`Принтер прийняв команду, але AMS так і не почав сушити. Перевірте, чи підключено адаптер живлення AMS і чи принтер неактивний.`,screenOnly:`Сушінням AMS на цьому принтері можна керувати лише з екрана принтера (обмеження Bambu)`,stoppingDrying:`Припинення сушіння...`,rotateTray:`Обертати котушку під час сушіння`,rotateUnavailableReason:`Недоступно: філамент із цього слота AMS завантажено в інструментальну головку. Котушка заблокована подавальною трубкою й не може обертатися. Спочатку вивантажте філамент.`,startMode:`Час початку`,modeNow:`Зараз`,modeDelay:`Після затримки`,modeAtTime:`За часом`,schedule:`Запланувати`,scheduledFor:`Сушіння заплановано на {{time}}`,scheduledAsap:`Сушіння заплановано (очікування принтера)`,cancelScheduled:`Скасувати заплановане сушіння`,scheduleFailed:`Не вдалося запланувати сушіння`,retractFilament:`Витягніть філамент із виходу AMS, щоб почати сушіння`,waitingAmsNotFound:`Очікування виявлення AMS`,waitingOffline:`Очікування підключення принтера`,waitingPrinterBusy:`Очікування звільнення принтера`,waitingAlreadyDrying:`Очікування завершення поточного циклу сушіння`,waitingInterrupted:`Перервано, відновиться, коли принтер звільниться`,scheduleFailedReason:`Не вдалося виконати заплановане сушіння: {{reason}}`,scheduleFailedUnknown:`Невідома помилка`,dismissFailed:`Сховати`},amsBackup:{titleOn:`Резервне перемикання філаменту AMS увімкнено. Натисніть, щоб вимкнути.`,titleOff:`Резервне перемикання філаменту AMS вимкнено. Натисніть, щоб увімкнути.`,titleUnknown:`Стан резервної котушки AMS недоступний на цьому принтері.`,toastEnabled:`Резервну котушку AMS ввімкнено`,toastDisabled:`Резервну котушку AMS вимкнено`,modalTitle:`Резервне перемикання філаменту AMS`,modalHelp:`Коли філамент в активному слоті закінчується, принтер по черзі перемикається на слоти з таким самим профілем і кольором у вказаному порядку.`,modalNoSlots:`Філамент не завантажено.`,modalNoPairs:`Немає резервних пар — немає двох слотів з однаковим профілем і кольором філаменту.`,extruderRightShort:`Р`,extruderLeftShort:`Л`,stateOn:`Увімкнено`,stateOff:`Вимкнено`,stateUnknown:`Не підтримується на цьому принтері`},activeJobSlot:{title:`Цей слот відповідає філаменту {{n}} в поточному завданні друку`,ariaLabel:`Слот {{n}} поточного завдання друку`},expectedSlot:{title:`Принтер очікує філамент у цьому слоті`,ariaLabel:`Очікуваний слот для філаменту {{n}}`,label:`{{ams}} · Слот {{slot}}`,external:`Зовнішня котушка`},filaments:`Філаменти`,externalSpool:{hide:`Сховати зовнішню котушку`,show:`Показати зовнішню котушку`},openCameraOverlay:`Відкрити накладання камери`,openCameraWindow:`Відкрити камеру в новому вікні`,firmwareUpdateAvailable:`Доступне оновлення прошивки: {{current}} → {{latest}}`,firmwareUpToDate:`Прошивка {{version}} актуальна`,firmwareUpdateButton:`Оновити`,plateDetection:{noPermission:`Ви не маєте дозволу на оновлення принтерів`,enabledClick:`Перевірку друкарської пластини ввімкнено — натисніть, щоб вимкнути`,disabledClick:`Перевірку друкарської пластини вимкнено — натисніть, щоб увімкнути`,manageCalibration:`Керувати калібруванням перевірки пластини`,calibrationRequired:`Потрібне калібрування`,calibrationInstructions:`Переконайтеся, що робоча пластина повністю порожня, а потім натисніть «Калібрувати».`,calibrationDescription:`Під час калібрування створюється еталонне зображення порожньої пластини. Наступні перевірки порівнюватимуть з ним зображення, щоб виявляти об’єкти.`,calibrationTip:`Порада: Ви можете зберегти до 5 калібрувань для різних пластин. Під час перевірки система автоматично використовує найкращий збіг.`,plateEmpty:`Друкарська пластина виглядає порожньою`,objectsDetected:`На пластині виявлено об’єкти`,confidence:`Впевненість`,difference:`Різниця`,analysisPreview:`Попередній перегляд аналізу:`,analysisLegend:`Зелена рамка = зона виявлення, червона накладка = відмінності від калібрування`,savedReferences:`Збережені еталонні зображення ({{count}}/{{max}})`,deleteReference:`Видалити еталонне зображення`,labelPlaceholder:`Мітка...`,clickToEdit:`{{label}} - Натисніть, щоб редагувати`,clickToAddLabel:`Натисніть, щоб додати мітку`},speed:{title:`Швидкість друку`,silent:`Тихий (50%)`,standard:`Стандарт (100%)`,sport:`Sport (124%)`,ludicrous:`Ludicrous (166%)`},airduct:{title:`Режим повітропроводу`,cooling:`Охолодження`,heating:`Опалення`},noSdCard:`Немає SD-картки`,door:{open:`Відчинено`,closed:`Закрито`},fans:{partCooling:`Вентилятор охолодження моделі`,auxiliary:`Допоміжний вентилятор`,leftAuxiliary:`Лівий допоміжний вентилятор`,exhaust:`Витяжка`,chamber:`Камерний вентилятор`},clickToViewHmsErrors:`Натисніть, щоб переглянути помилки HMS`,aiDetection:{safe:`Безпечно`,warning:`Попередження`,failure:`Помилка`,idle:`Очікування`,error:`Не перевіряє`,unknown:`Запуск`,tooltipError:`Виявлення помилок за допомогою ШІ не перевіряє цей друк: {{reason}} — натисніть, щоб переглянути деталі`,tooltipUnknown:`Виявлення помилок за допомогою ШІ: очікування першого результату — натисніть, щоб переглянути деталі`,errorHint:`Цей друк не перевіряється. Виявлення відновиться автоматично після усунення проблеми, наведеної нижче.`,tooltip:`Виявлення помилок за допомогою ШІ: {{status}} (оцінка {{score}}) — натисніть, щоб переглянути деталі`,tooltipIdle:`Виявлення помилок за допомогою ШІ ввімкнено — моніторинг почнеться з наступним друком — натисніть, щоб переглянути деталі`,modalTitle:`Виявлення помилок за допомогою ШІ — {{name}}`,currentStatus:`Стан`,score:`Оцінка`,framesAnalyzed:`Проаналізовано кадрів`,idleHint:`Зараз жоден друк не відстежується. Моніторинг автоматично почнеться з наступним друком.`,lastError:`Остання помилка`,openSettings:`Відкрити налаштування`},estimatedCompletion:`Орієнтовний час виконання`,plateNumber:`Пластина {{number}}`,slotOptions:`Опції слота`,amsPopup:{friendlyName:`Назва AMS`,friendlyNamePlaceholder:`наприклад, Основна AMS`,serialNumber:`Серійний номер`,firmwareVersion:`Прошивка`,save:`Зберегти`,clear:`Очистити`,noEditPermission:`Ви не маєте дозволу на перейменування одиниць AMS.`},firmwareModal:{title:`Оновлення прошивки`,titleUpToDate:`Інформація про прошивку`,currentVersion:`Поточна:`,latestVersion:`Найновіша:`,releaseNotes:`Примітки до випуску`,checkingPrereqs:`Перевірка передумов...`,sdCardReady:`SD-картка готова. Натисніть нижче, щоб вивантажити на неї прошивку.`,uploadedSuccess:`Прошивку вивантажено на картку SD!`,applyInstructions:`Щоб застосувати оновлення до свого принтера:`,step1:`На сенсорному екрані принтера перейдіть до Налаштування`,step2:`Перейдіть до розділу Прошивка`,step3:`Виберіть Оновити з SD-картки`,step4:`Оновлення займе 10-20 хвилин`,done:`Готово`,starting:`Запуск…`,uploadFirmware:`Вивантажити прошивку`,uploadFailed:`Не вдалося почати вивантаження: {{error}}`,uploadedToast:`Прошивку вивантажено! Запустіть оновлення з екрана принтера.`,availableVersions:`Доступні версії`,usable:`Можна використовувати`,unavailable:`Недоступна`,installed:`Установлена`,newerBadge:`новіший`,olderBadge:`старіша`,currentBadge:`поточна`},accessCodePlaceholder:`Залиште порожнім, щоб не змінювати`,roi:{title:`Область виявлення (ROI)`,xStart:`Початок X`,yStart:`Початок Y`,width:`Ширина`,height:`Висота`,instruction:`Відрегулюйте область виявлення, щоб сфокусуватися на робочій пластині. Зелене поле в попередньому перегляді показує поточну область.`},developerModeWarning:`Режим розробника LAN не ввімкнено на: {{names}}. Деякі функції можуть не працювати.`,howToEnable:`Як увімкнути`,incompatibleFile:`Цей файл нарізано для {{slicedFor}}, а модель цього принтера — {{printerModel}}`,dropNotPrintable:`Можна роздрукувати лише файли .gcode і .gcode.3mf.`,dropToPrint:`Відпустіть для друку`,dropToQueue:`Відпустіть, щоб додати в чергу`},archives:{media:{title:`Відео друку`,download:`Завантажити відео друку`,searching:`Пошук відео на принтері…`,searchFailed:`Не вдалося перевірити відео на принтері.`,none:`Для цього друку не знайдено таймлапсів або фрагментів IP-камери.`,attachedTimelapse:`Прикріплений таймлапс`,printerFiles:`Файли, що залишилися на принтері`,downloadSelected:`Завантажити вибране`,printerMissing:`Принтер більше не налаштовано`,timelapseUnavailable:`Не вдалося прочитати каталог таймлапсів`,ipcamUnavailable:`Не вдалося прочитати каталог IP-камери`},title:`Архіви друку`,no3mfBanner:{title:`Деякі нещодавні роздруківки не вдалося заархівувати з мініатюрами`,body:`Слайсер не залишив файл .gcode.3mf на SD-картці принтера, тому Bambuddy не зміг отримати мініатюру або метадані слайсера. Зазвичай це стається, коли в слайсері вимкнено параметр «Зберігати надіслані файли на зовнішньому накопичувачі» (вкладка «Пристрій» у Bambu Studio або OrcaSlicer).`,docsLink:`Переглянути крок 4 встановлення`,docsLinkInternalStorage:`Чому так стається`,titleInternalStorage:`Деякі нещодавні друки залишилися у внутрішній пам'яті принтера`,bodyInternalStorage:`Bambu Studio зберіг нарізаний файл у внутрішній пам'яті принтера, а не на картці, тож Bambuddy не мав чого читати через FTP. На серії H2 та P2S кнопка «Друк» завжди робить саме так: вибір є лише в «Надіслати», і там за замовчуванням теж «Кеш». Ці друки й далі архівуються з назвою та часом, лише без мініатюри та метаданих слайсера. Щоб архіви були повними, запускайте друк із Bambuddy або нарізайте в OrcaSlicer, або в Bambu Studio скористайтеся «Надіслати» із «Зовнішнім носієм», а друк запускайте потім. Усі варіанти потребують картки або флешки в принтері.`,titleNoExternalStorage:`Деякі нещодавні друки не вдалося заархівувати — у принтері немає носія`,bodyNoExternalStorage:`Принтер не бачить ані картки, ані флешки у слоті, тож нарізаному файлу не було куди потрапити, а Bambuddy — що читати. Вставте носій, і наступний друк заархівується повністю.`,titleInternalHistory:`Деякі нещодавні друки запущено з файлу, який уже був на принтері`,bodyInternalHistory:`Ці друки йшли з власної бібліотеки принтера — повторний друк з його екрана, запуск із Handy або файл, надісланий раніше й надрукований пізніше. Bambuddy читає файли друку через FTP, а той віддає лише картку чи флешку, тоді як принтер тримає цю бібліотеку в області, куди FTP не дістає, — читати 3MF не було де. Налаштування слайсера тут нічого не змінюють: для цих друків нічого не надсилалося. Вони й далі архівуються з назвою та часом, а в «Редагувати архів» витрачений філамент можна вписати вручну. Щоб архів був повним, запускайте друк із Bambuddy або зі свого слайсера.`,dismissLabel:`Відхилити це повідомлення`},searchPlaceholder:`Пошук в архівах...`,filterByPrinter:`Фільтрувати за принтером`,filterByStatus:`Фільтрувати за статусом`,sortBy:`Сортувати за`,sortNewest:`Спочатку найновіші`,sortOldest:`Спочатку найстаріші`,sortName:`Назва`,sortDuration:`Тривалість`,sortLargest:`Спочатку найбільші`,sortSmallest:`Спочатку найменші`,sortSize:`Розмір`,noArchives:`Архіви не знайдено`,noArchivesSearch:`Жоден архів не відповідає вашому пошуку`,originalPrintNotVisible:`Оригінальний друк не відображається — спробуйте очистити фільтри`,noArchivesYet:`Архівів ще немає`,prints:`друків`,pagination:{showing:`Показано`,to:`до`,of:`з`,show:`Показати`,page:`Сторінка`,all:`Усі`},loadingArchives:`Завантаження архівів...`,releaseToUpload:`Відпустіть, щоб вивантажити`,showAll:`Показати все`,showFavoritesOnly:`Показати лише вибране`,gridView:`Вигляд сітки`,listView:`Перегляд списку`,calendarView:`Перегляд календаря`,logView:`Журнал друку`,manageTags:`Керування тегами`,showFailedPrints:`Показати невдалі друки`,hideFailedPrints:`Приховати невдалі друки`,hideDuplicates:`Приховати дублікати`,viewOriginalPrint:`Клацніть, щоб переглянути оригінальний друк (#{{id}})`,printTime:`Час друку`,filamentUsed:`Використано філаменту`,cost:`Вартість`,preview:`Попередній перегляд`,deleteArchive:`Видалити архів`,deleteConfirm:`Ви впевнені, що хочете видалити цей архів?`,favorite:`В обраному`,unfavorite:`Видалити з вибраного`,viewDetails:`Переглянути деталі`,status:{completed:`Завершено`,failed:`Невдало`,stopped:`Зупинено`},toast:{source3mfAttached:`Вихідний файл 3MF долучено: {{filename}}`,failedUploadSource3mf:`Не вдалося вивантажити вихідний файл 3MF`,source3mfRemoved:`Вихідний файл 3MF видалено`,failedRemoveSource3mf:`Не вдалося видалити вихідний файл 3MF`,f3dAttached:`F3D долучено: {{filename}}`,failedUploadF3d:`Не вдалося вивантажити F3D`,f3dRemoved:`F3D видалено`,failedRemoveF3d:`Не вдалося видалити F3D`,timelapseAttached:`Додано покадрову зйомку: {{filename}}`,timelapseAlreadyAttached:`Таймлапс уже долучено`,noMatchingTimelapse:`Відповідного таймлапсу не знайдено`,failedScanTimelapse:`Не вдалося відсканувати покадрову зйомку`,failedAttachTimelapse:`Не вдалося долучити таймлапс`,timelapseRemoved:`Таймлапс видалено`,failedRemoveTimelapse:`Не вдалося видалити таймлапс`,timelapseUploaded:`Таймлапс вивантажено: {{filename}}`,failedUploadTimelapse:`Не вдалося вивантажити таймлапс`,archiveDeleted:`Архів видалено`,failedDeleteArchive:`Не вдалося видалити архів`,addedToFavorites:`Додано до обраних`,removedFromFavorites:`Видалено з вибраного`,projectUpdated:`Проєкт оновлений`,failedUpdateProject:`Не вдалося оновити проєкт`,linkCopied:`Посилання скопійовано в буфер обміну`,failedCopyLink:`Не вдалося скопіювати посилання`,photoDeleted:`Фото видалено`,failedDeletePhoto:`Не вдалося видалити фото`,failedDeleteArchives:`Не вдалося видалити архіви`,failedUpdateFavorites:`Не вдалося оновити вибране`,exportDownloaded:`Експорт завантажено`,exportFailed:`Помилка експорту`},menu:{print:`Друкувати`,openInBambuStudio:`Відкрити у слайсері`,slice:`Нарізати`,externalLink:`Зовнішнє посилання`,viewOnMakerWorld:`Переглянути на MakerWorld`,preview3d:`3D попередній перегляд`,viewTimelapse:`Переглянути таймлапс`,scanForTimelapse:`Знайти таймлапс`,uploadTimelapse:`Вивантажити таймлапс`,removeTimelapse:`Видалити таймлапс`,downloadSource3mf:`Завантажити вихідний файл 3MF`,uploadSource3mf:`Вивантажити вихідний файл 3MF`,replaceSource3mf:`Замінити вихідний файл 3MF`,removeSource3mf:`Видалити вихідний файл 3MF`,uploadF3d:`Вивантажити F3D`,replaceF3d:`Замінити F3D`,downloadF3d:`Завантажити F3D`,removeF3d:`Видалити F3D`,download:`Завантажити`,copyDownloadLink:`Копіювати посилання для завантаження`,qrCode:`QR-код`,viewPhotos:`Переглянути фото`,viewPhotosCount:`Переглянути фото ({{count}})`,projectPage:`Сторінка проєкту`,addToFavorites:`Додати в обране`,removeFromFavorites:`Видалити з вибраного`,edit:`Редагувати`,printLog:`Журнал друку`,goToProject:`Перейти до проєкту: {{name}}`,addToProject:`Додати до проєкту`,removeFromProject:`Видалити з проєкту`,loading:`Завантаження...`,noProjectsAvailable:`Немає доступних проєктів`,searchProjects:`Пошук проєктів…`,select:`Вибрати`,deselect:`Зняти вибір`,delete:`Видалити`},permission:{noReprint:`Ви не маєте дозволу на повторний друк цього архіву`,noAddToQueue:`Ви не маєте дозволу на додавання в чергу`,noUpdateArchives:`Ви не маєте дозволу на оновлення архівів`,noUploadFiles:`Ви не маєте дозволу на вивантаження файлів`,noDownload:`У вас немає дозволу на завантаження архівів`,noCopyLink:`Ви не маєте дозволу копіювати посилання для завантаження`,noDelete:`Ви не маєте дозволу на видалення цього архіву`,noEdit:`Ви не маєте дозволу редагувати цей запис`,noCreate:`Ви не маєте дозволу на створення архівів`},platePicker:{title:`Вибрати пластину для попереднього перегляду`,hint:`Цей архів містить кілька пластин. Виберіть одну, щоб відкрити її в переглядачі G-коду.`,plateLabel:`Пластина {{index}}`,objectCount:`Об’єктів: {{count}}`,objectCount_plural:`Об’єктів: {{count}}`,noGcode:`Цей архів не містить нарізаного G-коду для перегляду. Спочатку відкрийте його в Bambu Studio та виконайте нарізання.`},card:{previousPlate:`Попередня друкарська пластина`,nextPlate:`Наступна пластина`,plateNumber:`Пластина {{index}}`,moreOptions:`Клацніть правою кнопкою миші, щоб отримати додаткові параметри`,addToFavorites:`Додати в обране`,removeFromFavorites:`Видалити з вибраного`,cancelled:`скасовано`,failed:`не вдалося`,duplicate:`дублікат`,duplicateTitle:`Ця модель була надрукована раніше`,openSource3mf:`Відкрити вихідний файл 3MF у Bambu Studio (клацніть правою кнопкою, щоб переглянути додаткові дії)`,downloadF3d:`Завантажити файл дизайну Fusion 360`,viewTimelapse:`Переглянути сповільнену зйомку`,viewPhoto:`Переглянути 1 фото`,viewPhotos:`Переглянути фото: {{count}}`,openFolder:`Відкрити папку: {{name}}`,slicedFile:`Нарізаний файл - готовий до друку`,sourceFile:`Лише вихідний файл – зіставлення AMS недоступне`,gcode:`G-КОД`,source:`ДЖЕРЕЛО`,project:`Проєкт: {{name}}`,runsBadge:`Друків: {{count}}`,runsBadgeTitle:`Усього друків: {{count}} — успішних: {{successful}}, невдалих: {{failed}}. Натисніть, щоб переглянути повний журнал друку.`,estimated:`Приблизно: {{time}}`,actual:`Фактично: {{time}}`,accuracy:`Точність: {{percent}}%`,filament:`{{weight}} г`,layer:`{{count}} шар`,layers:`Шарів: {{count}}`,object:`{{count}} об’єкт`,objects:`Об’єктів: {{count}}`,slicedFor:`Нарізаний для {{model}}`,uploadedBy:`Вивантажив`,noPermissionReprint:`Ви не маєте дозволу на передрук`,noFileForReprint:`Файл 3MF недоступний: його не вдалося завантажити з принтера під час збереження запису про друк`,slicerAmsMapping:`Зіставлення AMS збережено ({{printer}})`,slicerAmsMappingTooltip:`Вибір слотів AMS, зроблений слайсером, збережено для принтера {{printer}}. Номери слотів мають сенс лише на ньому, тож повторний друк використає їх, тільки якщо знову спрямований на {{printer}}.`,noPermissionEdit:`Ви не маєте прав на редагування архівів`,noPermissionDelete:`Ви не маєте дозволу на видалення архівів`,openInBambuStudio:`Відкрити у слайсері`,openInBambuStudioToSlice:`Відкрити у слайсері для нарізання`,slice:`Нарізати`,externalLink:`Зовнішнє посилання`,makerWorld:`MakerWorld: {{designer}}`,viewProject:`Переглянути проєкт`,noExternalLink:`Немає зовнішнього посилання`,preview3d:`3D попередній перегляд`,download:`Завантажити`,edit:`Редагувати`,delete:`Видалити`},runLog:{title:`Журнал друку`,modalTitle:`Журнал друку — {{name}}`,modalTitleFallback:`цей архів`,empty:`Для цього архіву ще не зареєстровано жодної події друку.`,col:{date:`Дата`,status:`Статус`,duration:`Тривалість`,filament:`Філамент`,cost:`Вартість`},status:{completed:`Виконано`,failed:`Не вдалося`,cancelled:`Скасовано`,stopped:`Зупинено`,skipped:`Пропущено`,printing:`Друк`}},modal:{deleteArchive:`Видалити архів`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"? Цю дію не можна скасувати.`,deleteButton:`Видалити`,deletePurgeStats:`Також видалити цей друк із швидкої статистики (філамент, час, вартість, енергія)`,deleteQueueItemsWarning:`Елементи черги {{count}}, пов’язані з цим архівом, також буде видалено.`,deleteBlockedByPrinting:`Неможливо видалити — наразі друкуються елементи черги {{count}}. Спочатку зупиніть друк, а потім повторіть спробу.`,removeSource3mf:`Видалити джерело 3MF`,removeSource3mfConfirm:`Ви впевнені, що хочете видалити вихідний файл 3MF з "{{name}}"? Це призведе до видалення вихідного файлу проєкту слайсера.`,removeButton:`Видалити`,removeF3d:`Видалити F3D`,removeF3dConfirm:`Ви впевнені, що хочете видалити файл дизайну Fusion 360 із "{{name}}"?`,removeTimelapse:`Видалити Timelapse`,removeTimelapseConfirm:`Ви впевнені, що хочете видалити покадрове відео з "{{name}}"?`,timelapse:`{{name}} — таймлапс`,selectTimelapse:`Вибрати таймлапс`,selectTimelapseDesc:`Автоматичний збіг не знайдено. Виберіть покадрову зйомку для цього друку:`,deleteArchives:`Видалити архіви`,deleteArchivesConfirm:`Видалити вибрані архіви ({{count}})? Цю дію неможливо скасувати.`,deleteCount:`Видалити {{count}}`},page:{title:`Архіви`,printsCount:`Показано друків: {{filtered}} із {{total}}`,dropFilesHere:`Перетягніть файли .3mf сюди`,releaseToUpload:`Відпустіть, щоб вивантажити`,only3mfSupported:`Підтримуються лише файли .3mf.`,close:`Закрити`,selected:`Вибрано {{count}}.`,selectAll:`Вибрати усі`,tags:`Теги`,project:`Проєкт`,favorite:`В обраному`,delete:`Видалити`,toggledFavorites:`Оновлено вибране для архівів: {{count}}`,failedUpdateFavorites:`Не вдалося оновити вибране`,archivesDeleted:`Видалено архівів: {{count}}`,failedDeleteArchives:`Не вдалося видалити архіви`,photoDeleted:`Фото видалено`,failedDeletePhoto:`Не вдалося видалити фото`},list:{name:`Назва`,printer:`Принтер`,date:`Дата`,size:`Розмір`,actions:`Дії`,hasTimelapse:`Має таймлапс`},log:{date:`Дата`,printName:`Назва друку`,printer:`Принтер`,user:`Користувач`,status:`Статус`,duration:`Тривалість`,filament:`Філамент`,filamentUsed:`Витрачено філаменту`,cost:`Вартість`,energy:`Енергія`,energyCost:`Вартість енергії`,completedAt:`Завершено`,columns:`Стовпці`,sortBy:`Сортувати за: {{column}}`,allPrinters:`Усі принтери`,allUsers:`Усі користувачі`,allStatuses:`Усі статуси`,cancelled:`Скасовано`,skipped:`Пропущено`,dateFrom:`Від`,dateTo:`До`,noEntries:`Записів журналу друку не знайдено`,showing:`Показано {{count}} з {{total}} записів`,rowsPerPage:`Рядків`,page:`Сторінка`,prev:`Назад`,next:`Далі`,clearLog:`Очистити журнал`,clearLogTitle:`Очистити журнал друку`,clearLogConfirm:`Усі записи журналу друку буде остаточно видалено. Архіви та елементи черги залишаться без змін. Цю дію неможливо скасувати. Продовжити?`,clearLogButton:`Очистити все`,cleared:`Очищено записів журналу: {{count}}`,clearFailed:`Не вдалося очистити журнал друку`,deleteEntryTitle:`Видалити запис журналу друку`,deleteEntryConfirm:`Запис буде видалено з журналу, а пов’язані з ним філамент, час і вартість більше не враховуватимуться у швидкій статистиці. Відповідний архів, якщо він є, залишиться без змін. Цю дію неможливо скасувати.`,entryDeleted:`Запис журналу друку видалено`,entryDeleteFailed:`Не вдалося видалити запис журналу друку`,editEntryTitle:`Редагувати запис журналу друку`,editEntryDescription:`Класифікуйте цей запуск друку. Віджет «Аналіз невдач» групує дані за цими значеннями, тому зміни одразу відобразяться у статистиці.`,entryUpdated:`Запис журналу друку оновлено`,entryUpdateFailed:`Не вдалося оновити запис журналу друку`,statuses:{completed:`Виконано`,failed:`Не вдалося`,stopped:`Зупинено`,cancelled:`Скасовано`,skipped:`Пропущено`}}},dispatchToast:{untitled:`Завдання друку`,startingPrints:`Початок друку`,progressSummary:`{{complete}}/{{total}} завершено • Обробка: {{processing}}`,expandDetails:`Розгорнути подробиці надсилання`,collapseDetails:`Згорнути відомості про відправлення`,awaitingPrinter:`Очікування принтера…`,status:{processing:`Обробка`,completed:`Виконано`,failed:`Не вдалося`},failed:{generic:`Не вдалося відправити`,upload_failed:`Не вдалося вивантажити файл на принтер`,start_command_failed:`Принтер відхилив команду запуску`},dismiss:`Відхилити`},pipelineRuns:{title:`Запуски конвеєрів`,loading:`Завантаження…`,empty:`Запусків конвеєрів ще немає.`,filter:{pipeline:`Конвеєр`,status:`Статус`,target:`Ціль`,all:`Усі`,allPipelines:`Усі конвеєри`,allStatus:`Усі статуси`,allTargets:`Усі цілі`,clear:`Очистити фільтри`,noMatches:`Жоден запуск не відповідає поточним фільтрам.`},totalCount_one:`{{n}} запуск`,totalCount_other:`Запусків: {{n}}`,copies:`Копій: {{n}}`,failedCount:`Невдалих: {{n}}`,copyN:`Копія {{n}}`,retryFailed:`Повторити невдалі`,retryOf:`повтор запуску №{{n}}`,pagination:`{{start}}–{{end}} з {{total}}`,cancelledByUser:`Скасовано користувачем`,toast:{cancelled:`Запуск скасовано`,cancelFailed:`Не вдалося скасувати`,retryStarted:`Розпочато повторну спробу`,retryFailed:`Не вдалося розпочати повторну спробу`,cleared:`Видалено запусків: {{n}}`,clearFailed:`Не вдалося очистити`},clearLog:`Очистити журнал`,clearConfirmTitle:`Очистити журнал?`,clearConfirmBody:`Видалити всі завершені, невдалі, скасовані та частково невдалі запуски конвеєрів? Активні запуски буде збережено. Цю дію неможливо скасувати.`,clearConfirmAction:`Очистити`,jobStatus:{pending:`в очікуванні`,awaiting_printer:`в очікуванні принтера`,queued:`в черзі`,printing:`друк`,completed:`завершено`,failed:`не вдалося`,cancelled:`скасовано`}},queue:{title:`Черга друку`,subtitle:`Плануйте завдання друку та керуйте ними`,filamentShort:{rowBadge:`Недостатньо філаменту для призначеної котушки`,rowTooltip:`Планувальник відправлення позначив цей елемент. Натисніть «Запустити», щоб переглянути нестачу для кожного слота й вирішити, чи друкувати попри неї.`,confirmTitle:`Недостатня кількість філаменту`,confirmIntro:`На призначеній котушці недостатньо філаменту принаймні для одного слота. Усе одно друкувати?`,lineItem:`Слот {{slot}}: потрібно {{required}} г, {{remaining}} г залишилося`,unknown:`невідомо`,printAnyway:`Усе одно друкувати`},slicerAmsMapping:{rowBadge:`Слоти AMS збережено для цього принтера`,rowTooltip:`Цей запис містить точні слоти AMS, вибрані слайсером, збережені для принтера, на який націлено це завдання. Повторний друк на ньому може використати ті самі котушки замість повторного добору за типом і кольором.`},editQueueItem:`Редагувати елемент черги`,selectAllPlates:`Вибрати всі пластини ({{count}})`,deselectAll:`Зняти вибір із усіх`,printQueued:`Друк у черзі`,printQueuedWillStartWhenIdle:`Розпочнеться, коли принтер звільниться`,itemsQueued:`Додано до черги: {{count}}`,sending:`Надсилання...`,sendingProgress:`Надсилання {{current}}/{{total}}...`,adding:`Додавання...`,addingProgress:`Додавання {{current}}/{{total}}...`,savingProgress:`Збереження {{current}}/{{total}}...`,clearQueue:`Очистити чергу`,clearHistory:`Очистити історію`,emptyQueue:`Черга порожня`,position:`Позиція`,scheduledTime:`Запланований час`,moveUp:`Перемістити вгору`,moveDown:`Перемістити вниз`,startNow:`Почати зараз`,printingInProgress:`Виконується друк...`,viewArchive:`Переглянути архів`,viewInFileManager:`Переглянути в менеджері файлів`,itemCount:`Елементів: {{count}}`,itemCount_plural:`Елементів: {{count}}`,dragToReorder:`Перетягніть, щоб змінити порядок (лише для завдань «Якнайшвидше»)`,reorderHint:`Позиція впливає лише на завдання «Якнайшвидше». Заплановані завдання запускаються у встановлений час.`,sjf:{label:`SJF`,tooltip:`SJF (спочатку найкоротше завдання) — планувальник надає пріоритет коротшим завданням друку`},addedBy:`Додав {{name}}`,nextInQueue:`Наступний у черзі`,clearPlateSuccess:`Пластина очищена — готова до наступного друку`,plateNumber:`Пластина {{index}}`,quantity:`Кількість`,quantityHint:`Буде створено елементів черги: {{count}}`,plateQuantityLabel:`Повтори: {{plate}}`,plateQuantityTotal_one:`Усього запусків: {{count}}`,plateQuantityTotal_other:`Усього запусків: {{count}}`,batchOrders:{title:`Пакетні замовлення`,emptyTitle:`Пакетних замовлень немає`,emptyDescription:`Поставте в чергу файл із кількома столами або кілька копій одного стола — замовлення з’явиться тут разом із прогресом.`,filter:{active:`Активні`,completed:`Завершені`,cancelled:`Скасовані`,all:`Усі`},status:{active:`Активне`,completed:`Завершене`,cancelled:`Скасоване`},noTargets:`Лише групування`,noTargetsHint:`Створено до появи цільових кількостей на стіл, тож відстежує поставлені в чергу запуски, а не ціль.`,dispatchRemaining:`Поставити в чергу: {{count}}`,dispatchPlate:`Поставити решту`,strandedPlate:`Немає запуску для копіювання налаштувань`,strandedNotice:`Не вдається поставити в чергу {{runs}} із {{owed}} ще не виконаних запусків: для цієї пластини не залишилося запуску в черзі чи завершеного, з якого можна скопіювати налаштування. Поставте пластину в чергу один раз із файлу або скасуйте замовлення.`,dispatched:`Решту запусків для «{{name}}» поставлено в чергу`,plateProgress:`Готово {{completed}} з {{target}}`,remaining:`Залишилось: {{count}}`,failed:`Невдалих: {{count}}`,printing:`Друкується: {{count}}`,wholeFile:`Увесь файл`,due:`Термін: {{date}}`,costSoFar:`{{amount}} витрачено`,costRemaining:`(ще {{amount}})`},activeBatches:`Активні партії`,batchProgress:`{{completed}} з {{total}} завершено`,cancelBatch:`Скасувати решту`,batchCancelled:`Решту елементів партії скасовано`,cancelBatchConfirmTitle:`Скасувати партію`,cancelBatchConfirmMessage:`Закрити це замовлення? Запуски, що ще стоять у черзі, буде скасовано, і замовлення перестане вимагати те, чого не виготовило.`,batch:{defaultName:`Партія`,label:`Елементів: {{count}}`,label_plural:`Елементів: {{count}}`,pendingCount:`Очікують: {{count}}`,pendingCount_plural:`Очікують: {{count}}`,expand:`Розгорнути партію`,collapse:`Згорнути партію`,groupAsBatch:`Згрупувати в партію…`,groupAsBatchDescription:`Об’єднати вибрані елементи ({{count}}) в одну згортану партію.`,nameLabel:`Назва партії`,namePlaceholder:`напр. П’ятничні подарунки`,create:`Створити партію`,ungroup:`Розгрупувати`,ungroupConfirmTitle:`Розгрупувати партію?`,ungroupConfirmMessage:`Елементи залишатимуться в черзі, але більше не групуватимуться разом.`,dragGroup:`Перетягнути групу`},tabs:{batches:`Партії`,queue:`Черга`,history:`Історія`,timeline:`Хронологія`,pipelines:`Запуски конвеєрів`},layout:{flatList:`Список`,byPrinter:`За принтером`,groupByPrinter:`Групувати за принтером`},history:{emptyTitle:`Історії ще немає`,emptyDescription:`Тут відображатимуться завершені, скасовані та невдалі роздруківки.`,showMore:`Показати більше`,showingCount:`Показано {{shown}} з {{total}}`},dragGhost:{multiCount:`Елементів: {{count}}`,batch:`{{name}} (копія {{count}})`,batch_plural:`{{name}} ({{count}} копій)`},sections:{currentlyPrinting:`Наразі друкується`,queued:`У черзі`,history:`Історія`},status:{pending:`В очікуванні`,waiting:`Очікування`,printing:`Друк`,paused:`Призупинено`,completed:`Виконано`,failed:`Не вдалося`,skipped:`Пропущено`,cancelled:`Скасовано`},summary:{printing:`Друк`,queued:`У черзі`,totalTime:`Загальний час у черзі`,totalWeight:`Загальна вага черги`,history:`Історія`},filter:{allPrinters:`Усі принтери`,unassigned:`Не призначено`,allStatus:`Усі статуси`,allLocations:`Усі розташування`,any:`Будь-який`},sort:{byPosition:`Сортувати за позицією`,byName:`Сортувати за назвою`,byPrinter:`Сортувати за принтером`,bySchedule:`Сортувати за розкладом`,byDate:`Сортувати за датою`,ascendingOldest:`За зростанням (найстаріші спочатку)`,descendingNewest:`За спаданням (спочатку найновіші)`},badges:{staged:`Очікує ручного запуску`,requiresPrevious:`Потрібне успішне завершення попереднього завдання`,autoPowerOff:`Автоматичне вимкнення`,gcodeInjection:`G-код`},empty:{title:`Друк не заплановано`,description:`Заплануйте друк зі сторінки «Архіви» за допомогою параметра «Розклад» у контекстному меню або перетягніть файли, щоб почати.`},time:{etaIfStartedNow:`Час завершення, якщо запустити це завдання зараз`,asap:`Якнайшвидше`,overdue:`Прострочено`,now:`Зараз`,lessThanMinute:`Менше ніж за хвилину`,inMinutes:`Через {{count}} хв`,inHours:`Через {{count}} год`},actions:{startPrint:`Розпочати друк`,stopPrint:`Зупинити друк`,requeue:`Поставити в чергу знову`},bulkEdit:{title:`Редагувати {{count}} елемент`,title_plural:`Редагувати елементи ({{count}})`,description:`Лише змінені параметри будуть застосовані до вибраних елементів.`,printer:`Принтер`,noChange:`— Без змін —`,queueOptions:`Параметри черги`,staged:`Очікує ручного запуску`,autoPowerOff:`Автоматичне вимкнення після друку`,requirePrevious:`Вимагати успішного завершення попереднього завдання`,printOptions:`Параметри друку`,bedLevelling:`Вирівнювання столу`,flowCalibration:`Калібрування потоку`,vibrationCalibration:`Калібрування вібрації`,layerInspection:`Перевірка першого шару`,timelapse:`Таймлапс`,useAms:`Використовувати AMS`,nozzleOffsetCali:`Калібрування зсуву сопла`,applyChanges:`Застосувати зміни`,selectAll:`Вибрати усі`,deselectAll:`Зняти вибір із усіх`,selected:`Вибрано: {{count}}`,editSelected:`Редагувати вибране`,cancelSelected:`Скасувати вибране`},confirm:{cancelTitle:`Скасувати запланований друк`,cancelMessage:`Ви впевнені, що бажаєте скасувати "{{name}}"?`,stopTitle:`Зупинити друк`,stopMessage:`Ви впевнені, що бажаєте зупинити поточний друк "{{name}}"? Це призведе до скасування завдання друку на принтері.`,removeTitle:`Видалити з історії`,removeMessage:`Ви впевнені, що бажаєте видалити "{{name}}" з історії черги?`,clearHistoryTitle:`Очистити історію`,clearHistoryMessage:`Видалити всі елементи з історії ({{count}})?`,cancelButton:`Скасувати друк`,stopButton:`Зупинити друк`,thisPrint:`цей друк`,thisItem:`цей елемент`},toast:{cancelled:`Пункт черги скасовано`,cancelFailed:`Не вдалося скасувати елемент`,removed:`Елемент черги видалено`,keptForOrder:`Скасовано, а не видалено: лише з цього запуску замовлення може знову поставити цю пластину в чергу`,historyKeptForOrders:`Збережено {{kept}}, які ще потрібні замовленням.`,removeFailed:`Не вдалося видалити елемент`,stopped:`Друк зупинено`,stopFailed:`Не вдалося зупинити друк`,released:`Друк відправлено в чергу`,startFailed:`Не вдалося почати друк`,reorderFailed:`Не вдалося змінити порядок черги`,historyCleared:`Очищено елементів історії: {{count}}`,clearHistoryFailed:`Не вдалося очистити історію`,updateFailed:`Не вдалося оновити елементи`,bulkCancelled:`Скасовано елементів: {{count}}`,bulkCancelFailed:`Не вдалося скасувати елементи`,batchCreated:`Партію «{{name}}» створено`,batchCreateFailed:`Не вдалося створити партію`,batchUngrouped:`Розгруповано елементів: {{count}}`,batchUngroupFailed:`Не вдалося розгрупувати партію`,resumedAfterFailure:`Відновлено чергу — {{restored}} завдання відновлено до стану очікування`,resumeAfterFailureFailed:`Не вдалося відновити чергу`},resumeAfterFailure:{banner:`{{printer}} заблоковано через помилку попереднього друку — завдання {{count}} пропущено`,bannerHint:`Усуньте проблему з принтером, а потім відновіть чергу, щоб повернути пропущені завдання й зняти блокування.`,button:`Відновити після невдачі`,confirmTitle:`Відновити чергу після помилки?`,confirmMessage:`Повернути пропущені завдання ({{count}}) для {{printer}} до стану очікування та зняти блокування після невдалого попереднього друку? Переконайтеся, що принтер готовий.`},timeline:{listView:`Список`,timelineView:`Хронологія`,unassigned:`Не призначено`,noData:`На цей день немає запланованих роздруківок`,nothingCommitted:`У цьому часовому проміжку немає підтверджених розкладів. Завдання з ручним запуском, завдання в очікуванні та завдання «Якнайшвидше» для вільних принтерів тут не показано. Установіть запланований час або запустіть відкладене завдання.`,allDoneBy:`Орієнтовне завершення всіх друків: {{time}}`,staged:`Очікує ручного запуску`,filterAll:`Показати все`,filterPrinting:`Друк`,filterQueued:`У черзі`,time:{anyMoment:`будь-якої миті`,minutesLeft:`Залишилося {{minutes}} хв`,hoursLeft:`Залишилося {{hours}} год`,hoursMinutesLeft:`Залишилося {{hours}} год {{minutes}} хв`},day:{previous:`Попередній день`,next:`Наступний день`,today:`Сьогодні`},window:{back12h:`Назад 12 годин`,forward12h:`Уперед на 12 годин`,now:`Зараз`},printerColumnHeader:`Принтер`},permissions:{noStopPrint:`Ви не маєте дозволу зупиняти друк`,noStartPrint:`Ви не маєте дозволу розпочинати друк`,noEdit:`Ви не маєте дозволу редагувати цей елемент черги`,noCancel:`Ви не маєте дозволу скасувати цей елемент черги`,noRequeue:`Ви не маєте дозволу повторно ставити елементи в чергу`,noRemove:`Ви не маєте дозволу на видалення цього елемента черги`,noClearHistory:`Ви не маєте дозволу очистити всю історію`,noEditItems:`Ви не маєте дозволу редагувати елементи черги`,noCancelItems:`Ви не маєте дозволу на скасування елементів черги`}},stats:{title:`Статистика`,subtitle:`Перетягніть віджети, щоб змінити порядок. Натисніть значок ока, щоб приховати.`,overview:`Огляд`,totalPrints:`Загальна кількість друків`,successRate:`Коефіцієнт успішності`,totalPrintTime:`Загальний час друку`,printTime:`Час друку`,totalFilament:`Загальна кількість використаного філаменту`,filamentUsed:`Використано філаменту`,filamentCost:`Вартість філаменту`,totalCost:`Загальна вартість`,energyUsed:`Використана енергія`,energyCost:`Вартість енергії`,energyWarmingUpTooltip:`Відстеження енергії все ще збирає щогодинні знімки. Підсумкові показники за діапазон дат стануть точними, коли існує принаймні один знімок до вибраного діапазону. Ранні значення можуть бути заниженими.`,averagePrintTime:`Середній час друку`,printsPerDay:`Друків на день`,byPrinter:`За принтером`,printsByPrinter:`Друки за принтерами`,byMaterial:`За матеріалом`,byMonth:`За місяцями`,last7Days:`Останні 7 днів`,last30Days:`Останні 30 днів`,last90Days:`Останні 90 днів`,allTime:`За весь час`,quickStats:`Швидка статистика`,printActivity:`Активність друку`,filamentTypes:`Типи філаментів`,filamentTrends:`Тенденції філаменту`,failureAnalysis:`Аналіз невдач`,timeAccuracy:`Точність оцінки часу`,successful:`Успішно:`,failed:`Невдало:`,cancelled:`Скасовано:`,perfectEstimate:`100% = ідеальна оцінка`,noTimeAccuracyData:`Даних про точність часу ще немає`,noFilamentData:`Немає даних про філамент`,noPrinterData:`Дані принтера відсутні`,noPrintData:`Немає даних про друк`,noPrintDataLast30Days:`Немає даних про друк за останні 30 днів`,failureReasons:`Причини невдач`,topFailureReasons:`Основні причини невдач`,failedPrintsCount:`Невдалих друків: {{failed}} із {{total}}`,lastWeekRate:`Минулого тижня: {{rate}}%`,resetLayout:`Скинути макет`,recalculateCosts:`Перерахувати витрати`,recalculateCostsHint:`Перерахувати вартість усіх архівних друків за поточними цінами на філамент`,exportStats:`Експортувати статистику`,exportAsCsv:`Експортувати як CSV`,exportAsExcel:`Експортувати як Excel`,hiddenCount:`Приховано: {{count}}`,exportDownloaded:`Експорт завантажено`,exportFailed:`Помилка експорту`,layoutReset:`Розташування віджетів скинуто`,recalculatedCosts:`Перераховано вартість архівів: {{count}}`,recalculateFailed:`Не вдалося перерахувати витрати`,loadingStats:`Завантаження статистики...`,noPermissionResetLayout:`Ви не маєте дозволу на скидання макета`,noPermissionRecalculate:`Ви не маєте дозволу на перерахунок витрат`,noPrintDataInRange:`У вибраному діапазоні немає даних про друк`,periodFilament:`Філамент за період`,periodCost:`Вартість періоду`,avgPerPrint:`Середнє на друк`,usageOverTime:`Використання в часі`,energyOverTime:`Споживання енергії в часі`,filamentByWeight:`Вага`,printDuration:`Тривалість друку`,printerUtilization:`Використання принтера`,filamentSuccess:`Успіх за матеріалом`,printHabits:`Звички друку`,printTimeOfDay:`Розподіл друків за часом доби`,colorDistribution:`Розподіл кольору`,noColorData:`Немає даних про колір`,records:`Записи`,longestPrint:`Найтриваліший друк`,heaviestPrint:`Найважчий друк`,mostExpensivePrint:`Найдорожчий`,busiestDay:`Найзавантаженіший день`,successStreak:`Серія успішних друків`,streakPrint:`успішний друк поспіль`,streakPrints:`Успішних друків поспіль: {{count}}`,printerStats:`Статистика принтера`,hours:`год`,avgPrints:`Середня кількість друків`,noArchiveData:`Немає даних про друк`,filamentByTime:`Час`,avgWeight:`Середня вага`,avgTime:`Середній час`,filamentByPrints:`Друки`,timeframe:{today:`Сьогодні`,"this-week":`Цей тиждень`,"this-month":`Цей місяць`,"last-7":`Останні 7 днів`,"last-30":`Останні 30 днів`,"last-90":`Останні 90 днів`,"this-year":`Цього року`,"all-time":`За весь час`,custom:`Власний діапазон`,from:`Від`,to:`До`},allUsers:`Усі користувачі`,noUser:`Немає користувача (система)`,filterByUser:`Фільтрувати за користувачем`},maintenance:{title:`Технічне обслуговування`,overview:`Огляд`,allOk:`Усі роботи з технічного обслуговування виконано`,dueCount:`Потрібне обслуговування: {{count}}`,dueCount_plural:`Потрібне обслуговування: {{count}}`,warningCount:`{{count}} попередження`,warningCount_plural:`{{count}} попередження`,totalPrintTime:`Загальний час друку`,nextMaintenance:`Наступне технічне обслуговування`,nothingDue:`Обслуговування не потрібне`,tasks:`Завдання`,lastPerformed:`Востаннє виконано`,interval:`Інтервал`,hoursRemaining:`Залишилося {{hours}} год`,hoursOverdue:`Прострочено на {{hours}} год`,markDone:`Позначити як виконане`,performMaintenance:`Виконати технічне обслуговування`,history:`Історія`,noHistory:`Історії обслуговування немає`,editPrintHours:`Змінити години друку`,currentHours:`Поточна кількість годин`,statusTab:`Статус`,settingsTab:`Налаштування`,overdueCount:`{{count}} прострочено`,dueSoonCount:`{{count}} незабаром`,dueSoon:`Незабаром`,allGood:`Все добре`,overdueBy:`Прострочено на {{duration}}`,dueIn:`Через {{duration}}`,timeLeft:`Залишилося {{duration}}`,day:`1 день`,days:`{{count}} днів`,week:`1 тиждень`,weeks:`{{count}} тижнів`,month:`1 місяць`,months:`{{count}} місяців`,year:`1 рік`,maintenanceTypes:`Види технічного обслуговування`,maintenanceTypesDescription:`Системні та власні завдання технічного обслуговування`,addCustomType:`Додати спеціальний тип`,restoreDefaults:`Відновити завдання за замовчуванням`,intervalType:`Тип інтервалу`,intervalValue:`Інтервал ({{type}})`,icon:`значок`,documentationLink:`Посилання на документацію (необов’язково)`,assignToPrinters:`Призначити принтерам`,selectAtLeastOnePrinter:`Вибрати принаймні один принтер`,addType:`Додати тип`,custom:`Власне`,printHours:`Години друку`,calendarDays:`Календарні дні`,exampleName:`наприклад, Замінити HEPA-фільтр`,viewDocumentation:`Переглянути документацію`,timeBasedInterval:`Часовий інтервал`,intervalOverrides:`Перевизначення інтервалів`,intervalOverridesDescription:`Налаштувати інтервали для конкретних принтерів`,assignedToPrinters:`Призначено для принтерів:`,noPrintersAssigned:`Принтерів не призначено`,addPrinterShort:`Додати:`,printersAssignedClick:`Призначено принтерів: {{count}} — натисніть, щоб керувати`,removeFromPrinter:`Видалити з цього принтера`,types:{lubricateCarbonRods:`Змастити карбонові стрижні`,lubricateRails:`Змастити лінійні напрямні`,cleanNozzle:`Очистити сопло/хотенд`,checkBelts:`Перевірити натяг ременів`,cleanBuildPlate:`Очистити друкарську пластину`,checkExtruder:`Перевірити шестерні екструдера`,checkCooling:`Перевірити вентилятори охолодження`,generalInspection:`Загальний огляд`,cleanCarbonRods:`Очистити карбонові стрижні`,lubricateSteelRods:`Змастити сталеві стрижні`,cleanSteelRods:`Очистити сталеві стрижні`,cleanLinearRails:`Очистити лінійні напрямні`,checkPtfeTube:`Перевірити PTFE-трубку`,replaceHepaFilter:`Замінити HEPA-фільтр`,replaceCarbonFilter:`Замінити вугільний фільтр`,lubricateLeftNozzleRail:`Змастити ліву напрямну сопла`},maintenanceComplete:`Технічне обслуговування позначено як завершене`,typeUpdated:`Оновлено тип обслуговування`,typeDeleted:`Тип обслуговування видалено`,defaultsRestored:`Відновлено завдання за замовчуванням {{count}}`,printHoursUpdated:`Години друку оновлено`,printerAssigned:`Принтер призначено`,printerRemoved:`Принтер видалено`,deleteTypeConfirm:`Видалити "{{name}}"?`,deleteSystemTypeTitle:`Видалити завдання обслуговування за умовчанням?`,deleteSystemTypeMessage:`Ви впевнені, що бажаєте видалити стандартне завдання обслуговування "{{name}}"?`,noPermissionUpdate:`Ви не маєте дозволу на оновлення елементів обслуговування`,noPermissionPerform:`Ви не маєте дозволу на проведення технічного обслуговування`,noPermissionEditTypes:`Ви не маєте дозволу редагувати типи обслуговування`,noPermissionDeleteTypes:`Ви не маєте дозволу на видалення типів обслуговування`,noPermissionEditHours:`Ви не маєте дозволу редагувати години друку`,noPermissionRemovePrinter:`Ви не маєте дозволу на видалення призначень принтера`,noPermissionAssignPrinter:`Ви не маєте дозволу призначати принтери`,noPermissionEditIntervals:`Ви не маєте дозволу редагувати інтервали`,configureSettings:`Налаштувати типи та інтервали технічного обслуговування`},settings:{sliceEngine:`Рушій нарізання`,sliceEngineSidecar:`Серверний sidecar`,sliceEngineSidecarHint:`Нарізання виконується на сервері, у контейнері sidecar слайсера.`,sliceEngineBrowser:`У браузері`,sliceEngineBrowserHint:`Нарізання виконується на цьому пристрої, без сервера.`,title:`Налаштування`,general:`Загальні`,tabs:{general:`Загальні`,smartPlugs:`Розумні розетки`,sensors:`Датчики`,notifications:`Сповіщення`,queue:`Робочий процес`,queueDispatch:`Черга та відправка`,queuePipelines:`Конвеєри`,filament:`Філамент`,network:`Мережа`,apiKeys:`Ключі API`,virtualPrinter:`Віртуальний принтер`,spoolbuddy:`SpoolBuddy`,failureDetection:`Виявлення несправностей`,users:`Автентифікація`,backup:`Резервне копіювання`,emailAuth:`Автентифікація електронної пошти`,ldap:`LDAP`,twoFa:`Двофакторна автентифікація`,oidc:`SSO / OIDC`,security:`Безпека`},spoolbuddy:{infoTitle:`Пристрої SpoolBuddy`,infoBody:`Термінали SpoolBuddy автоматично реєструються за допомогою сигналів стану. Скасуйте реєстрацію пристрою, якщо він більше не використовується або після збою служби залишився застарілий дублікат.`,duplicatesTitle:`Зареєстровано пристроїв: {{count}}`,duplicatesBody:`Інтерфейс термінала використовує лише перший зареєстрований пристрій. Якщо один із записів є застарілим дублікатом після збою, скасуйте його реєстрацію. Пристрій у мережі зареєструється знову під час наступного сигналу стану.`,empty:`Ще немає зареєстрованих пристроїв SpoolBuddy.`,online:`Онлайн`,offline:`Не в мережі`,unregister:`Скасувати реєстрацію`,unregisterSuccess:`Реєстрацію пристрою скасовано`,unregisterError:`Не вдалося скасувати реєстрацію пристрою`,confirmTitle:`Скасувати реєстрацію пристрою SpoolBuddy?`,confirmBody:`Пристрій «{{hostname}}» ({{deviceId}}) буде видалено з бази даних. Якщо він у мережі, то зареєструється знову під час наступного сигналу стану.`,ipAddress:`IP-адреса`,firmware:`Прошивка`,lastSeen:`Востаннє в мережі`,daemonUptime:`Час роботи демона`,systemUptime:`Час роботи системи`,never:`Ніколи`,nfc:`NFC`,scale:`Ваги`,cpuTemp:`Температура ЦП`,cpuLoad:`Завантаження ЦП`,memory:`Пам’ять`,disk:`Диск`,update:`Оновити`,updateConfirmTitle:`Оновити демон Spoolbuddy?`,updateConfirmBody:`Запустити оновлення програмного забезпечення на "{{hostname}}"? Щойно оновлення буде застосовано, демон перезапуститься.`,restartBrowser:`Перезапустити браузер`,restartBrowserConfirmTitle:`Перезапустити веб-переглядач термінала?`,restartBrowserConfirmBody:`Перезапустити веб-переглядач кіоску на "{{hostname}}"? Дисплей на короткий час згасне.`,restartDaemon:`Перезапустити службу`,restartDaemonConfirmTitle:`Перезапустити демон Spoolbuddy?`,restartDaemonConfirmBody:`Перезапустити демон Spoolbuddy на "{{hostname}}"? Пристрій вийде з мережі на кілька секунд.`,reboot:`Перезавантажити`,rebootConfirmTitle:`Перезавантажити пристрій?`,rebootConfirmBody:`Перезавантажити «{{hostname}}»? Пристрій буде офлайн приблизно хвилину.`,shutdown:`Вимкнути`,shutdownConfirmTitle:`Вимкнути пристрій?`,shutdownConfirmBody:`Вимкнути "{{hostname}}"? Щоб увімкнути його, вам знадобиться фізичний доступ.`,commandConfirm:`Підтвердити`,commandQueued:`Команда в черзі`,commandError:`Не вдалося надіслати команду`},ldap:{title:`Автентифікація LDAP`,enabledDesc:`Автентифікація LDAP увімкнена`,disabledDesc:`Автентифікація LDAP вимкнена`,disabledHint:`Налаштуйте та збережіть налаштування LDAP нижче, а потім увімкніть.`,enabled:`LDAP автентифікація ввімкнена`,disabled:`LDAP автентифікація вимкнена`,feature1:`Користувачі можуть входити за допомогою облікових даних LDAP.`,feature2:`Обліковий запис локального адміністратора залишається резервним`,feature3:`Групи LDAP зіставляються з групами BamBuddy під час входу`,serverConfig:`Налаштування сервера LDAP`,serverUrl:`URL сервера`,serverUrlHint:`Використовуйте ldaps:// для SSL або ldap:// із StartTLS`,security:`Безпека`,securityHint:`StartTLS оновлює звичайне підключення до TLS. LDAPS використовує TLS із самого початку.`,bindDn:`DN прив’язки (службовий обліковий запис)`,bindPassword:`Пароль прив’язки`,searchBase:`Базовий DN пошуку`,userFilter:`Фільтр пошуку користувача`,userFilterHint:`{username} буде замінено на ім’я користувача, введене під час входу. Для OpenLDAP використовуйте (uid={username}).`,advanced:`Розширені налаштування`,autoProvision:`Автоматично створювати користувачів`,autoProvisionHint:`Автоматично створювати обліковий запис BamBuddy після першого входу LDAP.`,defaultGroup:`Група за замовчуванням`,defaultGroupNone:`— Немає (без резервної групи) —`,defaultGroupHint:`Запасна група призначається, коли користувач LDAP автентифікується, але його немає в списку жодної зіставленої групи LDAP. Залиште порожнім, щоб залишити непризначених користувачів без дозволів.`,groupMapping:`Зіставлення груп (JSON)`,groupMappingHint:`Зіставте DN груп LDAP із групами BamBuddy. Доступні групи: `,testConnection:`Перевірити підключення`,settingsSaved:`Налаштування LDAP збережено`,errors:{serverRequired:`Потрібна URL-адреса сервера LDAP`,searchBaseRequired:`Потрібен базовий DN пошуку`,enableAuthFirst:`Спочатку ввімкніть автентифікацію`,configureLdapFirst:`Спочатку збережіть налаштування LDAP.`}},email:{smtpSettings:`Налаштування SMTP`,smtpHost:`Сервер SMTP`,smtpPort:`Порт SMTP`,security:`Безпека`,authentication:`Автентифікація`,username:`Ім’я користувача`,password:`Пароль`,fromEmail:`Адреса відправника`,fromName:`Ім’я відправника`,testConnection:`Перевірити підключення SMTP`,testRecipient:`Електронна адреса тестового одержувача`,sendTest:`Надіслати тестовий електронний лист`,sending:`Надсилання...`,save:`Зберегти налаштування`,saving:`Збереження...`,advancedAuth:`Розширена автентифікація`,advancedAuthEnabled:`Розширену автентифікацію ввімкнено`,advancedAuthEnabledDesc:`Функції керування користувачами на основі електронної пошти активні. Нові користувачі отримають автоматично згенеровані паролі електронною поштою, і користувачі зможуть скинути свої паролі за допомогою функції «Забутий пароль».`,advancedAuthDisabled:`Розширену автентифікацію вимкнено`,advancedAuthDisabledDesc:`Увімкніть розширену автентифікацію, щоб активувати функції електронної пошти для керування користувачами.`,enable:`Увімкнути`,disable:`Вимкнути`,feature1:`Паролі генеруються автоматично та надсилаються новим користувачам електронною поштою`,feature2:`Користувачі можуть входити за іменем користувача або електронною адресою`,feature3:`Доступна функція «Забув пароль».`,feature4:`Адміністратори можуть скинути паролі користувачів електронною поштою`,errors:{requiredFields:`Заповніть усі обов’язкові поля`,usernameRequired:`Якщо ввімкнено автентифікацію, потрібне ім’я користувача`,enterTestEmail:`Введіть тестову електронну адресу`,smtpServerAndEmail:`Перед перевіркою вкажіть SMTP-сервер і адресу відправника`,usernamePasswordRequired:`Якщо ввімкнено автентифікацію, потрібні ім’я користувача та пароль`,configureSmtpFirst:`Спочатку налаштуйте та перевірте параметри SMTP`,enableAuthFirst:`Щоб використовувати функції електронної пошти, спочатку ввімкніть автентифікацію.`},success:{settingsSaved:`Налаштування SMTP успішно збережено`},securityOptions:{starttls:`STARTTLS (порт 587)`,ssl:`SSL/TLS (порт 465)`,none:`Без шифрування (порт 25)`},authOptions:{enabled:`Увімкнено`,disabled:`Вимкнено`}},appearance:`Зовнішній вигляд`,notifications:`Сповіщення`,smartPlugs:`Розумні розетки`,spoolman:`Spoolman`,updates:`Оновлення`,language:`Мова`,languageDescription:`Виберіть бажану мову`,theme:`Тема`,themeLight:`Світла`,themeDark:`Темна`,themeSystem:`Системна`,defaultView:`Початкове подання`,defaultViewDescription:`Сторінка, яка відображатиметься під час відкриття програми`,checkForUpdates:`Перевірити наявність оновлень`,autoUpdate:`Автоматичне оновлення`,currentVersion:`Поточна версія`,latestVersion:`Остання версія`,upToDate:`У вас установлено останню версію`,updateAvailable:`Доступне оновлення`,notificationLanguage:`Мова сповіщень`,notificationLanguageDescription:`Мова для push-повідомлень`,bedCooledThreshold:`Поріг охолодження столу`,bedCooledThresholdDescription:`Температура, нижче якої стіл вважається охолодженим після друку`,userNotificationsEnabled:`Сповіщення користувача`,userNotificationsEnabledDescription:`Увімкніть меню сповіщень користувача та сповіщення електронною поштою про події завдань друку. Потрібна розширена автентифікація.`,userNotificationsDisabledHint:`Увімкніть розширену автентифікацію, щоб використовувати сповіщення користувачів.`,notificationProviders:`Служби сповіщень`,addProvider:`Додати службу`,editProvider:`Редагувати службу`,providerType:`Тип служби`,testNotification:`Перевірити сповіщення`,testSuccess:`Тестове сповіщення успішно надіслано`,testFailed:`Не вдалося надіслати тестове сповіщення`,quietHours:`Період тиші`,quietHoursDescription:`Не надсилати сповіщень у цей період`,quietHoursStart:`Початок`,quietHoursEnd:`Кінець`,events:{title:`Події сповіщень`,printStart:`Друк розпочато`,printComplete:`Друк завершено`,printFailed:`Помилка друку`,printStopped:`Друк зупинено`,printProgress:`Етапи виконання`,printProgressDescription:`Сповіщати після досягнення 25%, 50% і 75%`,printerOffline:`Принтер не в мережі`,printerError:`Помилка принтера`,filamentLow:`Мало філаменту`,maintenanceDue:`Потрібне технічне обслуговування`,maintenanceDueDescription:`Повідомити, коли потрібне обслуговування`},smartPlug:{title:`Розумні розетки`,add:`Додати розумну розетку`,edit:`Редагувати розумну розетку`,name:`Назва`,ipAddress:`IP-адреса`,linkedPrinter:`Пов’язаний принтер`,autoOn:`Автоматичне ввімкнення`,autoOnDescription:`Увімкнути на початку друку`,autoOff:`Автоматичне вимкнення`,autoOffDescription:`Вимкнути після завершення друку`,offDelay:`Затримка вимкнення`,offDelayMinutes:`Хвилини після завершення друку`,offDelayTemp:`Коли температура сопла нижча за задану`,currentState:`Поточний стан`,turnOn:`Увімкнути`,turnOff:`Вимкнути`},filamentTracking:`Облік філаменту`,filamentTrackingDesc:`Виберіть спосіб обліку котушок філаменту. Можна використовувати вбудований інвентар або підключити зовнішній сервер Spoolman.`,autoAddUnknownRfid:`Автоматично додавати невідомі RFID-котушки`,autoAddUnknownRfidDesc:`Автоматично створювати запис інвентарю, коли виявлено котушку з невідомою RFID-міткою. Вимкніть, якщо ви заздалегідь реєструєте нові котушки вручну, щоб уникнути дублікатів.`,filamentChecks:`Перевірки філаменту`,disableFilamentWarnings:`Вимкнути попередження про філамент`,disableFilamentWarningsDesc:`Не показувати попередження про недостатню кількість філаменту під час запуску друку або додавання до черги`,preferLowestFilament:`Віддавати перевагу котушці з найменшим залишком`,preferLowestFilamentDesc:`Якщо підходять кілька котушок, використовувати котушку з найменшим залишком філаменту`,preferLowestFilamentBackupNote:`Діє лише тоді, коли на принтері ввімкнено AMS Filament Backup. Інакше після вичерпання вибраної котушки принтер не зможе перейти на другу.`,trackingModeBuiltIn:`Вбудований інвентар`,trackingModeBuiltInDesc:`Автоматичне зіставлення за RFID та облік використання`,trackingModeSpoolmanDesc:`Зовнішній сервер керування філаментом`,builtInFeatureRfid:`Автоматично виявляє RFID-котушки Bambu Lab в AMS`,builtInFeatureUsage:`Обліковує витрати філаменту для кожного друку`,builtInFeatureCatalog:`Керування котушками, кольорами та профілями K-фактора`,builtInFeatureThirdParty:`Котушки сторонніх виробників можна пов’язувати з котушками інвентарю`,amsSyncButton:`Синхронізувати масу з AMS`,amsSyncTitle:`Синхронізація маси котушок з AMS`,amsSyncMessage:`Масу всіх котушок інвентарю буде перезаписано відповідно до поточних значень залишку у відсотках, отриманих з AMS підключених принтерів. Скористайтеся цим для відновлення пошкоджених даних про масу. Принтери мають бути в мережі.`,amsSyncing:`Синхронізація...`,amsSyncSuccess:`Синхронізовано: {{synced}}; пропущено: {{skipped}}`,amsSyncError:`Не вдалося синхронізувати масу з AMS`,spoolmanAmsSyncButton:`Синхронізувати масу котушок Spoolman з AMS`,spoolmanAmsSyncTitle:`Синхронізація маси котушок Spoolman з AMS`,spoolmanAmsSyncMessage:`Масу всіх котушок Spoolman буде оновлено відповідно до поточних значень залишку в AMS підключених принтерів. Принтери мають бути в мережі.`,spoolmanAmsSyncing:`Синхронізація...`,spoolmanAmsSyncSuccess:`Синхронізовано: {{synced}}; пропущено: {{skipped}}`,spoolmanAmsSyncError:`Не вдалося синхронізувати масу котушок Spoolman з AMS`,spoolmanAmsSyncErrorUnreachable:`Не вдалося синхронізувати масу котушок Spoolman: сервер Spoolman недоступний`,spoolmanAmsSyncErrorNotConfigured:`Не вдалося синхронізувати масу котушок Spoolman: сервер Spoolman не налаштовано`,spoolmanNotConfigured:`Spoolman не налаштовано`,spoolmanFilamentCatalogTitle:`Каталог філаментів Spoolman`,spoolmanFilamentCatalogDesc:`Назви філаментів і вага тари з вашого екземпляра Spoolman. Тут можна редагувати назву та вагу котушки; усі інші властивості керуються безпосередньо в Spoolman.`,spoolmanUrl:`Spoolman URL`,spoolmanUrlHint:`URL вашого сервера Spoolman (наприклад, http://localhost:7912)`,spoolmanConnected:`Підключено`,spoolmanDisconnected:`Відключено`,status:`Статус`,connect:`Підключитися`,disconnect:`Від’єднатися`,howSyncWorks:`Як працює синхронізація`,syncInfoRfidOnly:`Синхронізуються лише офіційні котушки Bambu Lab із RFID.`,syncInfoAutoCreate:`Нові котушки автоматично створюються в Spoolman під час першої синхронізації`,syncInfoThirdPartySkipped:`Котушки не від Bambu Lab — сторонні або повторно заправлені — пропускаються`,linkingExistingSpools:`Зв’язування існуючих котушок`,linkingExistingSpoolsDesc:`Щоб пов’язати наявні котушки Spoolman з AMS, наведіть вказівник на слот AMS і натисніть «Пов’язати зі Spoolman».`,syncMode:`Режим синхронізації`,syncModeAuto:`Автоматичний`,syncModeManual:`Тільки вручну`,syncModeAutoDesc:`Дані AMS синхронізуються автоматично після виявлення змін`,syncModeManualDesc:`Синхронізувати лише вручну`,syncAmsData:`Синхронізувати дані AMS`,syncAmsDataDesc:`Вручну синхронізувати дані AMS принтера зі Spoolman`,allPrinters:`Усі принтери`,noDefaultPrinter:`Немає умовчання (запитувати щоразу)`,sidebarOrder:`Порядок бічної панелі`,saveThumbnails:`Зберегти мініатюри`,captureFinishPhoto:`Зробити фото після завершення`,noPrintersConfigured:`Принтери не налаштовані`,archiveMode:{always:`Завжди створювати запис архіву`,never:`Ніколи не створювати запис архіву`,ask:`Запитувати щоразу`},checkForUpdatesLabel:`Перевірити наявність оновлень`,checkPrinterFirmware:`Перевірити прошивку принтера`,includeBetaUpdates:`Включати бета-версії`,includeBetaUpdatesDesc:`Повідомляти про бета-версії та попередні версії під час перевірки оновлень`,localLogin:{disable:`Вимкнути локальний вхід за іменем користувача й паролем`,disableHint:`Якщо ввімкнено, увійти можна буде лише через постачальників SSO. На LDAP це не впливає. Щоб зберегти резервний спосіб входу, установіть на сервері BAMBUDDY_LOCAL_LOGIN=true.`},enableRetry:`Увімкнути повторну спробу`,homeAssistantDescription:`Керуйте розумними розетками через Home Assistant`,environmentManagedLabel:`(Кероване середовище)`,autoEnabledViaEnv:`Автоматично вмикається через змінні середовища`,urlFromEnvReadOnly:`Значення, встановлене змінною середовища HA_URL (лише читання)`,tokenFromEnvReadOnly:`Значення, установлене змінною середовища HA_TOKEN (лише читання)`,mqttConnectedTo:`Підключено до`,prometheusDescription:`Надавати дані принтерів у форматі Prometheus`,noSmartPlugsTitle:`Розумні розетки не налаштовано`,noSmartPlugsDescription:`Додайте розумну розетку на базі Tasmota, щоб відстежувати споживання енергії та автоматизувати керування живленням.`,noProvidersTitle:`Постачальники не налаштовані`,noProvidersDescription:`Додайте постачальника, щоб отримувати сповіщення.`,noTemplatesAvailable:`Немає доступних шаблонів. Перезапустіть серверну частину, щоб створити стандартні шаблони.`,apiPermissionView:`Перегляд стану принтера та черги`,apiPermissionEdit:`Додавання та видалення елементів із черги друку`,apiKeysEmptyTitle:`Немає ключів API`,apiKeysEmptyDescription:`Створіть ключ API для інтеграції із зовнішніми службами.`,noUsersFound:`Користувачів не знайдено`,noGroupsFound:`Групи не знайдено`,noGroupsAvailable:`Немає доступних груп`,passwordsDoNotMatch:`Паролі не збігаються`,systemGroupWarning:`Назви системних груп не можна змінювати`,authDisabledTitle:`Автентифікація вимкнена`,authDisabledFeature1:`Вимагати входу для доступу до системи`,authDisabledFeature2:`Створювати кількох користувачів із дозволами на основі груп`,authDisabledFeature3:`Керувати доступом за допомогою понад 50 окремих дозволів`,userHasCreated:`Цей користувач створив:`,userItemsQuestion:`Що зробити з цими елементами?`,deleteUserConfirm:`Ви впевнені, що хочете видалити цього користувача?`,actionCannotBeUndone:`Цю дію не можна скасувати.`,addFirstSmartPlug:`Додати першу розумну розетку`,providers:`Постачальники`,log:`Журнал`,testAll:`Перевірити все`,testResults:`Результати тестування`,testPassedCount:`{{count}} пройдено`,testFailedCount:`{{count}} не вдалося`,messageTemplates:`Шаблони повідомлень`,messageTemplatesDescription:`Налаштуйте текст сповіщень для кожної події.`,apiKeys:`Ключі API`,apiKeysDescription:`Створіть ключі API для зовнішніх інтеграцій і веб-хуків.`,createKey:`Створити ключ`,apiKeyCreated:`Ключ API створено успішно`,apiKeyCopyWarning:`Скопіюйте цей ключ зараз — його більше не буде показано!`,useInApiBrowser:`Використати в оглядачі API`,apiKeyQrButton:`QR-код`,apiKeyQrTitle:`Відскануйте для налаштування`,apiKeyQrCaption:`Скануйте за допомогою мобільного додатка, щоб додати цей сервер і ключ API.`,apiKeyQrWarning:`Містить ваш секретний ключ API. Не передавайте його іншим і не зберігайте знімки екрана там, де їх можуть побачити сторонні.`,createNewApiKey:`Створити новий ключ API`,keyName:`Назва ключа`,keyNamePlaceholder:`наприклад, Home Assistant, OctoPrint`,readStatus:`Читати статус`,readStatusDescription:`Перегляд стану принтера, черги, бібліотеки, архівів і конвеєрів слайсера`,manageQueue:`Керувати чергою`,manageQueueDescription:`Додавання та видалення елементів із черги друку. Разом із «Керувати бібліотекою» — запуск конвеєрів слайсера`,controlPrinter:`Керування принтером`,controlPrinterDescription:`Призупинення, відновлення та зупинка друку`,manageLibrary:`Керувати бібліотекою`,manageLibraryDescription:`Вивантажувати, перейменовувати, видаляти та слайсити файли бібліотеки; імпортувати моделі з MakerWorld. Разом із «Керувати чергою» — запуск конвеєрів слайсера`,manageInventory:`Керувати інвентарем`,manageInventoryDescription:`Створення, оновлення та видалення котушок і записів інвентарю. Потрібно для кіосків SpoolBuddy: сканування NFC, покази ваг і системні команди кіоску.`,manageMaintenance:`Керувати технічним обслуговуванням`,manageMaintenanceDescription:`Реєстрація завершеного технічного обслуговування, скидання лічильників, редагування інтервалів і керування каталогом технічного обслуговування. Підходить для автоматизації Home Assistant, яка записує «Я очистив сопло», не надаючи ширшого контролю над принтером.`,manageArchives:`Керувати архівами`,manageArchivesDescription:`Редагувати та видаляти архіви друку, у тому числі старі друки та їхній статистичний внесок. Підходить для автоматизації, яка обрізає історію друку.`,manageProjects:`Керувати проєктами`,manageProjectsDescription:`Створюйте, оновлюйте та видаляйте проєкти, додавайте до них архіви. Підходить для автоматизації, яка організовує друк у проєкти.`,libraryBadge:`Бібліотека`,inventoryBadge:`Інвентар`,maintenanceBadge:`Технічне обслуговування`,archivesBadge:`Архіви`,projectsBadge:`Проєкти`,cloudAccess:`Дозволити доступ до хмари`,cloudAccessDescription:`Дозволити читати від вашого імені профілі та філаменти Bambu Cloud. Потрібен вхід у Bambu Cloud.`,cloudBadge:`Хмара`,updateEnergyCost:`Оновлювати ціну електроенергії`,updateEnergyCostDescription:`Дозволити цьому ключу надсилати нову ціну електроенергії за кВт·год до /settings/electricity-price. Це корисно для автоматизацій Home Assistant із динамічними тарифами (Tibber, Octopus тощо). Це єдине поле налаштувань, яке можна змінювати за допомогою ключа API.`,energyCostBadge:`Енергія`,legacyKey:`Застарілий`,legacyKeyTooltip:`Створено до отримання права власності на користувача; повторно створити, щоб використовувати доступ до хмари`,unnamedKey:`Безіменний ключ`,lastUsed:`Останнє використання`,read:`Читання`,control:`Керування`,createFirstKey:`Створити перший ключ`,webhookEndpoints:`Кінцеві точки вебхуків`,webhookApiKeyHint:`Використовуйте свій ключ API у заголовку X-API-Key.`,webhook:{getAllStatus:`Отримати весь стан принтера`,getSpecificStatus:`Отримати певний стан принтера`,addToQueue:`Додати до черги друку`,pausePrint:`Призупинити друк`,resumePrint:`Відновити друк`,stopPrint:`Зупинити друк`},apiBrowser:`Оглядач API`,apiBrowserDescription:`Переглядайте й перевіряйте всі доступні кінцеві точки API.`,apiKeyForTesting:`Ключ API для тестування`,apiKeyPlaceholder:`Вставте сюди свій ключ API, щоб перевірити автентифіковані кінцеві точки...`,apiKeyHint:`Цей ключ буде надіслано як заголовок X-API-Key із запитами.`,deleteApiKeyTitle:`Видалити ключ API`,deleteApiKeyMessage:`Ви впевнені, що хочете видалити цей ключ API? Будь-які інтеграції за допомогою цього ключа перестануть працювати.`,deleteKey:`Видалити ключ`,amsDisplayThresholds:`Пороги індикаторів AMS`,amsThresholdsDescription:`Налаштуйте колірні пороги для індикаторів вологості та температури AMS.`,humidity:`Вологість`,goodGreen:`Добре (зелений)`,fairOrange:`Задовільний (помаранчевий)`,aboveFairBad:`Значення вище задовільного порога відображається червоним (погано)`,fairAlsoDryingThreshold:`Цей поріг також використовується для запуску автоматичного сушіння, якщо його ввімкнено`,fairBelowDryingFloor:`Автоматичне сушіння не може досягти цього значення: за увімкненого нагрівача AMS показує {{floor}} % або більше, тож кожен цикл завершувався б і одразу починався знову. Встановіть значення понад {{floor}} %, якщо користуєтеся автоматичним сушінням.`,temperature:`Температура`,goodBlue:`Добре (синій)`,aboveFairHot:`Значення вище задовільного порога відображається червоним (гаряче)`,tempAlarmThreshold:`Тривога вище`,tempAlarmSeparateFromBand:`Сповіщення надсилає лише поріг тривоги — «добре» та «задовільно» тільки забарвлюють індикатор. Залиште порожнім, щоб спрацьовувати на задовільному порозі, як раніше.`,tempAlarmMustBePositive:`Поріг 0 або менший ігнорується — тривога спрацьовує на задовільному порозі.`,historyRetention:`Збереження історії`,keepSensorHistory:`Зберігати історію датчиків для`,historyRetentionDescription:`Старіші дані про вологість і температуру буде автоматично видалено`,defaultPrintOptions:`Параметри друку за умовчанням`,defaultPrintOptionsDescription:`Установіть типові значення параметрів для нових завдань друку. Їх можна змінити для окремого завдання в діалоговому вікні друку.`,defaultBedLevelling:`Вирівнювання столу`,defaultBedLevellingDesc:`Автоматичне вирівнювання столу перед друком`,defaultFlowCali:`Калібрування потоку`,defaultFlowCaliDesc:`Калібрувати потік екструзії`,defaultVibrationCali:`Калібрування вібрації`,defaultVibrationCaliDesc:`Зменшувати артефакти від вібрації`,defaultLayerInspect:`Перевірка першого шару`,defaultLayerInspectDesc:`Перевірка першого шару за допомогою ШІ`,defaultTimelapse:`Таймлапс`,defaultTimelapseDesc:`Записувати таймлапс`,defaultNozzleOffsetCali:`Калібрування зсуву сопла`,defaultNozzleOffsetCaliDesc:`Калібрувати зміщення сопел між екструдерами`,tempFanPresetsTitle:`Профілі температури та вентилятора`,tempFanPresetsDescription:`Налаштуйте значення швидкого вибору в спливних панелях температури й швидкості вентилятора на картці принтера. Кнопка «Вимкнути» відображається завжди.`,tempFanPresetsNozzle:`Температура сопла`,tempFanPresetsBed:`Температура столу`,tempFanPresetsChamber:`Температура камери`,tempFanPresetsFan:`Швидкість вентилятора`,tempFanPresetsReset:`Відновити налаштування за замовчуванням`,concurrentUploadsTitle:`Паралельні вивантаження`,concurrentUploadsDescription:`Кількість принтерів, на які черга може одночасно надсилати файли. Передавання на принтери відбувається повільно — великий файл може передаватися кілька хвилин — і кожен принтер чекає своєї черги. Для великого парку збільшення цього значення скорочує очікування останнього принтера в партії. Зменште його, якщо мережа або сервер Bambuddy не справляється з паралельними передаваннями.`,concurrentUploadsLabel:`Кількість принтерів для одночасного передавання`,concurrentUploadsHelp:`1 надсилає на один принтер за раз (стара поведінка). За замовчуванням 4.`,staggeredStart:`Поетапний запуск`,staggeredStartDescription:`Типовий розмір групи та інтервал для поетапного запуску партії на кількох принтерах. Значення можна змінити для кожної партії у вікні друку.`,preheatTitle:`Попереднє нагрівання й термовитримка`,preheatDescription:`Нагрівати стіл — і камеру, якщо це підтримується — та витримувати задану температуру перед кожним друком із черги. Це корисно для інженерних філаментів, як-от PA й ABS, на принтерах без активного нагрівача камери: стіл нагріває камеру тепловим випромінюванням, доки триває термовитримка. Цільова температура столу зчитується з файлу друку; поведінка камери залежить від моделі принтера.`,preheatEnabled:`Увімкнути попереднє нагрівання й термовитримку`,preheatEnabledDesc:`Якщо вимкнено, завдання з черги надсилаються на друк негайно. Для кожного елемента черги це налаштування можна перевизначити окремо.`,preheatFilamentTargetsLabel:`Цільова температура камери за типом філаменту (°C)`,preheatFilamentTargetsHint:`Bambuddy вибирає найвищу цільову температуру серед завантажених слотів AMS. Для друку лише з PLA визначається значення 0, тому етап нагрівання камери автоматично пропускається.`,preheatFilamentTargetsReset:`Відновити налаштування за замовчуванням`,preheatFilamentTargetsDefaultRow:`Інше / не зіставлене`,preheatMaxWait:`Максимальний час очікування (секунди)`,preheatMaxWaitHelp:`Максимальна тривалість нагрівання камери перед переходом до наступного етапу.`,preheatSoak:`Термовитримка (с)`,preheatSoakHelp:`Час термовитримки після досягнення цільової температури або завершення максимального часу очікування.`,preheatHardwareTitle:`Особливості за моделями принтерів:`,preheatHardwareDetail:`H2C/H2D/H2D Pro/H2S/X2D/X1E активно нагрівають камеру командою M141. X1C/P2S зчитують температуру камери, але покладаються на нагрівання тепловим випромінюванням від столу. P1S/P1P/A1/A1 Mini не мають датчика камери — для них застосовується лише таймер термовитримки.`,preheatPerItemDesc:`Нагрівати стіл і камеру перед початком цього друку. Типове значення успадковується з перемикача «Налаштування → Робочий процес».`,preheatOverride_inherit:`Успадкувати`,preheatOverride_on:`Увімкнено`,preheatOverride_off:`Вимкнено`,calibrationMode_off:`Вимкнено`,calibrationMode_on:`Увімкнено`,calibrationMode_auto:`Авто`,preheatTargetOverride:`Інша цільова температура камери (°C; порожньо — типове значення для філаменту)`,plateClear:`Підтвердження очищення друкарської пластини`,requirePlateClear:`Вимагати підтвердження очищення друкарської пластини`,requirePlateClearDescription:`Якщо ввімкнено, планувальник перед запуском наступного завдання на принтері із завершеним друком очікує підтвердження, що друкарську пластину очищено. Вимкнення також приховує індикатор стану пластини та кнопку «Позначити пластину як очищену» на картках принтерів.`,keepBedWarm:`Тримати стіл теплим між друком`,keepBedWarmDesc:`Поки очікується підтвердження очищення пластини, стіл підтримується при вказаній нижче температурі підігріву, щоб камера залишалася теплою, — або при температурі столу наступного друку, якщо вона вища. Застосовується лише коли наступний друк потребує нагрівання камери (ASA, ABS, PA, PC тощо). Потрібно увімкнути підтвердження очищення пластини.`,keepWarmBedTemp:`Температура столу для підтримання тепла (°C)`,keepWarmBedTempHelp:`Використовується, коли стіл слугує для нагрівання камери: під час підтримання тепла та під час попереднього нагріву, якщо у файлі друку немає температури столу. Вища температура з файлу друку завжди має пріоритет.`,keepWarmMaxMinutes:`Припинити підігрів через (хвилин)`,keepWarmMaxMinutesHelp:`Якщо пластину не звільнено за цей час, нагрівачі вимикаються, а не залишаються увімкненими нескінченно.`,gcodeInjection:`Вставлення G-коду`,gcodeInjectionDescription:`Налаштуйте власний G-код для вставлення на початку та/або наприкінці друку в системах автоматичного друку, як-от Farmloop, SwapMod, AutoClear і Printflow 3D. Фрагменти налаштовуються для кожної моделі принтера та застосовуються, коли для елемента черги ввімкнено «Вставляти G-код».`,gcodeInjectionNoPrinters:`Принтерів не знайдено. Додайте принтери, щоб налаштувати фрагменти G-коду.`,gcodeStartLabel:`Початковий G-код`,gcodeEndLabel:`Завершальний G-код`,gcodeStartPlaceholder:`G-код додається перед початком друку...`,gcodeEndPlaceholder:`G-код додається після завершення друку...`,staggerGroupSize:`Розмір групи`,staggerGroupSizeHelp:`Кількість принтерів, що одночасно запускаються в кожній групі`,staggerInterval:`Інтервал (хвилини)`,staggerIntervalHelp:`Затримка між стартом кожної групи`,queueDrying:`Автоматичне сушіння між завданнями черги`,queueDryingDescription:`Автоматично сушити філамент в AMS, коли принтер простоює між завданнями з черги. Сушіння запускається відповідно до заданого вище порога вологості.`,queueDryingEnabled:`Увімкнути автосушку`,queueDryingEnabledDescription:`Автоматичний запуск AMS сушіння, коли принтер неактивний і вологість перевищує порогове значення`,queueDryingBlock:`Чекати завершення сушіння`,queueDryingBlockDescription:`Не запускати завдання з черги до завершення сушіння. Якщо вимкнено, друк має пріоритет над сушінням.`,ambientDryingEnabled:`Фонове сушіння`,ambientDryingEnabledDescription:`Автоматичне сушіння філаменту на неактивних принтерах, коли вологість перевищує порогове значення, навіть без друку в черзі.`,printDryingEnabled:`Продовжувати сушіння під час друку`,printDryingEnabledDescription:`Дозволити автоматичному сушінню тривати під час друку на підтримуваному обладнанні (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L з новими версіями прошивки). Для захисту котушок температура сушіння автоматично обмежується значенням на 5 °C нижчим за профіль для режиму простою.`,dryingPresets:`Профілі сушіння`,dryingPresetsDescription:`Температура та тривалість для кожного типу філаменту. AMS 2 Pro використовує нижчі температури, AMS-HT підтримує вищі температури.`,dryingFilament:`Філамент`,humidityThresholds:`Пороги вологості`,humidityThresholdsDescription:`Пороги вологості за типом філаменту для автоматичного сушіння та попереджень. Для змішаного завантаження в одному AMS використовується найнижчий поріг.`,humidityThresholdCol:`Поріг`,humidityThresholdDefault:`За замовчуванням (невідомі типи)`,printModal:`Вікно друку`,expandCustomMapping:`Розгорнути настроюване зіставлення за умовчанням`,expandCustomMappingDescription:`Під час друку на кількох принтерах показувати розгорнуте зіставлення для кожного принтера AMS.`,authentication:`Автентифікація`,authEnabledDescription:`Ваш екземпляр захищено автентифікацією користувача`,authDisabledDescription:`Увімкніть запит входу та керування доступом користувачів`,authDisabledMessage:`Увімкніть автентифікацію, щоб створювати облікові записи користувачів, керувати дозволами та захищати свій екземпляр Bambuddy.`,enableAuthentication:`Увімкнути автентифікацію`,currentUser:`Поточний користувач`,changePassword:`Змінити пароль`,admin:`адмін`,users:`Користувачі`,addUser:`Додати користувача`,groups:`Групи`,addGroup:`Додати групу`,system:`система`,noDescription:`Без опису`,userCount:`{{count}} користувачів`,permissionCount:`Дозволи {{count}}.`,createUser:`Створити користувача`,username:`Ім’я користувача`,enterUsername:`Введіть ім’я користувача`,password:`Пароль`,enterPassword:`Введіть пароль`,passwordRequirements:`Принаймні 8 символів, один великий, один малий, одна цифра та один спеціальний символ.`,confirmPassword:`Підтвердити пароль`,confirmPasswordPlaceholder:`Підтвердити пароль`,viewReleaseOnGitHub:`Переглянути випуск на GitHub`,turnAllPlugsOn:`Увімкнути усі розетки`,turnAllPlugsOff:`Вимкнути усі розетки`,clearNotificationLogs:`Очистити журнали сповіщень`,clearLogsMessage:`Це назавжди видалить усі журнали сповіщень старше 30 днів. Цю дію не можна скасувати.`,clearLogs:`Очистити журнали`,resetUiPreferences:`Скинути налаштування UI.`,resetUiPreferencesMessage:`Це скине всі параметри UI до значень за замовчуванням: порядок бічної панелі, тему, макет інформаційної панелі, режими перегляду та параметри сортування. Це НЕ вплине на ваші принтери, архіви та налаштування сервера. Після очищення сторінка перезавантажиться.`,resetPreferences:`Скинути налаштування`,deleteGroupTitle:`Видалити групу`,deleteGroupMessage:`Ви впевнені, що хочете видалити цю групу? Користувачі цієї групи втратять ці дозволи.`,deleteGroup:`Видалити групу`,disableAuthenticationTitle:`Вимкнути автентифікацію`,disableAuthenticationMessage:`Ви впевнені, що бажаєте вимкнути автентифікацію? Це зробить ваш екземпляр Bambuddy доступним без входу. Усі користувачі залишаться в базі даних, але автентифікацію буде вимкнено.`,disableAuthentication:`Вимкнути автентифікацію`,configureBambuddy:`Налаштувати Bambuddy`,systemDefault:`Системне за замовчуванням`,archiveSettings:`Налаштування архіву`,newWindow:`Нове вікно`,embeddedOverlay:`Вбудоване накладання`,preferredSlicer:`Бажаний слайсер`,preferredSlicerDescription:`Слайсер для нарізання в застосунку через допоміжний API-сервіс`,openInSlicerLabel:`Відкрити у слайсері`,openInSlicerInherit:`Такий самий, як API-слайсер`,openInSlicerDescription:`Настільний слайсер, який відкриває кнопка «Відкрити в слайсері». Залиште «Такий самий, як API-слайсер», щоб успадкувати вибір, або виберіть інший слайсер для локального використання.`,orcaslicerKnownIssuesWarning:`OrcaSlicer 2.3.2 / 2.4.0-dev має відомі помилки CLI, через які не вдається нарізати багато створених Bambu файлів 3MF. Див. проблеми upstream №12426 — аварійне завершення для розфарбованих файлів із кількома екструдерами — та №13386 — відхилення через сувору перевірку діапазонів параметрів. До появи виправлень upstream рекомендовано використовувати Bambu Studio.`,useSlicerApi:`Використовувати API слайсера`,useSlicerApiDescription:`Якщо ввімкнено, команда «Нарізати» відкриває вбудоване вікно слайсера й викликає допоміжний сервіс slicer-API. Якщо вимкнено — типове значення — файл передається настільному слайсеру через URI-схему.`,slicerCard:`Слайсер`,orcaslicerApiUrl:`URL допоміжного сервісу OrcaSlicer`,bambuStudioApiUrl:`URL допоміжного сервісу Bambu Studio`,slicerStallTimeout:`Тайм-аут простою слайсера (хвилини)`,slicerStallTimeoutDescription:`Перервати нарізку, якщо sidecar не повідомляє про прогрес протягом цього часу. Важкі моделі, які продовжують повідомляти про прогрес, ніколи не перериваються, скільки б часу не знадобилося. Для sidecar без звіту про прогрес це значення використовується як загальний ліміт часу.`,slicerApiUrlDescription:`URL контейнера допоміжного сервісу slicer-API. Залиште поле порожнім, щоб використовувати типові значення зі змінних середовища SLICER_API_URL / BAMBU_STUDIO_API_URL.`,externalCameras:`Зовнішні камери`,costTracking:`Відстеження витрат`,billingEnabled:`Увімкнути розрахунки`,billingEnabledDescription:`Стягувати з користувачів вартість друку та ввімкнути фінансові функції`,printerKillSwitch:`Автозупинка несанкціонованого друку`,printerKillSwitchDescription:`Негайно зупиняє друк, розпочатий без дозволу.`,financeBudgetReset:`Щомісячне скидання фінансового бюджету`,financeBudgetResetDay:`День скидання`,financeBudgetResetDayHelp:`У коротких місяцях скидання виконується в останній день місяця.`,financeBudgetResetTimezone:`Часовий пояс скидання`,financeBudgetResetTimezoneHelp:`Початок бюджетного періоду обчислюється в цьому часовому поясі.`,rebuildLedger:`Перебудувати книгу гаманця`,rebuildLedgerStarted:`Перебудову книги розпочато`,rebuildLedgerConfirmTitle:`Перебудувати книгу гаманця?`,rebuildLedgerConfirmMessage:`Книгу гаманця буде перебудовано для виправлення історичних значень балансу. Запускайте цю дію лише якщо розумієте її наслідки.`,rebuildLedgerInProgress:`Запуск перебудови...`,printsOnly:`Лише друк`,totalConsumption:`Загальне споживання`,dataManagement:`Управління даними`,storageUsage:`Використання сховища`,storageUsageDescription:`Розподіл використання даних за категоріями`,storageUsageTotal:`Всього`,storageUsageErrors:`Помилки`,storageUsageOtherBreakdown:`Інше (включає статичні ресурси, сценарії та файли конфігурації)`,storageUsageSystem:`система`,storageUsageData:`Дані`,storageUsageUnavailable:`Інформація про використання сховища недоступна`,clearNotificationLogsDescription:`Видалити журнали сповіщень старші 30 днів`,resetUiPreferencesDescription:`Скинути порядок бічної панелі, тему, режими перегляду та параметри макета. Принтери, архіви та налаштування не впливають.`,enableHomeAssistant:`Увімкнути Home Assistant`,enableMqtt:`Увімкнути MQTT`,useTls:`Використовуйте TLS`,enableMetricsEndpoint:`Увімкнути кінцеву точку показників`,availableMetrics:`Доступні показники`,editUser:`Редагувати користувача`,deleteUserTitle:`Видалити користувача`,groupName:`Назва групи`,leaveEmptyForAnonymous:`Залиште порожнім для анонімного`,leaveEmptyForNoAuth:`Залиште порожнім, щоб не було автентифікації`,enterNewPassword:`Введіть новий пароль`,confirmNewPassword:`Підтвердити новий пароль`,enterGroupName:`Введіть назву групи`,enterDescriptionOptional:`Введіть опис (необов’язково)`,enterCurrentPassword:`Введіть поточний пароль`,enterNewPasswordMin6:`Введіть новий пароль (мінімум 6 символів)`,toast:{keyCopied:`Ключ скопійовано в буфер обміну`,copyFailed:`Не вдалося скопіювати ключ`,keyAddedToBrowser:`Ключ додано в браузер API.`,clearLogsFailed:`Не вдалося очистити журнали`,uiPreferencesReset:`UI налаштування скинуто. Оновлення...`,authDisabled:`Автентифікацію успішно вимкнено`,authDisableFailed:`Не вдалося вимкнути автентифікацію`,apiKeyCreated:`Ключ API створено`,apiKeyDeleted:`Ключ API видалено`,userCreated:`Користувача створено успішно`,userUpdated:`Користувача успішно оновлено`,userDeleted:`Користувача успішно видалено`,groupCreated:`Групу створено успішно`,groupUpdated:`Групу успішно оновлено`,groupDeleted:`Групу успішно видалено`,fillRequiredFields:`Будь ласка, заповніть усі необхідні поля`,passwordsDoNotMatch:`Паролі не збігаються`,passwordTooShort:`Пароль має бути не менше 8 символів`,passwordNeedsUppercase:`Пароль має містити принаймні одну велику літеру`,passwordNeedsLowercase:`Пароль має містити принаймні одну малу літеру`,passwordNeedsDigit:`Пароль має містити хоча б одну цифру`,passwordNeedsSpecial:`Пароль повинен містити хоча б один спеціальний символ`,enterGroupName:`Будь ласка, введіть назву групи`,settingsSaved:`Налаштування збережено`,noPermissionUpdate:`Ви не маєте дозволу змінювати налаштування`,cameraSettingsSaved:`Налаштування камери збережено`,enterCameraUrl:`Будь ласка, введіть камеру URL`,passwordChanged:`Пароль успішно змінено`,connectionFailed:`Помилка підключення`,testFailed:`Тест не вдалося`,cameraConnected:`Камера підключена{{resolution}}`,cameraConnectedCoalesced:`Камера підключена{{resolution}} (спільно з уже виконуваним захопленням)`},testConnection:`Тестове підключення`,catalog:{spoolCatalog:`Каталог котушок`,spoolCatalogDescription:`Вага порожніх котушок за брендом і типом. Використовується для автоматичного пошуку ваги під час додавання котушок.`,searchCatalog:`Пошук у каталозі...`,addNewEntry:`Додати новий запис`,namePlaceholder:`Назва (наприклад, Bambu Lab - пластик)`,weight:`вага`,type:`Тип`,default:`За замовчуванням`,custom:`Власний`,noMatch:`Немає записів, що відповідають вашому пошуку`,empty:`Немає записів у каталозі`,deleteEntry:`Видалити запис`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"?`,resetCatalog:`Скинути каталог`,resetConfirm:`Скинути каталог до стандартних? Це видалить усі спеціальні записи.`,loadFailed:`Не вдалося завантажити каталог котушок`,nameWeightRequired:`Назва й маса обов’язкові`,entryAdded:`Запис додано`,addFailed:`Не вдалося додати запис`,entryUpdated:`Запис оновлено`,updateFailed:`Не вдалося оновити запис`,entryDeleted:`Запис видалено`,deleteFailed:`Не вдалося видалити запис`,resetSuccess:`Каталог відновлено до типових значень`,resetFailed:`Не вдалося скинути каталог`,exported:`Експортовано записів: {{count}}`,imported:`Імпортовано: {{added}}; пропущено: {{skipped}}`,importFailed:`Не вдалося імпортувати: недійсний формат JSON.`,exportTooltip:`Експортувати каталог до JSON`,importTooltip:`Імпорт каталогу з JSON`,resetTooltip:`Відновити налаштування за замовчуванням`,selectedCount:`Вибрано: {{count}}`,deleteSelected:`Видалити вибране`,bulkDeleteConfirm:`Видалити вибрані записи ({{count}})?`,bulkDeleted:`Видалено записів: {{count}}`,bulkDeleteFailed:`Не вдалося видалити записи`,material:`матеріал`,spoolWeight:`Вага котушки`,color:`Колір`,updateSpoolWeight:`Оновити вагу котушки`,filamentUpdated:`Філамент оновлено`,filamentUpdateFailed:`Не вдалося оновити філамент`,filamentUpdateInvalid:`Недійсні дані філаменту`,keepExistingSpoolWeight:`Зберегти попередню вагу для наявних котушок`,keepExistingSpoolWeightDesc:`Котушки, створені з цим типом філаменту, зберігають стару вагу тари. Нові котушки використовують оновлене значення.`,applyToAllSpools:`Застосувати до всіх котушок`,applyToAllSpoolsDesc:`Усі розрахунки ваги для цього типу філаменту одразу використовують нову вагу тари.`},colorCatalog:{title:`Каталог кольорів`,description:`Кольори філаменту за виробником і матеріалом. Використовується для автоматичного пошуку кольору під час додавання котушок.`,searchColors:`Пошук кольорів...`,allManufacturers:`Усі виробники`,addNewColor:`Додати новий колір`,manufacturer:`Виробник`,colorName:`Назва кольору`,hex:`Hex-код`,materialOptional:`Матеріал (необов’язково)`,showing:`Показано {{filtered}} із {{total}} кольорів`,noMatch:`Жоден колір не відповідає вашому запиту`,empty:`Кольори в каталозі відсутні`,deleteColor:`Видалити колір`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"?`,resetCatalog:`Скинути каталог кольорів`,resetConfirm:`Скинути каталог до стандартних? Це видалить усі власні кольори.`,sync:`Синхронізувати`,starting:`Запуск…`,syncTooltip:`Синхронізація з FilamentColors.xyz (2000+ кольорів, може зайняти хвилину)`,loadFailed:`Не вдалося завантажити каталог кольорів`,fieldsRequired:`Необхідно вказати виробника, назву кольору та шістнадцятковий колір`,colorAdded:`Додано колір`,addFailed:`Не вдалося додати колір`,colorUpdated:`Колір оновлено`,updateFailed:`Не вдалося оновити колір`,colorDeleted:`Колір видалено`,deleteFailed:`Не вдалося видалити колір`,resetSuccess:`Каталог кольорів відновлено до типових значень`,resetFailed:`Не вдалося скинути каталог`,syncUpToDate:`Вже оновлено (кольори {{count}} перевірено)`,syncComplete:`Додано: {{added}}; уже існувало: {{skipped}}`,syncError:`Помилка синхронізації`,syncFailed:`Не вдалося синхронізувати з FilamentColors.xyz`,exported:`Експортовано кольорів: {{count}}`,imported:`Імпортовано: {{added}}; пропущено: {{skipped}}`,importFailed:`Не вдалося імпортувати: недійсний формат JSON.`,selectedCount:`Вибрано: {{count}}`,deleteSelected:`Видалити вибране`,bulkDeleteConfirm:`Ви впевнені, що бажаєте видалити кольори {{count}}?`,bulkDeleted:`Видалено кольорів: {{count}}`,bulkDeleteFailed:`Не вдалося видалити кольори`},dateFormat:`Формат дати`,dateFormatUs:`США (MM/DD/YYYY)`,dateFormatEu:`ЄС (DD/MM/YYYY)`,dateFormatIso:`ISO (РРРР-ММ-ДД)`,timeFormat:`Формат часу`,timeFormat12:`12 годин (15:30)`,timeFormat24:`24 години (15:30)`,defaultPrinter:`Принтер за умовчанням`,defaultPrinterDescription:`Попередньо вибирати цей принтер для вивантажень, повторного друку та інших операцій.`,slicerBambuStudio:`Bambu Studio`,slicerOrcaSlicer:`OrcaSlicer`,sidebarOrderDescription:`Використовуйте бічну панель, щоб змінити порядок елементів, скинути видимість і керувати спеціальними посиланнями.`,setDefault:`Установити за замовчуванням`,sidebarOrderSetDefaultHint:`За замовчуванням застосовує поточний порядок меню до користувачів, які не налаштували свій.`,sidebarDefaultSet:`Встановлено стандартний порядок меню.`,sidebarDefaultCleared:`Порядок меню за замовчуванням видалено.`,sidebarDefaultFailed:`Не вдалося встановити порядок меню за замовчуванням.`,reset:`Скинути`,darkMode:`Темний режим`,lightMode:`Світловий режим`,active:`(активний)`,background:`Фон`,accent:`Акцент`,style:`Стиль`,bgNeutral:`Нейтральний`,bgWarm:`Теплий`,bgCool:`круто`,bgOled:`OLED Чорний`,bgSlate:`Шиферно-блакитний`,bgForest:`Зелений ліс`,accentGreen:`Зелений`,accentTeal:`Чирок`,accentBlue:`Синій`,accentOrange:`Помаранчевий`,accentPurple:`Фіолетовий`,accentRed:`Червоний`,styleClassic:`класичний`,styleGlow:`Світіння`,styleVibrant:`Яскравий`,themeToggleHint:`Перемикайтеся між темним, світлим і системним режимами за допомогою значка на бічній панелі.`,progressInTitle:`Прогрес у вкладці`,progressInTitleDescription:`Показує відсоток активного друку та кільце прогресу на вкладці браузера.`,autoArchivePrints:`Автоматично архівувати друки`,autoArchiveDescription:`Автоматично зберігати файли 3MF після завершення друку`,saveThumbnailsDescription:`Витягніть і збережіть зображення попереднього перегляду з файлів 3MF.`,captureFinishPhotoDescription:`Зробіть фотографію з камери принтера після завершення друку. Bambuddy записує короткий проміжок часу під час друку, щоб фотографію можна було отримати з моменту, коли стіл опускається; файл уповільненої зйомки зберігається, якщо ви ввімкнули уповільнену зйомку для цього друку, інакше він автоматично видаляється після зйомки фотографії.`,finishPhotoRestorePlate:`Піднімати стіл для фінального знімка`,finishPhotoRestorePlateDescription:`Після завершення друку принтер опускає стіл приблизно на 100 мм, і готова модель опиняється нижче кадру камери. Bambuddy піднімає стіл назад трохи вище останнього надрукованого шару, робить знімок і знову опускає його. Пропускається, якщо висота друку невідома або в черзі є інше завдання.`,ffmpegNotInstalled:`ffmpeg не встановлено`,ffmpegRequired:`Для зйомки камерою потрібен ffmpeg. Встановіть його за допомогою brew install ffmpeg (macOS) або apt install ffmpeg (Linux).`,camera:`Камера`,cameraViewMode:`Режим перегляду камери`,cameraOverlayDescription:`Камера відкривається в накладці зі змінним розміром на головному екрані`,cameraWindowDescription:`Камера відкривається в окремому вікні браузера`,externalCamerasDescription:`Налаштуйте зовнішні камери замість вбудованої камери принтера. Підтримує потоки MJPEG, знімки RTSP, HTTP і камери USB (V4L2). Якщо ввімкнено, зовнішня камера використовується для перегляду в реальному часі та готових фотографій.`,cameraPlaceholderUsb:`Шлях пристрою (/dev/video0)`,cameraPlaceholderUrl:`Камера URL (rtsp://... або http://...)`,cameraTypeMjpeg:`Потік MJPEG`,cameraTypeRtsp:`RTSP Потік`,cameraTypeSnapshot:`HTTP Знімок`,cameraTypeUsb:`USB Камера (V4L2)`,cameraSnapshotUrl:`URL знімка (необов’язково)`,cameraSnapshotUrlPlaceholder:`http://192.168.1.61:1984/api/frame.jpeg?src=printer`,cameraSnapshotUrlHelp:`Одиночний кадр URL використовується для ескізів сповіщень, фінішних фотографій, шарових кадрів уповільненої зйомки та виявлення пластин. Уповільнена зйомка та виявлення пластин потребують окремого перемикача для кожного принтера — це URL є лише джерелом зображення, з якого вони беруть участь, коли активні. Залиште поле порожнім для запису з прямої трансляції вище. Корисно для камер go2rtc (/api/frame.jpeg) і IP із спеціальною кінцевою точкою знімка.`,cameraRotation:`Обертання`,test:`Тест`,connected:`Підключено`,disconnected:`Відключено`,currency:`Валюта`,defaultFilamentCost:`Вартість філаменту за замовчуванням (за кг)`,electricityCost:`Вартість електроенергії за kWh`,energyDisplayMode:`Режим відображення енергії`,energyModePrintDescription:`Інформаційна панель показує суму енергії, використаної під час друку`,energyModeTotalDescription:`На приладовій панелі показано енергію від розумних розеток протягом усього терміну служби`,fileManager:`Менеджер файлів`,createArchiveEntry:`Створити архівний запис під час друку`,createArchiveEntryDescription:`Під час друку з диспетчера файлів можна додатково створити запис архіву`,lowDiskSpaceWarning:`Попередження про брак місця на диску`,lowDiskSpaceDescription:`Показувати попередження, коли вільний простір на диску стає нижче цього порогу`,printerFirmware:`Прошивка принтера`,checkFirmwareDescription:`Перевірте наявність оновлень прошивки принтера від Bambu Lab`,bambuddySoftware:`Bambuddy Програмне забезпечення`,autoCheckDescription:`Автоматично перевіряти наявність нових версій під час запуску`,checkNow:`Перевір зараз`,updateAvailableVersion:`Доступне оновлення: v{{version}}`,releaseNotes:`Примітки до випуску`,updateViaDocker:`Оновити через Docker Написати:`,composeDirectory:`Каталог Compose`,composeDirectoryHint:`Каталог із вашим docker-compose.yml. Залиште порожнім, щоб не додавати cd.`,copyUpdateCommand:`Скопіювати команду оновлення`,updateViaHomeAssistant:`Оновленнями керує супервізор Home Assistant. Відкрийте «Налаштування» → «Додатки» → Bambuddy у Home Assistant, щоб установити нову версію.`,updateViaWindowsInstaller:`Інсталяції Windows оновлюються шляхом повторного запуску інсталятора. Завантажте нову версію нижче — ваші дані, налаштування та принтери збережуться.`,downloadWindowsInstaller:`Завантажити інсталятор для v{{version}}`,installUpdate:`Встановити оновлення`,latestVersionRunning:`Ви використовуєте останню версію`,failedToCheckUpdates:`Не вдалося перевірити наявність оновлень: {{error}}`,backupRestore:`Резервне копіювання та відновлення`,backupRestoreDescription:`Експорт /import налаштувань і конфігурація GitHub резервного копіювання`,goToBackup:`Перейдіть до Резервного копіювання`,externalUrl:`Зовнішній URL`,externalUrlDescription:`Зовнішній URL, де Bambuddy доступний. Використовується для зображень сповіщень і зовнішньої інтеграції.`,bambuddyUrl:`Bambuddy URL`,externalUrlHint:`Включити протокол і порт (наприклад, http://192.168.1.100:8000)`,ftpRetry:`FTP Спробуйте ще раз`,ftpRetryDescription:`Повторювати операції FTP за ненадійного Wi-Fi принтера. Застосовується до завантаження 3MF і таймлапсів, вивантаження завдань друку та оновлення прошивки.`,autoRetryDescription:`Автоматично повторити невдалі операції FTP.`,retryAttempts:`Повторні спроби`,retryDelay:`Затримка повторної спроби`,connectionTimeout:`Час очікування підключення`,time_one:`час {{count}}.`,time_other:`{{count}} разів`,second_one:`{{count}} секунда`,second_other:`{{count}} секунд`,nSeconds:`{{count}} секунд`,increaseForWeakWifi:`Підвищення для принтерів із слабким WiFi`,homeAssistant:`Home Assistant`,homeAssistantFullDescription:`Підключіться до Home Assistant, щоб керувати розумними розетками через REST API HA. Підтримує об’єкти switch, light, input_boolean і script.`,homeAssistantUrl:`Home Assistant URL`,longLivedAccessToken:`Довгостроковий токен доступу`,haTokenHint:`Створіть токен у HA: Профіль → Довгострокові токени доступу → Створити токен`,connectionSuccessful:`Підключення успішне`,connectionFailed:`Збій підключення`,haConnectionSuccess:`Успішно підключено до Home Assistant.`,haConnectionFailed:`Не вдалося підключитися до Home Assistant.`,mqttPublishing:`MQTT Видавництво`,mqttDescription:`Публікуйте події BamBuddy зовнішньому брокеру MQTT для інтеграції з Node-RED, Home Assistant та іншими системами автоматизації.`,mqttEnableDescription:`Публікувати події зовнішньому MQTT брокеру`,brokerHostname:`Ім’я хоста брокера`,port:`Порт`,usernameOptional:`Ім’я користувача (необов’язково)`,passwordOptional:`Пароль (необов’язково)`,topicPrefix:`Префікс теми`,topicPrefixHint:`Теми будуть: {{prefix}}/printers//status тощо.`,prometheusMetrics:`Prometheus Метрики`,prometheusEndpointDescription:`Показати показники принтера на /api/v1/metrics для моніторингу Prometheus/Grafana.`,bearerTokenOptional:`Токен Bearer (необов’язково)`,bearerTokenHint:`Якщо встановлено, запити мають містити Авторизація: носій `,metricsConnectionStatus:`Статус підключення`,metricsPrinterState:`Стан принтера (неактивний /printing/etc)`,metricsPrintProgress:`Прогрес друку 0-100%`,metricsBedTemp:`Температура столу`,metricsNozzleTemp:`Температура сопла`,metricsPrintsTotal:`Загальна кількість друків за результатами`,metricsMore:`...і багато іншого (шари, вентилятори, черга, використання філаментів)`,smartPlugsDescription:`Підключіть розумні розетки (Tasmota або Home Assistant), щоб автоматизувати керування живленням і відстежувати споживання електроенергії вашими принтерами.`,allOn:`Все включено`,allOff:`Все вимкнено`,addSmartPlug:`Додати розумну розетку`,energySummary:`Відновити енергетики`,currentPower:`Поточна потужність`,plugsOnline:`Розумні розетки в мережі: {{reachable}}/{{total}}`,today:`Сьогодні`,yesterday:`вчора`,total:`Всього`,enablePlugsForSummary:`Увімкніть розетки, щоб переглянути підсумок енергії`,addNotificationProvider:`додати`,systemBadge:`(Система)`,creating:`Створення...`,changing:`Зміна...`,deleteUserAndItems:`Видалити користувача ТА його елементи`,deleteUserKeepItems:`Видалити користувача, зберегти елементи (стати без власника)`,ok:`добре`,twoFa:{totpTitle:`Програма Authenticator (TOTP)`,totpDesc:`Використовуйте програму автентифікації, наприклад Google Authenticator Aegis або Authy.`,emailOtpTitle:`Одноразовий код електронною поштою`,emailOtpDesc:`Надішліть одноразовий код на {{email}} під час входу.`,emailOtpNoEmail:`Щоб увімкнути цей метод, додайте адресу електронної пошти до свого облікового запису.`,addEmailFirst:`У вашому обліковому записі немає адреси електронної пошти. Попросіть адміністратора додати її, перш ніж вмикати одноразові коди електронною поштою.`,setupTotp:`Налаштувати додаток Authenticator`,setupAuthApp:`Налаштувати додаток Authenticator`,setupInstructions:`Відскануйте наведений нижче QR-код за допомогою програми автентифікації, а потім підтвердьте кодом.`,manualEntry:`Не можете сканувати? Введіть цей секрет вручну:`,scannedContinue:`Код відскановано — продовжити`,enterCodeToConfirm:`Введіть 6-значний код із програми автентифікації, щоб підтвердити налаштування.`,activate:`Активувати`,disableTotp:`Вимкнути автентифікатор`,disableConfirmHint:`Введіть дійсний код TOTP або резервний код, щоб вимкнути автентифікатор.`,totpDisabled:`Програму Authenticator вимкнено.`,emailOtpEnabled:`Одноразові коди електронною поштою ввімкнено.`,emailOtpDisabled:`Одноразові коди електронною поштою вимкнено.`,smtpRequired:`Спочатку налаштуйте та перевірте параметри SMTP.`,invalidCode:`Невірний код. Спробуйте ще раз.`,enableEmailOtp:`Увімкнути одноразові коди електронною поштою`,disableEmailOtp:`Вимкнути одноразові коди електронною поштою`,emailSetupEnterCode:`Код підтвердження надіслано на вашу адресу електронної пошти. Введіть його нижче, щоб підтвердити доступ до цієї поштової скриньки.`,verifyAndEnable:`Перевірити й увімкнути`,emailDisablePasswordHint:`Введіть пароль свого облікового запису, щоб підтвердити вимкнення OTP електронної пошти.`,passwordPlaceholder:`Введіть свій пароль`,backupCodesTitle:`Зберегти резервні коди`,backupCodesWarning:`Збережіть ці коди в безпечному місці. Кожен код можна використати лише один раз, і він більше не відображатиметься.`,backupCodesRemaining:`Залишилося резервних кодів: {{count}}`,savedCodes:`Я зберіг свої коди`,regenBackup:`Створити нові резервні коди`,regenBackupHint:`Введіть поточний код TOTP, щоб створити 10 нових резервних кодів. Усі існуючі резервні коди стануть недійсними.`,newBackupCodes:`Нові резервні коди`,linkedAccounts:`Пов’язані облікові записи SSO.`,linkedAccountsDesc:`Ці зовнішні постачальники ідентифікаційної інформації пов’язані з вашим обліковим записом.`,oidcUnlinked:`Обліковий запис від’єднано.`},sessionPolicy:{title:`Політика сеансу`,description:`Максимальна тривалість сеансу для входу нових користувачів. Уже випущені токени зберігають початковий термін дії.`,preset24h:`24 години`,preset7d:`7 днів`,preset30d:`30 днів`,customHoursLabel:`Тривалість користувацького сеансу в годинах`,hoursSuffix:`години`,warning:`Довші сеанси знижують захист від автоматичного виходу. Рекомендовано лише для надійних розгортань для одного користувача.`},oidc:{title:`Постачальники SSO / OIDC`,desc:`Налаштуйте постачальників OpenID Connect, щоб дозволити єдиний вхід через зовнішніх постачальників ідентифікації.`,addProvider:`Додати постачальника`,newProvider:`Новий постачальник`,empty:`Постачальників OIDC ще не налаштовано.`,created:`Постачальник створено.`,updated:`Постачальника оновлено.`,deleted:`Постачальника видалено.`,refreshIcon:`Значок оновлення`,removeIcon:`Видалити значок`,iconRefreshed:`Значок оновлено.`,iconRemoved:`Значок видалено.`,iconFetchFailed:`Не вдалося отримати значок за URL постачальника.`,deleteTitle:`Видалити постачальника`,deleteMessage:`Видалити «{{name}}»? Усі пов’язані облікові записи користувачів буде від’єднано.`,form:{name:`Відображуване ім’я`,issuerUrl:`URL емітента`,clientId:`ID клієнта`,clientSecret:`Секрет клієнта`,scopes:`Області доступу`,iconUrl:`URL значка (необов’язково)`,enabled:`Увімкнено`,autoCreate:`Автоматичне створення користувачів`,autoCreateDesc:`Автоматично створювати локальний обліковий запис під час першого входу.`,autoLink:`Автоматичне пов’язування наявних облікових записів`,autoLinkDesc:`Автоматично пов’язувати наявні локальні облікові записи за збігом адреси електронної пошти під час першого входу.`,secretHint:`залиште порожнім, щоб зберегти поточне значення`,secretPlaceholder:`новий секрет`,emailClaim:`Поле електронної пошти`,emailClaimDesc:`Поле JWT, що використовується як адреса електронної пошти. Для Azure Entra ID, який не надсилає email_verified, використовуйте preferred_username або upn. Указуйте лише назви надійних полів.`,emailClaimPlaceholder:`email`,emailClaimCustomClaimAutoLinkWarning:`Власне поле можна безпечно використовувати для автоматичного пов’язування, лише якщо його значенням керує адміністратор організації, наприклад upn або preferred_username в Azure Entra ID. Не вмикайте автоматичне пов’язування, якщо IdP дозволяє користувачам самостійно задавати це поле.`,requireEmailVerified:`Вимагати підтвердження електронної пошти`,requireEmailVerifiedDesc:`Приймати поле електронної пошти лише тоді, коли постачальник позначив адресу як підтверджену.`,requireEmailVerifiedWarning:`Попередження: адресу електронної пошти буде прийнято навіть без підтвердження. Використовуйте це лише з надійними постачальниками.`,requireEmailVerifiedAutoLink:`Щоб змінити це налаштування, спочатку вимкніть автоматичне пов’язування.`,defaultGroup:`Група за замовчуванням`,defaultGroupDesc:`Група, яку призначають автоматично створеним користувачам. Якщо її не задано, використовується група «Глядачі».`,defaultGroupViewersFallback:`Глядачі (за замовчуванням)`,autologin:`Автовхід`,autologinDesc:`Одразу перенаправляти неавтентифікованих відвідувачів до цього постачальника. Автоматичний вхід можна ввімкнути лише для одного постачальника.`}},encryption:{title:`Стан шифрування MFA`,enabledFromEnv:`Шифрування даних у сховищі ввімкнено — ключ отримано зі змінної середовища MFA_ENCRYPTION_KEY`,enabledFromFile:`Шифрування даних у сховищі ввімкнено — ключ завантажено з каталогу даних`,enabledGenerated:`Шифрування даних у сховищі ввімкнено з автоматично створеним ключем`,notConfigured:`Шифрування даних у сховищі не налаштовано`,notConfiguredDesc:`Секрети TOTP і client_secret постачальників OIDC зберігаються як відкритий текст. Установіть MFA_ENCRYPTION_KEY або перезапустіть Bambuddy з доступним для запису каталогом даних, щоб ключ було створено автоматично.`,allEncrypted:`Усі секрети MFA зашифровано у сховищі.`,legacyRowsLabel:`Застарілі рядки відкритого тексту`,encryptedRowsLabel:`Зашифровані рядки`,legacyRowsWarning:`Виявлено незашифрованих застарілих записів: {{count}}. Повторно збережіть постачальника OIDC або заново зареєструйте застосунок автентифікації користувача, щоб перенести дані до зашифрованого сховища.`,backupHint:`Автоматично згенерований ключ зберігається в DATA_DIR/.mfa_encryption_key і включено до локальних резервних ZIP-файлів. Зберігайте свої резервні копії в безпеці або явно встановіть MFA_ENCRYPTION_KEY.`,decryptionBrokenTitle:`Відсутній ключ шифрування`,decryptionBrokenError:`Не вдається розшифрувати записів: {{count}}, оскільки ключ шифрування більше недоступний. Для відновлення поверніть попередній MFA_ENCRYPTION_KEY або DATA_DIR/.mfa_encryption_key.`,migrationErrorWarning:`{{count}} застарілих рядків не вдалося повторно зашифрувати під час запуску. Перевірте журнали сервера та перезапустіть Bambuddy, щоб повторити спробу.`},pipelineLimits:{title:`Межі конвеєра слайсера`,maxCopiesLabel:`Максимальна кількість копій за один запуск`,maxCopiesDesc:`Верхня межа копій, які оператори можуть запитувати під час запуску конвеєра. Обмеження на стороні сервера становить 1000.`},pipelines:{title:`Конвеєри слайсера`,subtitle:`Багаторазові набори профілів — принтер, процес, філаменти й тип столу. Збережіть набір у вікні нарізання та застосовуйте його до наступного файлу одним натисканням.`,loading:`Завантаження конвеєрів…`,loadError:`Не вдалося завантажити конвеєри.`,confirmDelete:`Видалити цей конвеєр? Це неможливо скасувати.`,staleWarning:`Одного або кількох пов’язаних профілів більше не існує. Щоб виправити це, повторно збережіть конвеєр у вікні нарізання.`,empty:{title:`Конвеєрів ще немає.`,howto:`Відкрийте вікно нарізання для будь-якого файлу, виберіть принтер, процес, філаменти й тип столу, а потім натисніть «Зберегти як конвеєр». Збережені конвеєри з’являться тут.`},field:{name:`Назва конвеєра`,description:`опис`,targetPrinter:`Цільовий принтер`,noTarget:`— Немає цілі —`,targetKind:`Цільовий тип`,targetKindSpecific:`Конкретний принтер`,targetKindClass:`Клас принтера`,targetModelClass:`Модель принтера`,fanoutStrategy:`Стратегія розподілу`,fanout:{max_parallel:`Максимально паралельно — розподіляти між усіма відповідними вільними принтерами`,round_robin:`По колу — почергово використовувати відповідні принтери`,fill_one_first:`Спочатку один принтер — призначити всі копії одному принтеру`},fanoutShort:{max_parallel:`паралельний`,round_robin:`по колу`,fill_one_first:`спочатку один`}},action:{save:`зберегти`,cancel:`Скасувати`,rename:`Перейменувати`,delete:`Видалити`},slot:{printer:`Принтер`,process:`процес`,filament:`Філамент`,filamentN:`Філамент {{n}}`,filamentAll:`Усі {{n}} слотів`,bed:`Стіл`},group:{profiles:`Профілі`,filaments:`філаменти`},searchPlaceholder:`Шукати конвеєри…`,filterTargetType:`Фільтрувати за типом цілі`,filterTarget:`Фільтрувати за ціллю`,filter:{all:`Всі цілі`,noTarget:`Ціль не встановлена`,count:`{{shown}} / {{total}}`,noMatches:`Жоден конвеєр не відповідає поточним фільтрам.`},toast:{saved:`Конвеєр збережено`,saveFailed:`Не вдалося зберегти`,deleted:`Конвеєр видалено`,deleteFailed:`Не вдалося видалити`},noTargetHint:`Щоб запустити конвеєр, виберіть цільовий принтер`,noTargetWarning:`Перед запуском цього конвеєра встановіть цільовий принтер.`,runs:{lastRun:`Останній запуск`,status:{queued:`в черзі`,slicing:`нарізка`,dispatching:`надсилання`,in_progress:`друк`,completed:`завершено`,failed:`не вдалося`,partial_failure:`частково невдало`,cancelled:`скасовано`}}}},notification:{printStarted:{title:`Друк розпочато`,body:`{{printer}}: розпочато друк {{filename}}`},printCompleted:{title:`Друк завершено`,body:`{{printer}}: {{filename}} завершено успішно`},printFailed:{title:`Помилка друку`,body:`{{printer}}: не вдалося надрукувати {{filename}}`},printStopped:{title:`Друк зупинено`,body:`{{printer}}: {{filename}} було зупинено`},printProgress:{title:`Перебіг друку`,body:`{{printer}}: {{filename}} виконано {{percent}}%.`},printerOffline:{title:`Принтер не в мережі`,body:`{{printer}} не в мережі`},printerError:{title:`Помилка принтера`,body:`{{printer}}: {{error}}`},filamentLow:{title:`Закінчується філамент`,body:`{{printer}}: філамент майже закінчився`},maintenanceDue:{title:`Технічне обслуговування`,body:`{{printer}}: потрібна увага — {{items}}`}},errors:{generic:`Щось пішло не так`,networkError:`Помилка мережі. Перевірте підключення.`,notFound:`Не знайдено`,unauthorized:`Доступ не авторизовано`,serverError:`Помилка сервера`,validationError:`Перевірте введені дані`,printerConnectionFailed:`Не вдалося підключитися до принтера`,saveFailed:`Не вдалося зберегти зміни`,deleteFailed:`Не вдалося видалити`,loadFailed:`Не вдалося завантажити дані`},hmsErrors:{title:`Помилки - {{name}}`,noErrors:`Помилок немає`,viewOnWiki:`Переглянути на Bambu Lab Wiki`,mqttVerifyFailedRemedy:`Увімкніть режим розробника на принтері, перезавантажте принтер і запустіть завдання знову.`,unknownCode:`Невідомий код HMS — подробиці дивіться у вікі Bambu Lab.`,clearInstructions:`Усуньте помилки на принтері, щоб вони зникли тут.`,clearErrors:`Очистити помилки`,clearSuccess:`Помилки HMS видалено`,clearFailed:`Не вдалося видалити помилки HMS`,actionSuccess:`Команду надіслано принтеру`,actionFailed:`Не вдалося надіслати дію`,runoutExpectedSlot:`Філамент закінчився в {{ranOut}}. Тепер принтер очікує сумісний філамент у {{expected}}. Вставте котушку в {{expected}}, а потім виберіть «Повторити».`,runoutExpectedSlotOnly:`Принтер очікує сумісний філамент у {{expected}}. Вставте туди котушку, а потім виберіть «Повторити».`,runoutSlotUnknown:`Філамент закінчився, тому друк призупинено. Bambuddy не може визначити, якого слота тепер очікує принтер — перевірте екран принтера.`,actions:{RESUME_PRINTING:`Відновити друк`,RESUME_PRINTING_DEFECTS:`Відновити (допустимі недоліки)`,RESUME_PRINTING_PROBELM_SOLVED:`Відновити (проблему вирішено)`,STOP_PRINTING:`Зупинити друк`,CHECK_ASSISTANT:`Перевірити помічника`,FILAMENT_EXTRUDED:`Філамент екструдовано — продовжити`,RETRY_FILAMENT_EXTRUDED:`Ще не екструдовано — повторити`,CONTINUE:`Готово, продовжити`,LOAD_VIRTUAL_TRAY:`Завантажити філамент`,OK_BUTTON:`OK`,FILAMENT_LOAD_RESUME:`Філамент завантажено, відновити`,JUMP_TO_LIVEVIEW:`Перейти до перегляду наживо`,NO_REMINDER_NEXT_TIME:`Більше не нагадувати`,REFRESH_NOZZLE:`Перевірити знову`,IGNORE_NO_REMINDER_NEXT_TIME:`Ігнорувати. Не нагадувати наступного разу`,IGNORE_RESUME:`Ігнорувати й відновити друк`,PROBLEM_SOLVED_RESUME:`Проблему вирішено — відновити друк`,TURN_OFF_FIRE_ALARM:`Зрозуміло, вимкнути пожежну сигналізацію`,RETRY_PROBLEM_SOLVED:`Повторити (проблему вирішено)`,CANCLE:`Скасувати`,STOP_DRYING:`Зупинити сушіння`,PROCEED:`Продовжити`,OK_JUMP_RACK:`OK`,ABORT:`Перервати`,DISABLE_PURIFICATION:`Вимкнути очищення для цього друку`,DONT_REMIND_NEXT_TIME:`Більше не нагадувати`,DBL_CHECK_CANCEL:`Скасувати`,DBL_CHECK_DONE:`Готово`,DBL_CHECK_RETRY:`Повторити`,DBL_CHECK_RESUME:`Відновити`,DBL_CHECK_OK:`Підтвердити`,REMOVE_CLOSE_BTN:`Закрити`}},mqttDebug:{title:`Журнал налагодження MQTT`,searchPlaceholder:`Шукати тему або корисне навантаження…`,noMessages:`Ще не зареєстровано жодного повідомлення`,startLoggingHint:`Натисніть «Почати журналювання», щоб розпочати запис MQTT повідомлень`,noMessagesMatch:`Жодне повідомлення не відповідає вашому фільтру`,adjustFilterHint:`Спробуйте змінити критерії пошуку або фільтра`,incoming:`Вхідні`,outgoing:`Вихідні`,loggingStopped:`Запис припинено`,loggingActive:`Логування активне – повідомлення автоматично оновлюватимуться`,startLogging:`Розпочати журналювання`,stopLogging:`Зупинити журналювання`,clearLog:`Очистити журнал`,topic:`Тема`,timestamp:`Мітка часу`,direction:`Напрямок`,all:`Усі`},printerFiles:{zipStarted_one:`Розпочато завантаження ZIP для {{count}} файлу`,zipStarted_other:`Розпочато завантаження ZIP для {{count}} файлів`,zipPartial:`Розпочато завантаження ZIP із {{successful}} з {{total}} файлів; решту отримати не вдалося`,downloadFailed:`Помилка завантаження: {{error}}`,unknownError:`Невідома помилка`,shiftSelectHint:`Клацніть із Shift, щоб вибрати діапазон`,selectFile:`Вибрати {{name}}`,deselectFile:`Зняти вибір із {{name}}`,title:`Менеджер файлів`,storageUsed:`Використовується:`,storageFree:`Вільно:`,filterPlaceholder:`Фільтр файлів...`,deleteButton:`Видалити`,deleteFiles:`Видалити файли {{count}}.`,deleteFileConfirm:`Видалити "{{name}}"? Це неможливо скасувати.`,deleteFilesConfirm:`Видалити вибрані файли {{count}}? Це неможливо скасувати.`,noFiles:`Немає файлів на принтері`,printerUnavailable:`Файлова служба принтера недоступна. Повторіть спробу, коли принтер буде доступний.`,loadingFiles:`Завантаження файлів...`,failedToLoad:`Не вдалося завантажити файли`,toast:{filesDeleted:`Видалено файлів: {{count}}`,deleteFailed:`Не вдалося видалити: {{error}}`}},confirm:{delete:`Ви впевнені, що хочете це видалити?`,unsavedChanges:`У вас є незбережені зміни. Ви впевнені, що хочете піти?`,clearQueue:`Ви впевнені, що бажаєте очистити чергу?`},login:{title:`Вхід у Bambuddy`,subtitle:`Увійти у свій обліковий запис`,username:`Ім’я користувача`,usernamePlaceholder:`Введіть своє ім’я користувача`,usernameOrEmail:`Ім’я користувача або електронна пошта`,usernameOrEmailPlaceholder:`Ім’я користувача або електронна пошта`,password:`Пароль`,passwordPlaceholder:`Введіть свій пароль`,signIn:`Увійти`,signingIn:`Вхід...`,rememberMe:`Запам’ятати мене`,forgotPassword:`Забули пароль?`,autologinFailed:`Помилка автоматичного входу SSO. Щоб продовжити, виберіть постачальника нижче.`,localDisabledNotice:`Локальний вхід вимкнено. Використовуйте одного з наведених нижче постачальників SSO.`,loginSuccess:`Успішно ввійшли`,loginFailed:`Помилка входу`,enterCredentials:`Будь ласка, введіть ім’я користувача та пароль`,enterEmail:`Будь ласка, введіть адресу електронної пошти`,oidcLoginFailed:`Не вдалося ввійти через OIDC`,oidcErrors:{providerError:`Постачальник ідентифікації повернув помилку`,missingParameters:`У зворотному виклику OIDC відсутні необхідні параметри`,invalidState:`Стан OIDC недійсний або вже використовувався`,stateExpired:`OIDC сеанс входу закінчився — спробуйте ще раз`,providerNotFound:`OIDC постачальника не знайдено`,discoveryFailed:`Не вдалося отримати документ конфігурації OIDC`,invalidDiscovery:`Документ конфігурації OIDC недійсний`,networkError:`Помилка мережі під час обміну токена OIDC`,badResponse:`Неочікувана відповідь під час обміну токеном OIDC.`,noIdToken:`Постачальник OIDC не повернув ID-токен`,validationFailed:`Не вдалося перевірити токен OIDC`,nonceMismatch:`Не збігається nonce OIDC — можлива атака повторного використання`,missingSubClaim:`У токені OIDC відсутнє поле sub`,noLinkedAccount:`Із цим ідентифікатором OIDC не пов’язано жодного локального облікового запису`,accountInactive:`Ваш акаунт неактивний`,userResolutionFailed:`Не вдалося визначити ваш обліковий запис`,internalError:`Під час входу в систему OIDC сталася внутрішня помилка`,tokenExchangeFailed:`Помилка обміну токеном OIDC.`},forgotPasswordTitle:`Забули пароль`,forgotPasswordMessage:`Якщо ви забули свій пароль, зверніться до системного адміністратора, щоб скинути його.`,forgotPasswordEmailMessage:`Введіть адресу електронної пошти, і ми надішлемо вам новий пароль.`,emailAddress:`Адреса електронної пошти`,emailPlaceholder:`your.email@example.com`,cancel:`Скасувати`,sending:`Надсилання...`,sendResetEmail:`Надіслати лист для скидання пароля`,howToReset:`Як скинути пароль:`,resetStep1:`Зверніться до адміністратора Bambuddy.`,resetStep2:`Попросіть скинути ваш пароль у розділі «Керування користувачами»`,resetStep3:`Вони можуть встановити для вас новий тимчасовий пароль`,resetStep4:`Увійдіть із новим паролем і змініть його в налаштуваннях`,gotIt:`Зрозуміло`,resetPassword:{title:`Встановити новий пароль`,subtitle:`Введіть і підтвердьте свій новий пароль нижче.`,newPassword:`Новий пароль`,newPasswordPlaceholder:`Мінімум 8 символів`,confirmPassword:`Підтвердити пароль`,confirmPasswordPlaceholder:`Повторіть новий пароль`,saving:`Збереження…`,submit:`Встановити новий пароль`,backToLogin:`Назад до входу`,passwordsDoNotMatch:`Паролі не збігаються`,passwordTooShort:`Пароль має бути не менше 8 символів`,resetFailed:`Помилка скидання пароля. Можливо, термін дії посилання закінчився.`},twoFA:{title:`Двофакторна автентифікація`,subtitle:`Ваш обліковий запис захищено 2FA. Введіть код підтвердження нижче.`,methodAuthenticator:`Програма автентифікатора`,methodEmail:`Код електронної пошти`,methodBackup:`Резервний код`,instructionsTotp:`Відкрийте програму автентифікації та введіть 6-значний код для Bambuddy.`,instructionsEmail:`На вашу електронну адресу надіслано 6-значний код. Термін дії закінчується через 10 хвилин.`,instructionsEmailNotSent:`Натисніть кнопку нижче, щоб отримати код підтвердження електронною поштою.`,instructionsBackup:`Введіть один із ваших 8-символьних резервних кодів відновлення. Кожен код можна використати лише один раз.`,sendCodeButton:`Надіслати код електронною поштою`,sendingCode:`Надсилання...`,resendCode:`Повторно надіслати код`,codeLabel:`Код підтвердження`,backupCodeLabel:`Резервний код`,codePlaceholder:`000000`,backupCodePlaceholder:`XXXXXXXX`,verifyButton:`Підтвердити`,verifyingButton:`Перевірка...`,backToLogin:`← Назад до входу`,orContinueWith:`або продовжити`,signInWith:`Увійти за допомогою {{provider}}`,enterCode:`Будь ласка, введіть код підтвердження`,sendCodeFailed:`Не вдалося надіслати код підтвердження`,invalidCode:`Невірний код. Спробуйте ще раз.`}},setup:{title:`Налаштування Bambuddy`,subtitle:`Налаштуйте автентифікацію для свого екземпляра Bambuddy.`,enableAuth:`Увімкнути автентифікацію`,adminAccount:`Обліковий запис адміністратора`,adminAccountDesc:`Якщо користувачі-адміністратори вже існують, автентифікацію буде ввімкнено за допомогою наявних облікових записів адміністраторів. Залиште поля нижче порожніми, щоб використовувати наявних адміністраторів, або введіть нові облікові дані, щоб створити нового користувача адміністратора.`,adminUsername:`Ім’я користувача адміністратора`,adminPassword:`Пароль адміністратора`,optionalIfAdminExists:`(необов’язково, якщо є користувачі з правами адміністратора)`,adminUsernamePlaceholder:`Введіть ім’я користувача адміністратора (необов’язково)`,adminPasswordPlaceholder:`Введіть пароль адміністратора (необов’язково)`,confirmPassword:`Підтвердити пароль`,confirmPasswordPlaceholder:`Підтвердити пароль адміністратора`,settingUp:`Налаштування...`,completeSetup:`Завершити налаштування`,toast:{authEnabledAdminCreated:`Увімкнено автентифікацію та створено адміністратора`,authEnabledExistingAdmins:`Увімкнено автентифікацію за допомогою наявних користувачів адміністратора`,setupCompleted:`Налаштування завершено`,enterBothCredentials:`Будь ласка, введіть ім’я користувача та пароль адміністратора або залиште обидва поля порожніми, щоб використовувати наявних користувачів адміністратора`,passwordsDoNotMatch:`Паролі не збігаються`,passwordTooShort:`Пароль має бути не менше 6 символів`}},changePassword:{title:`Змінити пароль`,currentPassword:`Поточний пароль`,currentPasswordPlaceholder:`Введіть поточний пароль`,newPassword:`Новий пароль`,newPasswordPlaceholder:`Введіть новий пароль (мінімум 6 символів)`,confirmPassword:`Підтвердити новий пароль`,confirmPasswordPlaceholder:`Підтвердити новий пароль`,passwordsDoNotMatch:`Паролі не збігаються`,passwordTooShort:`Пароль має бути не менше 6 символів`,changing:`Зміна...`,success:`Пароль успішно змінено`,failed:`Не вдалося змінити пароль`},plateAlert:{title:`Друк призупинено!`,message:`Об’єкти, виявлені на будівельній пластині. Друк було автоматично призупинено. Очистіть пластину та відновіть друк.`,understand:`Я розумію`},camera:{title:`Вид з камери`,invalidPrinterId:`Недійсний ідентифікатор принтера`,live:`Наживо`,snapshot:`знімок`,restartStream:`Перезапустити потік`,refreshSnapshot:`Оновити знімок`,fullscreen:`Повний екран`,exitFullscreen:`Вийти з повноекранного режиму`,connectingToCamera:`Підключення до камери...`,capturingSnapshot:`Зйомка знімка...`,connectionLost:`З’єднання втрачено`,connectionFailed:`Помилка підключення камери`,reconnecting:`Повторне підключення через {{countdown}}с... (спроба {{attempt}}/{{max}})`,reconnectNow:`Повторно підключіться зараз`,cameraUnavailable:`Камера недоступна`,cameraUnavailableDesc:`Переконайтеся, що принтер увімкнено та підключено.`,noCamera:`Камера недоступна`,retry:`Повторити`,cameraStream:`Потік камери`,zoomOut:`Зменшити масштаб`,zoomIn:`Збільшити`,resetZoom:`Скинути масштаб`,recording:`Запис`,startRecording:`Почати запис`,stopRecording:`Зупинити запис`,chamberLight:`Перемкнути освітлення камери`,unavailable:`Камера недоступна`,diagnose:{button:`Діагностувати`,modalTitle:`Діагностика камери`,running:`Виконується діагностика...`,runFailed:`Не вдалося запустити діагностику: {{error}}`,retry:`Запустити знову`,stage:{tcp_reachable:`Доступність мережі`,first_frame:`Захоплення кадру`,live_stream_active:`Активна пряма трансляція`},summary:{all_ok:`Камера працює. Діагностика пройшла всі етапи успішно.`,live_stream_active_healthy:`Камера зараз транслює з останніми кадрами — перевірка не потрібна.`,printer_unreachable:`Принтер недоступний. Перевірте адресу IP, підключення до мережі та чи принтер увімкнено.`,camera_port_closed:`Принтер доступний, але порт камери закритий. Переконайтеся, що в налаштуваннях принтера ввімкнено лише режим LAN і режим розробника.`,no_frame:`Підключено до камери, але кадри не отримано. Повторіть спробу або перевірте, чи камеру ввімкнено в налаштуваннях принтера.`,unknown_failure:`Не вдалося діагностувати камеру з невідомої причини. Подробиці перевірте в журналі підтримки.`},meta:{protocol:`Протокол`,port:`Порт`,profile:`Профіль`}}},groups:{title:`Керування групами`,subtitle:`Керуйте групами дозволів для контролю доступу`,backToSettings:`Назад до налаштувань`,createGroup:`Створити групу`,noPermission:`Ви не маєте дозволу на доступ до цієї сторінки.`,system:`система`,noDescription:`Без опису`,usersCount:`{{count}} користувачів`,permissionsCount:`Дозволів: {{count}}`,edit:`Редагувати`,delete:`Видалити`,toast:{created:`Групу створено успішно`,updated:`Групу успішно оновлено`,deleted:`Групу успішно видалено`,enterGroupName:`Будь ласка, введіть назву групи`},modal:{editGroup:`Редагувати групу`,createGroup:`Створити групу`,cancel:`Скасувати`,saving:`Збереження...`,creating:`Створення...`,saveChanges:`Зберегти зміни`},form:{groupName:`Назва групи`,groupNamePlaceholder:`Введіть назву групи`,systemGroupWarning:`Назви системних груп не можна змінювати`,description:`опис`,descriptionPlaceholder:`Введіть опис (необов’язково)`,permissions:`Дозволи (вибрано {{count}})`},deleteModal:{title:`Видалити групу`,message:`Ви впевнені, що хочете видалити цю групу? Користувачі цієї групи втратять ці дозволи.`,confirm:`Видалити групу`},editor:{title:`Редагувати групу`,createTitle:`Створити групу`,search:`Шукати дозволи...`,selectAll:`Вибрати усі`,clearAll:`Очистити все`,permissionsSelected:`Вибрано: {{count}}`,noResults:`Немає дозволів, що відповідають вашому пошуку`,websocketHint:`Необхідний для оновлень у реальному часі. Без нього інтерфейс повертається до періодичного опитування.`}},users:{title:`Керування користувачами`,subtitle:`Керуйте користувачами та їхнім доступом до вашого екземпляра Bambuddy.`,backToSettings:`Назад до налаштувань`,createUser:`Створити користувача`,noPermission:`Ви не маєте дозволу на доступ до цієї сторінки.`,admin:`адмін`,noGroups:`Немає груп`,active:`Активний`,inactive:`Неактивний`,edit:`Редагувати`,delete:`Видалити`,system:`система`,noGroupsAvailable:`Немає доступних груп`,table:{username:`Ім’я користувача`,groups:`Групи`,status:`Статус`,actions:`Дії`},toast:{created:`Користувача створено успішно`,updated:`Користувача успішно оновлено`,deleted:`Користувача успішно видалено`,fillRequired:`Будь ласка, заповніть усі необхідні поля`,passwordsDoNotMatch:`Паролі не збігаються`,passwordTooShort:`Пароль має бути не менше 6 символів`,ldapProvisioned:`Користувача LDAP «{{username}}» підготовлено`},modal:{createUser:`Створити користувача`,editUser:`Редагувати користувача`,cancel:`Скасувати`,creating:`Створення...`,saving:`Збереження...`,saveChanges:`Зберегти зміни`,advancedAuthSubtitle:`з розширеною автентифікацією`,tabsAriaLabel:`Джерело користувача`,localTab:`Локальний`,ldapTab:`LDAP`,ldapSearchLabel:`Пошук у каталозі`,ldapSearchPlaceholder:`Введіть ім’я користувача, ім’я або електронну адресу...`,ldapMinChars:`Введіть принаймні 2 символи для пошуку`,ldapTypeToSearch:`Почніть вводити текст для пошуку в каталозі LDAP.`,ldapSearching:`Пошук у каталозі...`,ldapNoResults:`У каталозі немає відповідних користувачів`,ldapSearchError:`Помилка пошуку каталогу. Перевірте стан сервера LDAP.`,ldapAlreadyProvisioned:`Уже підготовлено`,ldapSelectedLabel:`Вибране`,ldapProvision:`Підготувати користувача`,ldapProvisioning:`Підготовка...`,ldapErrorProvision:`Не вдалося підготувати користувача. Перевірте стан сервера LDAP і повторіть спробу.`},form:{username:`Ім’я користувача`,usernamePlaceholder:`Введіть ім’я користувача`,email:`Електронна пошта`,emailPlaceholder:`user@example.com`,password:`Пароль`,passwordPlaceholder:`Введіть пароль`,confirmPassword:`Підтвердити пароль`,confirmPasswordPlaceholder:`Підтвердити пароль`,newPasswordPlaceholder:`Введіть новий пароль`,confirmNewPasswordPlaceholder:`Підтвердити новий пароль`,leaveBlankToKeep:`залиште порожнім, щоб зберегти поточне значення`,groups:`Групи`,optional:`необов’язково`,autoGeneratedPassword:`Надійний пароль буде автоматично згенеровано та надіслано користувачеві електронною поштою.`,passwordManagedByAdvancedAuth:`Пароль керується розширеною автентифікацією. Використовуйте «Скинути пароль», щоб надіслати новий пароль користувачеві електронною поштою.`,resetPassword:`Скинути пароль`,resettingPassword:`Скидання пароля...`},deleteModal:{title:`Видалити користувача`,message:`Ви впевнені, що хочете видалити цього користувача? Цю дію не можна скасувати.`,confirm:`Видалити користувача`}},streamOverlay:{title:`Накладання потоку`,invalidPrinterId:`Недійсний ідентифікатор принтера`,cameraStream:`Потік камери`,progress:`Прогрес`,eta:`ETA`,printerIdle:`Принтер неактивний`,printerOffline:`Принтер не в мережі`,builder:{title:`Оформлення трансляції`,description:`Складає адресу оформлення трансляції: повноекранне зображення камери з накладеними даними друку — для OBS, настінного екрана або будь-якого джерела-браузера. Виберіть потрібні поля та скопіюйте адресу.`,printer:`Принтер`,size:`Розмір тексту`,sizeSmall:`Малий`,sizeMedium:`Середній`,sizeLarge:`Великий`,fps:`Частота кадрів`,fpsHint:`Камери A1 і P1 видають щонайбільше близько 5 кадрів за секунду, хоч би яке значення ви задали.`,token:`Токен оформлення трансляції (необов'язково)`,tokenHint:`Потрібен лише за увімкненого входу: OBS не має власного сеансу. Створіть його вище з областю «Оформлення трансляції».`,tokenWarning:`Ця адреса містить токен: будь-хто, хто її прочитає, побачить трансляцію та назву файлу. Відкличте токен, щоб закрити доступ.`,fields:`Поля для показу`,fieldPrinter:`Назва принтера`,fieldFilename:`Назва файлу`,fieldStatus:`Стан`,fieldProgress:`Смуга поступу`,fieldLayers:`Кількість шарів`,fieldEta:`Залишок часу та час завершення`,fieldCamera:`Зображення камери`,chamberHint:`Температура камери показується лише на моделях зі справжнім датчиком: P1 та A1 повідомляють беззмістовне значення, тому її пропущено.`,urlTitle:`Адреса оформлення`,open:`Відкрити`,showPreview:`Показати попередній перегляд`,hidePreview:`Сховати попередній перегляд`,previewTitle:`Попередній перегляд оформлення`},status:{printing:`Друк`,paused:`Призупинено`,finished:`Готово`,failed:`Не вдалося`,idle:`Неактивний`,unknown:`Невідомий`}},profiles:{title:`Профілі`,subtitle:`Керуйте профілями слайсера та калібруваннями Pressure Advance`,tabs:{bambuCloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,local:`Локальні профілі`,kprofiles:`K-профілі`},orcaCloud:{connectedAs:`Підключено як`,connectedShort:`Підключено до Orca Cloud`,logout:`Відключити`,noLogoutPermission:`Ви не маєте дозволу на відключення`,noConnectPermission:`Ви не маєте дозволу на підключення до Orca Cloud`,retry:`Повторити`,connectButton:`Підключити Orca Cloud`,connect:{title:`Підключитися до Orca Cloud`,description:`Увійти у свій обліковий запис Orca Cloud, щоб синхронізувати свої профілі слайсера в Bambuddy.`},device:{title:`Підтвердити Bambuddy в Orca Cloud`,instruction:`Відкрийте Orca Cloud і підтвердьте цей код. Bambuddy підключається автоматично, коли ви підтверджуєте.`,codeLabel:`Ваш код сполучення`,openButton:`Відкрити сторінку підтвердження Orca Cloud`,manualHint:`Або перейдіть до {{url}} і введіть код вище.`,waiting:`Чекаємо на ваше схвалення…`,cancel:`Скасувати`},profiles:{title:`Ваші профілі Orca Cloud ({{count}})`,refresh:`Оновити`,empty:`У вашому обліковому записі Orca Cloud ще не знайдено профілів.`},toast:{disconnected:`Відключено від Orca Cloud`},errors:{startFailed:`Не вдалося розпочати підключення Orca Cloud.`,denied:`Сполучення було відхилено в Orca Cloud.`,expired:`Термін дії коду сполучення минув. Натисніть Підключитися, щоб повторити спробу.`,pollFailed:`Втрачено з’єднання під час очікування підтвердження. Спробуйте ще раз.`}},localProfiles:{title:`Локальні профілі`,subtitle:`Імпорт і керування профілями слайсера з OrcaSlicer`,import:`Імпортувати профілі`,importDesc:`Перетягніть сюди файли .bbscfg, .bbsflmt, .orca_filament, .zip або .json`,importing:`Імпортування…`,search:`Шукати локальні профілі…`,noPresets:`Локальних профілів ще немає`,noSearchResults:`Профілів за вашим запитом не знайдено`,badge:`Локальний`,edit:`Редагувати`,delete:`Видалити`,cancel:`Скасувати`,deleteConfirmTitle:`Видалити профіль`,deleteConfirm:`Видалити цей профіль? Цю дію неможливо скасувати.`,source:`Джерело`,inheritsFrom:`Успадковує`,filamentType:`Тип`,vendor:`Виробник`,compatiblePrinters:`Принтери`,nozzleTemp:`Температура сопла`,cost:`Вартість`,density:`Щільність`,pressureAdvance:`Випередження тиску`,filament:`Філамент`,process:`Процес`,printer:`Принтер`,toast:{importSuccess:`Імпортовано профілів: {{count}}`,importSkipped:`Пропущено профілів-дублікатів: {{count}}`,importError:`Помилок під час імпорту: {{count}}`,deleted:`Профіль видалено`,updated:`Профіль оновлено`}},connectedAs:`Підключено як`,signInExpiredTitle:`Термін входу в Bambu Cloud минув`,signInExpiredBody:`Bambu Lab більше не приймає збережений токен. Увійдіть ще раз, щоб відновити хмарні профілі, імпорт MakerWorld і перевірку прошивки.`,logout:`Вийти`,noLogoutPermission:`Ви не маєте дозволу на вихід`,failedToLoad:`Не вдалося завантажити профілі`,retry:`Повторити`,time:{justNow:`Щойно`,minsAgo:`{{count}}хв тому`,hoursAgo:`{{count}} год тому`,daysAgo:`{{count}} дн. тому`},toast:{loggedOut:`Вихід виконано`},login:{title:`Підключитися до Bambu Cloud`,subtitle:`Синхронізуйте профілі слайсера між пристроями`,email:`Електронна пошта`,password:`Пароль`,region:`Регіон`,regionGlobal:`Глобальний`,regionChina:`Китай`,verificationCode:`Код підтвердження`,totpCode:`Код автентифікатора`,checkEmail:`Перевірте свою електронну пошту ({{email}}), щоб отримати 6-значний код`,enterTotpHint:`Введіть 6-значний код із програми автентифікації`,accessToken:`Токен доступу`,accessTokenHint:`Вставте токен доступу Bambu Cloud. Облікові записи в китайському регіоні мають використовувати цей спосіб, оскільки вони прив’язані до телефона й вхід електронною поштою недоступний. У вікі описано, як отримати токен із файлів cookie MakerWorld.`,back:`Назад`,loginButton:`Увійти`,verifyButton:`Підтвердити`,setTokenButton:`Установити токен`,useToken:`Натомість використати токен доступу`,captchaTitle:`Bambu Cloud вимагає пройти CAPTCHA`,captchaBody:`Bambu вимагає від вашої мережі пройти CAPTCHA, перш ніж прийняти вхід, і відповісти на цю перевірку з Bambuddy неможливо. Річ не в пошті та не в паролі. Блокування прив'язане до вашої публічної IP-адреси і зазвичай зникає саме протягом кількох годин, а повторні спроби лише подовжують його. Щоб увійти зараз, скористайтеся токеном доступу із сеансу браузера.`,useEmail:`Увійти за допомогою електронної пошти`,toast:{loggedIn:`Успішно ввійшли`,codeSent:`Код підтвердження надіслано на вашу електронну адресу`,enterTotp:`Введіть код із програми автентифікації`,tokenSet:`Токен успішно встановлено`}},presets:{myPreset:`Мій профіль (можна редагувати)`,duplicate:`Дублювати`,editable:`Можна редагувати`,failedToLoadDetails:`Не вдалося завантажити відомості про профіль`,deleteConfirm:`Видалити цей профіль?`,deleteWarning:`Це назавжди видалить "{{name}}" із Bambu Cloud. Це неможливо скасувати.`,noDuplicatePermission:`Ви не маєте дозволу на дублювання стилів`,noEditPermission:`Ви не маєте дозволу редагувати стилі`,noDeletePermission:`Ви не маєте дозволу на видалення стилів`,types:{filament:`Попереднє налаштування філаменту`,printer:`Попереднє налаштування принтера`,process:`Попереднє налаштування процесу`},toast:{deleted:`Попереднє налаштування видалено`,created:`Попереднє налаштування створено`,updated:`Попереднє налаштування оновлено`,duplicated:`Профіль продубльовано`,fieldAdded:`Додано поле "{{key}}".`,exported:`Попереднє налаштування експортовано`},baseLabel:`База: {{name}}`,currentLabel:`Поточний профіль: {{name}}`,newPreset:`Нове налаштування`,editPreset:`Редагувати профіль`,duplicatePreset:`Дублювати профіль`,createNewPreset:`Створити новий профіль`,customizeSettings:`Налаштуйте параметри для нового стилю`,compareWithBase:`Порівняти з базовим профілем`,compare:`Порівняйте`,basePreset:`Базове передналаштування`,selectBasePreset:`Виберіть базове налаштування...`,presetName:`Назва профілю`,myCustomPreset:`Мій власний профіль`,inheritsFrom:`Успадковує від`,dropJsonToImport:`Відпустіть JSON, щоб імпортувати`,tabs:{common:`Основні`,allFields:`Всі поля`},availableFields:`Доступні поля`,searchFieldsPlaceholder:`Шукати поля...`,noMatchingFields:`Немає відповідних полів`,allFieldsAdded:`Всі поля додано`,addCustomField:`Додати спеціальне поле`,yourOverrides:`Ваші перевизначення`,noOverridesYet:`Перевизначення ще немає`,clickFieldsToAdd:`Натисніть поля ліворуч, щоб додати їх`,saveAsTemplate:`Зберегти як шаблон`,jsonTip:`Порада: перетягніть файл .json у будь-яке місце на цьому модалі, щоб імпортувати налаштування`},cloudView:{searchPlaceholder:`Шукати профілі...`,templates:`Шаблони`,refresh:`Оновити`,newPreset:`Нове налаштування`,clearFilters:`Очистити фільтри`,compareMode:`Режим порівняння`,selectAnotherPreset:`Вибрати інший попередній набір {{type}}.`,clickTwoPresets:`Клацніть два стилі одного типу, щоб порівняти`,selectFirst:`1. Виберіть перший`,selectSecond:`2. Виберіть другий`,compareNow:`Порівняти зараз`,lastSynced:`Остання синхронізація:`,showingCount:`Показано профілів: {{showing}} із {{total}}`,noPresetsFound:`Попередніх налаштувань не знайдено`,columns:{filament:`Філамент`,process:`процес`,printer:`Принтер`},noFilamentPresets:`Немає профілів філаменту`,noProcessPresets:`Немає профілів процесу`,noPrinterPresets:`Немає профілів принтера`,filters:{type:`Тип`,owner:`Власник`,printer:`Принтер`,nozzle:`Сопло`,filament:`Філамент`,layer:`Шар`,all:`Усі`,myPresets:`Мої профілі`,builtIn:`Вбудований`,process:`процес`},noTemplatesPermission:`Ви не маєте дозволу на керування шаблонами`,noRefreshPermission:`Ви не маєте дозволу оновлювати профілі`,noCreatePermission:`Ви не маєте дозволу створювати профілі`},templates:{title:`Швидкі шаблони`,noTemplates:`Шаблонів ще немає`,createFirst:`Створіть шаблони в редакторі профілів`,typeFilter:`тип:`,deleteTitle:`Видалити шаблон`,deleteWarning:`Цю дію не можна скасувати`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"?`,namePlaceholder:`Назва шаблону`,descriptionPlaceholder:`опис`,settingsJson:`Налаштування (JSON)`,fieldsCount:`Полів: {{count}}`,shownInModals:`Показано в модальних формах`,hiddenInModals:`Приховано в модальних формах`,apply:`Застосувати`,toast:{deleted:`Шаблон видалено`,updated:`Шаблон оновлено`,created:`Шаблон створено`,applied:`Шаблон застосовано`}}},support:{debugLoggingActive:`Журнал налагодження активний`,manageLogs:`Керувати`,collectItem7:`Підключення принтерів і версії прошивок`,collectItem8:`Статус інтеграції (Spoolman, MQTT, HA)`,collectItem9:`Мережеві інтерфейси (лише підмережі)`,collectItem10:`Версії пакетів Python`,collectItem11:`Перевірки справності бази даних`,collectItem12:`Відомості про середовище Docker`,bundleGenerating:`Створення пакета...`,bundleStepConnection:`Запуск перевірки підключення принтера`,bundleStepVirtualPrinters:`Виконання перевірок налаштування віртуального принтера`,bundleStepLogScan:`Сканування останніх журналів на наявність відомих проблем`,bundleStepBuild:`Створення ZIP-пакета підтримки`},fileManager:{variants:{badge:`Версій: {{count}}`,groupAction:`Згрупувати як версії`,groupTooltip:`Позначити ці файли як одне завдання, нарізане для різних принтерів`,grouped:`Файлів згруповано як версії: {{count}}`,printAlternatives:`Друк (варіантів: {{count}})`},title:`Менеджер файлів`,subtitle:`Упорядковуйте файли друку та керуйте ними`,uploadFiles:`Вивантажити файли`,newFolder:`Нова папка`,folderName:`Назва папки`,folderNamePlaceholder:`наприклад, функціональні частини`,renameFile:`Перейменувати файл`,renameFolder:`Перейменувати папку`,invalidFilenameChar:`Символ «{{char}}» не можна використовувати в назвах файлів для друку. SD-картка принтера не приймає такі символи: < > : " / \\ | ? *`,moveFiles:`Перемістити файли: {{count}}`,rootNoFolder:`Корінь (без папки)`,current:`поточний`,linkFolder:`Пов’язати папку`,linkFolderDescription:`Пов’язати «{{name}}» із проєктом або архівом для швидкого доступу.`,project:`Проєкт`,archive:`Архів`,noProjectsFound:`Проєкти не знайдено`,noArchivesFound:`Архіви не знайдено`,unlink:`Від’єднати`,link:`Пов’язати`,dragDropFiles:`Перетягніть файли сюди`,dropFilesHere:`Перетягніть файли сюди`,releaseToUpload:`Відпустіть, щоб вивантажити`,orClickToBrowse:`або натисніть, щоб переглянути`,allFileTypesSupported:`Підтримуються всі типи файлів. Файли ZIP будуть розпаковані.`,zipFilesDetected:`Виявлено файли ZIP.`,zipExtractOptions:`Файли ZIP будуть розпаковані. Виберіть спосіб обробки структури папок:`,preserveZipStructure:`Зберегти структуру папок із ZIP`,createFolderFromZip:`Створити папку з назви ZIP-файлу`,stlThumbnailGeneration:`Створення мініатюр STL`,zipMayContainStl:`Файли ZIP можуть містити файли STL. Мініатюри можна генерувати під час вилучення.`,thumbnailsCanBeGenerated:`Ескізи можна створити для файлів STL. Обробка великих моделей може зайняти більше часу.`,generateThumbnailsForStl:`Створювати мініатюри для файлів STL`,threemfDetected:`Виявлено файли 3MF.`,threemfExtractionInfo:`Модель принтера, матеріал, колір і параметри друку будуть автоматично витягнуті з файлів 3MF.`,willBeExtracted:`Буде розпаковано`,filesExtracted:`Розпаковано файлів: {{count}}`,uploadComplete:`Вивантаження завершено. Успішно: {{succeeded}}`,uploadFailed:`Не вдалося вивантажити`,zipFilesFailed:`Не вдалося обробити файлів: {{count}}`,uploading:`Вивантаження...`,changeLink:`Змінити посилання...`,linkTo:`Посилання на...`,linkToProjectOrArchive:`Посилання на проєкт або архів`,generateThumbnail:`Створити мініатюру`,generateThumbnails:`Створити мініатюри`,generateThumbnailsForMissing:`Створити відсутні мініатюри файлів STL`,gridView:`Вигляд сітки`,listView:`Перегляд списку`,lowDiskSpaceWarning:`Попередження про брак місця на диску`,lowDiskSpaceDetails:`Вільно лише {{free}} із {{total}}. У налаштуваннях задано поріг {{threshold}} ГБ.`,files:`Файли`,folders:`Папки`,size:`Розмір`,free:`Вільно`,allFiles:`Усі файли`,allExternal:`Зовнішні`,externalIsEmpty:`Немає зовнішніх файлів`,externalEmptyDescription:`Тут відображатимуться файли у ваших пов’язаних зовнішніх папках.`,wrap:`Перенесення`,enableTextWrapping:`Увімкнути перенесення тексту`,disableTextWrapping:`Вимкнути перенесення тексту`,collapse:`Згорнути`,collapseFoldersByDefault:`За замовчуванням згорнути папки`,expandFoldersByDefault:`Розгорнути папки за замовчуванням`,folderSort:`Сортування папок`,folderSortByName:`За назвою`,folderSortByActivity:`За останніми діями`,dragToResizeTooltip:`Перетягніть, щоб змінити розмір, двічі клацніть, щоб скинути`,searchFiles:`Пошук файлів...`,searchSubfoldersHint:`Включаючи вкладені папки`,readme:{truncated:`Усічений`,show:`Показати README`,hide:`Приховати README`,label:`README`},tags:{title:`Теги`,subtitle:`Файли міток для наскрізної фільтрації — іграшки, безпечні для дітей, лише PETG, будь-що.`,manage:`Теги`,manageTitle:`Керувати каталогом тегів`,add:`Новий тег`,edit:`Перейменувати тег`,name:`Назва`,fileCount:`Файли`,empty:`Тегів ще немає. Створіть його, щоб розпочати маркування файлів.`,noMatches:`Немає відповідних тегів.`,createPlaceholder:`напр. іграшки, безпечні для дітей, petg`,createButton:`Створити`,nameRequired:`Потрібно вказати назву.`,searchPlaceholder:`Фільтр тегів...`,created:`Тег створено.`,updated:`Тег перейменовано.`,deleted:`Тег видалено.`,saveFailed:`Не вдалося зберегти тег.`,deleteFailed:`Не вдалося видалити тег.`,applyFailed:`Не вдалося застосувати теги.`,applyAdd:`Додати теги`,applyRemove:`Видалити теги`,applyAddSuccess:`Додано теги {{count}} до файлів {{files}}.`,applyRemoveSuccess:`Видалено теги {{count}} у файлах {{files}}.`,actionAdd:`Додати до вибраних файлів`,actionRemove:`Видалити з вибраних файлів`,tagAction:`Тег`,bulkTitle:`Позначити вибрані файли ({{count}})`,bulkTooltip:`Додати або видалити теги для кожного вибраного файлу.`,noPermission:`Ви не маєте дозволу позначати файли тегами.`,filterLabel:`Фільтрування за:`,clearAll:`Очистити все`,confirmDelete:`Видалити тег "{{name}}"?`,confirmDeleteMessage:`Це видалить тег з каталогу. Файли зберігають інші теги.`,confirmDeleteInUseMessage:`Цей тег призначено файлам ({{count}}). Його буде видалено з усіх файлів, але самі файли залишаться без змін.`,editAria:`Редагувати {{name}}`,deleteAria:`Видалити {{name}}`},allTypes:`Усі типи`,prints:`Друки`,ascending:`За зростанням`,descending:`За спаданням`,showModified:`Показати змінені дати`,hideModified:`Приховати змінені дати`,lastModified:`Востаннє змінено`,lastActivity:`Остання активність`,resultsCount:`{{showing}} з {{total}} файлів`,selectAll:`Вибрати усі`,deselectAll:`Зняти вибір із усіх`,selected:`Вибрано: {{count}}`,adding:`Додавання...`,loadingFiles:`Завантаження файлів...`,folderIsEmpty:`Папка порожня`,noFilesYet:`Файлів ще немає`,folderEmptyDescription:`Щоб почати, вивантажте файли або перемістіть їх до цієї папки.`,noFilesDescription:`Вивантажте файли, щоб упорядковувати матеріали для друку.`,noMatchingFiles:`Немає відповідних файлів`,noMatchingFilesDescription:`Жоден файл не відповідає вашим поточним критеріям пошуку чи фільтру.`,clearFilters:`Очистити фільтри`,printedCount:`Надруковано {{count}}x`,uploadedBy:`Вивантажено`,deleteFolder:`Видалити папку`,deleteFile:`Видалити файл`,deleteFilesCount:`Видалити файли {{count}}.`,deleteFolderConfirm:`Ви впевнені, що хочете видалити цю папку? Усі файли всередині також буде видалено.`,deleteFileConfirm:`Ви впевнені, що хочете видалити цей файл?`,deleteFilesConfirm:`Ви впевнені, що бажаєте видалити вибрані файли {{count}}? Цю дію не можна скасувати.`,deleting:`Видалення...`,noPermissionRenameFolder:`Ви не маєте дозволу на перейменування папок`,noPermissionLinkFolder:`Ви не маєте дозволу на пов’язування папок`,noPermissionDeleteFolder:`Ви не маєте дозволу на видалення папок`,onlyEmptyFoldersDeletable:`Можна видаляти лише порожні папки`,noPermissionPrint:`Ви не маєте дозволу на друк`,noPermissionAddToQueue:`Ви не маєте дозволу на додавання в чергу`,noPermissionSlice:`Ви не маєте дозволу нарізати файли`,noPermissionDownload:`У вас немає дозволу на завантаження файлів`,noPermissionPreview:`У вас немає дозволу на попередній перегляд файлів`,preview3d:`3D-перегляд`,noPermissionRenameFile:`Ви не маєте дозволу на перейменування цього файлу`,noPermissionGenerateThumbnail:`Ви не маєте дозволу створювати мініатюри`,noPermissionDeleteFile:`Ви не маєте дозволу на видалення цього файлу`,noPermissionCreateFolder:`Ви не маєте дозволу на створення папок`,noPermissionUpload:`Ви не маєте дозволу на вивантаження файлів`,noPermissionMoveFiles:`Ви не маєте дозволу на переміщення файлів`,noPermissionDeleteFiles:`Ви не маєте дозволу на видалення файлів`,linkExternal:`Зовнішнє посилання`,linkExternalFolder:`Посилання на зовнішню папку`,linkExternalFolderDescription:`Змонтуйте каталог хоста (NAS, USB, спільний мережевий ресурс) у файловому менеджері. Файли не копіюються — доступ до них здійснюється безпосередньо з початкового шляху.`,externalFolderNamePlaceholder:`наприклад, NAS Друкує`,externalPath:`Шлях хоста`,externalPathHelp:`Абсолютний шлях до каталогу на хості Docker. Має бути прив’язано до контейнера.`,readOnly:`Тільки для читання`,readOnlyHelp:`забороняє вивантаження й видалення`,showHiddenFiles:`Показати приховані файли (dotfiles)`,externalFolder:`Зовнішня папка`,scanFolder:`Сканувати`,toast:{folderCreated:`Папка створена`,openInSlicerFailed:`Не вдалося відкрити у слайсері`,folderDeleted:`Папку видалено`,fileDeleted:`Файл видалено`,filesDeleted:`Видалені файли {{count}}.`,filesMoved:`Файли переміщено`,folderLinked:`Папку пов’язано`,folderUnlinked:`Папку від’єднано`,externalFolderLinked:`Зовнішня папка пов’язана та просканована`,folderScanned:`Сканування завершено: {{added}} додано, {{removed}} видалено`,addedToQueue:`Додано до черги файлів: {{count}}`,addedToQueuePartial:`Додано: {{added}}; не вдалося додати: {{failed}}`,failedToAddToQueue:`Не вдалося додати файли: {{error}}`,fileRenamed:`Файл перейменовано`,folderRenamed:`Папку перейменовано`,thumbnailsGenerated:`Створено мініатюри {{count}}`,thumbnailsGeneratedPartial:`Створено мініатюри {{succeeded}}, {{failed}} не вдалося`,noStlMissingThumbnails:`Немає файлів STL без мініатюр`,failedToGenerateThumbnails:`Не вдалося створити мініатюри: {{error}}`,thumbnailGenerated:`Створено мініатюру`,failedToGenerateThumbnail:`Не вдалося створити мініатюру: {{error}}`}},projects:{parentLabel:`Батьківський проєкт`,parentNone:`Немає (проєкт верхнього рівня)`,parentHint:`Вкладіть цей проєкт в інший, щоб його показники підсумовувалися в головному проєкті`,partOf:`Частина проєкту {{name}}`,subProjectCount:`Підпроєктів: {{count}}`,subProjectsOf:`Підпроєкти проєкту {{name}}`,title:`Проєкти`,subtitle:`Організовуйте та відстежуйте свої проєкти 3D-друку`,newProject:`Новий проєкт`,editProject:`Редагувати проєкт`,deleteProject:`Видалити проєкт`,projectName:`Назва проєкту`,description:`опис`,noProjects:`Проєктів ще немає`,noProjectsFiltered:`Немає проєктів {{status}}.`,noProjectsFilteredHelp:`У вас немає {{status}} проєктів. Проєкти з’являться тут, коли їхній статус зміниться.`,createFirst:`Створіть свій перший проєкт, щоб почати впорядковувати пов’язані роздруківки, відстежувати прогрес і керувати збірками.`,createFirstButton:`Створіть свій перший проєкт`,create:`Створити`,files:`Файли`,prints:`Принти`,plates:`пластини`,parts:`частин`,lastModified:`Остання зміна`,deleteConfirm:`Ви впевнені, що хочете видалити цей проєкт? Архіви та елементи черги буде від’єднано, але не видалено.`,addFiles:`Додати файли`,removeFile:`Видалити файл`,viewDetails:`Переглянути деталі`,namePlaceholder:`наприклад, Voron 2.4 Build`,descriptionPlaceholder:`Додатковий опис...`,urlLabel:`URL`,urlPlaceholder:`https://makerworld.com/...`,urlInvalid:`URL має починатися з http:// або https://`,openExternalUrl:`Відкритий проєкт URL`,coverImageLabel:`Фото обкладинки`,coverImageAlt:`Обкладинка проєкту`,coverImageUpload:`Вивантажити`,coverImageReplace:`Замінити`,coverImageRemove:`видалити`,color:`Колір`,targetPlates:`Цільові пластини`,targetPlatesPlaceholder:`наприклад, 25`,targetPlatesHelp:`Кількість завдань друку`,targetParts:`Цільові частини`,targetPartsPlaceholder:`наприклад, 150`,targetPartsHelp:`Загальна кількість необхідних об’єктів`,targetSets:`Копій кожного файлу`,targetSetsPlaceholder:`наприклад, 10`,targetSetsHelp:`Кількість друків кожного придатного до друку файлу`,tagsLabel:`Теги (розділені комами)`,tagsPlaceholder:`напр., ворон, функціональний, подарунок`,dueDate:`Термін виконання`,priority:`Пріоритет`,priorityLow:`Низький`,priorityNormal:`нормальний`,priorityHigh:`Високий`,priorityUrgent:`Терміново`,statusActive:`Активний`,statusCompleted:`Виконано`,statusArchived:`Архівовано`,done:`Готово`,completed:`завершено`,failed:`не вдалося`,inQueue:`в черзі`,noPrintsYet:`Ще немає відбитків`,printJobs:`Завдання друку (пластини)`,partsPrinted:`Надруковані частини`,failedParts:`Вийшли з ладу деталі`,import:`Імпорт`,export:`Експорт`,importProject:`Імпорт проєкту`,exportAll:`Експортуйте всі проєкти`,loading:`Завантаження проєктів...`,noEditPermission:`Ви не маєте дозволу на редагування проєктів`,noDeletePermission:`Ви не маєте дозволу на видалення проєктів`,noCreatePermission:`Ви не маєте дозволу на створення проєктів`,noImportPermission:`Ви не маєте дозволу на імпорт проєктів`,noExportPermission:`Ви не маєте дозволу на експорт проєктів`,toast:{created:`Проєкт створено`,updated:`Проєкт оновлений`,deleted:`Проєкт видалено`,imported:`Проєкт імпортовано`,multipleImported:`{{count}} проєкти імпортовані`,importFailed:`Помилка імпорту`,exported:`Експортовані проєкти (лише метадані)`}},projectDetail:{notFound:`Проєкт не знайдено`,backToProjects:`Назад до проєктів`,export:`Експорт`,exportProject:`Експортний проєкт`,noExportPermission:`Ви не маєте дозволу на експорт проєктів`,noEditPermission:`Ви не маєте дозволу на редагування проєктів`,partOf:`частина:`,priorityLabel:`Пріоритет:`,noPrints:`У цьому проєкті ще немає роздруківок`,status:{active:`Активний`,completed:`Виконано`,archived:`Архівовано`},priority:{low:`Низький`,normal:`нормальний`,high:`Високий`,urgent:`Терміново`},dueDate:{overdue:`Прострочена`,today:`Термін виконання сьогодні`,daysLeft:`Залишилося {{count}} днів`},progress:{platesProgress:`Пластини Прогрес`,partsProgress:`Прогрес запчастин`,setsProgress:`Завершені комплекти`,sets:`комплектів`,setsHint:`Комплект вважається завершеним, коли кожен придатний до друку файл надруковано стільки разів`,printJobs:`завдання друку`,parts:`частин`,percentComplete:`{{percent}}% виконано`,remaining:`Залишилося {{count}}.`},stats:{printJobs:`Завдання друку`,total:`всього`,failed:`{{count}} не вдалося`,partsPrinted:`Надруковані частини {{count}}.`,printTime:`Час друку`,filamentUsed:`Філамент, що використовується`},cost:{title:`Відстеження витрат`,filamentCost:`Вартість філаменту`,energy:`Енергія`,totalCost:`Загальна вартість`,total:`Всього`,includesBom:`в т.ч. BOM`,budget:`Бюджет`,remaining:`Залишилося`},subProjects:{title:`Підпроєкти ({{count}})`,jobs:`Завдань: {{count}}`},rollup:{title:`Разом із підпроєктами: {{count}}`,progress:`Загальний прогрес`,percentComplete:`Завершено {{percent}}%`},notes:{title:`Примітки`,noEditPermission:`Ви не маєте дозволу редагувати нотатки`,placeholder:`Додайте примітки щодо цього проєкту...`,empty:`Приміток ще немає. Натисніть Редагувати, щоб додати примітки.`},files:{title:`Файли`,linkFolders:`Зв’язувати папки з файлового менеджера`,forQuickAccess:`до цього проєкту для швидкого доступу.`,fileCount:`Файлів: {{count}}`,empty:`Немає пов’язаних папок. Перейдіть до файлового менеджера та зв’яжіть папку з цим проєктом.`,printedCount:`Надруковано разів: {{count}}`,progressTooltip:`Завершено друків: {{done}} із {{target}}`,noFiles:`У цій папці немає файлів.`},bom:{title:`Перелік матеріалів`,acquired:`{{completed}}/{{total}} придбано`,showAll:`Показати все`,hideDone:`Сховати готове`,addPart:`Додати частину`,noAddPermission:`Ви не маєте дозволу додавати частини`,partNamePlaceholder:`Назва деталі (наприклад, гвинти M3x8)`,partName:`Назва частини`,qty:`кількість`,price:`Ціна ({{currency}})`,sourcingUrlPlaceholder:`URL джерела (необов’язково)`,remarksPlaceholder:`Примітки (необов’язково)`,deletePart:`Видалити частину`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"?`,noUpdatePermission:`Ви не маєте дозволу на оновлення частин`,noEditPermission:`Ви не маєте дозволу редагувати частини`,noDeletePermission:`Ви не маєте дозволу на видалення частин`,totalCost:`Загальна вартість:`,empty:`Немає частин у описі матеріалів. Додайте обладнання, електроніку чи інші компоненти, щоб відстежувати, що потрібно отримати.`},timeline:{title:`Хронологія діяльності`,empty:`Активності ще немає.`},template:{saveAsTemplate:`Зберегти як шаблон`,noCreatePermission:`Ви не маєте дозволу на створення шаблонів`},queue:{title:`Черга`,viewAll:`Переглянути всі`,printing:`Друкується: {{count}}`,queued:`{{count}} у черзі`},prints:{title:`Друки ({{count}})`},toast:{projectUpdated:`Проєкт оновлений`,partAdded:`Частина додана`,partRemoved:`Частину видалено`,exportFailed:`Помилка експорту`,projectExported:`Проєкт експортовано`,templateCreated:`Шаблон створено`}},system:{title:`Інформація про систему`,version:`Версія`,uptime:`Час роботи`,cpuUsage:`CPU Використання`,memoryUsage:`Використання пам’яті`,diskUsage:`Використання диска`,networkInfo:`Інформація про мережу`,logs:`Журнали`,debugMode:`Режим налагодження`,enableDebug:`Увімкнути журнал налагодження`,disableDebug:`Вимкнути ведення журналу налагодження`,downloadLogs:`Завантажити журнали`,clearLogs:`Очистити журнали`,dockerInfo:`Docker Інформація`,containerName:`Назва контейнера`,imageName:`Назва зображення`,platform:`Платформа`,architecture:`Архітектура`},sponsors:{sectionTitle:`Незалежний і фінансований громадою`,tagline:`Bambuddy є безкоштовним і залишається таким, тому що люди вирішили його підтримати. Ні VC, ні блокування в хмарі.`,viewSupporters:`Переглянути прихильників`,toastPrints:`Завершено друків із Bambuddy: {{count}}. Bambuddy залишається безкоштовним завдяки своїм прихильникам.`,toastCost:`За допомогою Bambuddy обліковано філаменту на {{total}}. Дізнайтеся, хто допомагає проєкту залишатися незалежним.`,toastArchives:`Заархівовано друків із Bambuddy: {{count}}. Дізнайтеся, хто допомагає проєкту залишатися незалежним.`,toastAnniversary:`Рік з Bambuddy! Подивіться, хто зберігає незалежність проєкту.`,toastVersionUpdate:`Оновлено до v{{version}}. Bambuddy залишається безкоштовним завдяки своїм прихильникам.`,toastBusiness:`Використовуєте Bambuddy на принтерах ({{count}})? Для команд доступний план підтримки: пріоритетні виправлення, виставлення рахунків і прямий зв’язок із супровідником.`,businessCta:`Bambuddy для бізнесу`,businessTitle:`Bambuddy для бізнесу`,businessTagline:`Ви використовуєте принтери {{count}}. Пріоритетна підтримка, комерційне ліцензування та виставлення рахунків доступні для команд і друкарень.`},library:{title:`Бібліотека філаментів`,addFilament:`Додати філамент`,editFilament:`Редагувати філамент`,deleteFilament:`Видалити філамент`,vendor:`Продавець`,material:`матеріал`,color:`Колір`,kFactor:`Фактор K`,temperature:`температура`,noFilaments:`У бібліотеці немає філаментів`,deleteConfirm:`Ви впевнені, що хочете видалити цю філамент?`,importFromPrinter:`Імпорт із принтера`,exportToFile:`Експорт у файл`,runWithPipeline:{actionLabel:`Запустити з конвеєром`,noPermission:`Ви не маєте дозволу на запуск конвеєрів`,modalTitle:`Запустити з конвеєром`,confirmTitle:`Підтвердити запуск`,confirmIntro:`Під час попередньої перевірки виявлено проблеми з цим запуском`,sourceHint:`Джерело`,pipelineHint:`Конвеєр`,targetHint:`Ціль`,pipelineListAria:`Наявні конвеєри`,runAnyway:`Усе одно запустити`,loading:`Завантаження…`,empty:`Збережених конвеєрів ще немає. Відкрийте вікно нарізання й натисніть «Зберегти як конвеєр», щоб створити його.`,noTarget:`Цільовий принтер не встановлено`,noTargetMessage:`Для цього конвеєра не задано цільовий принтер. Відкрийте конвеєр у налаштуваннях і виберіть принтер.`,copies:`Копії`,copiesHint:`максимум {{n}}`,classTarget:`Будь-який {{model}}`,toast:{started:`Пуск конвеєра розпочато`,failed:`Не вдалося розпочати запуск`},issue:{printerNotSet:`У цьому конвеєрі не встановлено цільовий принтер.`,printerNotFound:`Цільовий принтер більше не існує.`,printerDisabled:`Цільовий принтер вимкнено.`,printerOffline:`Цільовий принтер не в мережі.`,filamentType:`Слот філаменту {{slot}}: очікується {{expected}}, в AMS — {{actual}}`,filamentColor:`Слот філаменту {{slot}}: колір не збігається (очікується {{expected}}, в AMS — {{actual}})`,amsSlotMissing:`Слот AMS {{slot}} недоступний на цьому принтері`,filamentUnverified:`Філамент для слота {{slot}} походить із хмарного або стандартного профілю, тому його неможливо перевірити заздалегідь.`,noClassMatches:`Жоден принтер у цій інсталяції не належить до цільового класу моделей конвеєра ({{expected}}).`,classNotSet:`Ціллю конвеєра вибрано клас принтерів, але модель не задано.`}}},slicerSettings:{presetValuesOutdatedSidecar:`Показано типові значення слайсера: ваш sidecar старіший за цю функцію і не може повідомити значення профілю. Оновіть образ sidecar, щоб їх побачити. Усе, чого ви не змінюєте, і далі береться з профілю.`,presetValuesNotConfigured:`Показано типові значення слайсера: sidecar не налаштовано, тому значення профілю прочитати не можна. Усе, чого ви не змінюєте, і далі береться з профілю.`,presetValuesSidecarUnavailable:`Показано типові значення слайсера: sidecar не відповів, тому значення профілю прочитати не можна. Усе, чого ви не змінюєте, і далі береться з профілю.`,presetValuesUnavailable:`Показано типові значення слайсера: значення вибраного профілю не вдалося прочитати. Усе, чого ви не змінюєте, і далі береться з профілю.`,filamentDefault:`За замовчуванням`,fromFile:`з файлу`,fromFileHint:`Автор моделі змінив цей параметр у вихідному файлі. Значення: {{value}}.`,fromFilePrinterCoupled:`принтер автора`,fromFilePrinterCoupledHint:`Підібрано під принтер, для якого створено файл, — на вашому значення може бути хибним або поза діапазоном.`,fromFileOverridesPreset:`перевизначає пресет`,fromFileOverridesPresetHint:`У файлі задано {{value}}, а вибраний пресет використовує {{preset}}. Позначайте, лише якщо перевагу має файл.`,useFromFile:`Використовувати значення з вихідного файлу для «{{option}}»`,otherFromFile:`Інші параметри з цього файлу`,fromFileSummary:`Дизайнер змінив у цьому файлі {{count}} параметрів процесу. Застосовуються лише позначені.`,fromFileUseAll:`Використати налаштування дизайнера`,fromFileUseAllHint:`Позначає параметри, які переносяться на інші принтери. Підлаштовані під принтер дизайнера та ті, що визначають обраний пресет, лишаються вимкненими.`,fromFileClear:`Зняти {{count}}`,loading:`Завантаження налаштувань слайсера…`,mode:{simple:`Простий`,advanced:`Розширений`,expert:`Експерт`},searchPlaceholder:`Пошук параметрів`,resetAll:`Скинути: {{count}}`,resetOption:`Скинути до типового значення`,noMatches:`Немає параметрів, що відповідають запиту.`},slice:{filamentSlotUnset:`не задано`,processSettingsEmbedded:`Не використовується, доки увімкнено «Використовувати вбудовані параметри файлу» — нарізанням керують параметри самого файлу.`,processSettingsInactive:`Неактивно`,presetsHidden:`приховано: {{count}}`,showAllPresets:`Показати всі`,showFewerPresets:`Показати менше`,processSettings:`Параметри процесу`,processSettingsHint:`Налаштуйте вибраний профіль для цього нарізання. Усе, чого ви не змінили, лишається як визначено профілем.`,processSettingsChanged:`змінено: {{count}}`,processSettingsUnchanged:`Значення профілю`,title:`Нарізання моделі`,action:`Нарізати`,actionAll:`Нарізати всі пластини ({{count}})`,actionAllTitle:`Нарізати всі пластини в один багатопластинний результат (один архів). Вибір філаменту охоплює всі слоти, визначені проєктом.`,allPlatesToggle:`Нарізати всі пластини ({{count}})`,slicing:`Нарізання…`,printer:`Профіль принтера`,process:`Профіль процесу`,filament:`Профіль філаменту`,filamentSlot:`Філамент {{index}} ({{type}})`,selectPreset:`— Виберіть профіль —`,loadingPresets:`Завантаження профілів…`,analyzingPlateFilaments:`Аналіз філаментів пластини…`,analyzingPlateFilamentsHint:`Виконується попереднє нарізання, щоб визначити, які слоти AMS використовує ця пластина. Результат кешується, тому повторне відкриття відбувається миттєво.`,previewToast:`Аналіз {{name}} — {{elapsed}}`,previewWithProgress:`Аналіз {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,notUsedByPlate:`— не використовується на цій пластині`,noPresetsForSlot:`Немає профілів`,otherPrinters:`Інші принтери`,presetsLoadFailed:`Не вдалося завантажити профілі. Спочатку імпортуйте їх у розділі Налаштування → Профілі.`,refreshPresets:`Оновити`,refreshPresetsTitle:`Оновити профілі — отримати найновіші хмарні та вбудовані списки (скористайтеся після видалення профілю в Bambu Studio або Bambu Handy)`,allPresetsRequired:`Потрібно вибрати всі профілі`,useEmbedded:`Використати вбудовані налаштування файлу`,useEmbeddedHint:`Нарізати модель із налаштуваннями автора файлу — стінками, заповненням і філаментом — замість профілів вище. Ця можливість доступна, оскільки модель принтера відповідає файлу.`,autoOrient:`Автоматично орієнтувати об'єкти`,autoOrientHint:`Слайсер поверне кожен об'єкт на бік, який друкується найкраще. Орієнтацію з файлу буде замінено.`,autoArrange:`Автоматично розмістити на столі`,autoArrangeHint:`Слайсер розставить об'єкти так, щоб вони не перекривалися. Розташування з файлу буде замінено.`,enqueuing:`Надсилання завдання нарізання…`,queued:`У черзі…`,failed:`Не вдалося виконати нарізання. Перевірте журнали слайсера.`,startedToast:`Нарізання {{name}} у фоновому режимі…`,queuedToast:`У черзі: {{name}} — {{elapsed}}`,runningToast:`Нарізання {{name}} — {{elapsed}}`,runningWithProgress:`{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,runningWithProgressMultiPlate:`Пластина {{plateIndex}} з {{plateCount}} • {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}`,completedToast:`Нарізання {{name}} завершено`,externalWriteFallbackToast:`Збережено у внутрішній бібліотеці: не вдалося записати в зовнішню теку`,failedTitle:`Помилка нарізання`,failedToast:`Помилка нарізання {{name}}: {{detail}}`,tier:{local:`Імпортовані`,cloud:`Bambu Cloud`,orcaCloud:`Orca Cloud`,standard:`Стандартний`},cloud:{notAuthenticated:`Увійдіть у Bambu Cloud (Налаштування → Профілі → Bambu Cloud), щоб переглянути хмарні профілі.`,expired:`Сеанс Bambu Cloud завершився — увійдіть знову, щоб оновити хмарні профілі.`,unreachable:`Bambu Cloud зараз недоступний. Локальні та стандартні профілі й надалі працюють.`},orcaCloud:{notAuthenticated:`Увійдіть до Orca Cloud (Профілі → Orca Cloud), щоб переглянути профілі Orca.`,expired:`Сеанс Orca Cloud завершився — увійдіть ще раз, щоб оновити профілі Orca.`,unreachable:`Orca Cloud зараз недоступний. Інші профілі й надалі працюють.`},bedType:{label:`Друкарська пластина`,auto:`Авто (використовувати профіль процесу)`,coolPlate:`Холодна друкарська пластина`,coolPlateSuperTack:`Cool Plate SuperTack`,engineering:`Інженерна пластина`,highTemp:`Високотемпературна пластина`,texturedPEI:`Текстурована PEI-пластина`,smoothPEI:`Гладка PEI-пластина`},pipelines:{label:`Конвеєр`,applyAria:`Застосувати конвеєр`,applyPrompt:`Застосувати конвеєр…`,empty:`Немає збережених конвеєрів`,saveButton:`Зберегти як конвеєр`,saveTitle:`Зберегти поточний вибір чотирьох слотів як конвеєр для повторного використання`,namePlaceholder:`Назва конвеєра`,nameAria:`Нова назва конвеєра`,toast:{applied:`Застосовано "{{name}}"`,saved:`Конвеєр збережено`,saveFailed:`Не вдалося зберегти`}}},spoolman:{title:`Spoolman Інтеграція`,enabled:`Spoolman Увімкнено`,url:`Spoolman URL`,connected:`Підключено`,disconnected:`Не підключено`,testConnection:`Тестове підключення`,sync:`Синхронізувати`,syncing:`Синхронізація...`,lastSync:`Остання синхронізація`,linkToSpoolman:`Посилання на Spoolman`,openInSpoolman:`Відкрити в Spoolman`,unlinkSpool:`Від’єднати котушка`,unlinkConfirmTitle:`Скасувати призначення котушки?`,unlinkConfirmMessage:`Це призведе до видалення котушки з цього слота. Самі дані котушки залишаться незмінними.`,selectSpool:`Вибрати Spool`,noUnlinkedSpools:`Немає непризначених котушок`,linkSuccess:`Котушку успішно призначено`,linkFailed:`Не вдалося призначити котушку`,unlinkSuccess:`Призначення котушки успішно скасовано`,unlinkFailed:`Не вдалося скасувати призначення котушки`,linkedSpool:`Призначена котушка`,spoolId:`Ідентифікатор котушки`,fillSourceLabel:`(Spoolman)`,weight:`вага`,remaining:`Залишилося`,disableWeightSync:`Вимкнути синхронізацію приблизної ваги AMS.`,disableWeightSyncDesc:`Не оновлюйте залишкову ємність із оцінок AMS. Використовуйте це, якщо ви віддаєте перевагу відстеженню використання Spoolman, а не оцінкам на основі відсотка AMS. Нові котушки все ще використовуватимуть оцінку AMS як початкову вагу.`,reportPartialUsage:`Повідомити про часткове використання для невдалого друку`,reportPartialUsageDesc:`Якщо друк не вдається або скасовується, повідомте приблизну кількість філаменту, використаної до цього моменту, на основі виконання шару.`},locations:{title:`Місця зберігання`,subtitle:`Керуйте полицями, шухлядами та іншими фізичними місцями для зберігання своїх котушок`,add:`Додати місцезнаходження`,addShort:`додати`,edit:`Редагувати місцезнаходження`,name:`Назва`,spools:`Котушки`,sensors:`Датчики`,empty:`Місць зберігання ще немає. Створіть свою першу полицю або ящик.`,manage:`Розташування`,createPlaceholder:`напр. Полиця А, ящик 1`,nameRequired:`Потрібно вказати назву місця`,created:`Розташування створено`,updated:`Розташування оновлено`,deleted:`Розташування видалено`,saveFailed:`Не вдалося зберегти місцезнаходження`,deleteFailed:`Не вдалося видалити місцезнаходження`,deleteBlocked:`Видаліть усі котушки з цього місця перед видаленням`,confirmDelete:`Видалити "{{name}}"?`,confirmDeleteMessage:`Це місце буде видалено з каталогу. Котушки спочатку потрібно перемістити.`,confirmDeleteMessageWithSensors:`Це місце буде видалено з каталогу. Котушки спочатку потрібно перемістити. Підключені датчики також буде видалено.`},inventory:{title:`Облік котушок`,subtitle:`Керуйте своїми котушками`,addToInventory:`Додати до обліку`,addToInventoryPending:`Додавання...`,addToInventorySuccess:`Котушку додано до обліку`,addToInventoryFailed:`Не вдалося додати котушку до обліку`,unknownSpoolTitle:`Виявлено нову котушку філаменту`,unknownSpoolMessage:`У {{location}} виявлено котушку з невідомою RFID-міткою. Додати її до обліку?`,unknownSpoolSlot:`Слот`,bulk:{selectAllVisible:`Вибрати усі видимі`,selectRow:`Вибрати рядок`,selectGroup:`Вибрати групу`,selectionCount:`Вибрано {{count}}.`,edit:`Редагувати`,printLabels:`Друк етикеток`,resetUsage:`Скинути використання`,restore:`Відновити`,archive:`Архівувати`,delete:`Видалити`,clearSelection:`Очистити вибір`,editTitle:`Масове редагування котушок`,editSubtitle:`Застосовується до вибраних котушок {{count}}. Оновлюються лише ті поля, які ви позначите.`,editHint:`Введіть значення в поле, щоб позначити його для оновлення: буде надіслано лише позначені поля. Порожнє поле не змінює котушки; очистити поле можна лише під час редагування окремої котушки.`,useCustom:`Використати «{{value}}»`,toggleField:`Перемкнути оновлення для цього поля`,changeCount:`Буде оновлено полів: {{count}}`,applyPending:`Застосування...`,applyButton:`Застосувати до котушок ({{count}})`,deleteTitle:`Видалити вибрані котушки`,archiveTitle:`Архівувати вибрані котушки`,restoreTitle:`Відновити вибрані котушки`,resetUsageTitle:`Скинути використання на вибраних котушках`,deleteMessage:`Назавжди видалити котушки {{count}}? Це неможливо скасувати.`,archiveMessage:`Архівувати котушки {{count}}? Пізніше їх можна відновити.`,restoreMessage:`Відновити заархівовані котушки {{count}}?`,resetUsageMessage:`Скинути лічильник «Всього спожито» на котушках {{count}}? Залишок ваги зберігається.`,updateSuccess:`Котушок оновлено: {{count}}`,updateFailed:`Помилка масового оновлення`,updatePartial:`Оновлено: {{ok}}; не вдалося оновити: {{failed}}`,updateAllFailed:`Не вдалося оновити жодну з вибраних котушок ({{count}}). Вибір збережено для повторної спроби.`,deleteSuccess:`Котушок видалено: {{count}}`,deleteFailed:`Не вдалося масово видалити`,deletePartial:`Видалено: {{ok}}; не вдалося видалити: {{failed}}`,deleteAllFailed:`Не вдалося видалити жодну з вибраних котушок ({{count}}). Вибір збережено для повторної спроби.`,archiveSuccess:`Котушок заархівовано: {{count}}`,archiveFailed:`Помилка масового архівування`,archivePartial:`Заархівовано: {{ok}}; не вдалося заархівувати: {{failed}}`,archiveAllFailed:`Не вдалося заархівувати жодну з вибраних котушок ({{count}}). Вибір збережено для повторної спроби.`,restoreSuccess:`Котушок відновлено: {{count}}`,restoreFailed:`Помилка масового відновлення`,restorePartial:`Відновлено: {{ok}}; не вдалося відновити: {{failed}}`,restoreAllFailed:`Не вдалося відновити жодну з вибраних котушок ({{count}}). Вибір збережено для повторної спроби.`,invalidHex:`Введіть 6 шістнадцяткових символів (RRGGBB) або 8 (RRGGBBAA). Інакше поле не застосовуватиметься.`},spoolmanMixedContentTitle:`Spoolman не може Завантажити через HTTPS — змішаний вміст заблоковано вашим браузером`,spoolmanMixedContentBody:`Bambuddy обслуговується через HTTPS (через ваш зворотний проксі), але ваш Spoolman URL усе ще звичайний HTTP. Браузери блокують змішаний вміст для безпеки, тому вбудований Spoolman UI не може відтворюватися. Щоб це працювало, Spoolman має бути доступним через HTTPS.`,spoolmanMixedContentFixReverseProxy:`Розмістіть Spoolman за тим самим зворотним проксі, що й Bambuddy (Traefik / Nginx / Caddy) з HTTPS, а потім оновіть Spoolman URL у налаштуваннях до нової адреси HTTPS.`,spoolmanMixedContentFixOpenNewTab:`Як обхідний шлях, відкрийте Spoolman у новій вкладці браузера поверх HTTP — правила змішаного вмісту застосовуються лише до вбудованих фреймів, тому окрема вкладка все ще працює.`,spoolmanOpenInNewTab:`Відкрийте Spoolman у новій вкладці`,labels:{title:`Друк етикеток на котушках`,selectedCount:`Вибрано {{count}}.`,pickSpools:`Виберіть котушки для друку етикеток:`,monochrome:`Монохромний (чорно-білий принтер)`,monochromeHint:`Прибирає зразок кольору та розширює область тексту`,startingPosition:`Початкова позиція етикетки`,startingPositionRange:`Лише для аркушів: L7160 підтримує 1–21; 5160 підтримує 1–30.`,startingPositionInvalid:`Введіть ціле число від 1 до {{capacity}}.`,startingPositionFirst:`Друк починається з позиції 1.`,startingPositionSkipped:`Позиції від 1 до {{lastPosition}} залишаться порожніми на першому аркуші.`,startingPositionRangeError:`Початкова позиція для цього аркуша має бути від 1 до {{capacity}}.`,searchPlaceholder:`Шукайте назву, бренд або #ID`,filterByMaterial:`матеріал:`,allMaterials:`все`,selectVisible:`Вибрати все видиме ({{count}})`,deselectVisible:`Скасувати вибір видимого`,clearAll:`Очистити все`,noSpoolsToShow:`Немає котушок для показу. Налаштуйте фільтр і повторіть спробу.`,noMatches:`Жодна котушка не відповідає поточному пошуку чи фільтру.`,printOne:`Друк етикетки для цієї котушки`,printLabels:`Друк етикеток…`,bulkTitle:`Виберіть котушки для друку етикеток серед показаних ({{count}})`,noSpoolsTitle:`Немає котушок для маркування`,error:`Не вдалося створити мітки: {{msg}}`,sortBy:{label:`Сортувати:`,id:`За ідентифікатором`,color:`За кольором`},templates:{amsHolderSmall:{label:`Тримач AMS — малий (74 × 33 мм)`,hint:`Одна етикетка на сторінці; відповідає етикетці для друку від MakerWorld моделі 752566 (AMS Filament Label Holder).`},amsHolderLarge:{label:`Тримач AMS — великий (75 × 55 мм)`,hint:`Одна етикетка на сторінці; підходить для варіанту тримача етикеток із філаментом AMS із вкладенням картону. Досить місткий для зразка, бренду, матеріалу, ідентифікатора та QR-коду.`},box40x30:{label:`Етикетка коробки (40 × 30 мм)`,hint:`Одна етикетка на сторінці; звичайний розмір рулону DK/Brother, підходить для етикеток у пакетах із філаментом та контейнерах для зберігання.`},box:{label:`Етикетка коробки (62 × 29 мм)`,hint:`Одна етикетка на сторінці; розміром для маленьких етикеток Brother PT/QL і Dymo.`},averyL7160:{label:`Avery L7160 — аркуш А4 (38,1 × 63,5 мм × 21)`,hint:`Європейський аркуш; 21 етикетка на сторінці A4.`},avery5160:{label:`Avery 5160 — аркуш US Letter (25,4 × 66,7 мм × 30)`,hint:`Аркуш американського формату; 30 етикеток на сторінці Letter.`}}},csv:{importButton:`Імпорт CSV`,exportButton:`Експорт CSV`,modalTitle:`Імпорт котушок з CSV`,selectFile:`Виберіть файл CSV або перетягніть його сюди`,dragHint:`Заголовок: material (обов’язково), brand, subtype, color_name, rgba, …`,parsing:`Читання файлу…`,previewError:`Не вдалося прочитати файл CSV.`,validCount:`{{count}} дійсний`,errorCount:`{{count}} помилка`,skippedCount:`{{count}} пропущено`,colRow:`Рядок`,colStatus:`Статус`,colColor:`Колір`,colorResolved:`Кольорове заповнення з каталогу`,colorCrossMaterial:`Колір узятий з іншого матеріалу — точної відповідності в каталозі немає`,duplicateExisting:`Котушка з таким матеріалом, брендом і кольором вже є — вона ще буде імпортована як нова котушка`,spoolmanHint:`У режимі Spoolman використовуйте вбудовані засоби імпорту й експорту Spoolman.`,importValidRows:`Імпорт {{count}} дійсних рядків`,noValidRows:`Немає дійсних рядків`,importing:`Імпорт…`,importSuccess:`Імпортовано котушок: {{count}}`,importError:`Помилка імпорту`,exportError:`Помилка експорту`},addSpool:`Додати котушку`,editSpool:`Редагувати котушку`,copySpool:`Копіювати котушку`,material:`матеріал`,selectMaterial:`Виберіть матеріал...`,subtype:`Підтип`,brand:`Бренд`,searchBrand:`Шукати бренд...`,useCustomBrand:`Використовуйте "{{brand}}"`,useCustomMaterial:`Використовуйте спеціальний матеріал: {{material}}`,suggestedOptions:`Рекомендовані`,allOptions:`Усі`,colorName:`Назва кольору`,colorNamePlaceholder:`Нефритовий білий, вогненно-червоний...`,color:`Колір`,hexColor:`Шістнадцятковий колір`,pickColor:`Вибрати індивідуальний колір`,labelWeight:`Номінальна вага філаменту`,coreWeight:`Вага порожньої котушки`,searchSpoolWeight:`Шукати вагу котушки...`,weightUsed:`Використано`,currentWeight:`Вага, що залишилася`,measuredWeight:`Виміряна вага`,spoolName:`Котушка`,costPerKg:`Вартість за кг`,storageLocation:`Місце зберігання`,temperature:`Температура`,humidity:`Вологість`,battery:`Батарея`,storageLocationPlaceholder:`напр. Полиця А, ящик 1`,openInInventory:`Відкрити в інвентарі`,measuredWeightError:`Виміряна вага має бути між {{min}}g і {{max}}g.`,slicerFilament:`Філамент для нарізки`,slicerFilamentName:`Назва профілю слайсера`,slicerPreset:`Попереднє налаштування слайсера`,searchPresets:`Шукати профілі філаменту...`,selectedPreset:`Вибране`,noPresetsFound:`Попередніх налаштувань не знайдено`,tempOverrides:`Перевизначення температури`,note:`Примітка`,notePlaceholder:`Будь-які додаткові зауваження щодо цієї котушки...`,category:`Категорія`,categoryPlaceholder:`напр. Виробництво, прототип, клієнт А`,categoryNone:`Без категорії`,storageLocationNone:`Місцезнаходження не встановлено`,lowStockThresholdOverride:`Поріг низького запасу (ця котушка)`,lowStockThresholdOverrideHelp:`Залиште поле порожнім, щоб використовувати глобальне порогове значення ({{global}}%).`,clearRfid:`Очистити тег RFID.`,rfidCleared:`Тег RFID видалено`,archive:`Архівувати`,restore:`Відновити`,noSpools:`Ще немає котушок. Щоб почати, додайте свою першу котушку.`,noAvailableSpools:`Немає котушок. Додайте котушку до свого інвентарю або спершу скасуйте призначення іншого слота.`,kProfiles:`K-профілі`,addKProfile:`Додати K-профіль`,assignSpool:`Призначити котушку`,unassignSpool:`Скасувати призначення`,assignSuccess:`Котушку призначено, слот AMS налаштовано`,assignPendingInsert:`Котушку призначено. Слот буде налаштовано після її встановлення.`,assignFailed:`Не вдалося призначити котушку`,selectSpool:`Виберіть котушку, щоб призначити цьому слоту`,assigned:`Призначено`,assigning:`Призначення...`,searchSpools:`Пошук котушок...`,showAllSpools:`Показати всі котушки`,spoolmanSpools:`Котушки Spoolman`,allMaterials:`Усі матеріали`,filterByBrand:`Фільтрувати за брендом...`,showArchived:`Показати архівні`,quickAdd:`Швидке додавання (запас)`,quantity:`Кількість`,stock:`Запас`,configured:`Налаштовано`,spoolsCreated:`Створено котушок: {{count}}`,spoolsPartiallyCreated:`{{created}} з {{total}} котушок створено (деякі не вдалося)`,spoolCreated:`Котушку створено`,spoolUpdated:`Котушку оновлено`,spoolDeleted:`Котушку видалено`,deepLinkSpoolNotFound:`Котушку не знайдено`,deepLinkFetchFailed:`Не вдалося завантажити котушку — спробуйте ще раз`,spoolArchived:`Котушку заархівовано`,spoolRestored:`Котушку відновлено`,kProfileSaveFailed:`Не вдалося зберегти налаштування K-профілю`,syncWeightSpoolNotFound:`Котушку не знайдено — можливо, її видалено`,syncWeightSpoolmanUnreachable:`Spoolman недоступний — спробуйте пізніше`,syncWeightFailed:`Не вдалося синхронізувати вагу`,spoolmanUnreachable:`Spoolman недоступний — спробуйте пізніше`,deleteSpoolNotFound:`Котушку не знайдено — можливо, її вже видалено`,deleteFailed:`Не вдалося видалити котушку`,archiveSpoolNotFound:`Котушку не знайдено — можливо, її вже видалено`,archiveFailed:`Не вдалося заархівувати котушку`,restoreSpoolNotFound:`Котушку не знайдено — можливо, її вже видалено`,restoreFailed:`Не вдалося відновити котушку`,saveFailed:`Не вдалося зберегти зміни`,tagClearFailed:`Не вдалося очистити тег`,deleteConfirm:`Ви впевнені, що хочете видалити цю котушку? Це неможливо скасувати.`,archiveConfirm:`Ви впевнені, що хочете заархівувати цю котушку?`,advancedSettings:`Розширені налаштування`,filamentInfoTab:`Інформація про філамент`,paProfileTab:`Профіль PA`,filamentInfo:`Філамент`,additional:`Додатково`,loadingPresets:`Завантаження хмарних профілів...`,cloudConnected:`Хмара підключена`,cloudNotConnected:`Хмара не підключена (за умовчанням)`,recentColors:`Останні`,searchColors:`Пошук кольорів...`,searchResults:`Результати пошуку`,allColors:`Всі кольори`,commonColors:`Поширені кольори`,showLess:`Показувати менше`,showAll:`Показати все`,noColorsFound:`Жоден колір не відповідає вашому запиту`,noResults:`Збігів не знайдено`,extraColorsLabel:`Додаткові кольори`,extraColorsPlaceholder:`EC984C,#6CD4BC,A66EB9,D87694`,extraColorsHint:`Вставте від 2 до 8 шістнадцяткових знаків, розділених комами. Візуалізація як градієнт.`,extraColorsInvalid:`Проігнорований недійсний шістнадцятковий код: {{tokens}}`,colorEffectLabel:`Ефект`,colorEffect:{none:`Жодного`,sparkle:`Блиск`,wood:`Деревина`,marble:`Мармур`,glow:`Світіння`,matte:`Матовий`,silk:`Шовк`,galaxy:`Галактика`,rainbow:`Веселка`,metal:`метал`,translucent:`Напівпрозорий`,gradient:`Градієнт`,dualColor:`Подвійний колір`,triColor:`Три кольори`,multicolor:`Багатобарвність`},selectMaterialFirst:`Спочатку виберіть матеріал на вкладці «Інформація про філамент».`,noPrintersConfigured:`Принтери не налаштовані. Додайте принтери для використання профілів PA.`,matchingFilter:`Зіставлення`,anyBrand:`Будь-який бренд`,anyVariant:`Будь-який варіант`,autoSelect:`Автоматичний вибір`,matches:`збіги`,match:`збіг`,noMatches:`Немає збігів`,connected:`Підключено`,offline:`Не в мережі`,printerOffline:`Принтер не в мережі. Підключіться, щоб переглянути профілі калібрування.`,noKProfilesMatch:`Немає K-профілів, що відповідають вибраному філаменту.`,leftNozzle:`Ліве сопло`,rightNozzle:`Праве сопло`,profilesSelected:`вибрані профілі калібрування`,totalInventory:`Загальний запас`,totalConsumed:`Всього спожито`,byMaterial:`За матеріалом`,inPrinter:`У принтері`,lowStock:`Низький запас`,sinceTracking:`З початку відстеження`,resetConsumedCounter:`Скинути лічильник`,resetConsumedCounterTooltip:`Обнулити лічильник спожитих грамів для цієї котушки. Залишкова вага не зміниться.`,resetConsumedCounterConfirm:`Скинути лічильник спожитих грамів на 0? Майбутні роздруківки знову відстежуватимуться з нуля. Сама котушка, розрахунок її залишкової ваги та ваші налаштування не змінюються.`,resetAllConsumedCounters:`Обнулити всі лічильники`,resetAllConsumedCountersTooltip:`Обнулити лічильник спожитих грамів для кожної котушки. Залишкова вага не зміниться.`,resetAllConsumedCountersConfirm:`Скинути лічильники спожитих грамів до 0 для всіх котушок ({{count}}, включно з архівними)? Статистику «Всього спожито» буде очищено, а облік майбутніх друків почнеться з нуля. Самі котушки та їхня залишкова вага не зміняться.`,consumedCounterReset:`Скидання лічильника`,allConsumedCountersReset:`Скинуто лічильники котушок: {{count}}`,resetConsumedCounterFailed:`Не вдалося скинути лічильник`,loadedInAms:`Завантажено в AMS/Ext`,remaining:`Залишилося`,weightCheck:`Перевірка ваги`,lastWeighed:`Останнє зважування`,neverWeighed:`Ще не зважувалася`,search:`Пошук котушок...`,showing:`Показ`,to:`до`,of:`з`,show:`Показати`,spools:`котушки`,spool:`котушка`,page:`Сторінка`,noSpoolsMatch:`Результатів не знайдено`,noSpoolsMatchDesc:`Спробуйте налаштувати пошук або фільтри, щоб знайти те, що ви шукаєте.`,active:`Активний`,archived:`Архівовано`,all:`все`,used:`Використані`,new:`Нові`,clearFilters:`Очистити фільтри`,table:`Таблиця`,cards:`картки`,net:`Нетто`,groupSimilar:`Групувати`,groupedSpools:`Однакових котушок: {{count}}`,groupedRows:`рядки`,columns:`Стовпці`,configureColumns:`Налаштувати стовпці`,configureColumnsDesc:`Перетягніть, щоб змінити порядок стовпців, або використовуйте стрілки. Перемкніть видимість за допомогою значка ока.`,visible:`видно`,reset:`Скинути`,cancel:`Скасувати`,applyChanges:`Застосувати зміни`,moveUp:`Перемістити вгору`,moveDown:`Перемістити вниз`,hideColumn:`Сховати стовпець`,showColumn:`Показати стовпець`,linkToSpool:`Прив’язати до котушки`,tagLinked:`Тег пов’язано з котушкою`,tagLinkFailed:`Не вдалося зв’язати тег`,tagAlreadyLinked:`Тег уже пов’язано з іншою котушкою`,unknownTag:`Виявлено невідомий тег RFID.`,usageHistory:`Історія використання`,noUsageHistory:`Використання ще не зареєстровано`,printName:`Назва друку`,weightConsumed:`Витрачена вага`,clearHistory:`Очистити`,historyCleared:`Історію використання очищено`,fillSourceLabel:`(Інвентар)`,lowStockThresholdError:`Порогове значення має бути від 0,1 до 99,9`,assignMismatchTitle:`Невідповідність матеріалу`,assignMismatchMessage:`Вибраний матеріал котушки "{{spoolMaterial}}" не відповідає матеріалу лотка "{{trayMaterial}}" для {{location}}. Все одно призначити?`,assignMismatchConfirm:`Все одно призначити`,assignPartialMismatchMessage:`Матеріал котушки "{{spoolMaterial}}" схожий на "{{trayMaterial}}" у {{location}}, але не зовсім відповідає. Ви бажаєте продовжити?`,assignProfileMismatchMessage:`Профіль котушки «{{spoolProfile}}» не відповідає профілю лотка «{{trayProfile}}» у {{location}}. Ви бажаєте продовжити?`,assignReconfigureNote:`Слот AMS буде переналаштовано для використання профілю котушки.`,spoolmanFilamentCatalog:`Каталог філаментів Spoolman`,pickFromSpoolmanCatalog:`Вибрати з каталогу Spoolman…`,spoolmanFilamentSelected:`Філамент вибрано з каталогу Spoolman`,spoolmanFilamentUnlinked:`Посилання на каталог філаментів видалено`,noSpoolmanFilaments:`У каталозі Spoolman не знайдено філаментів`,spoolmanFilamentColorSwatch:`Колір філаменту`,spoolWeightManagedBySpoolman:`Вага порожньої котушки керується залежно від типу філаменту в Spoolman`,spoolmanCatalogLoadFailed:`Не вдалося завантажити каталог філаментів Spoolman`},timelapse:{title:`Таймлапс`,create:`Створити Timelapse`,download:`Завантажити`,delete:`Видалити`,preview:`Попередній перегляд`,frameRate:`Частота кадрів`,quality:`якість`,processing:`Обробка...`,noTimelapses:`Немає таймлапсів`},ams:{title:`AMS`,slot:`Слот`,empty:`Порожній`,emptySlot:`Порожній слот`,slotEmpty:`Порожній`,slotUnconfigured:`?`,emptySlotReset:`Філамент не призначено`,unknown:`Невідомий`,humidity:`Вологість`,temperature:`температура`,filamentType:`Тип філаменту`,filamentColor:`Колір`,remaining:`Залишилося`,history:`AMS Історія`,noHistory:`Історія недоступна`,configureSlot:`Налаштувати слот`,externalSpool:`Зовнішня котушка`,profile:`Профіль`,kFactor:`Фактор K`,kFactorShort:`K`,fill:`Рівень заповнення`,configure:`Налаштувати`,used:`використовується`,remainingUnit:`залишилося`},printModal:{variants:{editNote:`Ці варіанти задано під час додавання в чергу. Щоб змінити, скасуйте та додайте знову.`,title:`Варіанти принтера`,help:`Одне завдання, одне місце в черзі. Перший відповідний принтер, що звільниться, надрукує свій файл.`,unknownModel:`Невідома модель`,plateFor:`Стіл для {{filename}}`,moveUp:`Вгору`,moveDown:`Вниз`,queued:`У черзі, варіантів: {{count}}`},selectPrinter:`Вибрати принтер`,selectPlate:`Вибрати пластину`,filamentMapping:`Зіставлення філаментів`,useArchiveMapping:`Зіставлення`,useArchiveMappingTooltip:`Вибрати всі слоти зі зіставлення AMS, збереженого з цим записом (зі слайсера), замість добору за типом/кольором.`,clickToChangeSlot:`Натисніть, щоб змінити призначення слота`,reRead:`Перечитати`,plateN:`Пластина {{n}}`,plateFilamentsUnreadable:`Не вдалося прочитати філаменти вибраної пластини, тому їх неможливо зіставити. Зніміть вибір із цієї пластини, щоб додати решту до черги.`,totalCost:`Загальна вартість:`,slotRemainingShort:` — залишилося {{grams}} г`,printSettings:`Налаштування друку`,bedLeveling:`Вирівнювання столу`,flowCalibration:`Калібрування потоку`,vibrationCalibration:`Калібрування вібрації`,layerInspection:`Перевірка першого шару`,timelapse:`Таймлапс`,cancel:`Скасувати`,noPrintersAvailable:`Немає доступних принтерів`,printerBusy:`Принтер зайнятий`,printerOffline:`Принтер не в мережі`,sameTypeDifferentColor:`Одного типу, іншого кольору`,filamentTypeNotLoaded:`Тип філаменту не завантажено`,statusReady:`Готово`,statusColorMismatch:`Колір не збігається`,statusTypeNotFound:`Тип не знайдено`,requiredTooltip:`Потрібно: {{name}} - {{color}}`,manuallySelected:`Вибрано вручну`,autoMatched:`Підібрано автоматично`,selectSlot:`Вибрати слот`,sameTypeDifferentColorDetail:`Того самого типу, іншого кольору: потрібен {{required}}, у слоті {{loaded}}`,requiredTypeNotInPrinter:`Потрібний тип філаменту не знайдено у принтері.`,whenToPrint:`Коли друкувати`,asap:`Якнайшвидше`,queue:`Черга`,schedule:`За розкладом`,dateTime:`Дата й час`,invalidDateTime:`Введіть дійсну дату й час`,openCalendar:`Відкрити календар`,requireManualStart:`Потрібен ручний запуск`,requirePreviousSuccess:`Починати, лише якщо попередній друк вдався`,autoOffAfter:`Вимкнути принтер після завершення`,helpAsap:`Завдання буде додано на початок черги й розпочнеться, щойно відповідний принтер звільниться.`,helpSchedule:`Друк розпочнеться в запланований час, якщо принтер буде вільний. Якщо принтер зайнятий, завдання чекатиме, доки він звільниться.`,helpQueue:`Завдання буде додано в кінець черги.`,leftNozzle:`Л`,rightNozzle:`Р`,leftNozzleTooltip:`Ліве сопло`,rightNozzleTooltip:`Праве сопло`,ftsSameInletHint:`Усі філаменти для цього друку підключені до перемикача тракту філаменту IN-{{inlet}}. Зміна між філаментами на одному вході повільніша — перемістіть один в AMS на іншому вході.`,rackPosition:`Позиція у стійці`,rackPositionTooltip:`Яким соплом зі стійки друкувати цей філамент. Позиції нумеруються так само, як на принтері.`,rackEmptyPosition:`Ця позиція у стійці порожня`,rackWrongNozzle:`Встановлено сопло {{has}}; цьому філаменту потрібно {{needs}}`,filamentOverride:`Перевизначення філаменту`,filamentOverrideHint:`Необов’язково замініть філаменти для призначення на основі моделі. Планувальник зіставлятиметься з вибраними філаментами замість вихідних значень 3MF.`,originalFilament:`Оригінал`,overrideWith:`Перевизначити за допомогою`,resetToOriginal:`Скинути до оригіналу`,insufficientFilamentTitle:`Недостатньо філаменту`,waitingForAmsStatus:`Очікування статусу AMS від {{printer}}…`,insufficientFilamentMessage:`У деяких призначених котушках залишилося менше філаменту, ніж потрібно для друку:`,insufficientFilamentLine:`{{printer}} - {{slot}}: потрібно {{required}}g, залишилося {{remaining}}g`,insufficientFilamentLinePooled:`{{printer}} - {{slot}}: потрібно {{required}}g, доступно {{remaining}}g на відповідних котушках (резервне перемикання філаменту AMS)`,printAnyway:`Усе одно друкувати`,forceColorMatch:`Примусовий збіг кольорів`,staggerPrinterStarts:`Запускати принтери почергово`,staggerGroupSize:`Розмір групи`,staggerInterval:`Інтервал (хв)`,staggerPreview:`Принтерів: {{printers}} → груп: {{groups}}, по {{size}}; інтервал запуску — {{interval}} хв`,staggerLastGroup:`остання група: {{count}}`,staggerTotal:`всього: {{minutes}} хв`,staggerToPrinters:`Розподілити запуск між {{count}} принтерами`,gcodeInjection:`Додати G-код автоматичного друку`,insufficientBudget:`Недостатньо бюджету`,unlimitedNoBudget:`Без обмежень — ліміт бюджету не встановлено.`,noPrintableCostCenters:`Немає активного центру витрат, доступного для друку. Попросіть адміністратора надати вам доступ до друку.`},backup:{includesEncryptionKey:`Локальні резервні копії включають файл ключа шифрування MFA (DATA_DIR/.mfa_encryption_key), тому резервна копія ZIP є автономною. Вважайте ZIP конфіденційним — кожен, хто має файл, може розшифрувати секрети клієнта OIDC і секрети TOTP, що зберігаються в ньому.`,title:`Резервне копіювання та відновлення`,createBackup:`Створити резервну копію`,restoreBackup:`Відновити резервну копію`,restoreDescription:`Замінити всі дані даними з файлу резервної копії`,downloadBackup:`Завантажити резервну копію`,uploadBackup:`Вивантажити резервну копію`,lastBackup:`Остання резервна копія`,autoBackup:`Автоматичне резервне копіювання`,backupNow:`Створити резервну копію зараз`,restoreWarning:`Увага: відновлення резервної копії перезапише всі поточні дані.`,includeArchives:`Включати архіви`,includeSettings:`Включити налаштування`,includeProfiles:`Включити профілі`,backupSuccess:`Резервну копію створено успішно`,restoreSuccess:`Резервну копію успішно відновлено`,backupFailed:`Помилка резервного копіювання`,restoreFailed:`Не вдалося відновити`,restoreNote:`Віртуальний принтер буде зупинено під час відновлення`,githubBackup:`Резервне копіювання Git`,enabled:`Увімкнено`,cloudLoginRequired:`Потрібно ввійти в Bambu Cloud. Перейдіть до Профілі → Хмарні профілі, щоб увімкнути резервне копіювання до GitHub.`,cloudLoginRequiredShort:`Потрібен вхід у хмару`,githubDescription:`Автоматично синхронізуйте свої профілі з приватним репозиторієм GitHub для резервного копіювання та історії версій.`,repoIsPrivate:`Репозиторій приватний — безпечно створювати резервні копії.`,repoIsPublicWarning:`Репозиторій є ПУБЛІЧНИМ. Резервні копії Bambuddy містять облікові дані MQTT, токени Home Assistant, токени Prometheus, вашу електронну пошту Bambu Cloud і коди доступу до принтера через K-профілі. Збереження блокується, доки ви не зробите репозиторій приватним у налаштуваннях постачальника.`,repoVisibilityUnknown:`Не вдалося визначити видимість репозиторію. Bambuddy створює резервні копії лише в підтверджено приватних репозиторіях, тому збереження буде заблоковано.`,repositoryUrl:`URL репозиторію`,repoUrlPlaceholderGitHub:`https://github.com/username/repo-name`,repoUrlPlaceholderGitea:`https://gitea.example.com/username/repo-name`,repoUrlPlaceholderForgejo:`https://forgejo.example.com/username/repo-name`,repoUrlPlaceholderGitLab:`https://gitlab.com/username/repo-name`,allowInsecureHttp:`Дозволити незахищений HTTP`,allowInsecureHttpHint:`Увімкнути для саморозміщених екземплярів у приватних мережах без TLS`,personalAccessToken:`Персональний токен доступу`,tokenSaved:`(збережено)`,enterNewToken:`Введіть новий токен для оновлення`,tokenHintGitHub:`Токен із деталізованими правами на читання й запис Contents або класичний токен з областю repo.`,tokenHintGitLab:`Токен з областю api або read_repository разом із write_repository.`,tokenHintGitea:`Токен з областю write:repository.`,tokenHintForgejo:`Токен з областю write:repository. Достатньо токена, обмеженого лише цим репозиторієм.`,branch:`Гілка`,provider:`Постачальник Git`,providerGitHub:`GitHub`,providerGitLab:`GitLab`,providerGitea:`Gitea`,providerForgejo:`Forgejo`,manualOnly:`Тільки вручну`,hourly:`щогодини`,daily:`Щодня`,weekly:`Щотижня`,includeInBackup:`Включити в резервну копію`,kProfiles:`K-профілі`,kProfilesDescription:`Калібрування Pressure Advance (PA) від підключених принтерів`,noPrintersConnected:`Немає підключених принтерів`,printersConnected:`{{connected}}/{{total}} підключено`,cloudProfiles:`Хмарні профілі`,cloudProfilesDescription:`Попередні налаштування філаменту, принтера та процесу від Bambu Cloud і Orca Cloud`,cloudProfilesAccounts:`Підключені акаунти — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}`,appSettings:`Налаштування програми`,appSettingsDescription:`Конфігурація Bambuddy (повна база даних)`,spoolInventory:`Облік котушок`,spoolInventoryDescription:`Котушки з філаментом, історія використання та відстеження витрат`,printArchives:`Архіви друку`,printArchivesDescription:`Метадані історії друку (без файлів gcode/3MF)`,lastBackupAt:`Остання резервна копія:`,noBackupsYet:`Резервних копій ще немає`,next:`Наступне виконання:`,startingBackup:`Початок резервного копіювання...`,test:`Тест`,enableBackup:`Увімкнути резервне копіювання`,testConnection:`Тестове підключення`,enterRepoUrl:`Введіть URL репозиторію`,enterRepoAndToken:`Введіть URL репозиторію та токен доступу`,repoRequired:`Потрібно вказати URL репозиторію`,tokenRequired:`Потрібен токен доступу`,githubBackupEnabled:`GitHub резервне копіювання ввімкнено`,tokenUpdated:`Токен оновлено`,settingsSaved:`Налаштування збережено`,failedToSave:`Не вдалося зберегти: {{message}}`,backupCompleteFiles:`Резервне копіювання завершено – файли {{count}} оновлено`,backupSkippedNoChanges:`Резервне копіювання пропущено – без змін`,backupFailed2:`Помилка резервного копіювання: {{message}}`,clearedLogs:`Очищено журнали {{count}}.`,failedToClearLogs:`Не вдалося очистити журнали: {{message}}`,restoreFromGit:{button:`Відновити з Git`,title:`Відновлення з резервної копії Git`,subtitle:`Виберіть коміт і вкажіть, що відновити`,commitLabel:`Коміт резервної копії`,latestCommit:`Остання резервна копія (вершина гілки)`,categoriesLabel:`Що відновити`,inspecting:`Читання вмісту резервної копії...`,itemCount:`{{count}} у резервній копії`,overwriteLabel:`Перезаписувати наявні записи`,overwriteOn:`Наявні записи буде оновлено з резервної копії.`,overwriteOff:`Додаються лише відсутні записи; наявні залишаються без змін.`,selectedCount:`Вибрано: {{count}}`,restoring:`Відновлення...`,confirmTitle:`Відновити з резервної копії?`,confirmMessage:`Вибрані категорії буде відновлено з цього коміту. Відсутні записи буде додано, наявні залишаться без змін.`,confirmMessageOverwrite:`Вибрані категорії буде відновлено з цього коміту з перезаписом записів, які вже існують локально. Цю дію не можна скасувати.`,kprofilesOverwriteCaveat:`K-профілі — виняток: запис у слот завжди замінює калібрування на принтері.`,tally:`відновлено: {{restored}}, пропущено: {{skipped}}, з помилкою: {{failed}}`,reloadHint:`Перезавантажте Bambuddy, щоб відновлені дані відобразилися всюди.`,partialHint:`Перелічені вище категорії завершено та збережено. Відсутні категорії не виконувалися.`,failed:`Не вдалося виконати відновлення.`,loadFailed:`Не вдалося прочитати репозиторій резервних копій.`,details:{notPresent:`Відсутнє в цьому коміті резервної копії`,unreadableJson:`Нечитабельний JSON: {{paths}}`,settingsNoPayload:`У даних немає налаштувань`,settingsCredentialsWillSkip:`Ключів, схожих на облікові дані, буде пропущено: {{count}}`,settingsCompanionWillSkip:`Ключів, схожих на облікові дані, буде пропущено: {{count}}, а залежні від них перемикачі ({{companion}}) залишаться вимкненими`,settingsCompanionOnlyWillSkip:`Перемикачі ({{companion}}) залишаться вимкненими - облікові дані, потрібні кожному з них, не можна відновити з резервної копії`,spoolsUsageCount:`включно із записами використання: {{count}}`,archivesMetadataOnly:`Лише метадані - файли 3MF і мініатюри не входять до резервної копії Git`,kprofilesPrinterCount:`по {{count}} принтерах`},notes:{noData:`У цій резервній копії немає даних такого типу`,archivesPrinterMissing:`Деякі архіви посилалися на принтери, яких більше немає - зв'язок очищено`,archivesProjectMissing:`Деякі архіви посилалися на проєкти, яких більше немає - зв'язок очищено`,archivesOwnerCleared:`Деякі архіви посилалися на користувачів, яких більше немає - власника очищено, тому вони видимі лише користувачам із дозволом archives:read_all, доки адміністратор не призначить власника знову`,archivesOwnerUnmatched:`Деякі архіви вказують власника, якого немає в цьому екземплярі - власника очищено, а не вгадано за ідентифікатором користувача з резервної копії, тому вони видимі лише користувачам із дозволом archives:read_all, доки адміністратор не призначить власника знову`,archivesOwnerUnknown:`Деякі архіви відновлено без власника - у цій резервній копії його не записано, тому вони видимі лише користувачам із дозволом archives:read_all, доки адміністратор не призначить власника`,archivesUndeleted:`Архіви, видалені після резервного копіювання, знову видимі - перезапис був увімкнений`,archivesMetadataOnly:`Відновлені архіви містять лише метадані - файли 3MF і мініатюри не входять до резервної копії Git`,spoolUsageUnresolved:`Записів використання пропущено: {{count}} - їхньої котушки немає у списку котушок цієї резервної копії, тож немає до чого їх прив'язати.`,spoolUsageUnlinked:`Записів використання відновлено без зв'язку з історією друку: {{count}} - виберіть «Архіви друку» разом з «Інвентарем котушок», щоб зберегти зв'язок.`,spoolTagKept:`Міток котушок залишено без змін: {{count}} - резервна копія стерла б мітку, відскановану пізніше, або перенесла б її на іншу котушку.`,settingsCredentialsSkipped:`Ключів, схожих на облікові дані, пропущено: {{count}} - введіть секрети вручну`,settingsAuthSkipped:`Налаштувань автентифікації пропущено: {{count}} - змінюйте їх у розділі «Налаштування > Автентифікація», щоб перевірки блокування й далі працювали`,settingsCompanionSkipped:`{{keys}} залишено вимкненими - потрібні їм облікові дані не можна відновити з резервної копії, і в цьому екземплярі вони не збережені, тож увімкнення залишило б інтеграцію без автентифікації`,settingsMqttRelayFailed:`Налаштування MQTT відновлено, але реле не вдалося перепідключити - перезапустіть Bambuddy`,kprofilesAlwaysOverwrite:`K-профілі завжди перезаписують відповідний слот на принтері`,kprofilesAckUnreliable:`Принтер, який не відповідає, усе одно вважається відновленим - перевірте профілі на принтері`,kprofilesPrinterMissing:`Немає принтера із серійним номером {{serial}} - пропущено`,kprofilesPrinterOffline:`{{printer}} ({{serial}}) не підключено - пропущено`,kprofilesUnknownNozzle:`Неочікуваний діаметр сопла {{nozzle}} для {{serial}} - надіслано як є`,kprofilesUnmatched:`Профілів для {{nozzle}} без відповідника на {{printer}}: {{count}} - додано як нові профілі`,kprofilesSendFailed:`Не вдалося надіслати профілі {{nozzle}} на {{printer}} ({{serial}})`,kprofilesRefused:`{{printer}} ({{serial}}) відхилив профілі {{nozzle}}: {{reason}}`,kprofilesStepFailed:`Не вдалося завершити етап K-профілів - {{reason}}. Усе, що було відновлено до нього, збережено.`}},history:`історія`,clear:`Очистити`,date:`Дата`,status:`Статус`,trigger:`Тип`,triggers:{manual:`Резервна копія (вручну)`,scheduled:`Резервна копія (за розкладом)`,restore:`Відновлення`},commit:`Коміт`,localBackup:`Локальна резервна копія`,localBackupDescription:`Створити повну резервну копію даних Bambuddy, включно з базою даних, архівами, вивантаженнями та всіма файлами.`,downloadBackupLabel:`Завантажити резервну копію`,completeBackupZip:`Повне резервне копіювання: база даних + усі файли (ZIP)`,download:`Завантажити`,preparingBackup:`Підготовка резервної копії...`,creatingArchive:`Створення резервного архіву... Для великих архівів це може зайняти деякий час.`,downloadingFile:`Завантаження файлу резервної копії...`,backupDownloaded:`Резервну копію успішно завантажено`,failedToCreateBackup:`Не вдалося створити резервну копію: {{message}}`,restore:`Відновити`,restoreReplacesAll:`Відновлення замінює всі дані.`,restoreReplacesAllDetail:`Вашу поточну базу даних і файли буде повністю замінено. Після відновлення потрібен перезапуск.`,restoreConfirmTitle:`Відновити резервну копію`,restoreConfirmMessage:`Ви впевнені, що бажаєте відновити з "{{filename}}"? Це повністю замінить вашу поточну базу даних і всі файли. Після відновлення програму потрібно буде перезапустити.`,restoreConfirmButton:`Відновити резервну копію`,uploadingFile:`Вивантаження файлу резервної копії...`,backupRestoredRestart:`Резервну копію відновлено. Перезапустіть Bambuddy.`,failedToRestore:`Не вдалося відновити резервну копію. Будь ласка, перевірте формат файлу.`,reloadNow:`Перезавантажити зараз`,creatingBackup:`Створення резервної копії`,restoringBackup:`Відновлення з резервної копії`,preparing:`Підготовка...`,processing:`Обробка...`,doNotClosePage:`Будь ласка, не закривайте цю сторінку та не виходьте з неї. Для великих резервних копій ця операція може зайняти кілька хвилин.`,restoring:`Відновлення...`,restoreComplete:`Відновлення завершено`,restoreFailed2:`Не вдалося відновити`,importSettings:`Імпорт налаштувань із файлу резервної копії`,pleaseWaitRestoring:`Зачекайте, поки ваші дані відновляться`,selectBackupFile:`Натисніть, щоб вибрати файл резервної копії (.json або .zip)`,duplicateHandling:`Як працює обробка дублікатів:`,matchPrinters:`Принтери`,matchPrintersBy:`відповідає серійному номеру`,matchSmartPlugs:`Розумні розетки`,matchSmartPlugsBy:`зіставляються за IP-адресою`,matchNotificationProviders:`Постачальники сповіщень`,matchNotificationProvidersBy:`відповідність за назвою`,matchFilaments:`філаменти`,matchFilamentsBy:`відповідність за назвою + типом + брендом`,matchArchives:`Архіви`,matchArchivesBy:`відповідає хешу вмісту (завжди пропускається)`,matchPendingUploads:`Вивантаження, що очікують`,matchPendingUploadsBy:`зіставляються за назвою файлу`,matchSettingsTemplates:`Налаштування та шаблони`,matchSettingsTemplatesBy:`завжди перезаписується`,replaceExisting:`Замінити існуючі дані`,keepExisting:`Зберегти наявні дані`,overwriteDescription:`Замінити наявні елементи даними з резервної копії`,keepDescription:`Відновлюйте лише елементи, яких ще не існує`,overwriteCaution:`Увага:`,overwriteWarning:`Перезапис замінить ваші поточні конфігурації даними з резервної копії. Коди доступу до принтера ніколи не перезаписуються з міркувань безпеки.`,cancel:`Скасувати`,processingBackup:`Обробка файлу резервної копії...`,itemsRestored:`Елементів відновлено`,itemsSkipped:`Пропущено елементів`,restored:`Відновлено`,skippedAlreadyExist:`Пропущено (вже існує)`,filesCategory:`Файли (3MF, мініатюри тощо)`,andMore:`…і ще {{count}}`,newApiKeysGenerated:`Створено нові API ключі`,keysShownOnce:`Ці ключі відображаються лише один раз. Скопіюйте їх зараз!`,copy:`Копіювати`,noDataFound:`У файлі резервної копії не знайдено даних для відновлення.`,close:`Закрити`,scheduledBackup:`Резервне копіювання за розкладом`,scheduledBackupDescription:`Автоматично створюйте резервні знімки за розкладом. Вихідний каталог можна підключити до NAS або зовнішнього накопичувача.`,frequency:`Частота`,backupTime:`час`,retention:`Термін зберігання`,retentionDescription:`Кількість резервних копій, які потрібно зберегти`,outputPath:`Вихідний шлях`,outputPathPlaceholder:`За замовчуванням: {{path}}`,outputPathDescription:`Залиште порожнім для розташування за умовчанням`,runNow:`Запустити зараз`,backupFiles:`Файли резервних копій`,noScheduledBackups:`Резервних копій ще немає`,deleteBackup:`Видалити`,deleteBackupConfirm:`Видалити цей файл резервної копії?`,backupRunning:`Виконується резервне копіювання...`,scheduledBackupComplete:`Резервне копіювання успішно завершено`,scheduledBackupFailed:`Помилка резервного копіювання`,nextBackup:`Наступна резервна копія`,backupSize:`Розмір`,localTimeHint:`Місцевий час ({{tz}})`,defaultPathLabel:`За замовчуванням:`,pathCheck:{title:`Bambuddy не може писати в цей каталог`,howToFix:`Як виправити:`,sandboxed:`Служба Bambuddy не може писати в {{path}}. Його модуль systemd працює з ProtectSystem=strict, що робить кожен каталог за межами каталогів встановлення, даних і журналу доступними лише для читання для служби — навіть той, у який ви можете писати з власної оболонки.`,read_only:`{{path}} знаходиться у файловій системі лише для читання.`,permission_denied:`Bambuddy не має права записувати в {{path}}. Перевірте власника каталогу та дозволи.`,no_space:`У файловій системі, де розташовано {{path}}, закінчилося місце.`,not_a_directory:`{{path}} існує, але не є каталогом.`,missing:`{{path}} не існує і не може бути створений.`,error:`Bambuddy не може писати в {{path}}.`,ephemeralTitle:`Ці резервні копії не збережуться після перезапуску контейнера`,container_ephemeral:`{{path}} розташовано всередині контейнера Bambuddy, а не на хості. Резервні копії в цьому каталозі буде втрачено після повторного створення контейнера. Змонтуйте каталог із хоста:`},categories:{settings:`Налаштування`,notification_providers:`Постачальники сповіщень`,notification_templates:`Шаблони сповіщень`,smart_plugs:`Розумні розетки`,printers:`Принтери`,filaments:`філаменти`,maintenance_types:`Види технічного обслуговування`,archives:`Архіви`,projects:`Проєкти`,pending_uploads:`Вивантаження, що очікують`,external_links:`Зовнішні посилання`,api_keys:`Ключі API`}},tags:{title:`Теги`,addTag:`Додати тег`,editTag:`Редагувати тег`,deleteTag:`Видалити тег`,tagName:`Назва тегу`,tagColor:`Колір мітки`,noTags:`Без тегів`,deleteConfirm:`Ви впевнені, що бажаєте видалити цей тег?`,manageTags:`Керування тегами`},uploadModal:{title:`Вивантажити файли 3MF`,dragDrop:`Перетягніть файли .3mf сюди`,or:`або`,browseFiles:`Огляд файлів`,extractionInfo:`Модель принтера буде автоматично витягнуто з метаданих файлу 3MF.`,uploaded:`вивантажено`,failed:`не вдалося`,uploading:`Вивантаження...`,upload:`Вивантажити`,uploadFailed:`Не вдалося вивантажити`},editArchive:{title:`Редагувати архів`,name:`Назва`,namePlaceholder:`Друкування імені`,printer:`Принтер`,noPrinter:`Немає принтера`,project:`Проєкт`,noProject:`Жодного проєкту`,itemsPrinted:`Надруковано об’єктів`,itemsPrintedHelp:`Кількість елементів, виготовлених у цьому завданні друку`,filamentUsed:`Витрачений філамент (г)`,filamentUsedPlaceholder:`напр. 46.16`,filamentUsedHelp:`Вкажіть вручну, якщо друк заархівовано без 3MF — тоді він потрапить до підсумків з філаменту. Повторне сканування архіву, який має 3MF, зчитує значення з файлу.`,notes:`Примітки`,notesPlaceholder:`Додайте примітки щодо цього друку...`,externalLink:`Зовнішнє посилання`,externalLinkPlaceholder:`https://printables.com/model/...`,externalLinkHelp:`Посилання на Printables, Thingiverse або інше джерело`,tags:`Теги`,tagsPlaceholder:`Додати теги...`,addMoreTags:`Додати більше тегів...`,matchingTags:`Відповідає "{{query}}"`,existingTags:`Існуючі теги`,clickToAdd:`(натисніть, щоб додати)`,status:`Статус`,failureReason:`Причина невдачі`,selectReason:`Виберіть причину...`,photos:`Фотографії надрукованих результатів`,photosHelp:`Натисніть +, щоб додати фотографії результату друку`,printResult:`Роздрукувати результат`,saving:`Збереження...`,failureReasons:{adhesionFailure:`Порушення адгезії`,spaghettiDetached:`Спагетті / Відр`,layerShift:`Зсув шару`,cloggedNozzle:`Засмічене сопло`,filamentRunout:`Биття філаменту`,warping:`Викривлення`,stringing:`Нанизування`,underExtrusion:`Підвидавлювання`,powerFailure:`Збій живлення`,userCancelled:`Користувач скасовано`,other:`інше`},statuses:{completed:`Виконано`,failed:`Не вдалося`,aborted:`Скасовано`,printing:`Друк`}},kProfiles:{title:`K-профілі`,noPrintersConfigured:`Принтери не налаштовані`,addPrinterInSettings:`Додайте принтер у налаштуваннях, щоб керувати K-профілями`,noActivePrinters:`Немає активних принтерів`,enablePrinterConnection:`Увімкніть підключення до принтера, щоб переглянути його K-профілі`,loadingProfiles:`Завантаження K-профілів...`,printerOffline:`Принтер не в мережі`,printerOfflineDesc:`Вибраний принтер не підключено. Увімкніть його, щоб переглянути K-профілі.`,noMatchingProfiles:`Немає відповідних профілів`,noMatchingProfilesDesc:`Немає профілів, які відповідають вашим критеріям пошуку`,noKProfiles:`Без K-профілів`,noKProfilesDesc:`Не знайдено профілів підвищення тиску для сопла {{diameter}} мм`,createFirstProfile:`Створити перший профіль`,printer:`Принтер`,nozzle:`Сопло`,refresh:`Оновити`,addProfile:`Додати профіль`,export:`Експорт`,import:`Імпорт`,select:`Вибрати`,selectAll:`Вибрати усі`,delete:`Видалити`,searchPlaceholder:`Пошук за назвою або філаментом...`,allExtruders:`Всі екструдери`,leftOnly:`Тільки зліва`,rightOnly:`Тільки право`,allFlow:`Весь потік`,hfOnly:`Тільки HF`,sOnly:`Тільки S`,sortName:`Сортувати за назвою`,sortKValue:`Сортувати: К-значення`,sortFilament:`Сорт: філамент`,leftExtruder:`Лівий екструдер`,rightExtruder:`Правий екструдер`,modal:{addTitle:`Додати K-профіль`,editTitle:`Редагувати K-профіль`,profileName:`Назва профілю`,profileNamePlaceholder:`Мій профіль PLA.`,kValue:`К-значення`,kValuePlaceholder:`0,020`,kValueHelp:`Типовий діапазон: 0,01–0,06 для PLA, 0,02–0,10 для PETG`,filament:`Філамент`,selectFilament:`Виберіть філамент...`,source:{local:`Імпортовані`,orcaCloud:`Orca Cloud`,bambuCloud:`Bambu Cloud`,builtin:`Вбудований`},noFilamentsHelp:`Немає доступних філаментів. Увійдіть у Bambu Cloud або імпортуйте пресети в розділі Профілі → Локальні профілі.`,searchFilaments:`Пошук філаментів...`,noFilamentMatches:`Немає філаментів, що відповідають запиту`,flowType:`Тип потоку`,highFlow:`Сопло з високим потоком`,standard:`Стандартний`,nozzleSize:`Розмір сопла`,extruder:`Екструдер`,extruders:`Екструдери`,left:`Ліворуч`,right:`правильно`,notes:`Примітки (зберігаються локально)`,notesPlaceholder:`Додайте примітки щодо цього профілю...`,notesHelp:`Примітки зберігаються в Bambuddy, а не на принтері`,syncing:`Синхронізація з принтером...`,savingExtruder:`Збереження в екструдер {{current}}/{{total}}...`,pleaseWait:`Будь ласка, зачекайте`},deleteConfirm:{title:`Видалити профіль`,cannotUndo:`Це неможливо скасувати`,message:`Ви впевнені, що хочете видалити "{{name}}" із принтера?`},bulkDelete:{title:`Видалити профілі`,cannotUndo:`Це неможливо скасувати`,message:`Ви впевнені, що бажаєте видалити {{count}} вибрані профілі з принтера?`},toast:{profileSaved:`K-профіль збережено`,profilesSaved:`K-профіль збережено в екструдери {{count}}.`,selectAtLeastOneExtruder:`Виберіть принаймні один екструдер`,selectFilament:`Спочатку виберіть філамент`,filamentNotResolvable:`Немає ідентифікатора філаменту Bambu для {{name}} — принтер не зможе зберегти профіль`,profileDeleted:`K-профіль видалено`,profilesDeleted:`Видалені профілі {{count}}.`,exportedProfiles:`Експортовані профілі {{count}}.`,importedProfiles:`Імпортовано {{count}} з {{total}} профілів`,noProfilesToExport:`Немає профілів для експорту`,invalidFileFormat:`Недійсний формат файлу`,failedToParseImport:`Не вдалося проаналізувати імпортований файл`,failedToSaveBatch:`Не вдалося зберегти K-профілі`,noteSaved:`Нотатку збережено`,failedToSaveNote:`Не вдалося зберегти нотатку`},permission:{noRead:`Ви не маєте дозволу оновлювати профілі`,noCreate:`Ви не маєте дозволу додавати профілі`,noUpdate:`Ви не маєте дозволу на оновлення K-профілів`,noDelete:`Ви не маєте дозволу на видалення K-профілів`,noExport:`Ви не маєте дозволу на експорт профілів`,noImport:`Ви не маєте дозволу на імпорт профілів`}},virtualPrinter:{title:`Віртуальний принтер`,running:`Працює`,stopped:`Зупинено`,description:{default:`Увімкніть віртуальний принтер, який відображатиметься в Bambu Studio та OrcaSlicer. Надіслані на нього файли буде одразу заархівовано без друку.`,proxy:`Увімкніть проксі, який передає трафік слайсера на реальний принтер і дає змогу друкувати віддалено через будь-яку мережу.`},enable:{title:`Увімкнути віртуальний принтер`,visibleInSlicer:`Відображається як "Bambuddy" у виявленні слайсера`,proxyingTo:`Проксування до {{name}}`,notActive:`Неактивний`},model:{title:`Модель принтера`,description:`Виберіть модель принтера для емуляції.`,restartWarning:`Зміна моделі перезапустить віртуальний принтер`},accessCode:{title:`Код доступу`,isSet:`Код доступу встановлено`,notSet:`Немає встановленого коду доступу – потрібно для ввімкнення`,placeholder:`Введіть 8-символьний код`,placeholderChange:`Введіть новий код для зміни`,hint:`Має бути рівно 8 символів. Використовується слайсерами для автентифікації.`,charCount:`({{count}}/8)`,inheritedFromTarget:`Успадковано від цільового принтера`,derivedFromTargetHint:`Використовує код доступу цільового принтера. Міст пересилає автентифікацію слайсера на справжній принтер, тому коди мають збігатися — відредагуйте код доступу принтера, щоб змінити це значення.`,reveal:`Показати код доступу`,hide:`Приховати код доступу`},targetPrinter:{title:`Цільовий принтер`,configured:`Ціль проксі налаштовано`,notConfigured:`Цільовий принтер не вибрано – потрібен для режиму проксі`,placeholder:`Виберіть принтер...`,hint:`Виберіть принтер, на який проксі передаватиме трафік слайсера. Принтер має працювати в режимі LAN.`,noPrinters:`Принтери не налаштовані. Щоб використовувати режим проксі, спочатку додайте принтер.`},remoteInterface:{title:`Перевизначення мережевого інтерфейсу`,configured:`Перевизначення інтерфейсу активне`,optional:`Необов’язково – використовуйте, якщо автоматичне визначення IP є неправильним (наприклад, кілька мережевих карток, Docker, VPN)`,placeholder:`Автоматичне визначення (за замовчуванням)...`,hint:`Заміна адреси IP, яка оголошується через SSDP і використовується в сертифікаті TLS. Корисно, коли Bambuddy має кілька мережевих інтерфейсів.`},mode:{title:`Режим`,archive:`Архів`,archiveDesc:`Одразу архівувати файли`,review:`Перевірка`,reviewDesc:`Перевіряти перед архівуванням`,queue:`Черга`,queueDesc:`Архівувати та додати в чергу`,proxy:`Проксі`,proxyDesc:`Пересилати на фізичний принтер`},autoDispatch:{title:`Автоматичний запуск`,description:`Автоматично запускати завдання після додавання до черги. Якщо вимкнено, завдання чекатимуть ручного запуску.`},queueForceColorMatch:{title:`Примусовий збіг кольорів`,description:`Не надсилати завдання на принтер без філаменту точного типу й кольору. Типово вимкнено: без цього черга зіставляє лише модель і може вибрати принтер із філаментом іншого кольору.`},saveAmsMapping:{title:`Зберігати зіставлення AMS`,description:`Зберігати в записі вибір слота AMS, зроблений самим слайсером (з MQTT-команди project_file), щоб пізніший повторний друк використав ту саму фізичну котушку замість повторного визначення за типом/кольором файлу. Типово вимкнено.`},gcodeInjection:{title:`Вставлення G-коду`,description:`Застосовувати до завдань цього віртуального принтера фрагменти G-коду, налаштовані для кожної моделі. Типово вимкнено.`},tailscaleDisabled:{title:`Інтеграція з Tailscale`,description:`Увімкніть, щоб позначити цей віртуальний принтер як доступний через Tailscale. Буде показано Tailscale-адресу хоста, яку потрібно ввести в слайсері. Імпорт сертифіката ЦС залишається обов’язковим; цей перемикач не впливає на сертифікати.`},setupRequired:{title:`Потрібне налаштування`,description:`Для роботи функції віртуального принтера потрібна додаткова конфігурація системи. Це включає переадресацію портів, правила брандмауера та параметри, що стосуються платформи.`,readGuide:`Перед увімкненням прочитайте посібник із налаштування`},archiveNameSource:{title:`Джерело назви архіву`,description:`Виберіть, як називати нові архіви, що надходять через віртуальний принтер. «Метадані» використовують вбудоване слайсером поле Title з 3MF (типовий варіант). «Назва файлу» використовує назву, яку Bambu Studio надіслала через FTP. За наявності поля Title Bambu Studio замінює ним назву, введену у вікні «Надіслати на принтер», тому обидва режими часто дають однаковий результат.`,metadata:`Метадані`,filename:`Назва файлу`},caCert:{title:`Сертифікат слайсера`,description:`Віртуальні принтери використовують сертифікат TLS, підписаний ЦС Bambuddy. Імпортуйте цей сертифікат ЦС у довірче сховище вашого слайсера, щоб він прийняв з’єднання — не потрібно копіювати його з командного рядка.`,copy:`Копіювати`,copied:`Скопійовано`,download:`Завантажити`,fingerprint:`SHA-256`},howItWorks:{title:`Як це працює`,step1:`У тій самій локальній мережі віртуальні принтери автоматично з’являються в слайсері (Bambu Studio або OrcaSlicer). З інших мереж додайте їх вручну за IP-адресою та кодом доступу.`,step2:`У режимах архівування, перевірки та черги натисніть «Надіслати» у слайсері, щоб вивантажити файли 3MF до Bambuddy. Слайсер покаже повідомлення про успішний друк, але файл буде лише збережено, а не надруковано.`,step3:`У режимі проксі-сервера віртуальний принтер передає весь трафік на справжній принтер — друк починається негайно, ніби підключений безпосередньо.`},status:{title:`Деталі статусу`,printerName:`Назва принтера`,model:`Модель`,serialNumber:`Серійний номер`,mode:`Режим`,pendingFiles:`Файли, що очікують на розгляд`,targetPrinter:`Цільовий принтер`,ftpPort:`Порт FTP`,mqttPort:`Порт MQTT`,ftpConnections:`Підключення FTP`,mqttConnections:`Підключення MQTT`},toast:{updated:`Налаштування віртуального принтера оновлено`,failedToUpdate:`Не вдалося оновити налаштування`,copyFailed:`Не вдалося скопіювати — спробуйте вибрати текст вручну`,accessCodeRequired:`Спочатку встановіть код доступу`,targetPrinterRequired:`Спочатку виберіть цільовий принтер`,bindIpRequired:`Спочатку встановіть прив’язку IP.`,accessCodeEmpty:`Код доступу не може бути порожнім`,accessCodeLength:`Код доступу має містити рівно 8 символів`,targetCodeChangedRebind:`Код доступу тепер відповідає новому цільовому принтеру. Повторно додайте цей пристрій у свій слайсер, щоб отримати новий код.`,created:`Створено віртуальний принтер`,failedToCreate:`Не вдалося створити віртуальний принтер`,deleted:`Віртуальний принтер видалено`,failedToDelete:`Не вдалося видалити віртуальний принтер`},list:{title:`Віртуальні принтери`,add:`додати`,addFirst:`Додати віртуальний принтер`,empty:`Віртуальні принтери не налаштовані. Додайте один, щоб почати.`},bindIp:{title:`Інтерфейс прив’язки`,placeholder:`Виберіть інтерфейс...`,hint:`Мережевий інтерфейс, до якого прив’язуватиметься цей віртуальний принтер. Для кожного принтера він має бути унікальним.`},proxy:{accessCodeHint:`У режимі проксі використовуйте код доступу цільового принтера в слайсері. З’єднання прозоро пересилається на справжній принтер.`},addDialog:{title:`Додати віртуальний принтер`,name:`Назва`,hint:`Ви можете налаштувати код доступу, цільовий принтер та інші параметри після створення.`,create:`Створити`},deleteConfirm:{title:`Видалити віртуальний принтер`,message:`Ви впевнені, що хочете видалити «{{name}}»? Усі служби цього принтера буде зупинено.`}},modelViewer:{openInSlicer:`Відкрити у слайсері`,openInSlicerWith:`Відкрити у {{slicer}}`,moreSlicerOptions:`Більше варіантів слайсера`,openInSlicerFailed:`Не вдалося відкрити у слайсері`,tabs:{model:`3D-модель`},notAvailable:`недоступно`,plates:`Пластини`,allPlates:`Усі пластини`,plateNumber:`Пластина {{number}}`,plateCount:`Пластин: {{count}}`,plateCount_other:`Пластин: {{count}}`,objectCount:`Об’єктів: {{count}}`,objectCount_other:`Об’єктів: {{count}}`,filamentCount:`Філаментів: {{count}}`,filamentCount_other:`Філаментів: {{count}}`,eta:`ETA {{minutes}} хв`,noPreview:`Попередній перегляд цього файлу недоступний`,pagination:{pageOf:`Сторінка {{current}} з {{total}}`,prev:`Назад`,next:`Далі`},errors:{failedToLoad:`Не вдалося завантажити файл`,noMeshes:`У файлі 3MF не знайдено жодної сітки`,unsupportedFormat:`Непідтримуваний формат файлу`}},maintenanceDescriptions:{lubricateCarbonRods:`Нанесіть мастило на карбонові стрижні для плавного руху`,lubricateRails:`Нанесіть мастило на лінійні рейки для плавного руху`,cleanNozzle:`Очистіть нагрівач і сопло, щоб запобігти засміченню`,checkBelts:`Перевірте натяг ременя для точного друку`,cleanBuildPlate:`Очистіть будівельну пластину для кращого зчеплення`,checkExtruder:`Перевірте шестерні екструдера на знос`,checkCooling:`Переконайтеся, що вентилятори охолодження працюють належним чином`,generalInspection:`Загальний огляд принтера`,cleanCarbonRods:`Очистіть карбонові стрижні, щоб зменшити тертя`,lubricateSteelRods:`Нанесіть мастило на сталеві стрижні для плавного руху`,cleanSteelRods:`Очистіть сталеві стрижні, щоб зменшити тертя`,cleanLinearRails:`Протріть лінійні рейки, щоб видалити пил і сміття`,checkPtfeTube:`Перевірте трубку PTFE на знос або пошкодження`,replaceHepaFilter:`Замініть фільтр HEPA для забезпечення якості повітря`,replaceCarbonFilter:`Замініть фільтр з активованим вугіллям`,lubricateLeftNozzleRail:`Змастіть ліву рейку сопла (серія H2)`},haSensors:{label:`Датчики`,unavailable:`Недоступно`,blocksPrints:`{{entity}} — утримує друк, поки триває сповіщення`,states:{open:`Відчинено`,closed:`Зачинено`,unlocked:`Розблоковано`,locked:`Заблоковано`,detected:`Виявлено`,clear:`Чисто`,wet:`Волого`,dry:`Сухо`,problem:`Проблема`,ok:`Норма`,running:`Працює`,stopped:`Зупинено`,on:`Увімк`,off:`Вимк`},sectionTitle:`Датчики Home Assistant (принтери)`,add:`Додати датчик`,addTitle:`Додати датчик Home Assistant`,editTitle:`Редагувати датчик Home Assistant`,empty:`Датчиків ще немає. Прив'яжіть дверний контакт або термометр із Home Assistant, щоб показати його на картці принтера.`,unknownPrinter:`Невідомий принтер`,badgeBlocks:`Утримує друк`,badgeNotifies:`Сповіщає`,badgeHidden:`Приховано на картці`,printer:`Принтер`,entity:`Сутність`,searchPlaceholder:`Пошук сутностей...`,noEntities:`Немає відповідних сутностей`,name:`Відображувана назва`,alertWhen:`Сповіщати коли`,alertNever:`Ніколи — лише показувати`,alertAbove:`Вище`,alertBelow:`Нижче`,alertHint:`Стан сповіщення підсвічує датчик на картці принтера та вмикає параметри нижче.`,showOnCard:`Показувати на картці принтера`,notifyOnAlert:`Надсилати сповіщення, коли спрацьовує`,blockPrint:`Утримувати друк у черзі, поки триває сповіщення`,blockPrintHint:`Завдання лишаються в черзі й запускаються самі, коли датчик повертається до норми. Ігнорується, поки Home Assistant недоступний.`,toast:{created:`Датчик додано`,updated:`Датчик збережено`,deleted:`Датчик видалено`},error:{pickEntity:`Оберіть сутність Home Assistant`,nameRequired:`Введіть відображувану назву`,printerRequired:`Оберіть принтер`,alertRequired:`Спершу задайте умову сповіщення`}},locationHaSensors:{sectionTitle:`Датчики Home Assistant (місця зберігання)`,sectionDescription:`Прив'яжіть датчики температури, вологості або заряду батареї Home Assistant до місць зберігання, щоб показувати актуальні значення на картці філаменту і в таблиці. Для кожного місця зберігання дозволено лише один датчик на категорію.`,add:`Додати датчик`,addTitle:`Додати датчик Home Assistant`,editTitle:`Редагувати датчик Home Assistant`,empty:`Датчиків ще немає. Прив'яжіть датчик температури або вологості з Home Assistant, щоб показати його на картці філаменту.`,unknownLocation:`Невідоме місце`,location:`Місце зберігання`,showOnCard:`Показувати на картці філаменту`,overwriteConfirm:{title:`Замінити наявний датчик?`,messageTemperature:`«{{location}}» вже має прив'язаний датчик температури: {{name}}. Продовження замінить його.`,messageHumidity:`«{{location}}» вже має прив'язаний датчик вологості: {{name}}. Продовження замінить його.`,messageBattery:`«{{location}}» вже має прив'язаний датчик заряду батареї: {{name}}. Продовження замінить його.`},autoAdd:{confirmTitle:`Додати також інші датчики?`,confirmMessage:`Bambuddy також знайшов інші датчики для цього місця. Виберіть, які додати.`,added:`Також додано: {{names}}`,noneFound:`Відповідних датчиків температури, вологості чи заряду батареї для цього місця не знайдено.`,onlyThisOne:`Лише цей`},options:{buttonLabel:`Параметри датчиків`,title:`Параметри датчиків місця зберігання`,description:`Ці значення використовуються, коли датчик температури, вологості чи заряду батареї автоматично прив'язується разом із першим датчиком місця зберігання.`,generalSettings:`Загальні налаштування`,pollInterval:`Інтервал оновлення (секунди)`,pollIntervalHint:`Як часто Bambuddy опитує Home Assistant і оновлює значення датчиків на екрані. Мінімум 60 секунд.`,colorizeValues:`Розфарбовувати значення датчиків відповідно до порогів тривоги`,aboveColor:`Колір перевищення порогу`,belowColor:`Колір нижче порогу`,optimalColor:`Колір оптимального значення`,colors:{red:`Червоний`,orange:`Помаранчевий`,yellow:`Жовтий`,green:`Зелений`,blue:`Синій`,purple:`Фіолетовий`,pink:`Рожевий`},saved:`Параметри збережено`,saveFailed:`Не вдалося зберегти параметри`,reset:`Скинути`,resetConfirm:{title:`Скинути всі наявні датчики місць зберігання?`,message:`Це замінить пороги тривоги, сповіщення та видимість на картці для всіх наявних датчиків температури, вологості та заряду батареї місць зберігання значеннями, вказаними вище, а також відновить ім'я кожного датчика до його зрозумілої назви в Home Assistant — датчики принтерів не зачіпаються. Цю дію не можна скасувати. Залежно від кількості датчиків це може зайняти деякий час.`},resetDone:`Застосовано до {{count}} датчиків місць зберігання`,resetFailed:`Не вдалося скинути датчики місць зберігання`},deleteAllConfirm:{title:`Видалити всі датчики?`,message:`Це видалить усі {{count}} датчиків, прив'язаних до «{{location}}». Цю дію не можна скасувати.`},currentlyBound:`Наразі прив'язано: {{entity}}`,error:{locationRequired:`Оберіть місце зберігання`},toast:{created:`Датчик додано`,updated:`Датчик збережено`,deleted:`Датчик видалено`}},smartPlugs:{offline:`Не в мережі`,admin:`Адміністрування`,openPlugAdminPage:`Відкрити сторінку адміністратора розетки`,deleteSmartPlug:`Видалити розумну розетку`,turnOnSmartPlug:`Увімкнути розумну розетку`,turnOffSmartPlug:`Вимкнути розумну розетку`,turnOn:`Увімкнути`,turnOff:`Вимкнути`,addSmartPlug:{scanningNetwork:`Сканування мережі...`,chooseEntity:`Виберіть сутність…`,connectionFailed:`Помилка підключення`,searchEntities:`Пошук сутностей...`,searchPowerSensors:`Пошук датчиків потужності...`,searchEnergySensors:`Пошук датчиків енергії...`,placeholders:{plugName:`Розетка у вітальні`,mqttStateOnValue:`ON, true, 1`,mqttSameAsPower:`Та сама тема, що й для потужності, або інша`}},linkedTo:`Пов’язано з:`,monitorOnly:`Лише моніторинг`,alerts:`Оповіщення`,scheduleOn:`Увімкнення: {{time}}`,scheduleOff:`Вимкнення: {{time}}`,on:`Увімкнено`,off:`Вимкнено`,power:`Потужність`,kwhToday:`кВт·год сьогодні`,settings:`Налаштування`,automationSettings:`Налаштування автоматизації`,showInSwitchbar:`Показати на панелі перемикачів`,quickAccessSidebar:`Швидкий доступ із бічної панелі`,enabled:`Увімкнено`,enableAutomation:`Увімкнути автоматизацію для цієї розетки`,autoOn:`Автоматичне ввімкнення`,autoOnDescription:`Увімкнути на початку друку`,autoOff:`Автоматичне вимкнення`,autoOffDescription:`Вимкнути після завершення друку (одноразово)`,autoOffPersistent:`Залишити ввімкненим`,autoOffPersistentDescription:`Залишати ввімкненою між друками, а не лише після одного завдання`,controlsPrinterPower:`Живить принтер`,controlsPrinterPowerDescription:`Вимкніть цей параметр, якщо розетка живить лише аксесуар — наприклад, вентилятор фільтра або освітлення. Інакше вимкнення розетки позначатиме принтер як недоступний.`,autoOffAfterDrying:`Автоматичне вимкнення після сушіння`,autoOffAfterDryingDescription:`Вимкнути після завершення сушіння AMS`,delayAfterDryingMinutes:`Затримка після сушіння (хв)`,turnOffDelayMode:`Режим затримки вимкнення`,time:`Час`,temp:`Температура`,delayMinutes:`Затримка (хвилин)`,tempThreshold:`Температурний поріг (°C)`,tempThresholdDescription:`Вимикається, коли сопло охолоне нижче цієї температури`,edit:`Редагувати`,deleteConfirm:`Ви впевнені, що хочете видалити "{{name}}"? Це неможливо скасувати.`,turnOnConfirm:`Ви впевнені, що бажаєте ввімкнути "{{name}}"?`,turnOffConfirm:`Ви впевнені, що бажаєте вимкнути "{{name}}"? Це призведе до відключення живлення підключеного пристрою.`,failedToTurn:`Не вдалося змінити стан «{{name}}» ({{action}})`,unknown:`Невідомий`,addTitle:`Додати розумну розетку`,editTitle:`Редагувати розумну розетку`,stopScanning:`Зупинити сканування`,discoverTasmota:`Виявити пристрої Tasmota`,foundDevices:`Знайдено {{count}} пристроїв - натисніть, щоб вибрати:`,noDevicesFound:`У вашій мережі не знайдено пристроїв Tasmota.`,haNotConfigured:`Home Assistant не налаштовано. Налаштуйте його в`,haSettingsPath:`Налаштування → Мережа → Home Assistant`,selectEntity:`Вибрати сутність *`,ipAddress:`IP Адреса *`,nameLabel:`Назва *`,username:`Ім’я користувача`,password:`Пароль`,authHint:`Залиште поле пустим, якщо ваш пристрій Tasmota не вимагає автентифікації`,linkToPrinter:`Прив’язати до принтера`,noPrinter:`Без принтера (лише ручне керування)`,linkingDescription:`Прив’язування дає змогу автоматично вмикати й вимикати розетку на початку та після завершення друку`,powerAlerts:`Сповіщення про живлення`,alertAbove:`Сповіщати, якщо вище (Вт)`,alertBelow:`Сповіщати, якщо нижче (Вт)`,alertDescription:`Сповіщати, коли споживана потужність перетинає ці пороги. Залиште відповідне поле порожнім, щоб вимкнути сповіщення для цього напрямку.`,dailySchedule:`Щоденний розклад`,turnOnAt:`Увімкнути о`,turnOffAt:`Вимкнути о`,scheduleDescription:`Щодня автоматично вмикати й вимикати розетку в зазначений час. Залиште поле порожнім, щоб пропустити відповідну дію.`,showOnPrinterCard:`Показати на картці принтера`,displayOnPrinterCard:`Показувати кнопку на картці принтера`,connectedResult:`Підключено!`,deviceLabel:`Пристрій: {{name}} - `,stateLabel:`Стан: {{state}}`,test:`Тест`,delete:`Видалити`,save:`Зберегти`,add:`Додати`,cancel:`Скасувати`,failedToStartScan:`Не вдалося почати сканування`,nameRequired:`Необхідно вказати ім’я`,entityRequired:`Сутність необхідна для розеток Home Assistant.`,mqttTopicRequired:`Для моніторингу потужності, енергії або стану потрібно налаштувати принаймні одну тему MQTT`,loadingEntities:`Завантаження об’єктів...`,loading:`Завантаження...`,failedToLoadEntities:`Не вдалося завантажити сутності: {{error}}`,noEntitiesMatching:`Не знайдено об’єктів, що відповідають "{{search}}"`,noEntitiesAvailable:`Немає доступних сутностей`,searchingEntities:`Пошук у всіх об’єктах ({{count}} знайдено)`,showingEntities:`Показано сутності switch, light та input_boolean (доступно: {{count}})`,energyMonitoringOptional:`Моніторинг енергії (необов’язково)`,energyMonitoringHint:`Знайдіть і виберіть датчики, що надають дані про потужність або споживання енергії.`,powerSensorW:`Датчик потужності (Вт)`,energyTodayKwh:`Споживання за сьогодні (кВт·год)`,totalEnergyKwh:`Загальне споживання енергії (кВт·год)`,noMatchingSensors:`Немає відповідних датчиків`,none:`Жодного`,mqttNotConfigured:`MQTT-брокер не налаштований. Укажіть адресу брокера в розділі`,mqttSettingsPath:`Налаштування → Мережа → Публікація MQTT`,mqttNotConfiguredSuffix:`(вмикати публікацію не потрібно — достатньо вказати параметри брокера).`,mqttMonitorOnlyDescription:`MQTT-розетки отримують дані про потужність і споживання енергії через підписку MQTT. Керування ввімкненням і вимкненням недоступне — використовуйте MQTT-брокер або систему домашньої автоматизації.`,powerMonitoring:`Моніторинг потужності`,energyMonitoring:`Моніторинг споживання енергії`,stateMonitoring:`Моніторинг стану`,optional:`необов’язково`,topic:`Тема`,jsonPath:`Шлях JSON`,multiplier:`Множник`,onValue:`Значення «увімкнено»`,mqttPowerHint:`Шлях JSON витягує значення з корисного навантаження JSON (наприклад, "power_l1"). Залиште поле порожнім, якщо тема публікує безпосередньо числові значення. Для перетворення mW→W використовуйте множник 0.001, а для kW→W — 1000.`,mqttEnergyHint:`Шлях JSON витягує значення з корисного навантаження JSON. Залиште поле порожнім для безпосередньо переданих значень. Для перетворення Wh→kWh використовуйте множник 0.001, а для MWh→kWh — 1000.`,mqttStateHint:`Шлях JSON витягує значення з корисного навантаження JSON. Залиште поле порожнім для безпосередньо переданих значень. -Значення «увімкнено»: точний рядок, що означає стан «увімкнено». Залиште поле порожнім для автоматичного визначення (ON, true, 1).`,restControl:`Керування`,restOnUrl:`Увімкнути URL`,restOffUrl:`Вимкнути URL`,restOnBody:`Тіло запиту ввімкнення`,restOffBody:`Тіло запиту вимкнення`,restMethod:`Метод HTTP`,restHeaders:`Спеціальні заголовки (JSON)`,restStatusUrl:`URL стану`,restStatusPath:`Шлях JSON до стану`,restStatusOnValue:`Значення «увімкнено»`,restPowerUrl:`URL даних про потужність`,restPowerPath:`Шлях JSON до потужності`,restPowerMultiplier:`Множник потужності`,restEnergyUrl:`URL даних про енергію`,restEnergyPath:`Шлях JSON до споживання за сьогодні`,restEnergyTotalPath:`Шлях JSON до загального споживання`,restEnergyTotalMultiplier:`Множник загального споживання`,restEnergyTotalPathHint:`наприклад, aenergy.total`,restEnergyTotalHint:`Багато розеток, зокрема всі моделі Shelly, повідомляють лише загальний лічильник споживання, який ніколи не скидається. Його слід указувати саме тут, а не в полі вище: якщо трактувати це значення як споживання за сьогодні, воно не скинеться опівночі, а показники «Учора» та «Усього» залишатимуться порожніми. Bambuddy сам обчислює показники за сьогодні й учора на основі цього лічильника; для їх появи потрібні один-два дні даних. Shelly передає значення у ват-годинах, тому використовуйте множник 0.001.`,restEnergyMultiplier:`Множник енергії`,restUrlRequired:`Для REST-розетки потрібно вказати принаймні один URL — для ввімкнення або вимкнення.`,restHeadersHint:`наприклад, {"Authorization": "Bearer your-token"}`,restBodyHint:`напр. ON, {"state": "on"}`,restStatusHint:`URL для опитування поточного стану`,restPathHint:`наприклад, state або data.power.status`,restPowerUrlHint:`Окремий URL для даних про потужність; якщо поле порожнє, використовується URL стану`,restEnergyUrlHint:`Окремий URL для даних про енергію; якщо поле порожнє, використовується URL стану`,restEnergyHint:`Для кожного значення можна використовувати окремий URL або URL стану як резервний. Для перетворення одиниць використовуйте множники, наприклад 0.001 для перетворення Wh у kWh.`,testConnection:`Тестове підключення`,connectionSuccess:`Підключення успішне`,noSwitchesInSwitchbar:`На панелі перемикачів немає розеток`,enableSwitchbarHint:`Увімкніть «Показувати на панелі перемикачів» у розділі «Налаштування → Розумні розетки».`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`Електронна пошта`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`Сповіщення електронною поштою SMTP`,telegram:`Сповіщення через бота Telegram.`,discord:`Надіслати на канал Discord через webhook`,ntfy:`Безкоштовні push-сповіщення з можливістю самостійного розгортання`,pushover:`Прості та надійні push-повідомлення`,callmebot:`Безкоштовні сповіщення WhatsApp через CallMeBot`,webhook:`Універсальний HTTP POST-запит на будь-який URL`,homeassistant:`Постійні сповіщення на інформаційній панелі Home Assistant.`,bark:`Push-сповіщення iOS через Bark із можливістю самостійного розгортання`},lastSuccess:`Останнє успішне надсилання: {{date}}`,error:`Помилка`,printer:`Принтер:`,allPrinters:`Всі принтери`,sendTestNotification:`Надіслати тестове сповіщення`,eventSettings:`Налаштування події`,enabled:`Увімкнено`,sendFromProvider:`Надсилати сповіщення від цього постачальника`,printEvents:`Події друку`,printerStatus:`Стан принтера`,amsAlarms:`Попередження AMS`,amsHtAlarms:`Попередження AMS-HT`,printQueue:`Черга друку`,start:`Початок`,plateCheck:`Перевірка пластини`,complete:`Завершено`,failed:`Помилка`,stopped:`Зупинено`,progress:`Прогрес`,offline:`Не в мережі`,lowFilament:`Закінчується філамент`,maintenance:`Технічне обслуговування`,amsHumidity:`AMS Вологість`,amsTemp:`AMS Темп`,amsDryingSuspended:`Сушіння призупинено`,amsHtHumidity:`AMS-HT Вологість`,amsHtTemp:`Температура AMS-HT`,bedCooled:`Стіл охолов`,firstLayer:`Перший шар`,quiet:`Тихо`,digest:`Дайджест {{time}}`,printStarted:`Друк розпочато`,plateNotEmpty:`Друкарська пластина не порожня`,plateNotEmptyDescription:`Перед друком виявлено об’єкти`,plateClearRequired:`Потрібно очистити пластину`,plateClearRequiredDescription:`Друк завершено, черга очікує підтвердження очищення пластини`,plateClear:`Очищення пластини`,printCompleted:`Друк завершено`,bedCooledLabel:`Стіл охолов`,bedCooledDescription:`Після друку стіл охолов нижче заданого порога`,firstLayerCompleteLabel:`Перший шар завершено`,firstLayerCompleteDescription:`Сповістити зі знімком після завершення першого шару`,missingSpoolAssignmentLabel:`Відсутнє призначення котушки`,billingChargeFailedLabel:`Помилка списання`,billingChargeFailedDescription:`Сповіщати, якщо не вдалося облікувати вартість друку`,missingSpoolAssignmentDescription:`Сповіщати, коли починається друк і для необхідних лотків не призначено котушку`,printFailed:`Помилка друку`,printStopped:`Друк зупинено`,progressMilestones:`Віхи прогресу`,progressMilestonesDescription:`Сповіщати на 25%, 50%, 75%`,printerOffline:`Принтер не в мережі`,printerError:`Помилка принтера`,aiFailureDetection:`Виявлення помилок за допомогою ШІ`,aiFailureDetectionDescription:`Сповіщати, коли ШІ Obico виявляє можливу помилку друку`,lowFilamentLabel:`Закінчується філамент`,maintenanceDue:`Настав час технічного обслуговування`,maintenanceDueDescription:`Повідомити, коли потрібне обслуговування`,amsHumidityHigh:`AMS Висока вологість`,amsHumidityHighDescription:`Звичайна AMS вологість перевищує порогове значення`,amsTemperatureHigh:`AMS Висока температура`,amsTemperatureHighDescription:`Звичайна AMS температура перевищує порогове значення`,amsDryingSuspendedTitle:`Автоматичне сушіння призупинено`,amsDryingSuspendedDescription:`Автоматичне сушіння блока AMS припинено: вологість так і не опустилася нижче порога`,amsHtHumidityHigh:`AMS-HT Висока вологість`,amsHtHumidityHighDescription:`AMS-HT вологість перевищує порогове значення`,amsHtTemperatureHigh:`Висока температура AMS-HT`,amsHtTemperatureHighDescription:`Температура AMS-HT перевищує порогове значення`,inventoryAlerts:`Сповіщення про запаси`,stockReorderAlert:`Сповіщення про необхідність поповнення`,stockReorderAlertDescription:`Запас SKU досяг точки повторного замовлення`,stockBreakAlert:`Сповіщення про ризик вичерпання запасу`,stockBreakAlertDescription:`Запас закінчиться до того, як надійде поповнення`,jobAdded:`Завдання додано`,jobAddedDescription:`Завдання додано до черги`,jobAssigned:`Завдання призначено`,jobAssignedDescription:`Завдання на основі моделі, призначене принтеру`,jobStarted:`Завдання розпочато`,jobStartedDescription:`Розпочато друк завдання черги`,jobWaiting:`Завдання очікує`,jobWaitingDescription:`Завдання очікує на філамент або принтер`,jobSkipped:`Завдання пропущено`,jobSkippedDescription:`Завдання пропущено (попереднє не вдалося)`,jobFailed:`Помилка завдання`,jobFailedDescription:`Не вдалося розпочати завдання`,queueComplete:`Черга завершена`,queueCompleteDescription:`Усі завдання черги завершено`,quietHours:`Тихі години`,noNotificationsDuring:`Жодних сповіщень у ці години`,editProviderToChangeQuietHours:`Змініть постачальника, щоб змінити години тиші`,dailyDigest:`Щоденний дайджест`,batchNotifications:`Групуйте сповіщення в єдиний щоденний підсумок`,sendAt:`Надсилати о {{time}}`,editProviderToChangeDigestTime:`Відредагуйте постачальника, щоб змінити час дайджесту`,edit:`Редагувати`,deleteProvider:`Видалити постачальника сповіщень`,deleteConfirm:`Видалити «{{name}}»? Цю дію неможливо скасувати.`,delete:`Видалити`,addTitle:`Додати постачальника сповіщень`,editTitle:`Редагувати постачальника сповіщень`,nameLabel:`Назва *`,namePlaceholder:`Мої сповіщення`,providerTypeLabel:`Тип постачальника *`,configuration:`Конфігурація`,testConfiguration:`Перевірити конфігурацію`,printerFilter:`Фільтр принтера`,onlyFromPrinter:`Надсилати лише сповіщення про події з цього принтера`,quietHoursDnd:`Тихі години (не турбувати)`,quietStart:`Початок`,quietEnd:`Кінець`,dailyDigestLabel:`Щоденний дайджест`,sendDigestAt:`Надсилати дайджест о`,digestCollected:`Події буде зібрано й надіслано в цей час одним зведенням`,notificationEvents:`Події сповіщень`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(після завершення друку)`,haSensorAlert:`Сповіщення датчика принтера`,haSensorAlertDescription:`(пов'язаний датчик Home Assistant потребує уваги)`,locationHaSensorAlert:`Сповіщення датчика місця зберігання`,locationHaSensorAlertDescription:`(датчик Home Assistant, пов'язаний з місцем зберігання, потребує уваги)`,eventPriority:{sectionTitle:`Пріоритет ntfy`,helpNtfy:`Виберіть пріоритет для кожної ввімкненої події. ntfy використовує їх для ескалації сповіщень (звук, видимість, поведінка push). Для рівнів, які тут не встановлено, використовується сервер ntfy за замовчуванням.`,min:`Мін`,low:`Низький`,default:`За замовчуванням`,high:`Високий`,urgent:`Терміново`},cancel:`Скасувати`,save:`зберегти`,add:`додати`,nameRequired:`Необхідно вказати ім’я`,fieldRequired:`{{field}} — обов’язкове поле.`,haDataInvalid:`Поле «Дані» має містити дійсний об’єкт JSON, наприклад {"priority": "high", "ttl": 0}`,phoneNumber:`Номер телефону`,apiKey:`Ключ API`,serverUrl:`Сервер URL`,topic:`Тема`,authToken:`Токен авторизації`,userKey:`Ключ користувача`,appToken:`Токен застосунку`,priority:`Пріоритет`,pushoverRetry:`Інтервал повторення екстреного сповіщення (с)`,pushoverExpire:`Термін дії екстреного сповіщення (с)`,botToken:`Токен бота`,chatId:`Ідентифікатор чату`,telegramThreadId:`ID теми форуму`,telegramThreadIdHelp:`Необов'язково. Надсилає в конкретну тему форум-групи — останнє число у посиланні на тему (t.me/c/.../25). Залиште порожнім для теми General.`,telegramThreadIdInvalid:`ID теми форуму має бути числом.`,smtpServer:`Сервер SMTP`,smtpPort:`Порт SMTP`,security:`Безпека`,authentication:`Автентифікація`,username:`Ім’я користувача`,password:`Пароль`,fromEmail:`Адреса відправника`,toEmail:`Адреса одержувача`,webhookUrl:`Webhook URL`,payloadFormat:`Формат корисного навантаження`,authorization:`Авторизація`,titleFieldName:`Назва поля заголовка`,messageFieldName:`Назва поля повідомлення`,editTemplate:`Редагувати шаблон: {{name}}`,titleLabel:`Заголовок`,bodyLabel:`Текст`,titlePlaceholder:`Назва сповіщення...`,bodyPlaceholder:`Текст сповіщення...`,availableVariables:`Доступні змінні`,clickToInsert:`Натисніть, щоб вставити в текст у позиції курсора`,livePreview:`Попередній перегляд`,hide:`Сховати`,show:`Показати`,loadingPreview:`Завантаження попереднього перегляду...`,enterTemplateContent:`Введіть вміст шаблону, щоб побачити попередній перегляд`,titlePreview:`Назва:`,bodyPreview:`Текст:`,resetToDefault:`Відновити типові значення`,titleRequired:`Необхідно вказати назву`,bodyRequired:`Текст є обов’язковим`,notificationLog:`Журнал повідомлень`,showFailedOnly:`Лише невдалі`,last24Hours:`Останні 24 години`,last7Days:`Останні 7 днів`,last30Days:`Останні 30 днів`,last90Days:`Останні 90 днів`,justNow:`Щойно`,noFailedNotifications:`Немає невдалих сповіщень`,noNotificationsLogged:`Сповіщення не зареєстровано`,unknownProvider:`Невідомий постачальник`,logTitle:`Назва`,logMessage:`повідомлення`,logError:`Помилка`,logProvider:`Постачальник: {{type}}`,logTime:`Час: {{time}}`,refresh:`Оновити`,clearOld:`Очистити старі`,statsSummary:`За останні {{days}} дн.:`,statsNotifications:`сповіщення`,statsSent:`{{count}} надіслано`,statsFailed:`не вдалося надіслати: {{count}}`,eventTypes:{print_start:`Друк розпочато`,print_complete:`Друк завершено`,print_failed:`Помилка друку`,print_stopped:`Друк зупинено`,print_progress:`Прогрес`,printer_offline:`Принтер не в мережі`,printer_error:`Помилка принтера`,filament_low:`Закінчується філамент`,maintenance_due:`Технічне обслуговування`,test:`Тест`},userEmail:{title:`Сповіщення`,emailNotifications:`Сповіщення електронною поштою`,emailNotificationsDesc:`Отримуйте сповіщення електронною поштою про власні завдання друку. Електронні листи надсилаються за допомогою системних параметрів SMTP, налаштованих у розширеній автентифікації.`,sendingTo:`Сповіщення будуть надіслані на адресу`,noEmailWarning:`У вашому обліковому записі немає адреси електронної пошти. Зверніться до адміністратора, щоб її додати.`,printJobNotifications:`Повідомлення про завдання друку`,printJobNotificationsDesc:`Виберіть, які події викликають сповіщення електронною поштою про завдання друку, які ви надсилаєте.`,printJobStarts:`Початок завдання друку`,printJobStartsDesc:`Отримуйте сповіщення, коли розпочнеться ваше завдання друку.`,printJobFinishes:`Завершення завдання друку`,printJobFinishesDesc:`Отримуйте сповіщення, коли ваше завдання друку буде успішно завершено.`,printErrors:`Помилки друку`,printErrorsDesc:`Отримуйте сповіщення, якщо завдання друку завершується невдало або під час нього виникає помилка.`,printJobStops:`Зупинення завдання друку`,printJobStopsDesc:`Отримуйте сповіщення, коли ваше завдання друку скасовано або зупинено.`,saveSuccess:`Параметри сповіщень збережено.`,saveError:`Не вдалося зберегти налаштування сповіщень.`}},richTextEditor:{bold:`жирний`,italic:`Курсив`,underline:`Підкреслити`,bulletList:`Список маркерів`,numberedList:`Нумерований список`,alignLeft:`Вирівняти по лівому краю`,alignCenter:`Вирівняти по центру`,alignRight:`Вирівняти праворуч`,addLink:`Додати посилання`,removeLink:`Видалити посилання`},externalLinks:{title:`Посилання на бічній панелі`,sidebarLayout:`Бічна панель`,sidebarLayoutDescription:`Показуйте або приховуйте вбудовані сторінки, додавайте зовнішні посилання та перетягуйте елементи, щоб змінити порядок навігації на бічній панелі.`,systemPages:`Bambuddy сторінок`,externalLinks:`Зовнішні посилання`,visibleInSidebar:`Видно на бічній панелі`,hiddenFromSidebar:`Приховано від бічної панелі`,requiredInSidebar:`Обов’язково на бічній панелі`,hidePage:`Приховати сторінку`,showPage:`Показати сторінку`,settingsCannotBeHidden:`Налаштування не можна приховати`,noLinksConfigured:`Зовнішні посилання не налаштовано`,deleteLink:`Видалити посилання`,removeCustomIcon:`Видалити спеціальний значок`,openInNewTab:`Відкрити в новій вкладці`,placeholders:{linkName:`Моє посилання`}},keyboardShortcuts:{title:`Комбінації клавіш`,navigation:`Навігація`,archivesSection:`Архіви`,kProfilesSection:`K-профілі`,generalSection:`Загальний`,shortcuts:{goToPrinters:`Перейдіть до Принтери`,goToArchives:`Перейдіть до архіву`,goToQueue:`Перейдіть до черги`,goToStats:`Перейти до статистики`,goToProfiles:`Перейдіть до Cloud Profiles`,goToSettings:`Перейдіть до Налаштувань`,focusSearch:`Пошук по фокусу`,openUploadModal:`Відкрити вікно вивантаження`,clearSelection:`Очистити виділення / розмити введення`,contextMenu:`Контекстне меню на картках`,refreshProfiles:`Оновити профілі`,newProfile:`Новий профіль`,exitSelectionMode:`Вийти з режиму вибору`,showHelp:`Покажіть цю довідку`},footer:`Натисніть Esc або клацніть зовні, щоб закрити`},notificationLog:{title:`Журнал повідомлень`,events:{printStarted:`Друк розпочато`,printComplete:`Друк завершено`,printFailed:`Помилка друку`,printStopped:`Друк зупинено`,progress:`Прогрес`,printerOffline:`Принтер не в мережі`,printerError:`Помилка принтера`,lowFilament:`Закінчується філамент`,maintenanceDue:`Технічне обслуговування`,test:`Тест`},timeAgo:{justNow:`Просто зараз`,minutesAgo:`{{minutes}}хв тому`,hoursAgo:`{{hours}} год тому`}},restoreBackup:{title:`Відновити резервну копію`,restoring:`Відновлення...`,restoreComplete:`Відновлення завершено`,restoreFailed:`Не вдалося відновити`,importSettings:`Імпорт налаштувань із файлу резервної копії`,pleaseWait:`Зачекайте, поки ваші дані відновляться`,clickToSelect:`Натисніть, щоб вибрати файл резервної копії (.json або .zip)`,howDuplicateHandling:`Як працює обробка дублікатів:`,categories:{printers:`Принтери`,smartPlugs:`Розумні розетки`,notificationProviders:`Постачальники сповіщень`,filaments:`філаменти`,archives:`Архіви`,pendingUploads:`Вивантаження, що очікують`,settingsTemplates:`Налаштування та шаблони`},matchingInfo:{printers:`відповідає серійному номеру`,smartPlugs:`збігається з адресою IP.`,notificationProviders:`відповідність за назвою`,filaments:`відповідність за назвою + типом + брендом`,archives:`відповідає хешу вмісту`,pendingUploads:`відповідає імені файлу`,settingsTemplates:`завжди перезаписується`},replaceExisting:`Замінити існуючі дані`,keepExisting:`Зберегти наявні дані`,replaceDescription:`Замінити елементи, які вже існують, резервними копіями`,keepDescription:`Відновлюйте лише елементи, яких ще не існує`,caution:`Увага:`,cautionText:`Під час перезапису поточні конфігурації буде замінено даними з резервної копії. З міркувань безпеки коди доступу до принтерів ніколи не перезаписуються.`,itemsRestored:`Елементів відновлено`,itemsSkipped:`Елементи пропущені`,restored:`Відновлено`,skipped:`Пропущено (вже існує)`,filesLabel:`Файли (3MF, мініатюри тощо)`,newApiKeysGenerated:`Створено нові API ключі`,newApiKeysWarning:`Ці ключі буде показано лише один раз. Скопіюйте їх зараз!`,processingBackup:`Обробка файлу резервної копії...`,noDataFound:`У файлі резервної копії не знайдено даних для відновлення.`,failedToRestore:`Не вдалося відновити резервну копію. Будь ласка, перевірте формат файлу.`},backupExport:{title:`Експорт резервної копії`,selectData:`Вибрати дані для включення`,selectAll:`Вибрати усі`,selectNone:`Вибрати Немає`,categoryDescriptions:{settings:`Мова, тема, параметри оновлення`,notifications:`ntfy, Pushover, Discord тощо.`,templates:`Користувацькі шаблони повідомлень`,smartPlugs:`Конфігурації розетки Tasmota.`,externalLinks:`Посилання на бічній панелі на зовнішні служби`,printers:`Інформація про принтер (без кодів доступу)`,plateDetection:`Еталонні зображення порожньої пластини`,filaments:`Види та вартість філаменти`,maintenance:`Спеціальні графіки технічного обслуговування`,archives:`Усі дані для друку + файли (3MF, мініатюри, фотографії)`,projects:`Проєкти, елементи специфікації та вкладення`,pendingUploads:`Вивантаження на віртуальний принтер очікують на розгляд`,apiKeys:`Ключі Webhook API (нові ключі створюються під час імпорту)`},requiresPrinters:`Необхідно вибрати принтери`,zipFileWarning:`Буде створено файл ZIP.`,zipFileDescription:`До архіву ввійдуть усі файли 3MF, мініатюри, таймлапси та фотографії. Створення може тривати певний час, а отриманий файл може мати великий розмір.`,includeAccessCodes:`Додати коди доступу`,includeAccessCodesDescription:`Для перенесення на іншу машину`,includeAccessCodesWarning:`Коди доступу буде збережено у відкритому вигляді. Надійно захистіть файл резервної копії!`,categoriesSelected:`Вибрано категорії {{selectedCount}}.`},pendingUploads:{placeholders:{notes:`Додайте примітки щодо цього друку...`},discardUpload:`Відхилити вивантаження`,archiveAllUploads:`Архівувати всі вивантаження`,discardAllUploads:`Відхилити всі вивантаження`,archive:`Архів`,timeAgo:{justNow:`Просто зараз`,minutesAgo:`{{minutes}}хв тому`,hoursAgo:`{{hours}} год тому`,daysAgo:`{{days}} дн. тому`}},apiBrowser:{placeholders:{requestBody:`JSON тіло запиту...`,searchEndpoints:`Пошук кінцевих точок...`}},configureAmsSlot:{title:`Налаштувати слот AMS.`,slotConfigured:`Слот налаштовано!`,configuringSlot:`Налаштування слота:`,slotLabel:`{{ams}} Слот {{slot}}`,searchPresets:`Шукати профілі...`,colorPlaceholder:`Назва або шістнадцяткова назва кольору (наприклад, коричневий, FF8800)`,clearCustomColor:`Очистити спеціальний колір`,noCloudPresets:`Хмарних профілів немає. Увійдіть у Bambu Cloud для синхронізації.`,noPresetsAvailable:`Профілів немає. Увійдіть у Bambu Cloud або імпортуйте локальні профілі.`,noMatchingPresets:`Відповідних стилів не знайдено.`,custom:`Власний`,builtin:`Вбудований`,orcaCloud:`Orca Cloud`,bambuCloud:`Бамбукова хмара`,settingsSentToPrinter:`Налаштування надіслано на принтер`,filamentProfile:`Профіль філаменту`,kProfileLabel:`Профіль K (випередження тиску)`,filteringFor:`Фільтрування за: {{material}}`,noKProfile:`Немає профілю K (використовуйте значення за замовчуванням 0,020)`,noMatchingKProfiles:`Не знайдено відповідних K профілів. Використовуватиметься K=0,020 за замовчуванням.`,otherKProfiles:`Інші K-профілі на цьому принтері`,selectFilamentFirst:`Спочатку виберіть профіль філаменту`,kFromCalibration:`K={{value}} від калібрування принтера`,customColorLabel:`Власний колір (необов’язково)`,presetColors:`{{name}} кольори:`,showLessColors:`Показувати менше кольорів`,showMoreColors:`Показати більше кольорів`,clear:`Очистити`,hexLabel:`Шістнадцятковий: #{{hex}}`,resetting:`Скидання...`,resetSlot:`Скинути слот`,cancel:`Скасувати`,configuring:`Налаштування...`,configureSlot:`Налаштувати слот`},githubBackup:{title:`Резервне копіювання Git`,history:`історія`,downloadBackup:`Завантажити резервну копію`,restoreBackup:`Відновити резервну копію`,noBackupsYet:`Резервних копій ще немає`},emailSettings:{placeholders:{fromName:`BamBuddy`}},tagManagement:{searchTags:`Пошук тегів...`,renameTag:`Перейменувати тег`,deleteTag:`Видалити тег`},notificationTemplates:{placeholders:{title:`Назва сповіщення...`,body:`Текст сповіщення...`}},batchTag:{placeholders:{newTag:`Введіть новий тег...`}},photoGallery:{deletePhoto:`Видалити фото`},filamentHoverCard:{copySpoolUuid:`Копіювати UUID буфера`},kProfilesView:{hasNote:`Має примітку`,copyProfile:`Копіювати профіль`},layout:{openMenu:`Відкрити меню`,noPermissionSystemInfo:`У вас немає дозволу на перегляд системної інформації`},dashboard:{dragToReorder:`Перетягніть, щоб змінити порядок`,hideWidget:`Сховати віджет`},notificationProviderCard:{deleteNotificationProvider:`Видалити постачальника сповіщень`},fileManagerModal:{closeFileManager:`Закрити файловий менеджер`,sortFiles:`Сортування файлів`,goToParentFolder:`Перейти до батьківської папки`,threeView:`3D перегляд`},embeddedCameraViewer:{refreshStream:`Оновити потік`,close:`Закрити`,zoomOut:`Зменшити масштаб`,resetZoom:`Скинути масштаб`,zoomIn:`Збільшити`,dragToResize:`Перетягніть, щоб змінити розмір`},timelapseViewer:{skipBack5s:`Перейти на 5 секунд назад`,skipForward5s:`Перейти вперед на 5 с`},notificationProviders:{descriptions:{email:`Сповіщення електронною поштою SMTP`,telegram:`Сповіщення через бота Telegram.`,discord:`Надіслати на канал Discord через webhook`,ntfy:`Безкоштовні push-сповіщення з можливістю самостійного розгортання`,pushover:`Прості та надійні push-повідомлення`,callmebot:`Безкоштовні сповіщення WhatsApp через CallMeBot`,webhook:`Універсальний HTTP POST-запит на будь-який URL`}},logViewer:{searchPlaceholder:`Шукати повідомлення або назву реєстратора...`,noLogEntries:`Записів у журналі не знайдено`},switchbarPopover:{noSwitchesInSwitchbar:`На панелі перемикачів немає`},projectPageModal:{placeholders:{title:`Назва`,designer:`Дизайнер`,license:`Ліцензія`,description:`Введіть опис...`,profileTitle:`Назва профілю`,profileDescription:`Опис профілю...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`Очікування`,justNow:`Просто зараз`,now:`Зараз`,minsAgo:`{{count}}хв тому`,inMins:`в {{count}}м`,hoursAgo:`{{count}} год тому`,inHours:`в {{count}} год`,daysAgo:`{{count}} дн. тому`,inDays:`в {{count}}d`},spoolbuddy:{nav:{dashboard:`Приладова панель`,ams:`AMS`,inventory:`Інвентар`,writeTag:`Записати`,settings:`Налаштування`},status:{nfcReady:`NFC Готовий`,nfcOff:`NFC Вимк`,offline:`Не в мережі`,online:`Онлайн`,noPrinters:`Немає принтерів`,deviceOffline:`Пристрій не в мережі`,waitingConnection:`Очікування підключення пристрою...`,systemReady:`Система готова`,status:`Статус`},dashboard:{readyToScan:`Готовий до сканування`,idleMessage:`Покладіть котушку на ваги, щоб ідентифікувати її`,nfcHint:`Тег NFC буде прочитано автоматично`,device:`пристрій`,syncWeight:`Синхронізувати вагу`,weightSynced:`Синхронізовано!`,unknownTag:`Невідомий тег`,newTag:`Виявлено новий тег`,onScale:`на вагах`,linkSpool:`Прив’язати до котушки`,linkTagTitle:`Прив’язати тег до котушки`,linkTag:`Прив’язати тег`,selectSpool:`Виберіть котушку, до якої потрібно прив’язати цей тег:`,noUntagged:`Не знайдено котушок без тегів`,tagDetected:`Тег виявлено`,noTag:`Без тегу`,tagId:`Тег`,grossWeight:`Вага брутто`,spoolSize:`Розмір котушки`,close:`Закрити`,currentSpool:`Поточна котушка`,plateReady:`Пластина готова: {{name}}`,plateReadyLabel:`Пластини готові до очищення`,plateClearAction:`Очистити`,plateClearedToast:`Друкарська пластина позначена як очищена`,plateClearFailed:`Не вдалося позначити пластину як очищену`},modal:{spoolDetected:`Виявлено котушку`,assignToAms:`Призначити AMS`,syncWeight:`Синхронізувати вагу`,weightSynced:`Синхронізовано!`,syncing:`Синхронізація...`,newTagDetected:`Виявлено новий тег`,addToInventory:`Додати в інвентар`,assignToAmsTitle:`Призначити AMS`,selectSlot:`Вибрати слот`,assign:`Призначити`,assigning:`Призначення...`,assignSuccess:`Призначено!`,assignPendingInsert:`Призначений. Слот буде налаштовано, коли ви вставите котушку.`,assignError:`Не вдалося призначити котушку. Спробуйте ще раз.`,noPrinterSelected:`Виберіть принтер...`,noAmsDetected:`AMS не виявлено на цьому принтері`,slot:`Слот`},weight:{noReading:`Немає показань`,stable:`Стабільно`,measuring:`Вимірювання…`,tare:`Тарувати`,calibrate:`Відкалібрувати`},spool:{remaining:`Залишилося`,material:`матеріал`,brand:`Бренд`,color:`Колір`,coreWeight:`Сердечник`,labelWeight:`Етикетка`,scaleWeight:`Показання ваг`,netWeight:`Нетто`,lastUsed:`Останнє використання`},ams:{noData:`AMS не виявлено`,connectAms:`Підключіть AMS, щоб побачити слоти для філаментів`,noPrinter:`Принтер не вибрано`,selectPrinter:`Виберіть принтер у верхній панелі`,printerDisconnected:`Принтер відключений`,humidity:`Вологість`,level:`Рівень`,active:`Активний`,slot:`Слот`,empty:`Порожній`},inventory:{search:`Пошук котушок...`,empty:`Немає котушок в інвентарі`,noResults:`Немає відповідних котушок`,spools:`котушки`,addSpool:`Додати котушку`},settings:{tabDevice:`пристрій`,tabDisplay:`Дисплей`,tabScale:`Ваги`,tabUpdates:`Оновлення`,nfcReader:`NFC Читач`,type:`Тип`,connection:`Підключення`,notConnected:`Н/Д`,deviceInfo:`Інформація про пристрій`,hostname:`Хост`,uptime:`Час роботи`,systemConfig:`Серверна частина та автентифікація`,backendUrl:`Bambuddy Сервер URL`,apiToken:`API Токен`,apiTokenPlaceholder:`Введіть API-токен.`,saveConfig:`Зберегти конфігурацію`,systemQueued:`Конфігурацію в черзі.`,nfcDiagnostic:`NFC Діагностика`,scaleDiagnostic:`Діагностика ваг`,readTagDiagnostic:`Прочитайте діагностику тегів`,testNfc:`Тестовий читач`,testScale:`Перевірити точність`,testReadTag:`Прочитати тег`,systemFieldsRequired:`Потрібен бекенд URL.`,brightness:`Яскравість`,saved:`Збережено`,noBacklight:`Підсвічування DSI не виявлено. Для керування яскравістю потрібен дисплей DSI.`,screenBlank:`Час очікування порожнього екрана`,screenBlankDesc:`Екран вимикається після бездіяльності. Торкніться, щоб розбудити.`,displayNote:`Яскравість використовується як програмний фільтр.`,scaleCalibration:`Калібрування ваг`,currentWeight:`Поточна вага`,tareOffset:`Зміщення тари`,calFactor:`Коефіцієнт калібрування`,knownWeight:`Відома маса`,calStep1:`Приберіть усі предмети з ваг і натисніть «Установити нуль».`,calStep2:`Покладіть на ваги предмет відомої маси.`,setZero:`Встановити нуль`,calibrateNow:`Відкалібрувати`,calibrated:`Відкалібровано`,tareSet:`Надіслано команду тарування. Очікування пристрою...`,tareComplete:`Тарування завершено!`,tareTimedOut:`Час очікування тарування минув — чи запущено демон SpoolBuddy?`,tareFailed:`Не вдалося надіслати команду тарування`,zeroSet:`Нульову точку встановлено. Покладіть на ваги предмет відомої маси.`,calibrationDone:`Калібрування завершено!`,calibrationFailed:`Помилка калібрування`,lastCalibrated:`Останнє калібрування`,stable:`Стабільно`,settling:`Стабілізація…`,firmware:`Прошивка`,scale:`Ваги`,noDevice:`Пристрій SpoolBuddy не знайдено`,daemonVersion:`Демон версія`,currentVersion:`поточний`,versionPending:`В очікуванні демона...`,checking:`Перевірка...`,checkUpdates:`Перевірте наявність оновлень`,updateAvailable:`Доступне оновлення`,updateInstructions:`Оновлення через SSH: запустіть сценарій встановлення SpoolBuddy для оновлення.`,upToDate:`В актуальному стані`,includeBeta:`Включати бета-версії`},writeTag:{tabExisting:`Наявна котушка`,tabNew:`Нова котушка`,tabReplace:`Замінити тег`,searchPlaceholder:`Пошук за матеріалом, кольором, брендом...`,noUntaggedSpools:`Немає котушок без тегів`,noTaggedSpools:`Немає котушок із тегами`,selectSpool:`Виберіть котушку, а потім помістіть порожній NTAG на зчитувач`,placeTag:`Помістіть NTAG на зчитувач`,tagReady:`Тег виявлено — готовий до запису`,writeTag:`Записати тег`,replaceTag:`Замінити тег`,writing:`Записування тегу…`,waiting:`Очікування SpoolBuddy...`,writeSuccess:`Тег успішно записано!`,writeFailed:`Помилка запису`,queueFailed:`Не вдалося поставити команду запису в чергу`,tryAgain:`Спробуйте знову`,cancel:`Скасувати`,replaceWarning:`Старий тег буде від’єднано від котушки, а замість нього буде прив’язано новий.`,deviceOffline:`SpoolBuddy не в мережі`,material:`матеріал`,colorName:`Назва кольору`,color:`Колір`,brand:`Бренд`,weight:`Вага (г)`,createSpool:`Створити котушку`,creating:`Створення...`,spoolCreated:`Котушку створено! Можна записувати тег.`,createFailed:`Не вдалося створити котушку`,incompleteDataWarning:`Тег записано з неповними даними Spoolman.`},quickMenu:{printerPower:`Живлення принтера`,systemControls:`система`,restartDaemon:`Перезапустити демон`,restartBrowser:`Перезапустити браузер`,reboot:`Перезавантажити`,shutdown:`Вимкнути`,swipeToClose:`Проведіть пальцем вниз, щоб закрити`,confirmTitle:`Підтвердити`,confirmShutdown:`Вимкнути SpoolBuddy? Щоб увімкнути його знову, знадобиться фізичний доступ до пристрою.`,confirmReboot:`Перезавантажити SpoolBuddy?`,confirmRestartDaemon:`Перезапустити демон SpoolBuddy? NFC і ваги будуть тимчасово недоступні.`,confirmRestartBrowser:`Перезапустити веб-переглядач кіоску? Дисплей на короткий час погасне.`,confirm:`Підтвердити`,confirmPlugOn:`Увімкнути {{name}}?`,confirmPlugOff:`Вимкнути {{name}}?`,turnOn:`Увімкнути`,turnOff:`Вимкнути`}},diagnostic:{modalTitle:`Діагностика підключення — {{name}}`,running:`Виконується діагностика...`,runningElapsed:`Виконується діагностика… ({{elapsed}} с)`,waitingForReportHint:`Очікуємо, доки принтер опублікує звіт про стан — це може тривати до {{max}} с.`,runFailed:`Не вдалося запустити діагностику: {{error}}`,retry:`Запустити знову`,runButton:`Запустити діагностику`,sectionTitle:`Діагностика підключення`,sectionDescription:`Перевірте, чому принтер не підключається або не друкує — доступність порту, режим розробника LAN, режим мережі Docker та облікові дані.`,noPrinters:`Принтери не налаштовані.`,overall:{ok:`Проблем не виявлено — з’єднання принтера справне.`,warnings:`Принтер має працювати, але деякі параметри потребують уваги.`,problems:`Знайдено проблеми, які пояснюють, чому принтер не підключається або не друкує.`},check:{port_mqtt:{title:`Порт керування (MQTT 8883)`,pass:`Доступний — принтер приймає керівні з’єднання.`,fail:`Порт 8883 недоступний. Принтер може бути вимкнений, мати іншу IP-адресу або бути заблокований брандмауером. Перевірте IP-адресу принтера й переконайтеся, що порт 8883 не заблоковано.`},port_ftps:{title:`Порт передачі файлів (FTPS 990)`,pass:`Доступний — файли друку можна буде надсилати.`,warn:`Порт 990 недоступний. Моніторинг може й надалі працювати, але надсилання завдань друку на принтер завершуватиметься помилкою. Переконайтеся, що порт 990 не заблоковано.`,warn_no_tls:`Порт 990 відкритий, але файлова служба принтера не завершує рукостискання TLS. Файли друку, обкладинки та таймлапси отримати неможливо, тому архіви залишаються порожніми. Перезавантажте принтер — розблокування порту не допоможе.`},external_storage:{title:`Зберігання надісланих файлів у зовнішньому сховищі (крок установлення 4)`,pass:`Принтер повідомляє, що цю опцію ввімкнено — надіслані файли зберігатимуться на картці SD, а архіви матимуть мініатюри та метадані слайсера.`,fail:`Принтер повідомляє, що цей параметр вимкнено. Увімкніть «Зберігати надіслані файли в зовнішньому сховищі». У новіших версіях прошивки (P2S 01.02 / Bambu Studio 2.6+) перемикач розташований у налаштуваннях друку на принтері; у старіших — на вкладці «Пристрій» у Bambu Studio або OrcaSlicer. Без цього параметра в кожному архівованому друці будуть відсутні мініатюра та метадані слайсера.`,skip:`Не перевірено — потрібне активне MQTT-з’єднання. У старіших слайсерах, де цей параметр існує лише в самому слайсері, принтер його не повідомляє. Тому перевірка може бути успішною навіть за вимкненого параметра — перевірте крок установлення 4 вручну.`,skip_unsupported_model:`Ця модель має слот для SD-картки, але не дає змоги ввімкнути цей параметр: поточна прошивка принтерів серії P1 не показує перемикач у Bambu Studio, а сам принтер не має екрана. Виправляти нічого не потрібно; доки Bambu Lab не додасть підтримку в прошивці, в архівованих друках можуть бути відсутні мініатюри та метадані слайсера.`,fail_no_media:`Параметр увімкнено, але принтер не бачить ані картки, ані флешки у слоті, тож надісланим файлам немає куди подітися. Вставте носій і надрукуйте ще раз — доти кожен заархівований друк буде без мініатюри та метаданих слайсера.`,warn_internal_storage:`Параметр увімкнено і носій на місці, але останній друк усе одно потрапив у внутрішню пам'ять принтера, яку Bambuddy не може прочитати. На серії H2 та P2S кнопка «Друк» у Bambu Studio завжди надсилає туди, незалежно від цього параметра. Друки архівуються з назвою та часом, але без мініатюри та метаданих слайсера. Щоб архіви були повними, запускайте друк із Bambuddy, нарізайте в OrcaSlicer або в Bambu Studio скористайтеся «Надіслати» із «Зовнішнім носієм», а потім запускайте друк.`,warn_internal_history:`Опція увімкнена й носій на місці, але останній друк ішов із файлу, який уже був на принтері, — повторний друк з його екрана, запуск із Handy або файл, надісланий раніше. Ця бібліотека лежить у внутрішній пам'яті, яку Bambuddy не читає, і жодні налаштування цього не змінюють: для того друку нічого не надсилалося. Він і далі архівується з назвою та часом, але без мініатюри та метаданих слайсера. Щоб архіви були повними, запускайте друк із Bambuddy або надсилайте його зі слайсера.`},port_rtsps:{title:`Порт камери ({{protocol}} {{port}})`,pass:`Доступно — потік камери працюватиме.`,warn:`Порт {{port}} недоступний. Перегляд з камери в реальному часі не працюватиме. Це не впливає на друк.`},network_mode:{title:`Мережевий режим Docker`,pass:`Працює в режимі хост-мережі.`,warn:`Bambuddy працює в мостовому мережевому режимі Docker. Для виявлення принтерів і роботи віртуального принтера потрібен режим мережі хоста — повторно створіть контейнер із параметром "network_mode: host".`,skip:`Не працює в Docker — не застосовується.`},subnet:{title:`Мережева підмережа`,pass:`Принтер і Bambuddy знаходяться в одній підмережі.`,warn:`Принтер ({{printer_ip}}) і Bambuddy ({{host_ip}}) перебувають у різних підмережах. Вони можуть не мати зв’язку між собою, якщо маршрутизацію між підмережами не налаштовано.`,skip:`Не вдалося визначити підмережу — пропущено.`},mqtt_auth:{title:`Облікові дані принтера`,pass:`Принтер прийняв підключення.`,fail:`Принтер доступний, але Bambuddy до нього не під’єднано. Найімовірніше, указано неправильний код доступу або серійний номер — код доступу змінюється після кожного перемикання режиму «Лише LAN» або режиму розробника, тож знову скопіюйте його з екрана принтера. Так само виглядає принтер, який перезавантажується або вже вичерпав ліміт одночасних з’єднань.`,fail_auth_rejected:`Принтер відхилив облікові дані Bambuddy. Код доступу або серійний номер неправильний — код доступу змінюється після кожного перемикання режиму «Лише LAN» або режиму розробника. Знову скопіюйте його з екрана принтера та збережіть у налаштуваннях принтера.`,skip:`Не позначено — принтер недоступний.`},developer_mode:{title:`Режим розробника LAN`,pass:`Режим розробника ввімкнено.`,fail:`Режим розробника на принтері ВИМКНЕНО. Увімкніть його в налаштуваннях LAN принтера й підтвердьте вибір кнопкою OK. Без цього друк не запускатиметься.`,skip:`Неможливо перевірити — потрібне живе підключення до принтера.`},printer_publishing:{title:`Принтер публікує дані про стан`,pass:`Принтер публікує оновлення статусу — AMS, філаменти та K-профілі правильно відображатимуться на слайсері.`,fail:`MQTT-брокер прийняв з’єднання, але принтер не опублікував жодного звіту про стан. Майже завжди причиною є неправильний серійний номер або неправильний регістр символів: тема device//report чутлива до регістру. Звірте серійний номер у налаштуваннях Bambuddy із номером на екрані принтера.`,skip:`Неможливо перевірити — потрібне живе підключення до принтера.`}}},systemHealth:{sectionTitle:`Стан системи`,sectionDescription:`Сканує останні журнали на наявність відомих проблем, які зазвичай можна вирішити самостійно, перш ніж вони перетворяться на запит у службу підтримки.`,rescan:`Пересканувати`,clean:`В останніх записах журналу {{times}} не знайдено відомих проблем.`,logUnavailable:`Журналування файлів вимкнено, тому журнали неможливо сканувати. Увімкніть журналювання файлів, щоб використовувати цю перевірку.`,learnMore:`Як виправити`,fixLabel:`Виправити:`,occurrences:`Виявлено {{times}} разів — востаннє о {{lastSeen}}`,category:{layer8:`Ви можете це виправити`,environment:`Середовище виконання`,bug:`Будь ласка, повідомте про це`},signature:{"ftp-auth-rejected":{name:`Принтер відхилив код доступу`,cause:`Принтер відмовився від входу для передавання файлів. Код доступу неправильний або він змінився після перемикання режиму розробника.`,fix:`Повторно скопіюйте код доступу з екрана принтера (налаштування LAN) і оновіть його в налаштуваннях принтера в Bambuddy.`},"ftp-connection-timeout":{name:`Час очікування з’єднання для передачі файлів минув`,cause:`Bambuddy не вдалося отримати доступ до порту передачі файлів принтера (FTPS 990). Порт заблоковано, або принтер вимкнено або знаходиться в іншій підмережі.`,fix:`Переконайтеся, що ніщо не блокує порт 990 між Bambuddy і принтером, і що обидва знаходяться в одній мережі.`},"ftp-ssl-error":{name:`Помилка захищеного з’єднання для передавання файлів`,cause:`Файлова служба принтера відповіла на порту 990 без TLS. Її файловий сервер завис — це несправність самого принтера, а не брандмауера чи прошивки.`,fix:`Перезапустіть принтер. До того часу файли друку, обкладинки та таймлапси отримати неможливо, але на сам друк це не впливає.`},"bambu-cloud-captcha":{name:`Bambu Cloud вимагає пройти CAPTCHA`,cause:`Захист Bambu від зловживань перевіряє цю мережу, тож завершити вхід у Bambu Cloud неможливо. Це пов'язано з публічною IP-адресою, а не з вашим обліковим записом чи цією інсталяцією.`,fix:`Зачекайте: зазвичай перевірка зникає за кілька годин, а повторні спроби входу її подовжують. Тим часом увійдіть за допомогою токена доступу із сеансу браузера.`},"mqtt-connection-flapping":{name:`Підключення до принтера постійно падає`,cause:`Керуюче з’єднання (MQTT 8883) неодноразово роз’єднується та знову під’єднується — зазвичай через слабкий мережевий шлях або частково заблокований порт.`,fix:`Перевірте сигнал Wi-Fi на принтері, віддайте перевагу дротовому підключенню та переконайтеся, що порт 8883 надійно доступний.`},"camera-connection-refused":{name:`Потік з камери недоступний`,cause:`Не вдається отримати доступ до камери в прямому ефірі через порт RTSPS 322. Порт заблоковано, або на принтері вимкнено камеру або LAN liveview.`,fix:`Увімкніть камеру та LAN liveview на принтері та переконайтеся, що порт 322 не заблоковано. Це не впливає на друк.`},"database-locked":{name:`Конфлікт запису до бази даних`,cause:`Під навантаженням SQLite повертає помилки "database is locked". Це часто трапляється, коли одночасно працюють кілька принтерів.`,fix:`Переключіть Bambuddy на зовнішню базу даних PostgreSQL. Див. посібник PostgreSQL у документації.`}}},vpDiagnostic:{title:`Перевірка налаштувань — {{name}}`,runButton:`Запустити перевірку налаштувань`,running:`Виконується перевірка налаштувань...`,runFailed:`Не вдалося виконати перевірку налаштувань: {{error}}`,retry:`Запустити знову`,overall:{ok:`Усі перевірки пройшли — цей віртуальний принтер налаштовано правильно.`,warnings:`Віртуальний принтер має працювати, але деякі параметри потребують уваги.`,problems:`Знайдено проблеми, які пояснюють, чому слайсер не бачить або не використовує цей віртуальний принтер.`},check:{enabled:{title:`Віртуальний принтер увімкнено`,fail:`Цей віртуальний принтер вимкнено. Увімкніть його, щоб зробити його видимим.`},running:{title:`Служби запущені`,fail:`Віртуальний принтер увімкнено, але його служби не працюють. Перевірте журнал Bambuddy — зазвичай запуску заважає конфлікт IP-адреси прив’язки або помилка дозволів.`},bind_interface:{title:`Прив’язка мережевого інтерфейсу`,fail:`Інтерфейс прив’язки не встановлено або більше не існує на цьому хості. Виберіть поточний інтерфейс у спадному списку «Інтерфейс прив’язки».`},access_code:{title:`Код доступу встановлено`,fail:`Код доступу не встановлено. У слайсері потрібно вказати той самий 8-символьний код доступу, який задано тут.`},target_printer:{title:`Цільовий принтер`,fail:`Цільовий принтер не вибрано. У режимі проксі потрібен фізичний принтер, якому пересилатимуться завдання.`,warn:`Цільовий принтер наразі не в мережі — проксі-сервер відновиться після повторного підключення.`},port_ftps:{title:`Служба вивантаження файлів (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може вивантажити файли. Зазвичай причиною є конфлікт порту на цьому інтерфейсі.`},port_mqtt:{title:`Служба керування (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може підключитися або показати стан.`},port_bind:{title:`Служба виявлення (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може завершити процедуру виявлення.`},privileged_ports:{title:`Прив’язка до привілейованих портів`,fail:`Порт {{port}} нижче 1024, і цій службі не дозволено його займати — тому вище ніщо не слухає. Додайте AmbientCapabilities=CAP_NET_BIND_SERVICE до /etc/systemd/system/bambuddy.service і перезапустіть або виконайте "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))". У Docker додайте cap_add: [NET_BIND_SERVICE].`},certificate:{title:`Сертифікат TLS`,pass:`Сертифікат готовий. Переконайтеся, що наведений вище сертифікат центру сертифікації Bambuddy імпортовано до сховища довірених сертифікатів слайсера.`,fail:`Сертифікат TLS для цього віртуального принтера відсутній. Перевірте, чи доступний для запису каталог даних Bambuddy.`}}},bugReport:{title:`Повідомити про помилку`,description:`опис`,descriptionPlaceholder:`Що пішло не так? Будь ласка, опишіть проблему...`,email:`Електронна адреса (необов’язково)`,emailPlaceholder:`your@email.com`,emailPrivacy:`Якщо надано, вашу електронну адресу буде включено до згорнутого розділу проблеми GitHub, щоб спеціаліст із супроводу міг відслідковувати.`,screenshot:`Скріншот`,uploadOrPaste:`Вивантажити, вставити або перетягнути зображення`,dataCollectedSummary:`Які дані містяться у звіті?`,dataIncluded:`У комплекті:`,dataIncludedList:`Версія додатка, OS, архітектура, версія Python, статистика бази даних (лише для підрахунку), моделі принтерів, кількість сопел, версії прошивки, статус підключення, статус інтеграції (Spoolman, MQTT, HA), неконфіденційні налаштування, кількість мережевих інтерфейсів, Docker деталі, версії залежностей.`,dataNeverIncluded:`Ніколи не додаються:`,dataNeverIncludedList:`Назви принтерів, серійні номери, коди доступу, паролі, IP-адреси, адреси електронної пошти, ключі API, токени, URL вебхуків, імена хостів або користувачів.`,submit:`Надіслати`,startLogging:`Розпочати журнал налагодження`,stepEnableLogging:`Журнал налагодження ввімкнено`,stepReproduce:`Відтворіть проблему зараз`,stepStopLogging:`Зупинити та подати звіт`,stopAndSubmit:`Зупинити та надіслати`,maxDuration:`Автоматична зупинка через {{minutes}} хв`,stoppingLogs:`Збір журналів і надсилання...`,submitting:`Надсилання звіту про помилку...`,submittingStepConnection:`Запуск перевірки підключення принтера`,submittingStepVirtualPrinters:`Виконання перевірок налаштування віртуального принтера`,submittingStepLogScan:`Сканування останніх журналів на наявність відомих проблем`,submittingStepSubmit:`Надсилання звіту GitHub`,submitSuccess:`Звіт про помилку успішно надіслано!`,submitFailed:`Не вдалося надіслати звіт про помилку`,diagnosticChecking:`Перевірка підключень принтера...`,diagnosticHealthy:`Перевірку підключення пройдено — проблем із принтерами не виявлено.`,diagnosticSummary:`Проблеми з підключенням мають {{problems}} із {{total}} принтерів`,diagnosticIntro:`Один або кілька принтерів мають проблему з підключенням, яка може спричиняти описану несправність. Розгорніть запис принтера нижче, щоб переглянути спосіб виправлення. Усунення цієї проблеми може допомогти без створення звіту про помилку, але за потреби звіт усе одно можна надіслати нижче.`,logHealthSummary:`У ваших журналах знайдено відомі проблеми`,logHealthIntro:`Останні журнали відповідають відомим проблемам. Перегляньте наведені нижче виправлення — їх вирішення може вирішити вашу проблему без повідомлення про помилку. Ви все ще можете надіслати звіт нижче.`,thankYou:`дякую!`,submitted:`Ваш звіт про помилку надіслано.`,viewIssue:`Переглянути випуск`,closeKeepsRecording:`Ви можете закрити цю панель, поки відтворюєте проблему: запис триває, і після повторного відкриття ви повернетеся сюди.`,resumeRecording:`Триває запис звіту про помилку — {{elapsed}}. Натисніть, щоб завершити.`,resumeReport:`Продовжити звіт`,unexpectedError:`Сталася неочікувана помилка`},failureDetection:{title:`Виявлення помилок за допомогою ШІ`,description:`Відстежуйте друк за допомогою самостійно розгорнутого Obico ML API та автоматично реагуйте на виявлені помилки.`,mlUrl:`URL Obico ML API`,mlUrlHint:`База URL вашого контейнера ml_api, розміщеного на власному хості Obico (наприклад, http://192.168.1.10:3333).`,mlToken:`Токен ML API (необов'язково)`,mlTokenPlaceholder:`Залиште порожнім, якщо сервер працює без ML_API_TOKEN`,mlTokenHint:`Має збігатися зі змінною середовища ML_API_TOKEN вашого контейнера Obico ml_api. Залиште порожнім, якщо контейнер працює без токена.`,test:`Тест`,testSuccess:`ML API доступний і працює належним чином.`,testSuccessTokenUnknown:`ML API доступний і працює належним чином. Не вдалося перевірити токен.`,testFailed:`Не вдалося підключитися до ML API.`,sensitivity:`Чутливість`,sensitivityLow:`Низький (менше помилкових спрацьовувань)`,sensitivityMedium:`Середній (збалансований)`,sensitivityHigh:`Високий (виявляти рано, більше помилкових спрацьовувань)`,sensitivityHint:`Налаштовує пороги впевненості, за яких формуються попередження та фіксуються помилки.`,action:`Дія в разі виявлення помилки`,actionNotify:`Лише сповіщати`,actionPause:`Призупинити друк`,actionPauseOff:`Призупинити друк і вимкнути живлення`,pollInterval:`Інтервал опитування (секунди)`,pollIntervalHint:`Як часто перевіряти кожен принтер під час друку. Мінімум 5 с, максимум 120 с.`,externalUrlMissing:`Зовнішній URL не встановлено.`,externalUrlHint:`ML API отримує знімок із камери за URL. Укажіть зовнішній URL у загальних налаштуваннях, щоб контейнер ML API міг підключитися до Bambuddy.`,perPrinterTitle:`Принтери під спостереженням`,perPrinterHint:`Виберіть, які принтери перевіряє служба виявлення.`,monitorAll:`Відстежувати всі підключені принтери`,statusTitle:`Статус`,serviceRunning:`Служба працює`,thresholds:`Нижній / верхній поріг`,activePrinters:`Активні завдання друку`,noActivePrints:`Зараз немає роздруківок.`,historyTitle:`Останні виявлення`,noHistory:`Виявлень ще немає.`},makerworld:{title:`MakerWorld`,description:`Вставте модель MakerWorld URL, щоб імпортувати та роздрукувати її безпосередньо з Bambuddy — не виходячи з програми Bambu Handy.`,pasteUrlHeader:`Імпортувати з MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… або вставте будь-яке посилання MakerWorld.`,resolveButton:`Розв’язати`,signInRequiredTitle:`Для завантаження потрібно увійти в Bambu Cloud`,signInRequiredBody:`Ви можете переглядати деталі моделі анонімно, але для MakerWorld потрібен обліковий запис Bambu Cloud для завантаження файлів 3MF.`,signInExpiredTitle:`Термін входу в Bambu Cloud минув`,signInExpiredBody:`Ви все ще ввійшли в Bambuddy, але Bambu Lab більше не приймає збережений токен, тому завантаження не вдасться. Знову ввійдіть у Bambu Cloud.`,openCloudSettings:`Відкрити налаштування Cloud`,untitledModel:`Модель без назви`,byCreator:`від {{name}}`,downloadsCount:`{{count}} завантажень`,licensePrefix:`Ліцензія`,alreadyImported:`Вже в бібліотеці`,openOnMakerworld:`Відкрити MakerWorld`,alreadyInLibrary:`Ця модель уже є у вашій бібліотеці — знайдіть її в Менеджері файлів → MakerWorld`,importSuccess:`Імпортовано {{filename}} — збережено в менеджері файлів → MakerWorld`,platesHeader:`Пластини ({{count}})`,plateDefaultName:`Пластина {{n}}`,materialCount:`Філаментів: {{count}}`,amsRequired:`Потрібен AMS`,slicedFor:`Нарізано для {{printer}}`,alsoCompatible:`Також позначено як сумісний: {{printers}}`,importToLibrary:`Зберегти`,sliceIn:`Зберегти й нарізати в {{slicer}}`,disclaimer:`Інтеграція MakerWorld використовує кінцеві точки API, задокументовані спільнотою. Bambuddy не є філією та не підтримується MakerWorld або Bambu Lab.`,lastImportSuccess:`Імпортовано до вашої бібліотеки`,lastImportAlreadyInLibrary:`Уже у вашій бібліотеці`,viewInLibrary:`Переглянути в менеджері файлів`,openInBambuStudio:`Відкрити в Bambu Studio`,openInOrcaSlicer:`Відкрити в OrcaSlicer`,importTo:`Імпорт до файлового менеджера`,recentImportsHeader:`Недавній імпорт`,phaseResolving:`Розв’язування`,phaseDownloading:`Завантаження`,folderAuto:`MakerWorld (за замовчуванням)`,importAll:`Імпортувати все`,importAllProgress:`Імпорт {{current}}/{{total}}`,openGallery:`Відкрити галерею зображень`,galleryPrev:`Попереднє зображення`,galleryNext:`Наступне зображення`,deleteImport:`Видалити з бібліотеки`,importDeleting:`Видалення…`,importDeleted:`Видалено з бібліотеки`,confirmDelete:`Видалити {{filename}} з бібліотеки? Локальний файл буде видалено, але цю друкарську пластину можна буде повторно імпортувати з MakerWorld.`,errors:{resolveFailed:`Не вдалося вирішити MakerWorld URL.`,downloadFailed:`Помилка завантаження. Спробуйте ще раз.`,deleteFailed:`Не вдалося видалити файл із бібліотеки.`}},gcodeViewer:{filamentSlot:`Філамент {{n}}`,loading:`Читання траєкторії…`,loadFailed:`Не вдалося завантажити G-код цього файлу.`,showTravel:`Холості переміщення`,topLayer:`Верхній шар`,bottomLayer:`Нижній шар`,noSource:`Файл для перегляду не вказано.`,view:{filament:`Філамент`,feature:`Тип`,height:`Висота`,width:`Ширина`},feature:{wall:`Стінки`,sparseInfill:`Розріджене заповнення`,solidInfill:`Суцільне заповнення`,bridge:`Міст / навис`,support:`Підтримка`,skirt:`Спідниця / облямівка`,gapFill:`Заповнення проміжків`,ironing:`Розгладжування`,primeTower:`Вежа очищення`},back:`Назад`,backToArchives:`Назад до друку архівів`,backToFiles:`Назад до файлового менеджера`,plates:`Пластини`,plateN:`Пластина {{n}}`},libraryTrash:{title:`Кошик`,headerButton:`Кошик`,headerTooltip:`Переглянути файли, переміщені в кошик`,backToFiles:`Назад до файлового менеджера`,subtitleAdmin:`Видалені файли залишаються тут протягом {{days}} днів, а потім автоматично видаляються. У цьому режимі перегляду відображаються файли, видалені в кошик для всіх користувачів.`,subtitleUser:`Видалені файли залишаються тут протягом {{days}} днів, а потім автоматично видаляються.`,loading:`Завантаження кошика…`,loadError:`Не вдалося завантажити кошик.`,empty:`Кошик порожній.`,summary:`Файлів: {{count}} · {{size}}`,emptyTrash:`Очистити кошик`,restore:`Відновити`,purgeNow:`Видалити зараз`,autoPurgeIn:`Автоматичне видалення через {{when}}`,days:`днів`,retentionLabel:`Автоматичне видалення після`,selectAll:`Вибрати все`,selectOne:`Вибрати {{filename}}`,selectionCount:`Вибрано {{count}}.`,bulkRestore:`Відновити вибране`,bulkPurge:`Видалити вибране`,col:{filename:`Файл`,folder:`Папка`,size:`Розмір`,deleted:`Переміщено в кошик`,autoPurge:`Автоматичне видалення`,owner:`Власник`,actions:`Дії`},confirm:{purgeTitle:`Видалити остаточно?`,purgeBody:`{{filename}} буде видалено з диска та не підлягає відновленню.`,emptyTitle:`Очистити кошик?`,emptyBody:`З диска буде остаточно видалено всі файли ({{count}}). Цю дію неможливо скасувати.`,bulkPurgeTitle:`Видалити вибрані файли назавжди?`,bulkPurgeBody:`Вибрані файли ({{count}}) буде видалено з диска без можливості відновлення.`,cta:`Видалити остаточно`},toast:{restored:`Файл відновлено.`,restoreFailed:`Не вдалося відновити файл.`,purged:`Файл видалено остаточно.`,purgeFailed:`Не вдалося видалити файл.`,emptied:`Файлів остаточно видалено з кошика: {{count}}.`,emptyFailed:`Не вдалося очистити кошик.`,retentionSaved:`Для автоматичного видалення встановлено {{days}} днів.`,retentionFailed:`Не вдалося зберегти налаштування збереження.`,bulkRestored:`Відновлено файлів: {{count}}`,bulkPurged:`Файлів остаточно видалено: {{count}}.`}},libraryPurge:{title:`Очистити старі файли`,headerButton:`Очищення старого`,headerTooltip:`Масове переміщення старих файлів у кошик`,description:`Однією дією перемістіть старі файли з бібліотеки до кошика. Вік файлів з історією друку визначається за датою останнього друку, а файлів, які ще не друкувалися, — за датою вивантаження.`,ageLabel:`Перемістити файли, старші за`,days:`днів`,includeNeverPrinted:`Включати файли, які ніколи не друкувались`,effectsTitle:`Що відбудеться після натискання «Очистити»`,effect1:`Відповідні файли переміщуються в кошик — вони ще не видалені з диска.`,effect2:`Ви можете будь-коли відновити їх із кошика, доки не закінчиться період зберігання.`,effect3:`Після завершення строку зберігання служба очищення кошика остаточно видалить файли з диска.`,effect4:`Файли у зовнішніх (зв’язаних) папках пропускаються — Bambuddy ніколи не видаляє байти, які йому не належать.`,previewLoading:`Перевірка кількості файлів…`,previewFailed:`Не вдалося попередньо переглянути очищення.`,previewSummary:`Файли {{count}} · {{size}} буде переміщено до кошика`,andMore:`…і {{count}} більше`,warning:`Файли в кошику й надалі займають місце, доки не завершиться строк зберігання. Щоб звільнити місце на диску негайно, після цього очистьте кошик.`,confirmCta:`Перемістити до кошика ({{count}})`,purging:`Переміщення в кошик…`,toast:{success:`Переміщено до кошика файлів: {{count}}`,failed:`Не вдалося очистити файли.`}},libraryAutoPurge:{enableLabel:`Автоматичне очищення старих файлів`,enableDescription:`Запускає очищення адміністратора один раз на день. Файли спочатку потрапляють у кошик — вони не видаляються одразу.`,ageLabel:`Автоматичне очищення файлів, старших за`,ageDescription:`Мінімум 7 днів, максимум 10 років. Використовує те саме вікове правило, що й ручна кнопка очищення.`,days:`днів`,includeNeverPrinted:`Включати файли, які ніколи не друкувались`,saveFailed:`Не вдалося зберегти налаштування автоматичного очищення.`},archivePurge:{headerButton:`Очищення старого`,headerTooltip:`Масове видалення старих архівів`,title:`Очистити старі архіви`,description:`Очистити стару історію друку. Кожен архів старіє відповідно до останнього завершення друку — повторний друк архіву оновлює його вік, тому активна робота ніколи не очищається.`,ageLabel:`Видалити архіви, не надруковані в останньому`,days:`днів`,effectsTitle:`Що відбудеться після натискання «Очистити»`,effect1:`Кожен відповідний архів приховано зі списків, а його файли видалено з диска (3MF, ескіз, покадрова зйомка, вихідний 3MF, F3D файл дизайну, фотографії).`,effect2:`Запис архіву залишиться в базі даних, тому «Швидка статистика» й надалі враховуватиме філамент, час, вартість та енергію — як і за типового видалення окремого архіву.`,effect3:`Позначте нижче «Також видалити зі статистики», щоб вилучити внесок цих архівів зі «Швидкої статистики» — так само, як у відповідній опції видалення окремого архіву. Цю дію неможливо скасувати.`,effect4:`Повторний друк архіву оновлює його віковий годинник, тому архіви, якими ви все ще користуєтеся, залишаються в безпеці.`,purgeStatsLabel:`Також видалити зі статистики`,purgeStatsHint:`Вилучає внесок відповідних архівів зі «Швидкої статистики» — філамент, час, вартість та енергію. Якщо параметр вимкнено, статистичні дані зберігаються, а з диска видаляються лише файли.`,previewLoading:`Перевірка кількості архівів, що збігаються…`,previewFailed:`Не вдалося попередньо переглянути очищення.`,previewSummary:`Архіви {{count}} · {{size}} буде видалено`,andMore:`…і {{count}} більше`,warning:`Файли видаляються з диска і не можуть бути відновлені. Перш ніж продовжити, завантажте або додайте до вибраного все, що хочете зберегти.`,confirmCta:`Видалити архіви ({{count}})`,purging:`Видалення…`,toast:{success:`Видалено архівів: {{count}}`,failed:`Не вдалося очистити архіви.`}},archiveAutoPurge:{enableLabel:`Автоматичне очищення старих архівів`,enableDescription:`Один раз на день приховує архіви зі списків і видаляє їх файли з диска, якщо вони не були надруковані в межах порогу. Повторний друк архіву скидає годинник.`,ageLabel:`Автоматичне видалення архівів, не надрукованих в останньому`,ageDescription:`Мінімум 7 днів, максимум 10 років. На основі останнього завершення друку — повторний друк архіву оновлює його вік. Видаляє 3MF, мініатюру, покадрову зйомку, джерело 3MF, F3D і фотографії.`,days:`днів`,purgeStatsLabel:`Також видалити зі статистики`,purgeStatsDescription:`Якщо параметр увімкнено, щоденне очищення також вилучатиме внесок кожного видаленого архіву зі «Швидкої статистики» — філамент, час, вартість та енергію. Типово параметр вимкнено: статистичні дані зберігаються, а з диска видаляються лише файли.`,runNow:`Очистити архіви зараз`,saveFailed:`Не вдалося зберегти налаштування автоматичного очищення.`},cameraTokens:{scope:{camera_stream:`Потік камери`,camwall:`Панель камер`,overlay:`Потокове накладання`},title:`API-токени камери`,navTitle:`API-токени камери`,description:`Довгострокові токени для вбудовування потоку камери в Home Assistant, Frigate, кіоски або інші засоби, яким потрібен постійний URL. Під час створення виберіть область доступу; токен можна відкликати будь-коли.`,loading:`Завантаження…`,confirmRevoke:{title:`Відкликати цей токен?`,body:`Усі пристрої, що використовують «{{name}}», негайно втратять доступ. Цю дію неможливо скасувати.`,cancel:`Скасувати`,confirm:`Відкликати`},create:{scopeLabel:`Область застосування`,hintCameraStream:`Токен потоку камери дає змогу отримувати лише потоки з камер і знімки. Використовуйте його для Home Assistant, Frigate або іншого засобу, що вбудовує одну камеру.`,hintCamWall:`Токен Cam Wall відкриває /camwall на екрані без входу. Він може бачити назву та стан кожного принтера, а також потоки з камери. Він не може бачити імена файлів, адреси чи коди доступу.`,hintOverlay:`Токен потокового накладання відкриває /overlay/{printerId} на екрані без входу — для OBS або будь-якої прямої трансляції. Він дає змогу переглядати потік із камери одного принтера та стан друку в реальному часі, зокрема назву файлу, показану на екрані. Він не надає доступу до адрес чи кодів доступу.`,title:`Створити новий токен`,nameLabel:`Назва токена`,namePlaceholder:`напр. Home Assistant`,daysLabel:`Днів до закінчення терміну дії`,submit:`Створити`,hint:`Максимальний строк дії — 365 днів. Значення токена буде показано лише один раз під час створення — скопіюйте його зараз.`},created:{camWallUrlTitle:`Cam Wall URL для цього дисплея`,camWallUrlHint:`Відкрийте цей URL на потрібному екрані. Будь-хто, хто отримає URL, зможе переглядати панель камер, тому захищайте його як ключ доступу. Щоб негайно припинити доступ із цього екрана, відкличте токен.`,overlayUrlTitle:`Накладання URL для OBS`,overlayUrlHint:`Додайте цей URL в OBS як джерело браузера. Замініть число в /overlay/1 номером принтера з його URL на сторінці «Принтери». Будь-хто, хто отримає URL, зможе переглядати трансляцію, тому захищайте його як ключ доступу. Щоб негайно припинити доступ, відкличте токен.`,title:`Токен створено — скопіюйте його зараз`,warning:`Це єдиний раз, коли токен буде показано. Після закриття цього діалогового вікна переглянути його знову буде неможливо.`,copy:`Копіювати`,dismiss:`Я зберіг токен`},list:{scope:`Область застосування`,myTitle:`Мої токени`,allTitle:`Усі користувачі (перегляд адміністратора)`,empty:`Токенів ще немає.`,name:`Назва`,owner:`Власник`,prefix:`Префікс`,created:`Створено`,expires:`Термін дії закінчується`,lastUsed:`Останнє використання`,revoke:`Відкликати`,expired:`Термін дії минув`},toast:{created:`Токен створено`,createFailed:`Не вдалося створити токен`,revoked:`Токен відкликано`,revokeFailed:`Не вдалося відкликати токен`,loadFailed:`Не вдалося завантажити токени`,copied:`Скопійовано в буфер обміну`,copyFailed:`Не вдалося копіювати — виберіть і скопіюйте вручну`}},forecast:{title:`Прогноз`,noSpools:`Не знайдено активних котушок. Додайте котушки до свого інвентарю, щоб переглянути прогнозні дані.`,noUsageData:`Немає даних про використання — неможливо спроєктувати хронологію запасів.`,sku:`SKU`,material:`матеріал`,stock:`Запас`,dailyRate:`Добове споживання`,daysLeft:`Залишилося днів`,emptyBy:`Вичерпається до`,reorderBy:`Замовити до`,actions:`Дії`,trend:`Тренд`,estimated:`Приблизно`,noData:`Немає даних`,timeframe:`Період`,chartTitle:`Прогнозований запас — топ-5 матеріалів`,dashedLinesROP:`Пунктирні лінії — точки повторного замовлення`,stockLevel:`Рівень запасів`,reorderPoint:`Точка повторного замовлення`,safetyMargin:`Запас безпеки`,trendLegend:`Тенденція (на основі історії, рівень обслуговування 95%)`,estimatedLegend:`Розрахункова (дельта ваги)`,noDataLegend:`Немає даних`,ropLabel:`ROP`,ssLabel:`SS`,safetyStockLegend:`Страховий запас`,stockArrivalLegend:`Надходження запасів`,stockoutLegend:`Дефіцит`,alertCount_one:`Сповіщень: {{count}}`,alertCount_other:`Сповіщень: {{count}}`,order:`Замовлення`,save:`Зберегти`,cancel:`Скасувати`,settingsSaved:`Налаштування збережено`,failedSaveSettings:`Не вдалося зберегти налаштування`,globalLeadTimeSaved:`Загальний строк постачання збережено`,globalLeadTime:`Загальний строк постачання`,globalLeadTimeHint:`Мінімальний строк постачання для розрахунку точки повторного замовлення всіх SKU`,skuLeadTimeOverride:`Інший строк постачання`,skuLeadTimeHint:`0 — використовувати загальний строк. Установіть значення понад 0, щоб перевизначити його для цього SKU.`,safetyMarginLabel:`Запас безпеки`,effectiveLeadTime:`Розрахунковий строк постачання`,effectiveLeadTimeHint:`max(глобальний {{global}}d, SKU {{sku}}d)`,reorderPointHint:`d̄ × LT + страховий запас — замовляйте, коли запас досягне цього рівня`,safetyMarginHint:`Статистичний страховий запас (z=1,65 × σ × √LT) + визначений користувачем буфер`,safetyMarginHintDays:`Буфер додано поверх статистичного страхового запасу.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}} г за поточного рівня споживання.`,safetyMarginHintG:`Буфер фіксованої ваги, доданий поверх статистичного страхового запасу.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}} дн. за поточного рівня споживання.`,individualSpools:`Окремі котушки`,labelWeight:`Вага за етикеткою`,spoolCount_one:`Котушок: {{count}}`,spoolCount_other:`Котушок: {{count}}`,stockBreakRisk:`Ризик вичерпання запасу`,stockBreakDetail:`Залишилося {{days}} дн.; строк постачання — {{lt}} дн.`,stockBreakBefore:`Запас вичерпається до поповнення`,reorderNow:`Замовити зараз`,reorderTriggerPassed:`Дата замовлення {{date}} минула.`,shoppingList:`Список покупок`,shoppingListItems_one:`(позицій: {{count}})`,shoppingListItems_other:`(позицій: {{count}})`,shoppingListEmpty:`Список покупок порожній. Натисніть значок кошика в будь-якому рядку, щоб додати позиції.`,addToCart:`Додати до списку покупок`,alertsSnoozed:`Вимкнути сповіщення для цього SKU`,alertsEnabled:`Увімкнути сповіщення для цього SKU`,addedToCart:`Додано до списку покупок`,failedAddItem:`Не вдалося додати елемент`,listView:`Список`,logisticsView:`Логістика`,qty:`Кількість`,weight:`Вага`,leadTime:`Строк постачання`,expectedRestock:`Очікуване поповнення запасів`,status:`Статус`,note:`Примітка`,pending:`В очікуванні`,purchased:`Придбано`,received:`Отримано`,markPurchased:`Позначити як придбане`,markReceived:`Позначити як отримане — додає котушки до запасу`,resetToPending:`Скинути до очікування`,remove:`Видалити`,clearAll:`Очистити все`,downloadCsv:`CSV`,addToCartTitle:`Додати до списку покупок`,byQuantity:`За кількістю`,byDuration:`За тривалістю`,numberOfSpools:`Кількість котушок`,lastHowManyDays:`Скільки днів має тривати?`,noUsageQty:`Немає даних про використання — кількість встановлено на 1.`,noteOptional:`Примітка (необов’язково)`,notePlaceholder:`напр. для проєкту X, терміново…`,addNSpools_one:`Додати котушки ({{count}})`,addNSpools_other:`Додати котушки ({{count}})`,onArrival:`Після прибуття`,stockBreakIn:`Запас вичерпається через {{days}} дн.`,stockRunsOutBefore:`Запас закінчиться раніше, ніж мине строк постачання {{lt}} дн.`,atRate:`За споживання {{rate}} г/день потрібно`,moreSpools_one:`Додаткових котушок: {{count}}`,moreSpools_other:`Додаткових котушок: {{count}}`,bridgeGap:`щоб покрити нестачу.`,noReadAccess:`Ви не маєте дозволу переглядати прогнози запасів.`,noWriteAccess:`Ви не маєте дозволу змінювати налаштування прогнозу.`}}}},Et=[`en`,`de`,`es`,`fr`,`ja`,`it`,`ko`,`pt-BR`,`ru`,`tr`,`uk`,`zh-CN`,`zh-TW`],Dt=`bambuddy_appliance_locale_consumed`;Oe.use(wt).use(qe).init({resources:Tt,fallbackLng:`en`,supportedLngs:Et,detection:{order:[`localStorage`,`navigator`,`htmlTag`],lookupLocalStorage:`bambutrack_language`,caches:[`localStorage`]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});function Ot(){if(typeof window>`u`||!window.localStorage)return;let e=window.localStorage;typeof e.getItem!=`function`||typeof e.setItem!=`function`||e.getItem(Dt)||fetch(`/api/v1/system/appliance`).then(e=>e.ok?e.json():null).then(t=>{!t||typeof t.locale!=`string`||Et.includes(t.locale)&&(Oe.changeLanguage(t.locale),e.setItem(Dt,`1`))}).catch(()=>{})}Ot();var kt=[{code:`en`,name:`English`,nativeName:`English`},{code:`de`,name:`German`,nativeName:`Deutsch`},{code:`es`,name:`Spanish`,nativeName:`Español`},{code:`fr`,name:`French`,nativeName:`Français`},{code:`ja`,name:`Japanese`,nativeName:`日本語`},{code:`it`,name:`Italian`,nativeName:`Italiano`},{code:`ko`,name:`Korean`,nativeName:`한국어`},{code:`pt-BR`,name:`Portuguese (Brazil)`,nativeName:`Português (Brasil)`},{code:`zh-CN`,name:`Chinese (Simplified)`,nativeName:`简体中文`},{code:`zh-TW`,name:`Chinese (Traditional)`,nativeName:`繁體中文`},{code:`tr`,name:`Turkish`,nativeName:`Türkçe`},{code:`ru`,name:`Russian`,nativeName:`Русский`},{code:`uk`,name:`Ukrainian`,nativeName:`Українська`}],At=l(g()),jt=`modulepreload`,Mt=function(e){return`/`+e},Nt={},Pt=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Mt(t,n),t in Nt)return;Nt[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:jt,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Ft=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,It=/^[\\/]{2}/;function Lt(e,t){return t+e.replace(/\\/g,`/`)}var Rt=`popstate`;function zt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Bt(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Gt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Kt(t)}return Jt(t,n,null,e)}function Vt(e,t){if(e===!1||e==null)throw Error(t)}function Ht(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Ut(){return Math.random().toString(36).substring(2,10)}function Wt(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Gt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?qt(t):t,state:n,key:t&&t.key||r||Ut(),mask:i}}function Kt({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function qt(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Jt(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=zt(e)?e:Gt(h.location,e,t);n&&n(r,e),l=u()+1;let d=Wt(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=zt(e)?e:Gt(h.location,e,t);n&&n(r,e),l=u();let i=Wt(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Yt(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(Rt,d),c=e,()=>{i.removeEventListener(Rt,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Yt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),Vt(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Kt(t);return i=i.replace(/ $/,`%20`),!n&&It.test(i)&&(i=r+i),new URL(i,r)}function Xt(e,t,n=`/`){return Zt(e,t,n,!1)}function Zt(e,t,n,r,i){let a=_n((typeof t==`string`?qt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??$t(e),s=null,c=gn(a);for(let e=0;s==null&&e{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;Vt(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=Tn([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(Vt(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),en(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:un(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=hn(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of tn(e.path))a(e,t,!0,n)}),t}function tn(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=tn(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function W(e){e.sort((e,t)=>e.score===t.score?dn(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var nn=/^:[\w-]+$/,rn=3,an=2,on=1,sn=10,cn=-2,ln=e=>e===`*`;function un(e,t){let n=e.split(`/`),r=n.length;return n.some(ln)&&(r+=cn),t&&(r+=an),n.filter(e=>!ln(e)).reduce((e,t)=>e+(nn.test(t)?rn:t===``?on:sn),r)}function dn(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function fn(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function hn(e,t=!1,n=!0){Ht(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function gn(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return Ht(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function _n(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function vn(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?qt(e):e,a;return n?(n=wn(n),a=n.startsWith(`/`)?yn(n.substring(1),`/`):yn(n,t)):a=t,{pathname:a,search:On(r),hash:kn(i)}}function yn(e,t){let n=En(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function bn(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function xn(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Sn(e){let t=xn(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Cn(e,t,n,r=!1){let i;typeof e==`string`?i=qt(e):(i={...e},Vt(!i.pathname||!i.pathname.includes(`?`),bn(`?`,`pathname`,`search`,i)),Vt(!i.pathname||!i.pathname.includes(`#`),bn(`#`,`pathname`,`hash`,i)),Vt(!i.search||!i.search.includes(`#`),bn(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=vn(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var wn=e=>e.replace(/[\\/]{2,}/g,`/`),Tn=e=>wn(e.join(`/`)),En=e=>e.replace(/\/+$/,``),Dn=e=>En(e).replace(/^\/*/,`/`),On=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,kn=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,An=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function jn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Mn(e){return Tn(e.map(e=>e.route.path).filter(Boolean))||`/`}var Nn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Pn(e,t){let n=e;if(typeof n!=`string`||!Ft.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Nn)try{let e=new URL(window.location.href),r=It.test(n)?new URL(Lt(n,e.protocol)):new URL(n),a=_n(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{Ht(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Fn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Fn);var In=[`GET`,...Fn];new Set(In);var Ln=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Rn(e){try{return Ln.includes(new URL(e).protocol)}catch{return!1}}var zn=y.createContext(null);zn.displayName=`DataRouter`;var Bn=y.createContext(null);Bn.displayName=`DataRouterState`;var Vn=y.createContext(!1);function Hn(){return y.useContext(Vn)}var Un=y.createContext({isTransitioning:!1});Un.displayName=`ViewTransition`;var Wn=y.createContext(new Map);Wn.displayName=`Fetchers`;var Gn=y.createContext(null);Gn.displayName=`Await`;var Kn=y.createContext(null);Kn.displayName=`Navigation`;var qn=y.createContext(null);qn.displayName=`Location`;var Jn=y.createContext({outlet:null,matches:[],isDataRoute:!1});Jn.displayName=`Route`;var Yn=y.createContext(null);Yn.displayName=`RouteError`;var Xn=`REACT_ROUTER_ERROR`,Zn=`REDIRECT`,Qn=`ROUTE_ERROR_RESPONSE`;function $n(e){if(e.startsWith(`${Xn}:${Zn}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function er(e){if(e.startsWith(`${Xn}:${Qn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new An(t.status,t.statusText,t.data)}catch{}}function tr(e,{relative:t}={}){Vt(nr(),`useHref() may be used only in the context of a component.`);let{basename:n,navigator:r}=y.useContext(Kn),{hash:i,pathname:a,search:o}=fr(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:Tn([n,a])),r.createHref({pathname:s,search:o,hash:i})}function nr(){return y.useContext(qn)!=null}function rr(){return Vt(nr(),`useLocation() may be used only in the context of a component.`),y.useContext(qn).location}var ir=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function ar(e){y.useContext(Kn).static||y.useLayoutEffect(e)}function or(){let{isDataRoute:e}=y.useContext(Jn);return e?jr():sr()}function sr(){Vt(nr(),`useNavigate() may be used only in the context of a component.`);let e=y.useContext(zn),{basename:t,navigator:n}=y.useContext(Kn),{matches:r}=y.useContext(Jn),{pathname:i}=rr(),a=JSON.stringify(Sn(r)),o=y.useRef(!1);return ar(()=>{o.current=!0}),y.useCallback((r,s={})=>{if(Ht(o.current,ir),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Cn(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:Tn([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var cr=y.createContext(null);function lr(){return y.useContext(cr)}function ur(e){let t=y.useContext(Jn).outlet;return y.useMemo(()=>t&&y.createElement(cr.Provider,{value:e},t),[t,e])}function dr(){let{matches:e}=y.useContext(Jn);return e[e.length-1]?.params??{}}function fr(e,{relative:t}={}){let{matches:n}=y.useContext(Jn),{pathname:r}=rr(),i=JSON.stringify(Sn(n));return y.useMemo(()=>Cn(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function pr(e,t){return mr(e,t)}function mr(e,t,n){Vt(nr(),`useRoutes() may be used only in the context of a component.`);let{navigator:r}=y.useContext(Kn),{matches:i}=y.useContext(Jn),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Nr(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. +Значення «увімкнено»: точний рядок, що означає стан «увімкнено». Залиште поле порожнім для автоматичного визначення (ON, true, 1).`,restControl:`Керування`,restOnUrl:`Увімкнути URL`,restOffUrl:`Вимкнути URL`,restOnBody:`Тіло запиту ввімкнення`,restOffBody:`Тіло запиту вимкнення`,restMethod:`Метод HTTP`,restHeaders:`Спеціальні заголовки (JSON)`,restStatusUrl:`URL стану`,restStatusPath:`Шлях JSON до стану`,restStatusOnValue:`Значення «увімкнено»`,restPowerUrl:`URL даних про потужність`,restPowerPath:`Шлях JSON до потужності`,restPowerMultiplier:`Множник потужності`,restEnergyUrl:`URL даних про енергію`,restEnergyPath:`Шлях JSON до споживання за сьогодні`,restEnergyTotalPath:`Шлях JSON до загального споживання`,restEnergyTotalMultiplier:`Множник загального споживання`,restEnergyTotalPathHint:`наприклад, aenergy.total`,restEnergyTotalHint:`Багато розеток, зокрема всі моделі Shelly, повідомляють лише загальний лічильник споживання, який ніколи не скидається. Його слід указувати саме тут, а не в полі вище: якщо трактувати це значення як споживання за сьогодні, воно не скинеться опівночі, а показники «Учора» та «Усього» залишатимуться порожніми. Bambuddy сам обчислює показники за сьогодні й учора на основі цього лічильника; для їх появи потрібні один-два дні даних. Shelly передає значення у ват-годинах, тому використовуйте множник 0.001.`,restEnergyMultiplier:`Множник енергії`,restUrlRequired:`Для REST-розетки потрібно вказати принаймні один URL — для ввімкнення або вимкнення.`,restHeadersHint:`наприклад, {"Authorization": "Bearer your-token"}`,restBodyHint:`напр. ON, {"state": "on"}`,restStatusHint:`URL для опитування поточного стану`,restPathHint:`наприклад, state або data.power.status`,restPowerUrlHint:`Окремий URL для даних про потужність; якщо поле порожнє, використовується URL стану`,restEnergyUrlHint:`Окремий URL для даних про енергію; якщо поле порожнє, використовується URL стану`,restEnergyHint:`Для кожного значення можна використовувати окремий URL або URL стану як резервний. Для перетворення одиниць використовуйте множники, наприклад 0.001 для перетворення Wh у kWh.`,testConnection:`Тестове підключення`,connectionSuccess:`Підключення успішне`,noSwitchesInSwitchbar:`На панелі перемикачів немає розеток`,enableSwitchbarHint:`Увімкніть «Показувати на панелі перемикачів» у розділі «Налаштування → Розумні розетки».`},notifications:{providerTypes:{callmebot:`CallMeBot/WhatsApp`,ntfy:`ntfy`,pushover:`Pushover`,telegram:`Telegram`,email:`Електронна пошта`,discord:`Discord`,webhook:`Webhook`,homeassistant:`Home Assistant`,bark:`Bark`},providerDescriptions:{email:`Сповіщення електронною поштою SMTP`,telegram:`Сповіщення через бота Telegram.`,discord:`Надіслати на канал Discord через webhook`,ntfy:`Безкоштовні push-сповіщення з можливістю самостійного розгортання`,pushover:`Прості та надійні push-повідомлення`,callmebot:`Безкоштовні сповіщення WhatsApp через CallMeBot`,webhook:`Універсальний HTTP POST-запит на будь-який URL`,homeassistant:`Постійні сповіщення на інформаційній панелі Home Assistant.`,bark:`Push-сповіщення iOS через Bark із можливістю самостійного розгортання`},lastSuccess:`Останнє успішне надсилання: {{date}}`,error:`Помилка`,printer:`Принтер:`,allPrinters:`Всі принтери`,sendTestNotification:`Надіслати тестове сповіщення`,eventSettings:`Налаштування події`,enabled:`Увімкнено`,sendFromProvider:`Надсилати сповіщення від цього постачальника`,printEvents:`Події друку`,printerStatus:`Стан принтера`,amsAlarms:`Попередження AMS`,amsHtAlarms:`Попередження AMS-HT`,printQueue:`Черга друку`,start:`Початок`,plateCheck:`Перевірка пластини`,complete:`Завершено`,failed:`Помилка`,stopped:`Зупинено`,progress:`Прогрес`,offline:`Не в мережі`,lowFilament:`Закінчується філамент`,maintenance:`Технічне обслуговування`,amsHumidity:`AMS Вологість`,amsTemp:`AMS Темп`,amsDryingSuspended:`Сушіння призупинено`,amsHtHumidity:`AMS-HT Вологість`,amsHtTemp:`Температура AMS-HT`,bedCooled:`Стіл охолов`,firstLayer:`Перший шар`,quiet:`Тихо`,digest:`Дайджест {{time}}`,printStarted:`Друк розпочато`,plateNotEmpty:`Друкарська пластина не порожня`,plateNotEmptyDescription:`Перед друком виявлено об’єкти`,plateClearRequired:`Потрібно очистити пластину`,plateClearRequiredDescription:`Друк завершено, черга очікує підтвердження очищення пластини`,plateClear:`Очищення пластини`,printCompleted:`Друк завершено`,bedCooledLabel:`Стіл охолов`,bedCooledDescription:`Після друку стіл охолов нижче заданого порога`,firstLayerCompleteLabel:`Перший шар завершено`,firstLayerCompleteDescription:`Сповістити зі знімком після завершення першого шару`,missingSpoolAssignmentLabel:`Відсутнє призначення котушки`,billingChargeFailedLabel:`Помилка списання`,billingChargeFailedDescription:`Сповіщати, якщо не вдалося облікувати вартість друку`,missingSpoolAssignmentDescription:`Сповіщати, коли починається друк і для необхідних лотків не призначено котушку`,printFailed:`Помилка друку`,printStopped:`Друк зупинено`,progressMilestones:`Віхи прогресу`,progressMilestonesDescription:`Сповіщати на 25%, 50%, 75%`,printerOffline:`Принтер не в мережі`,printerError:`Помилка принтера`,aiFailureDetection:`Виявлення помилок за допомогою ШІ`,aiFailureDetectionDescription:`Сповіщати, коли ШІ Obico виявляє можливу помилку друку`,lowFilamentLabel:`Закінчується філамент`,maintenanceDue:`Настав час технічного обслуговування`,maintenanceDueDescription:`Повідомити, коли потрібне обслуговування`,amsHumidityHigh:`AMS Висока вологість`,amsHumidityHighDescription:`Звичайна AMS вологість перевищує порогове значення`,amsTemperatureHigh:`AMS Висока температура`,amsTemperatureHighDescription:`Звичайна AMS температура перевищує порогове значення`,amsDryingSuspendedTitle:`Автоматичне сушіння призупинено`,amsDryingSuspendedDescription:`Автоматичне сушіння блока AMS припинено: вологість так і не опустилася нижче порога`,amsHtHumidityHigh:`AMS-HT Висока вологість`,amsHtHumidityHighDescription:`AMS-HT вологість перевищує порогове значення`,amsHtTemperatureHigh:`Висока температура AMS-HT`,amsHtTemperatureHighDescription:`Температура AMS-HT перевищує порогове значення`,inventoryAlerts:`Сповіщення про запаси`,stockReorderAlert:`Сповіщення про необхідність поповнення`,stockReorderAlertDescription:`Запас SKU досяг точки повторного замовлення`,stockBreakAlert:`Сповіщення про ризик вичерпання запасу`,stockBreakAlertDescription:`Запас закінчиться до того, як надійде поповнення`,jobAdded:`Завдання додано`,jobAddedDescription:`Завдання додано до черги`,jobAssigned:`Завдання призначено`,jobAssignedDescription:`Завдання на основі моделі, призначене принтеру`,jobStarted:`Завдання розпочато`,jobStartedDescription:`Розпочато друк завдання черги`,jobWaiting:`Завдання очікує`,jobWaitingDescription:`Завдання очікує на філамент або принтер`,jobSkipped:`Завдання пропущено`,jobSkippedDescription:`Завдання пропущено (попереднє не вдалося)`,jobFailed:`Помилка завдання`,jobFailedDescription:`Не вдалося розпочати завдання`,queueComplete:`Черга завершена`,queueCompleteDescription:`Усі завдання черги завершено`,quietHours:`Тихі години`,noNotificationsDuring:`Жодних сповіщень у ці години`,editProviderToChangeQuietHours:`Змініть постачальника, щоб змінити години тиші`,dailyDigest:`Щоденний дайджест`,batchNotifications:`Групуйте сповіщення в єдиний щоденний підсумок`,sendAt:`Надсилати о {{time}}`,editProviderToChangeDigestTime:`Відредагуйте постачальника, щоб змінити час дайджесту`,edit:`Редагувати`,deleteProvider:`Видалити постачальника сповіщень`,deleteConfirm:`Видалити «{{name}}»? Цю дію неможливо скасувати.`,delete:`Видалити`,addTitle:`Додати постачальника сповіщень`,editTitle:`Редагувати постачальника сповіщень`,nameLabel:`Назва *`,namePlaceholder:`Мої сповіщення`,providerTypeLabel:`Тип постачальника *`,configuration:`Конфігурація`,testConfiguration:`Перевірити конфігурацію`,printerFilter:`Фільтр принтера`,onlyFromPrinter:`Надсилати лише сповіщення про події з цього принтера`,quietHoursDnd:`Тихі години (не турбувати)`,quietStart:`Початок`,quietEnd:`Кінець`,dailyDigestLabel:`Щоденний дайджест`,sendDigestAt:`Надсилати дайджест о`,digestCollected:`Події буде зібрано й надіслано в цей час одним зведенням`,notificationEvents:`Події сповіщень`,progressPercent:`(25%, 50%, 75%)`,bedCooledAfterPrint:`(після завершення друку)`,haSensorAlert:`Сповіщення датчика принтера`,haSensorAlertDescription:`(пов'язаний датчик Home Assistant потребує уваги)`,locationHaSensorAlert:`Сповіщення датчика місця зберігання`,locationHaSensorAlertDescription:`(датчик Home Assistant, пов'язаний з місцем зберігання, потребує уваги)`,eventPriority:{sectionTitle:`Пріоритет ntfy`,helpNtfy:`Виберіть пріоритет для кожної ввімкненої події. ntfy використовує їх для ескалації сповіщень (звук, видимість, поведінка push). Для рівнів, які тут не встановлено, використовується сервер ntfy за замовчуванням.`,min:`Мін`,low:`Низький`,default:`За замовчуванням`,high:`Високий`,urgent:`Терміново`},cancel:`Скасувати`,save:`зберегти`,add:`додати`,nameRequired:`Необхідно вказати ім’я`,fieldRequired:`{{field}} — обов’язкове поле.`,haDataInvalid:`Поле «Дані» має містити дійсний об’єкт JSON, наприклад {"priority": "high", "ttl": 0}`,phoneNumber:`Номер телефону`,apiKey:`Ключ API`,serverUrl:`Сервер URL`,topic:`Тема`,authToken:`Токен авторизації`,userKey:`Ключ користувача`,appToken:`Токен застосунку`,priority:`Пріоритет`,pushoverRetry:`Інтервал повторення екстреного сповіщення (с)`,pushoverExpire:`Термін дії екстреного сповіщення (с)`,botToken:`Токен бота`,chatId:`Ідентифікатор чату`,telegramThreadId:`ID теми форуму`,telegramThreadIdHelp:`Необов'язково. Надсилає в конкретну тему форум-групи — останнє число у посиланні на тему (t.me/c/.../25). Залиште порожнім для теми General.`,telegramThreadIdInvalid:`ID теми форуму має бути числом.`,smtpServer:`Сервер SMTP`,smtpPort:`Порт SMTP`,security:`Безпека`,authentication:`Автентифікація`,username:`Ім’я користувача`,password:`Пароль`,fromEmail:`Адреса відправника`,toEmail:`Адреса одержувача`,webhookUrl:`Webhook URL`,payloadFormat:`Формат корисного навантаження`,authorization:`Авторизація`,titleFieldName:`Назва поля заголовка`,messageFieldName:`Назва поля повідомлення`,editTemplate:`Редагувати шаблон: {{name}}`,titleLabel:`Заголовок`,bodyLabel:`Текст`,titlePlaceholder:`Назва сповіщення...`,bodyPlaceholder:`Текст сповіщення...`,availableVariables:`Доступні змінні`,clickToInsert:`Натисніть, щоб вставити в текст у позиції курсора`,livePreview:`Попередній перегляд`,hide:`Сховати`,show:`Показати`,loadingPreview:`Завантаження попереднього перегляду...`,enterTemplateContent:`Введіть вміст шаблону, щоб побачити попередній перегляд`,titlePreview:`Назва:`,bodyPreview:`Текст:`,resetToDefault:`Відновити типові значення`,titleRequired:`Необхідно вказати назву`,bodyRequired:`Текст є обов’язковим`,notificationLog:`Журнал повідомлень`,showFailedOnly:`Лише невдалі`,last24Hours:`Останні 24 години`,last7Days:`Останні 7 днів`,last30Days:`Останні 30 днів`,last90Days:`Останні 90 днів`,justNow:`Щойно`,noFailedNotifications:`Немає невдалих сповіщень`,noNotificationsLogged:`Сповіщення не зареєстровано`,unknownProvider:`Невідомий постачальник`,logTitle:`Назва`,logMessage:`повідомлення`,logError:`Помилка`,logProvider:`Постачальник: {{type}}`,logTime:`Час: {{time}}`,refresh:`Оновити`,clearOld:`Очистити старі`,statsSummary:`За останні {{days}} дн.:`,statsNotifications:`сповіщення`,statsSent:`{{count}} надіслано`,statsFailed:`не вдалося надіслати: {{count}}`,eventTypes:{print_start:`Друк розпочато`,print_complete:`Друк завершено`,print_failed:`Помилка друку`,print_stopped:`Друк зупинено`,print_progress:`Прогрес`,printer_offline:`Принтер не в мережі`,printer_error:`Помилка принтера`,filament_low:`Закінчується філамент`,maintenance_due:`Технічне обслуговування`,test:`Тест`},userEmail:{title:`Сповіщення`,emailNotifications:`Сповіщення електронною поштою`,emailNotificationsDesc:`Отримуйте сповіщення електронною поштою про власні завдання друку. Електронні листи надсилаються за допомогою системних параметрів SMTP, налаштованих у розширеній автентифікації.`,sendingTo:`Сповіщення будуть надіслані на адресу`,noEmailWarning:`У вашому обліковому записі немає адреси електронної пошти. Зверніться до адміністратора, щоб її додати.`,printJobNotifications:`Повідомлення про завдання друку`,printJobNotificationsDesc:`Виберіть, які події викликають сповіщення електронною поштою про завдання друку, які ви надсилаєте.`,printJobStarts:`Початок завдання друку`,printJobStartsDesc:`Отримуйте сповіщення, коли розпочнеться ваше завдання друку.`,printJobFinishes:`Завершення завдання друку`,printJobFinishesDesc:`Отримуйте сповіщення, коли ваше завдання друку буде успішно завершено.`,printErrors:`Помилки друку`,printErrorsDesc:`Отримуйте сповіщення, якщо завдання друку завершується невдало або під час нього виникає помилка.`,printJobStops:`Зупинення завдання друку`,printJobStopsDesc:`Отримуйте сповіщення, коли ваше завдання друку скасовано або зупинено.`,saveSuccess:`Параметри сповіщень збережено.`,saveError:`Не вдалося зберегти налаштування сповіщень.`}},richTextEditor:{bold:`жирний`,italic:`Курсив`,underline:`Підкреслити`,bulletList:`Список маркерів`,numberedList:`Нумерований список`,alignLeft:`Вирівняти по лівому краю`,alignCenter:`Вирівняти по центру`,alignRight:`Вирівняти праворуч`,addLink:`Додати посилання`,removeLink:`Видалити посилання`},externalLinks:{title:`Посилання на бічній панелі`,sidebarLayout:`Бічна панель`,sidebarLayoutDescription:`Показуйте або приховуйте вбудовані сторінки, додавайте зовнішні посилання та перетягуйте елементи, щоб змінити порядок навігації на бічній панелі.`,systemPages:`Bambuddy сторінок`,externalLinks:`Зовнішні посилання`,visibleInSidebar:`Видно на бічній панелі`,hiddenFromSidebar:`Приховано від бічної панелі`,requiredInSidebar:`Обов’язково на бічній панелі`,hidePage:`Приховати сторінку`,showPage:`Показати сторінку`,settingsCannotBeHidden:`Налаштування не можна приховати`,noLinksConfigured:`Зовнішні посилання не налаштовано`,deleteLink:`Видалити посилання`,removeCustomIcon:`Видалити спеціальний значок`,openInNewTab:`Відкрити в новій вкладці`,placeholders:{linkName:`Моє посилання`}},keyboardShortcuts:{title:`Комбінації клавіш`,navigation:`Навігація`,archivesSection:`Архіви`,kProfilesSection:`K-профілі`,generalSection:`Загальний`,shortcuts:{goToPrinters:`Перейдіть до Принтери`,goToArchives:`Перейдіть до архіву`,goToQueue:`Перейдіть до черги`,goToStats:`Перейти до статистики`,goToProfiles:`Перейдіть до Cloud Profiles`,goToSettings:`Перейдіть до Налаштувань`,focusSearch:`Пошук по фокусу`,openUploadModal:`Відкрити вікно вивантаження`,clearSelection:`Очистити виділення / розмити введення`,contextMenu:`Контекстне меню на картках`,refreshProfiles:`Оновити профілі`,newProfile:`Новий профіль`,exitSelectionMode:`Вийти з режиму вибору`,showHelp:`Покажіть цю довідку`},footer:`Натисніть Esc або клацніть зовні, щоб закрити`},notificationLog:{title:`Журнал повідомлень`,events:{printStarted:`Друк розпочато`,printComplete:`Друк завершено`,printFailed:`Помилка друку`,printStopped:`Друк зупинено`,progress:`Прогрес`,printerOffline:`Принтер не в мережі`,printerError:`Помилка принтера`,lowFilament:`Закінчується філамент`,maintenanceDue:`Технічне обслуговування`,test:`Тест`},timeAgo:{justNow:`Просто зараз`,minutesAgo:`{{minutes}}хв тому`,hoursAgo:`{{hours}} год тому`}},restoreBackup:{title:`Відновити резервну копію`,restoring:`Відновлення...`,restoreComplete:`Відновлення завершено`,restoreFailed:`Не вдалося відновити`,importSettings:`Імпорт налаштувань із файлу резервної копії`,pleaseWait:`Зачекайте, поки ваші дані відновляться`,clickToSelect:`Натисніть, щоб вибрати файл резервної копії (.json або .zip)`,howDuplicateHandling:`Як працює обробка дублікатів:`,categories:{printers:`Принтери`,smartPlugs:`Розумні розетки`,notificationProviders:`Постачальники сповіщень`,filaments:`філаменти`,archives:`Архіви`,pendingUploads:`Вивантаження, що очікують`,settingsTemplates:`Налаштування та шаблони`},matchingInfo:{printers:`відповідає серійному номеру`,smartPlugs:`збігається з адресою IP.`,notificationProviders:`відповідність за назвою`,filaments:`відповідність за назвою + типом + брендом`,archives:`відповідає хешу вмісту`,pendingUploads:`відповідає імені файлу`,settingsTemplates:`завжди перезаписується`},replaceExisting:`Замінити існуючі дані`,keepExisting:`Зберегти наявні дані`,replaceDescription:`Замінити елементи, які вже існують, резервними копіями`,keepDescription:`Відновлюйте лише елементи, яких ще не існує`,caution:`Увага:`,cautionText:`Під час перезапису поточні конфігурації буде замінено даними з резервної копії. З міркувань безпеки коди доступу до принтерів ніколи не перезаписуються.`,itemsRestored:`Елементів відновлено`,itemsSkipped:`Елементи пропущені`,restored:`Відновлено`,skipped:`Пропущено (вже існує)`,filesLabel:`Файли (3MF, мініатюри тощо)`,newApiKeysGenerated:`Створено нові API ключі`,newApiKeysWarning:`Ці ключі буде показано лише один раз. Скопіюйте їх зараз!`,processingBackup:`Обробка файлу резервної копії...`,noDataFound:`У файлі резервної копії не знайдено даних для відновлення.`,failedToRestore:`Не вдалося відновити резервну копію. Будь ласка, перевірте формат файлу.`},backupExport:{title:`Експорт резервної копії`,selectData:`Вибрати дані для включення`,selectAll:`Вибрати усі`,selectNone:`Вибрати Немає`,categoryDescriptions:{settings:`Мова, тема, параметри оновлення`,notifications:`ntfy, Pushover, Discord тощо.`,templates:`Користувацькі шаблони повідомлень`,smartPlugs:`Конфігурації розетки Tasmota.`,externalLinks:`Посилання на бічній панелі на зовнішні служби`,printers:`Інформація про принтер (без кодів доступу)`,plateDetection:`Еталонні зображення порожньої пластини`,filaments:`Види та вартість філаменти`,maintenance:`Спеціальні графіки технічного обслуговування`,archives:`Усі дані для друку + файли (3MF, мініатюри, фотографії)`,projects:`Проєкти, елементи специфікації та вкладення`,pendingUploads:`Вивантаження на віртуальний принтер очікують на розгляд`,apiKeys:`Ключі Webhook API (нові ключі створюються під час імпорту)`},requiresPrinters:`Необхідно вибрати принтери`,zipFileWarning:`Буде створено файл ZIP.`,zipFileDescription:`До архіву ввійдуть усі файли 3MF, мініатюри, таймлапси та фотографії. Створення може тривати певний час, а отриманий файл може мати великий розмір.`,includeAccessCodes:`Додати коди доступу`,includeAccessCodesDescription:`Для перенесення на іншу машину`,includeAccessCodesWarning:`Коди доступу буде збережено у відкритому вигляді. Надійно захистіть файл резервної копії!`,categoriesSelected:`Вибрано категорії {{selectedCount}}.`},pendingUploads:{placeholders:{notes:`Додайте примітки щодо цього друку...`},discardUpload:`Відхилити вивантаження`,archiveAllUploads:`Архівувати всі вивантаження`,discardAllUploads:`Відхилити всі вивантаження`,archive:`Архів`,timeAgo:{justNow:`Просто зараз`,minutesAgo:`{{minutes}}хв тому`,hoursAgo:`{{hours}} год тому`,daysAgo:`{{days}} дн. тому`}},apiBrowser:{placeholders:{requestBody:`JSON тіло запиту...`,searchEndpoints:`Пошук кінцевих точок...`}},configureAmsSlot:{title:`Налаштувати слот AMS.`,slotConfigured:`Слот налаштовано!`,configuringSlot:`Налаштування слота:`,slotLabel:`{{ams}} Слот {{slot}}`,searchPresets:`Шукати профілі...`,colorPlaceholder:`Назва або шістнадцяткова назва кольору (наприклад, коричневий, FF8800)`,clearCustomColor:`Очистити спеціальний колір`,noCloudPresets:`Хмарних профілів немає. Увійдіть у Bambu Cloud для синхронізації.`,noPresetsAvailable:`Профілів немає. Увійдіть у Bambu Cloud або імпортуйте локальні профілі.`,noMatchingPresets:`Відповідних стилів не знайдено.`,custom:`Власний`,builtin:`Вбудований`,orcaCloud:`Orca Cloud`,bambuCloud:`Бамбукова хмара`,settingsSentToPrinter:`Налаштування надіслано на принтер`,filamentProfile:`Профіль філаменту`,kProfileLabel:`Профіль K (випередження тиску)`,filteringFor:`Фільтрування за: {{material}}`,noKProfile:`Немає профілю K (використовуйте значення за замовчуванням 0,020)`,noMatchingKProfiles:`Не знайдено відповідних K профілів. Використовуватиметься K=0,020 за замовчуванням.`,otherKProfiles:`Інші K-профілі на цьому принтері`,selectFilamentFirst:`Спочатку виберіть профіль філаменту`,kFromCalibration:`K={{value}} від калібрування принтера`,customColorLabel:`Власний колір (необов’язково)`,presetColors:`{{name}} кольори:`,showLessColors:`Показувати менше кольорів`,showMoreColors:`Показати більше кольорів`,clear:`Очистити`,hexLabel:`Шістнадцятковий: #{{hex}}`,resetting:`Скидання...`,resetSlot:`Скинути слот`,cancel:`Скасувати`,configuring:`Налаштування...`,configureSlot:`Налаштувати слот`},githubBackup:{title:`Резервне копіювання Git`,history:`історія`,downloadBackup:`Завантажити резервну копію`,restoreBackup:`Відновити резервну копію`,noBackupsYet:`Резервних копій ще немає`},emailSettings:{placeholders:{fromName:`BamBuddy`}},tagManagement:{searchTags:`Пошук тегів...`,renameTag:`Перейменувати тег`,deleteTag:`Видалити тег`},notificationTemplates:{placeholders:{title:`Назва сповіщення...`,body:`Текст сповіщення...`}},batchTag:{placeholders:{newTag:`Введіть новий тег...`}},photoGallery:{deletePhoto:`Видалити фото`},filamentHoverCard:{copySpoolUuid:`Копіювати UUID буфера`},kProfilesView:{hasNote:`Має примітку`,copyProfile:`Копіювати профіль`},layout:{openMenu:`Відкрити меню`,noPermissionSystemInfo:`У вас немає дозволу на перегляд системної інформації`},dashboard:{dragToReorder:`Перетягніть, щоб змінити порядок`,hideWidget:`Сховати віджет`},notificationProviderCard:{deleteNotificationProvider:`Видалити постачальника сповіщень`},fileManagerModal:{closeFileManager:`Закрити файловий менеджер`,sortFiles:`Сортування файлів`,goToParentFolder:`Перейти до батьківської папки`,threeView:`3D перегляд`},embeddedCameraViewer:{refreshStream:`Оновити потік`,close:`Закрити`,zoomOut:`Зменшити масштаб`,resetZoom:`Скинути масштаб`,zoomIn:`Збільшити`,dragToResize:`Перетягніть, щоб змінити розмір`},timelapseViewer:{skipBack5s:`Перейти на 5 секунд назад`,skipForward5s:`Перейти вперед на 5 с`},notificationProviders:{descriptions:{email:`Сповіщення електронною поштою SMTP`,telegram:`Сповіщення через бота Telegram.`,discord:`Надіслати на канал Discord через webhook`,ntfy:`Безкоштовні push-сповіщення з можливістю самостійного розгортання`,pushover:`Прості та надійні push-повідомлення`,callmebot:`Безкоштовні сповіщення WhatsApp через CallMeBot`,webhook:`Універсальний HTTP POST-запит на будь-який URL`}},logViewer:{searchPlaceholder:`Шукати повідомлення або назву реєстратора...`,noLogEntries:`Записів у журналі не знайдено`},switchbarPopover:{noSwitchesInSwitchbar:`На панелі перемикачів немає`},projectPageModal:{placeholders:{title:`Назва`,designer:`Дизайнер`,license:`Ліцензія`,description:`Введіть опис...`,profileTitle:`Назва профілю`,profileDescription:`Опис профілю...`}},spoolmanSettings:{},time:{unknown:`-`,waiting:`Очікування`,justNow:`Просто зараз`,now:`Зараз`,minsAgo:`{{count}}хв тому`,inMins:`в {{count}}м`,hoursAgo:`{{count}} год тому`,inHours:`в {{count}} год`,daysAgo:`{{count}} дн. тому`,inDays:`в {{count}}d`},spoolbuddy:{nav:{dashboard:`Приладова панель`,ams:`AMS`,inventory:`Інвентар`,writeTag:`Записати`,settings:`Налаштування`},status:{nfcReady:`NFC Готовий`,nfcOff:`NFC Вимк`,offline:`Не в мережі`,online:`Онлайн`,noPrinters:`Немає принтерів`,deviceOffline:`Пристрій не в мережі`,waitingConnection:`Очікування підключення пристрою...`,systemReady:`Система готова`,status:`Статус`},dashboard:{readyToScan:`Готовий до сканування`,idleMessage:`Покладіть котушку на ваги, щоб ідентифікувати її`,nfcHint:`Тег NFC буде прочитано автоматично`,device:`пристрій`,syncWeight:`Синхронізувати вагу`,weightSynced:`Синхронізовано!`,unknownTag:`Невідомий тег`,newTag:`Виявлено новий тег`,onScale:`на вагах`,linkSpool:`Прив’язати до котушки`,linkTagTitle:`Прив’язати тег до котушки`,linkTag:`Прив’язати тег`,selectSpool:`Виберіть котушку, до якої потрібно прив’язати цей тег:`,noUntagged:`Не знайдено котушок без тегів`,tagDetected:`Тег виявлено`,noTag:`Без тегу`,tagId:`Тег`,grossWeight:`Вага брутто`,spoolSize:`Розмір котушки`,close:`Закрити`,currentSpool:`Поточна котушка`,plateReady:`Пластина готова: {{name}}`,plateReadyLabel:`Пластини готові до очищення`,plateClearAction:`Очистити`,plateClearedToast:`Друкарська пластина позначена як очищена`,plateClearFailed:`Не вдалося позначити пластину як очищену`},modal:{spoolDetected:`Виявлено котушку`,assignToAms:`Призначити AMS`,syncWeight:`Синхронізувати вагу`,weightSynced:`Синхронізовано!`,syncing:`Синхронізація...`,newTagDetected:`Виявлено новий тег`,addToInventory:`Додати в інвентар`,assignToAmsTitle:`Призначити AMS`,selectSlot:`Вибрати слот`,assign:`Призначити`,assigning:`Призначення...`,assignSuccess:`Призначено!`,assignPendingInsert:`Призначений. Слот буде налаштовано, коли ви вставите котушку.`,assignError:`Не вдалося призначити котушку. Спробуйте ще раз.`,noPrinterSelected:`Виберіть принтер...`,noAmsDetected:`AMS не виявлено на цьому принтері`,slot:`Слот`},weight:{noReading:`Немає показань`,stable:`Стабільно`,measuring:`Вимірювання…`,tare:`Тарувати`,calibrate:`Відкалібрувати`},spool:{remaining:`Залишилося`,material:`матеріал`,brand:`Бренд`,color:`Колір`,coreWeight:`Сердечник`,labelWeight:`Етикетка`,scaleWeight:`Показання ваг`,netWeight:`Нетто`,lastUsed:`Останнє використання`},ams:{noData:`AMS не виявлено`,connectAms:`Підключіть AMS, щоб побачити слоти для філаментів`,noPrinter:`Принтер не вибрано`,selectPrinter:`Виберіть принтер у верхній панелі`,printerDisconnected:`Принтер відключений`,humidity:`Вологість`,level:`Рівень`,active:`Активний`,slot:`Слот`,empty:`Порожній`},inventory:{search:`Пошук котушок...`,empty:`Немає котушок в інвентарі`,noResults:`Немає відповідних котушок`,spools:`котушки`,addSpool:`Додати котушку`},settings:{tabDevice:`пристрій`,tabDisplay:`Дисплей`,tabScale:`Ваги`,tabUpdates:`Оновлення`,nfcReader:`NFC Читач`,type:`Тип`,connection:`Підключення`,notConnected:`Н/Д`,deviceInfo:`Інформація про пристрій`,hostname:`Хост`,uptime:`Час роботи`,systemConfig:`Серверна частина та автентифікація`,backendUrl:`Bambuddy Сервер URL`,apiToken:`API Токен`,apiTokenPlaceholder:`Введіть API-токен.`,saveConfig:`Зберегти конфігурацію`,systemQueued:`Конфігурацію в черзі.`,nfcDiagnostic:`NFC Діагностика`,scaleDiagnostic:`Діагностика ваг`,readTagDiagnostic:`Прочитайте діагностику тегів`,testNfc:`Тестовий читач`,testScale:`Перевірити точність`,testReadTag:`Прочитати тег`,systemFieldsRequired:`Потрібен бекенд URL.`,brightness:`Яскравість`,saved:`Збережено`,noBacklight:`Підсвічування DSI не виявлено. Для керування яскравістю потрібен дисплей DSI.`,screenBlank:`Час очікування порожнього екрана`,screenBlankDesc:`Екран вимикається після бездіяльності. Торкніться, щоб розбудити.`,displayNote:`Яскравість використовується як програмний фільтр.`,scaleCalibration:`Калібрування ваг`,currentWeight:`Поточна вага`,tareOffset:`Зміщення тари`,calFactor:`Коефіцієнт калібрування`,knownWeight:`Відома маса`,calStep1:`Приберіть усі предмети з ваг і натисніть «Установити нуль».`,calStep2:`Покладіть на ваги предмет відомої маси.`,setZero:`Встановити нуль`,calibrateNow:`Відкалібрувати`,calibrated:`Відкалібровано`,tareSet:`Надіслано команду тарування. Очікування пристрою...`,tareComplete:`Тарування завершено!`,tareTimedOut:`Час очікування тарування минув — чи запущено демон SpoolBuddy?`,tareFailed:`Не вдалося надіслати команду тарування`,zeroSet:`Нульову точку встановлено. Покладіть на ваги предмет відомої маси.`,calibrationDone:`Калібрування завершено!`,calibrationFailed:`Помилка калібрування`,lastCalibrated:`Останнє калібрування`,stable:`Стабільно`,settling:`Стабілізація…`,firmware:`Прошивка`,scale:`Ваги`,noDevice:`Пристрій SpoolBuddy не знайдено`,daemonVersion:`Демон версія`,currentVersion:`поточний`,versionPending:`В очікуванні демона...`,checking:`Перевірка...`,checkUpdates:`Перевірте наявність оновлень`,updateAvailable:`Доступне оновлення`,updateInstructions:`Оновлення через SSH: запустіть сценарій встановлення SpoolBuddy для оновлення.`,upToDate:`В актуальному стані`,includeBeta:`Включати бета-версії`},writeTag:{tabExisting:`Наявна котушка`,tabNew:`Нова котушка`,tabReplace:`Замінити тег`,searchPlaceholder:`Пошук за матеріалом, кольором, брендом...`,noUntaggedSpools:`Немає котушок без тегів`,noTaggedSpools:`Немає котушок із тегами`,selectSpool:`Виберіть котушку, а потім помістіть порожній NTAG на зчитувач`,placeTag:`Помістіть NTAG на зчитувач`,tagReady:`Тег виявлено — готовий до запису`,writeTag:`Записати тег`,replaceTag:`Замінити тег`,writing:`Записування тегу…`,waiting:`Очікування SpoolBuddy...`,writeSuccess:`Тег успішно записано!`,writeFailed:`Помилка запису`,queueFailed:`Не вдалося поставити команду запису в чергу`,tryAgain:`Спробуйте знову`,cancel:`Скасувати`,replaceWarning:`Старий тег буде від’єднано від котушки, а замість нього буде прив’язано новий.`,deviceOffline:`SpoolBuddy не в мережі`,material:`матеріал`,colorName:`Назва кольору`,color:`Колір`,brand:`Бренд`,weight:`Вага (г)`,createSpool:`Створити котушку`,creating:`Створення...`,spoolCreated:`Котушку створено! Можна записувати тег.`,createFailed:`Не вдалося створити котушку`,incompleteDataWarning:`Тег записано з неповними даними Spoolman.`},quickMenu:{printerPower:`Живлення принтера`,systemControls:`система`,restartDaemon:`Перезапустити демон`,restartBrowser:`Перезапустити браузер`,reboot:`Перезавантажити`,shutdown:`Вимкнути`,swipeToClose:`Проведіть пальцем вниз, щоб закрити`,confirmTitle:`Підтвердити`,confirmShutdown:`Вимкнути SpoolBuddy? Щоб увімкнути його знову, знадобиться фізичний доступ до пристрою.`,confirmReboot:`Перезавантажити SpoolBuddy?`,confirmRestartDaemon:`Перезапустити демон SpoolBuddy? NFC і ваги будуть тимчасово недоступні.`,confirmRestartBrowser:`Перезапустити веб-переглядач кіоску? Дисплей на короткий час погасне.`,confirm:`Підтвердити`,confirmPlugOn:`Увімкнути {{name}}?`,confirmPlugOff:`Вимкнути {{name}}?`,turnOn:`Увімкнути`,turnOff:`Вимкнути`}},diagnostic:{modalTitle:`Діагностика підключення — {{name}}`,running:`Виконується діагностика...`,runningElapsed:`Виконується діагностика… ({{elapsed}} с)`,waitingForReportHint:`Очікуємо, доки принтер опублікує звіт про стан — це може тривати до {{max}} с.`,runFailed:`Не вдалося запустити діагностику: {{error}}`,retry:`Запустити знову`,runButton:`Запустити діагностику`,sectionTitle:`Діагностика підключення`,sectionDescription:`Перевірте, чому принтер не підключається або не друкує — доступність порту, режим розробника LAN, режим мережі Docker та облікові дані.`,noPrinters:`Принтери не налаштовані.`,overall:{ok:`Проблем не виявлено — з’єднання принтера справне.`,warnings:`Принтер має працювати, але деякі параметри потребують уваги.`,problems:`Знайдено проблеми, які пояснюють, чому принтер не підключається або не друкує.`},check:{port_mqtt:{title:`Порт керування (MQTT 8883)`,pass:`Доступний — принтер приймає керівні з’єднання.`,fail:`Порт 8883 недоступний. Принтер може бути вимкнений, мати іншу IP-адресу або бути заблокований брандмауером. Перевірте IP-адресу принтера й переконайтеся, що порт 8883 не заблоковано.`},port_ftps:{title:`Порт передачі файлів (FTPS 990)`,pass:`Доступний — файли друку можна буде надсилати.`,warn:`Порт 990 недоступний. Моніторинг може й надалі працювати, але надсилання завдань друку на принтер завершуватиметься помилкою. Переконайтеся, що порт 990 не заблоковано.`,warn_no_tls:`Порт 990 відкритий, але файлова служба принтера не завершує рукостискання TLS. Файли друку, обкладинки та таймлапси отримати неможливо, тому архіви залишаються порожніми. Перезавантажте принтер — розблокування порту не допоможе.`},external_storage:{title:`Зберігання надісланих файлів у зовнішньому сховищі (крок установлення 4)`,pass:`Принтер повідомляє, що цю опцію ввімкнено — надіслані файли зберігатимуться на картці SD, а архіви матимуть мініатюри та метадані слайсера.`,fail:`Принтер повідомляє, що цей параметр вимкнено. Увімкніть «Зберігати надіслані файли в зовнішньому сховищі». У новіших версіях прошивки (P2S 01.02 / Bambu Studio 2.6+) перемикач розташований у налаштуваннях друку на принтері; у старіших — на вкладці «Пристрій» у Bambu Studio або OrcaSlicer. Без цього параметра в кожному архівованому друці будуть відсутні мініатюра та метадані слайсера.`,skip:`Не перевірено — потрібне активне MQTT-з’єднання. У старіших слайсерах, де цей параметр існує лише в самому слайсері, принтер його не повідомляє. Тому перевірка може бути успішною навіть за вимкненого параметра — перевірте крок установлення 4 вручну.`,skip_unsupported_model:`Ця модель має слот для SD-картки, але не дає змоги ввімкнути цей параметр: поточна прошивка принтерів серії P1 не показує перемикач у Bambu Studio, а сам принтер не має екрана. Виправляти нічого не потрібно; доки Bambu Lab не додасть підтримку в прошивці, в архівованих друках можуть бути відсутні мініатюри та метадані слайсера.`,fail_no_media:`Параметр увімкнено, але принтер не бачить ані картки, ані флешки у слоті, тож надісланим файлам немає куди подітися. Вставте носій і надрукуйте ще раз — доти кожен заархівований друк буде без мініатюри та метаданих слайсера.`,warn_internal_storage:`Параметр увімкнено і носій на місці, але останній друк усе одно потрапив у внутрішню пам'ять принтера, яку Bambuddy не може прочитати. На серії H2 та P2S кнопка «Друк» у Bambu Studio завжди надсилає туди, незалежно від цього параметра. Друки архівуються з назвою та часом, але без мініатюри та метаданих слайсера. Щоб архіви були повними, запускайте друк із Bambuddy, нарізайте в OrcaSlicer або в Bambu Studio скористайтеся «Надіслати» із «Зовнішнім носієм», а потім запускайте друк.`,warn_internal_history:`Опція увімкнена й носій на місці, але останній друк ішов із файлу, який уже був на принтері, — повторний друк з його екрана, запуск із Handy або файл, надісланий раніше. Ця бібліотека лежить у внутрішній пам'яті, яку Bambuddy не читає, і жодні налаштування цього не змінюють: для того друку нічого не надсилалося. Він і далі архівується з назвою та часом, але без мініатюри та метаданих слайсера. Щоб архіви були повними, запускайте друк із Bambuddy або надсилайте його зі слайсера.`},port_rtsps:{title:`Порт камери ({{protocol}} {{port}})`,pass:`Доступно — потік камери працюватиме.`,warn:`Порт {{port}} недоступний. Перегляд з камери в реальному часі не працюватиме. Це не впливає на друк.`},network_mode:{title:`Мережевий режим Docker`,pass:`Працює в режимі хост-мережі.`,warn:`Bambuddy працює в мостовому мережевому режимі Docker. Для виявлення принтерів і роботи віртуального принтера потрібен режим мережі хоста — повторно створіть контейнер із параметром "network_mode: host".`,skip:`Не працює в Docker — не застосовується.`},subnet:{title:`Мережева підмережа`,pass:`Принтер і Bambuddy знаходяться в одній підмережі.`,warn:`Принтер ({{printer_ip}}) і Bambuddy ({{host_ip}}) перебувають у різних підмережах. Вони можуть не мати зв’язку між собою, якщо маршрутизацію між підмережами не налаштовано.`,skip:`Не вдалося визначити підмережу — пропущено.`},mqtt_auth:{title:`Облікові дані принтера`,pass:`Принтер прийняв підключення.`,fail:`Принтер доступний, але Bambuddy до нього не під’єднано. Найімовірніше, указано неправильний код доступу або серійний номер — код доступу змінюється після кожного перемикання режиму «Лише LAN» або режиму розробника, тож знову скопіюйте його з екрана принтера. Так само виглядає принтер, який перезавантажується або вже вичерпав ліміт одночасних з’єднань.`,fail_auth_rejected:`Принтер відхилив облікові дані Bambuddy. Код доступу або серійний номер неправильний — код доступу змінюється після кожного перемикання режиму «Лише LAN» або режиму розробника. Знову скопіюйте його з екрана принтера та збережіть у налаштуваннях принтера.`,skip:`Не позначено — принтер недоступний.`},developer_mode:{title:`Режим розробника LAN`,pass:`Режим розробника ввімкнено.`,fail:`Режим розробника на принтері ВИМКНЕНО. Увімкніть його в налаштуваннях LAN принтера й підтвердьте вибір кнопкою OK. Без цього друк не запускатиметься.`,skip:`Неможливо перевірити — потрібне живе підключення до принтера.`},printer_publishing:{title:`Принтер публікує дані про стан`,pass:`Принтер публікує оновлення статусу — AMS, філаменти та K-профілі правильно відображатимуться на слайсері.`,fail:`MQTT-брокер прийняв з’єднання, але принтер не опублікував жодного звіту про стан. Майже завжди причиною є неправильний серійний номер або неправильний регістр символів: тема device//report чутлива до регістру. Звірте серійний номер у налаштуваннях Bambuddy із номером на екрані принтера.`,skip:`Неможливо перевірити — потрібне живе підключення до принтера.`}}},systemHealth:{sectionTitle:`Стан системи`,sectionDescription:`Сканує останні журнали на наявність відомих проблем, які зазвичай можна вирішити самостійно, перш ніж вони перетворяться на запит у службу підтримки.`,rescan:`Пересканувати`,clean:`В останніх записах журналу {{times}} не знайдено відомих проблем.`,logUnavailable:`Журналування файлів вимкнено, тому журнали неможливо сканувати. Увімкніть журналювання файлів, щоб використовувати цю перевірку.`,learnMore:`Як виправити`,fixLabel:`Виправити:`,occurrences:`Виявлено {{times}} разів — востаннє о {{lastSeen}}`,category:{layer8:`Ви можете це виправити`,environment:`Середовище виконання`,bug:`Будь ласка, повідомте про це`},signature:{"ftp-auth-rejected":{name:`Принтер відхилив код доступу`,cause:`Принтер відмовився від входу для передавання файлів. Код доступу неправильний або він змінився після перемикання режиму розробника.`,fix:`Повторно скопіюйте код доступу з екрана принтера (налаштування LAN) і оновіть його в налаштуваннях принтера в Bambuddy.`},"ftp-connection-timeout":{name:`Час очікування з’єднання для передачі файлів минув`,cause:`Bambuddy не вдалося отримати доступ до порту передачі файлів принтера (FTPS 990). Порт заблоковано, або принтер вимкнено або знаходиться в іншій підмережі.`,fix:`Переконайтеся, що ніщо не блокує порт 990 між Bambuddy і принтером, і що обидва знаходяться в одній мережі.`},"ftp-ssl-error":{name:`Помилка захищеного з’єднання для передавання файлів`,cause:`Файлова служба принтера відповіла на порту 990 без TLS. Її файловий сервер завис — це несправність самого принтера, а не брандмауера чи прошивки.`,fix:`Перезапустіть принтер. До того часу файли друку, обкладинки та таймлапси отримати неможливо, але на сам друк це не впливає.`},"bambu-cloud-captcha":{name:`Bambu Cloud вимагає пройти CAPTCHA`,cause:`Захист Bambu від зловживань перевіряє цю мережу, тож завершити вхід у Bambu Cloud неможливо. Це пов'язано з публічною IP-адресою, а не з вашим обліковим записом чи цією інсталяцією.`,fix:`Зачекайте: зазвичай перевірка зникає за кілька годин, а повторні спроби входу її подовжують. Тим часом увійдіть за допомогою токена доступу із сеансу браузера.`},"mqtt-connection-flapping":{name:`Підключення до принтера постійно падає`,cause:`Керуюче з’єднання (MQTT 8883) неодноразово роз’єднується та знову під’єднується — зазвичай через слабкий мережевий шлях або частково заблокований порт.`,fix:`Перевірте сигнал Wi-Fi на принтері, віддайте перевагу дротовому підключенню та переконайтеся, що порт 8883 надійно доступний.`},"camera-connection-refused":{name:`Потік з камери недоступний`,cause:`Не вдається отримати доступ до камери в прямому ефірі через порт RTSPS 322. Порт заблоковано, або на принтері вимкнено камеру або LAN liveview.`,fix:`Увімкніть камеру та LAN liveview на принтері та переконайтеся, що порт 322 не заблоковано. Це не впливає на друк.`},"database-locked":{name:`Конфлікт запису до бази даних`,cause:`Під навантаженням SQLite повертає помилки "database is locked". Це часто трапляється, коли одночасно працюють кілька принтерів.`,fix:`Переключіть Bambuddy на зовнішню базу даних PostgreSQL. Див. посібник PostgreSQL у документації.`}}},vpDiagnostic:{title:`Перевірка налаштувань — {{name}}`,runButton:`Запустити перевірку налаштувань`,running:`Виконується перевірка налаштувань...`,runFailed:`Не вдалося виконати перевірку налаштувань: {{error}}`,retry:`Запустити знову`,overall:{ok:`Усі перевірки пройшли — цей віртуальний принтер налаштовано правильно.`,warnings:`Віртуальний принтер має працювати, але деякі параметри потребують уваги.`,problems:`Знайдено проблеми, які пояснюють, чому слайсер не бачить або не використовує цей віртуальний принтер.`},check:{enabled:{title:`Віртуальний принтер увімкнено`,fail:`Цей віртуальний принтер вимкнено. Увімкніть його, щоб зробити його видимим.`},running:{title:`Служби запущені`,fail:`Віртуальний принтер увімкнено, але його служби не працюють. Перевірте журнал Bambuddy — зазвичай запуску заважає конфлікт IP-адреси прив’язки або помилка дозволів.`},bind_interface:{title:`Прив’язка мережевого інтерфейсу`,fail:`Інтерфейс прив’язки не встановлено або більше не існує на цьому хості. Виберіть поточний інтерфейс у спадному списку «Інтерфейс прив’язки».`},access_code:{title:`Код доступу встановлено`,fail:`Код доступу не встановлено. У слайсері потрібно вказати той самий 8-символьний код доступу, який задано тут.`},target_printer:{title:`Цільовий принтер`,fail:`Цільовий принтер не вибрано. У режимі проксі потрібен фізичний принтер, якому пересилатимуться завдання.`,warn:`Цільовий принтер наразі не в мережі — проксі-сервер відновиться після повторного підключення.`},port_ftps:{title:`Служба вивантаження файлів (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може вивантажити файли. Зазвичай причиною є конфлікт порту на цьому інтерфейсі.`},port_mqtt:{title:`Служба керування (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може підключитися або показати стан.`},port_bind:{title:`Служба виявлення (порт {{port}})`,fail:`На порту {{port}} IP-адреси прив’язки немає служби, що приймає з’єднання, тому слайсер не може завершити процедуру виявлення.`},privileged_ports:{title:`Прив’язка до привілейованих портів`,fail:`Порт {{port}} нижче 1024, і цій службі не дозволено його займати — тому вище ніщо не слухає. Додайте AmbientCapabilities=CAP_NET_BIND_SERVICE до /etc/systemd/system/bambuddy.service і перезапустіть або виконайте "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))". У Docker додайте cap_add: [NET_BIND_SERVICE].`},certificate:{title:`Сертифікат TLS`,pass:`Сертифікат готовий. Переконайтеся, що наведений вище сертифікат центру сертифікації Bambuddy імпортовано до сховища довірених сертифікатів слайсера.`,fail:`Сертифікат TLS для цього віртуального принтера відсутній. Перевірте, чи доступний для запису каталог даних Bambuddy.`}}},bugReport:{title:`Повідомити про помилку`,description:`опис`,descriptionPlaceholder:`Що пішло не так? Будь ласка, опишіть проблему...`,email:`Електронна адреса (необов’язково)`,emailPlaceholder:`your@email.com`,emailPrivacy:`Якщо надано, вашу електронну адресу буде включено до згорнутого розділу проблеми GitHub, щоб спеціаліст із супроводу міг відслідковувати.`,screenshot:`Скріншот`,uploadOrPaste:`Вивантажити, вставити або перетягнути зображення`,dataCollectedSummary:`Які дані містяться у звіті?`,dataIncluded:`У комплекті:`,dataIncludedList:`Версія додатка, OS, архітектура, версія Python, статистика бази даних (лише для підрахунку), моделі принтерів, кількість сопел, версії прошивки, статус підключення, статус інтеграції (Spoolman, MQTT, HA), неконфіденційні налаштування, кількість мережевих інтерфейсів, Docker деталі, версії залежностей.`,dataNeverIncluded:`Ніколи не додаються:`,dataNeverIncludedList:`Назви принтерів, серійні номери, коди доступу, паролі, IP-адреси, адреси електронної пошти, ключі API, токени, URL вебхуків, імена хостів або користувачів.`,submit:`Надіслати`,startLogging:`Розпочати журнал налагодження`,stepEnableLogging:`Журнал налагодження ввімкнено`,stepReproduce:`Відтворіть проблему зараз`,stepStopLogging:`Зупинити та подати звіт`,stopAndSubmit:`Зупинити та надіслати`,maxDuration:`Автоматична зупинка через {{minutes}} хв`,stoppingLogs:`Збір журналів і надсилання...`,submitting:`Надсилання звіту про помилку...`,submittingStepConnection:`Запуск перевірки підключення принтера`,submittingStepVirtualPrinters:`Виконання перевірок налаштування віртуального принтера`,submittingStepLogScan:`Сканування останніх журналів на наявність відомих проблем`,submittingStepSubmit:`Надсилання звіту GitHub`,submitSuccess:`Звіт про помилку успішно надіслано!`,submitFailed:`Не вдалося надіслати звіт про помилку`,diagnosticChecking:`Перевірка підключень принтера...`,diagnosticHealthy:`Перевірку підключення пройдено — проблем із принтерами не виявлено.`,diagnosticSummary:`Проблеми з підключенням мають {{problems}} із {{total}} принтерів`,diagnosticIntro:`Один або кілька принтерів мають проблему з підключенням, яка може спричиняти описану несправність. Розгорніть запис принтера нижче, щоб переглянути спосіб виправлення. Усунення цієї проблеми може допомогти без створення звіту про помилку, але за потреби звіт усе одно можна надіслати нижче.`,logHealthSummary:`У ваших журналах знайдено відомі проблеми`,logHealthIntro:`Останні журнали відповідають відомим проблемам. Перегляньте наведені нижче виправлення — їх вирішення може вирішити вашу проблему без повідомлення про помилку. Ви все ще можете надіслати звіт нижче.`,thankYou:`дякую!`,submitted:`Ваш звіт про помилку надіслано.`,viewIssue:`Переглянути випуск`,closeKeepsRecording:`Ви можете закрити цю панель, поки відтворюєте проблему: запис триває, і після повторного відкриття ви повернетеся сюди.`,resumeRecording:`Триває запис звіту про помилку — {{elapsed}}. Натисніть, щоб завершити.`,resumeReport:`Продовжити звіт`,unexpectedError:`Сталася неочікувана помилка`},failureDetection:{title:`Виявлення помилок за допомогою ШІ`,description:`Відстежуйте друк за допомогою самостійно розгорнутого Obico ML API та автоматично реагуйте на виявлені помилки.`,mlUrl:`URL Obico ML API`,mlUrlHint:`База URL вашого контейнера ml_api, розміщеного на власному хості Obico (наприклад, http://192.168.1.10:3333).`,mlToken:`Токен ML API (необов'язково)`,mlTokenPlaceholder:`Залиште порожнім, якщо сервер працює без ML_API_TOKEN`,mlTokenHint:`Має збігатися зі змінною середовища ML_API_TOKEN вашого контейнера Obico ml_api. Залиште порожнім, якщо контейнер працює без токена.`,test:`Тест`,testSuccess:`ML API доступний і працює належним чином.`,testSuccessTokenUnknown:`ML API доступний і працює належним чином. Не вдалося перевірити токен.`,testFailed:`Не вдалося підключитися до ML API.`,sensitivity:`Чутливість`,sensitivityLow:`Низький (менше помилкових спрацьовувань)`,sensitivityMedium:`Середній (збалансований)`,sensitivityHigh:`Високий (виявляти рано, більше помилкових спрацьовувань)`,sensitivityHint:`Налаштовує пороги впевненості, за яких формуються попередження та фіксуються помилки.`,action:`Дія в разі виявлення помилки`,actionNotify:`Лише сповіщати`,actionPause:`Призупинити друк`,actionPauseOff:`Призупинити друк і вимкнути живлення`,pollInterval:`Інтервал опитування (секунди)`,pollIntervalHint:`Як часто перевіряти кожен принтер під час друку. Мінімум 5 с, максимум 120 с.`,externalUrlMissing:`Зовнішній URL не встановлено.`,externalUrlHint:`ML API отримує знімок із камери за URL. Укажіть зовнішній URL у загальних налаштуваннях, щоб контейнер ML API міг підключитися до Bambuddy.`,perPrinterTitle:`Принтери під спостереженням`,perPrinterHint:`Виберіть, які принтери перевіряє служба виявлення.`,monitorAll:`Відстежувати всі підключені принтери`,statusTitle:`Статус`,serviceRunning:`Служба працює`,thresholds:`Нижній / верхній поріг`,activePrinters:`Активні завдання друку`,noActivePrints:`Зараз немає роздруківок.`,historyTitle:`Останні виявлення`,noHistory:`Виявлень ще немає.`},makerworld:{title:`MakerWorld`,description:`Вставте модель MakerWorld URL, щоб імпортувати та роздрукувати її безпосередньо з Bambuddy — не виходячи з програми Bambu Handy.`,pasteUrlHeader:`Імпортувати з MakerWorld`,pasteUrlPlaceholder:`https://makerworld.com/en/models/… або вставте будь-яке посилання MakerWorld.`,resolveButton:`Розв’язати`,signInRequiredTitle:`Для завантаження потрібно увійти в Bambu Cloud`,signInRequiredBody:`Ви можете переглядати деталі моделі анонімно, але для MakerWorld потрібен обліковий запис Bambu Cloud для завантаження файлів 3MF.`,signInExpiredTitle:`Термін входу в Bambu Cloud минув`,signInExpiredBody:`Ви все ще ввійшли в Bambuddy, але Bambu Lab більше не приймає збережений токен, тому завантаження не вдасться. Знову ввійдіть у Bambu Cloud.`,openCloudSettings:`Відкрити налаштування Cloud`,untitledModel:`Модель без назви`,byCreator:`від {{name}}`,downloadsCount:`{{count}} завантажень`,licensePrefix:`Ліцензія`,alreadyImported:`Вже в бібліотеці`,openOnMakerworld:`Відкрити MakerWorld`,alreadyInLibrary:`Ця модель уже є у вашій бібліотеці — знайдіть її в Менеджері файлів → MakerWorld`,importSuccess:`Імпортовано {{filename}} — збережено в менеджері файлів → MakerWorld`,platesHeader:`Пластини ({{count}})`,plateDefaultName:`Пластина {{n}}`,materialCount:`Філаментів: {{count}}`,amsRequired:`Потрібен AMS`,slicedFor:`Нарізано для {{printer}}`,alsoCompatible:`Також позначено як сумісний: {{printers}}`,importToLibrary:`Зберегти`,sliceIn:`Зберегти й нарізати в {{slicer}}`,disclaimer:`Інтеграція MakerWorld використовує кінцеві точки API, задокументовані спільнотою. Bambuddy не є філією та не підтримується MakerWorld або Bambu Lab.`,lastImportSuccess:`Імпортовано до вашої бібліотеки`,lastImportAlreadyInLibrary:`Уже у вашій бібліотеці`,viewInLibrary:`Переглянути в менеджері файлів`,openInBambuStudio:`Відкрити в Bambu Studio`,openInOrcaSlicer:`Відкрити в OrcaSlicer`,importTo:`Імпорт до файлового менеджера`,recentImportsHeader:`Недавній імпорт`,phaseResolving:`Розв’язування`,phaseDownloading:`Завантаження`,folderAuto:`MakerWorld (за замовчуванням)`,importAll:`Імпортувати все`,importAllProgress:`Імпорт {{current}}/{{total}}`,openGallery:`Відкрити галерею зображень`,galleryPrev:`Попереднє зображення`,galleryNext:`Наступне зображення`,deleteImport:`Видалити з бібліотеки`,importDeleting:`Видалення…`,importDeleted:`Видалено з бібліотеки`,confirmDelete:`Видалити {{filename}} з бібліотеки? Локальний файл буде видалено, але цю друкарську пластину можна буде повторно імпортувати з MakerWorld.`,errors:{resolveFailed:`Не вдалося вирішити MakerWorld URL.`,downloadFailed:`Помилка завантаження. Спробуйте ще раз.`,deleteFailed:`Не вдалося видалити файл із бібліотеки.`}},gcodeViewer:{filamentSlot:`Філамент {{n}}`,loading:`Читання траєкторії…`,loadFailed:`Не вдалося завантажити G-код цього файлу.`,showTravel:`Холості переміщення`,topLayer:`Верхній шар`,bottomLayer:`Нижній шар`,noSource:`Файл для перегляду не вказано.`,view:{filament:`Філамент`,feature:`Тип`,height:`Висота`,width:`Ширина`},feature:{wall:`Стінки`,sparseInfill:`Розріджене заповнення`,solidInfill:`Суцільне заповнення`,bridge:`Міст / навис`,support:`Підтримка`,skirt:`Спідниця / облямівка`,gapFill:`Заповнення проміжків`,ironing:`Розгладжування`,primeTower:`Вежа очищення`},back:`Назад`,backToArchives:`Назад до друку архівів`,backToFiles:`Назад до файлового менеджера`,plates:`Пластини`,plateN:`Пластина {{n}}`},libraryTrash:{title:`Кошик`,headerButton:`Кошик`,headerTooltip:`Переглянути файли, переміщені в кошик`,backToFiles:`Назад до файлового менеджера`,subtitleAdmin:`Видалені файли залишаються тут протягом {{days}} днів, а потім автоматично видаляються. У цьому режимі перегляду відображаються файли, видалені в кошик для всіх користувачів.`,subtitleUser:`Видалені файли залишаються тут протягом {{days}} днів, а потім автоматично видаляються.`,loading:`Завантаження кошика…`,loadError:`Не вдалося завантажити кошик.`,empty:`Кошик порожній.`,summary:`Файлів: {{count}} · {{size}}`,emptyTrash:`Очистити кошик`,restore:`Відновити`,purgeNow:`Видалити зараз`,autoPurgeIn:`Автоматичне видалення через {{when}}`,days:`днів`,retentionLabel:`Автоматичне видалення після`,selectAll:`Вибрати все`,selectOne:`Вибрати {{filename}}`,selectionCount:`Вибрано {{count}}.`,bulkRestore:`Відновити вибране`,bulkPurge:`Видалити вибране`,col:{filename:`Файл`,folder:`Папка`,size:`Розмір`,deleted:`Переміщено в кошик`,autoPurge:`Автоматичне видалення`,owner:`Власник`,actions:`Дії`},confirm:{purgeTitle:`Видалити остаточно?`,purgeBody:`{{filename}} буде видалено з диска та не підлягає відновленню.`,emptyTitle:`Очистити кошик?`,emptyBody:`З диска буде остаточно видалено всі файли ({{count}}). Цю дію неможливо скасувати.`,bulkPurgeTitle:`Видалити вибрані файли назавжди?`,bulkPurgeBody:`Вибрані файли ({{count}}) буде видалено з диска без можливості відновлення.`,cta:`Видалити остаточно`},toast:{restored:`Файл відновлено.`,restoreFailed:`Не вдалося відновити файл.`,purged:`Файл видалено остаточно.`,purgeFailed:`Не вдалося видалити файл.`,emptied:`Файлів остаточно видалено з кошика: {{count}}.`,emptyFailed:`Не вдалося очистити кошик.`,retentionSaved:`Для автоматичного видалення встановлено {{days}} днів.`,retentionFailed:`Не вдалося зберегти налаштування збереження.`,bulkRestored:`Відновлено файлів: {{count}}`,bulkPurged:`Файлів остаточно видалено: {{count}}.`}},libraryPurge:{title:`Очистити старі файли`,headerButton:`Очищення старого`,headerTooltip:`Масове переміщення старих файлів у кошик`,description:`Однією дією перемістіть старі файли з бібліотеки до кошика. Вік файлів з історією друку визначається за датою останнього друку, а файлів, які ще не друкувалися, — за датою вивантаження.`,ageLabel:`Перемістити файли, старші за`,days:`днів`,includeNeverPrinted:`Включати файли, які ніколи не друкувались`,effectsTitle:`Що відбудеться після натискання «Очистити»`,effect1:`Відповідні файли переміщуються в кошик — вони ще не видалені з диска.`,effect2:`Ви можете будь-коли відновити їх із кошика, доки не закінчиться період зберігання.`,effect3:`Після завершення строку зберігання служба очищення кошика остаточно видалить файли з диска.`,effect4:`Файли у зовнішніх (зв’язаних) папках пропускаються — Bambuddy ніколи не видаляє байти, які йому не належать.`,previewLoading:`Перевірка кількості файлів…`,previewFailed:`Не вдалося попередньо переглянути очищення.`,previewSummary:`Файли {{count}} · {{size}} буде переміщено до кошика`,andMore:`…і {{count}} більше`,warning:`Файли в кошику й надалі займають місце, доки не завершиться строк зберігання. Щоб звільнити місце на диску негайно, після цього очистьте кошик.`,confirmCta:`Перемістити до кошика ({{count}})`,purging:`Переміщення в кошик…`,toast:{success:`Переміщено до кошика файлів: {{count}}`,failed:`Не вдалося очистити файли.`}},libraryAutoPurge:{enableLabel:`Автоматичне очищення старих файлів`,enableDescription:`Запускає очищення адміністратора один раз на день. Файли спочатку потрапляють у кошик — вони не видаляються одразу.`,ageLabel:`Автоматичне очищення файлів, старших за`,ageDescription:`Мінімум 7 днів, максимум 10 років. Використовує те саме вікове правило, що й ручна кнопка очищення.`,days:`днів`,includeNeverPrinted:`Включати файли, які ніколи не друкувались`,saveFailed:`Не вдалося зберегти налаштування автоматичного очищення.`},archivePurge:{headerButton:`Очищення старого`,headerTooltip:`Масове видалення старих архівів`,title:`Очистити старі архіви`,description:`Очистити стару історію друку. Кожен архів старіє відповідно до останнього завершення друку — повторний друк архіву оновлює його вік, тому активна робота ніколи не очищається.`,ageLabel:`Видалити архіви, не надруковані в останньому`,days:`днів`,effectsTitle:`Що відбудеться після натискання «Очистити»`,effect1:`Кожен відповідний архів приховано зі списків, а його файли видалено з диска (3MF, ескіз, покадрова зйомка, вихідний 3MF, F3D файл дизайну, фотографії).`,effect2:`Запис архіву залишиться в базі даних, тому «Швидка статистика» й надалі враховуватиме філамент, час, вартість та енергію — як і за типового видалення окремого архіву.`,effect3:`Позначте нижче «Також видалити зі статистики», щоб вилучити внесок цих архівів зі «Швидкої статистики» — так само, як у відповідній опції видалення окремого архіву. Цю дію неможливо скасувати.`,effect4:`Повторний друк архіву оновлює його віковий годинник, тому архіви, якими ви все ще користуєтеся, залишаються в безпеці.`,purgeStatsLabel:`Також видалити зі статистики`,purgeStatsHint:`Вилучає внесок відповідних архівів зі «Швидкої статистики» — філамент, час, вартість та енергію. Якщо параметр вимкнено, статистичні дані зберігаються, а з диска видаляються лише файли.`,previewLoading:`Перевірка кількості архівів, що збігаються…`,previewFailed:`Не вдалося попередньо переглянути очищення.`,previewSummary:`Архіви {{count}} · {{size}} буде видалено`,andMore:`…і {{count}} більше`,warning:`Файли видаляються з диска і не можуть бути відновлені. Перш ніж продовжити, завантажте або додайте до вибраного все, що хочете зберегти.`,confirmCta:`Видалити архіви ({{count}})`,purging:`Видалення…`,toast:{success:`Видалено архівів: {{count}}`,failed:`Не вдалося очистити архіви.`}},archiveAutoPurge:{enableLabel:`Автоматичне очищення старих архівів`,enableDescription:`Один раз на день приховує архіви зі списків і видаляє їх файли з диска, якщо вони не були надруковані в межах порогу. Повторний друк архіву скидає годинник.`,ageLabel:`Автоматичне видалення архівів, не надрукованих в останньому`,ageDescription:`Мінімум 7 днів, максимум 10 років. На основі останнього завершення друку — повторний друк архіву оновлює його вік. Видаляє 3MF, мініатюру, покадрову зйомку, джерело 3MF, F3D і фотографії.`,days:`днів`,purgeStatsLabel:`Також видалити зі статистики`,purgeStatsDescription:`Якщо параметр увімкнено, щоденне очищення також вилучатиме внесок кожного видаленого архіву зі «Швидкої статистики» — філамент, час, вартість та енергію. Типово параметр вимкнено: статистичні дані зберігаються, а з диска видаляються лише файли.`,runNow:`Очистити архіви зараз`,saveFailed:`Не вдалося зберегти налаштування автоматичного очищення.`},cameraTokens:{scope:{camera_stream:`Потік камери`,camwall:`Панель камер`,overlay:`Потокове накладання`},title:`API-токени камери`,navTitle:`API-токени камери`,description:`Довгострокові токени для вбудовування потоку камери в Home Assistant, Frigate, кіоски або інші засоби, яким потрібен постійний URL. Під час створення виберіть область доступу; токен можна відкликати будь-коли.`,loading:`Завантаження…`,confirmRevoke:{title:`Відкликати цей токен?`,body:`Усі пристрої, що використовують «{{name}}», негайно втратять доступ. Цю дію неможливо скасувати.`,cancel:`Скасувати`,confirm:`Відкликати`},create:{scopeLabel:`Область застосування`,hintCameraStream:`Токен потоку камери дає змогу отримувати лише потоки з камер і знімки. Використовуйте його для Home Assistant, Frigate або іншого засобу, що вбудовує одну камеру.`,hintCamWall:`Токен Cam Wall відкриває /camwall на екрані без входу. Він може бачити назву та стан кожного принтера, а також потоки з камери. Він не може бачити імена файлів, адреси чи коди доступу.`,hintOverlay:`Токен потокового накладання відкриває /overlay/{printerId} на екрані без входу — для OBS або будь-якої прямої трансляції. Він дає змогу переглядати потік із камери одного принтера та стан друку в реальному часі, зокрема назву файлу, показану на екрані. Він не надає доступу до адрес чи кодів доступу.`,title:`Створити новий токен`,nameLabel:`Назва токена`,namePlaceholder:`напр. Home Assistant`,daysLabel:`Днів до закінчення терміну дії`,submit:`Створити`,hint:`Максимальний строк дії — 365 днів. Значення токена буде показано лише один раз під час створення — скопіюйте його зараз.`},created:{camWallUrlTitle:`Cam Wall URL для цього дисплея`,camWallUrlHint:`Відкрийте цей URL на потрібному екрані. Будь-хто, хто отримає URL, зможе переглядати панель камер, тому захищайте його як ключ доступу. Щоб негайно припинити доступ із цього екрана, відкличте токен.`,overlayUrlTitle:`Накладання URL для OBS`,overlayUrlHint:`Додайте цей URL в OBS як джерело браузера. Замініть число в /overlay/1 номером принтера з його URL на сторінці «Принтери». Будь-хто, хто отримає URL, зможе переглядати трансляцію, тому захищайте його як ключ доступу. Щоб негайно припинити доступ, відкличте токен.`,title:`Токен створено — скопіюйте його зараз`,warning:`Це єдиний раз, коли токен буде показано. Після закриття цього діалогового вікна переглянути його знову буде неможливо.`,copy:`Копіювати`,dismiss:`Я зберіг токен`},list:{scope:`Область застосування`,myTitle:`Мої токени`,allTitle:`Усі користувачі (перегляд адміністратора)`,empty:`Токенів ще немає.`,name:`Назва`,owner:`Власник`,prefix:`Префікс`,created:`Створено`,expires:`Термін дії закінчується`,lastUsed:`Останнє використання`,revoke:`Відкликати`,expired:`Термін дії минув`},toast:{created:`Токен створено`,createFailed:`Не вдалося створити токен`,revoked:`Токен відкликано`,revokeFailed:`Не вдалося відкликати токен`,loadFailed:`Не вдалося завантажити токени`,copied:`Скопійовано в буфер обміну`,copyFailed:`Не вдалося копіювати — виберіть і скопіюйте вручну`}},forecast:{title:`Прогноз`,noSpools:`Не знайдено активних котушок. Додайте котушки до свого інвентарю, щоб переглянути прогнозні дані.`,noUsageData:`Немає даних про використання — неможливо спроєктувати хронологію запасів.`,sku:`SKU`,material:`матеріал`,stock:`Запас`,dailyRate:`Добове споживання`,daysLeft:`Залишилося днів`,emptyBy:`Вичерпається до`,reorderBy:`Замовити до`,actions:`Дії`,trend:`Тренд`,estimated:`Приблизно`,noData:`Немає даних`,timeframe:`Період`,chartTitle:`Прогнозований запас — топ-5 матеріалів`,dashedLinesROP:`Пунктирні лінії — точки повторного замовлення`,stockLevel:`Рівень запасів`,reorderPoint:`Точка повторного замовлення`,safetyMargin:`Запас безпеки`,trendLegend:`Тенденція (на основі історії, рівень обслуговування 95%)`,estimatedLegend:`Розрахункова (дельта ваги)`,noDataLegend:`Немає даних`,ropLabel:`ROP`,ssLabel:`SS`,safetyStockLegend:`Страховий запас`,stockArrivalLegend:`Надходження запасів`,stockoutLegend:`Дефіцит`,alertCount_one:`Сповіщень: {{count}}`,alertCount_other:`Сповіщень: {{count}}`,order:`Замовлення`,save:`Зберегти`,cancel:`Скасувати`,settingsSaved:`Налаштування збережено`,failedSaveSettings:`Не вдалося зберегти налаштування`,globalLeadTimeSaved:`Загальний строк постачання збережено`,globalLeadTime:`Загальний строк постачання`,globalLeadTimeHint:`Мінімальний строк постачання для розрахунку точки повторного замовлення всіх SKU`,skuLeadTimeOverride:`Інший строк постачання`,skuLeadTimeHint:`0 — використовувати загальний строк. Установіть значення понад 0, щоб перевизначити його для цього SKU.`,safetyMarginLabel:`Запас безпеки`,effectiveLeadTime:`Розрахунковий строк постачання`,effectiveLeadTimeHint:`max(глобальний {{global}}d, SKU {{sku}}d)`,reorderPointHint:`d̄ × LT + страховий запас — замовляйте, коли запас досягне цього рівня`,safetyMarginHint:`Статистичний страховий запас (z=1,65 × σ × √LT) + визначений користувачем буфер`,safetyMarginHintDays:`Буфер додано поверх статистичного страхового запасу.{{approx}}`,safetyMarginHintDaysApprox:` ≈ {{g}} г за поточного рівня споживання.`,safetyMarginHintG:`Буфер фіксованої ваги, доданий поверх статистичного страхового запасу.{{approx}}`,safetyMarginHintGApprox:` ≈ {{days}} дн. за поточного рівня споживання.`,individualSpools:`Окремі котушки`,labelWeight:`Вага за етикеткою`,spoolCount_one:`Котушок: {{count}}`,spoolCount_other:`Котушок: {{count}}`,stockBreakRisk:`Ризик вичерпання запасу`,stockBreakDetail:`Залишилося {{days}} дн.; строк постачання — {{lt}} дн.`,stockBreakBefore:`Запас вичерпається до поповнення`,reorderNow:`Замовити зараз`,reorderTriggerPassed:`Дата замовлення {{date}} минула.`,shoppingList:`Список покупок`,shoppingListItems_one:`(позицій: {{count}})`,shoppingListItems_other:`(позицій: {{count}})`,shoppingListEmpty:`Список покупок порожній. Натисніть значок кошика в будь-якому рядку, щоб додати позиції.`,addToCart:`Додати до списку покупок`,alertsSnoozed:`Вимкнути сповіщення для цього SKU`,alertsEnabled:`Увімкнути сповіщення для цього SKU`,addedToCart:`Додано до списку покупок`,failedAddItem:`Не вдалося додати елемент`,listView:`Список`,logisticsView:`Логістика`,qty:`Кількість`,weight:`Вага`,leadTime:`Строк постачання`,expectedRestock:`Очікуване поповнення запасів`,status:`Статус`,note:`Примітка`,pending:`В очікуванні`,purchased:`Придбано`,received:`Отримано`,markPurchased:`Позначити як придбане`,markReceived:`Позначити як отримане — додає котушки до запасу`,resetToPending:`Скинути до очікування`,remove:`Видалити`,clearAll:`Очистити все`,downloadCsv:`CSV`,addToCartTitle:`Додати до списку покупок`,byQuantity:`За кількістю`,byDuration:`За тривалістю`,numberOfSpools:`Кількість котушок`,lastHowManyDays:`Скільки днів має тривати?`,noUsageQty:`Немає даних про використання — кількість встановлено на 1.`,noteOptional:`Примітка (необов’язково)`,notePlaceholder:`напр. для проєкту X, терміново…`,addNSpools_one:`Додати котушки ({{count}})`,addNSpools_other:`Додати котушки ({{count}})`,onArrival:`Після прибуття`,stockBreakIn:`Запас вичерпається через {{days}} дн.`,stockRunsOutBefore:`Запас закінчиться раніше, ніж мине строк постачання {{lt}} дн.`,atRate:`За споживання {{rate}} г/день потрібно`,moreSpools_one:`Додаткових котушок: {{count}}`,moreSpools_other:`Додаткових котушок: {{count}}`,bridgeGap:`щоб покрити нестачу.`,noReadAccess:`Ви не маєте дозволу переглядати прогнози запасів.`,noWriteAccess:`Ви не маєте дозволу змінювати налаштування прогнозу.`}}}},Et=[`en`,`de`,`es`,`fr`,`ja`,`it`,`ko`,`nl`,`pt-BR`,`ru`,`tr`,`uk`,`zh-CN`,`zh-TW`],Dt=`bambuddy_appliance_locale_consumed`;Oe.use(wt).use(qe).init({resources:Tt,fallbackLng:`en`,supportedLngs:Et,detection:{order:[`localStorage`,`navigator`,`htmlTag`],lookupLocalStorage:`bambutrack_language`,caches:[`localStorage`]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});function Ot(){if(typeof window>`u`||!window.localStorage)return;let e=window.localStorage;typeof e.getItem!=`function`||typeof e.setItem!=`function`||e.getItem(Dt)||fetch(`/api/v1/system/appliance`).then(e=>e.ok?e.json():null).then(t=>{!t||typeof t.locale!=`string`||Et.includes(t.locale)&&(Oe.changeLanguage(t.locale),e.setItem(Dt,`1`))}).catch(()=>{})}Ot();var kt=[{code:`en`,name:`English`,nativeName:`English`},{code:`de`,name:`German`,nativeName:`Deutsch`},{code:`es`,name:`Spanish`,nativeName:`Español`},{code:`fr`,name:`French`,nativeName:`Français`},{code:`ja`,name:`Japanese`,nativeName:`日本語`},{code:`it`,name:`Italian`,nativeName:`Italiano`},{code:`ko`,name:`Korean`,nativeName:`한국어`},{code:`nl`,name:`Dutch`,nativeName:`Nederlands`},{code:`pt-BR`,name:`Portuguese (Brazil)`,nativeName:`Português (Brasil)`},{code:`zh-CN`,name:`Chinese (Simplified)`,nativeName:`简体中文`},{code:`zh-TW`,name:`Chinese (Traditional)`,nativeName:`繁體中文`},{code:`tr`,name:`Turkish`,nativeName:`Türkçe`},{code:`ru`,name:`Russian`,nativeName:`Русский`},{code:`uk`,name:`Ukrainian`,nativeName:`Українська`}],At=l(g()),jt=`modulepreload`,Mt=function(e){return`/`+e},Nt={},Pt=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Mt(t,n),t in Nt)return;Nt[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:jt,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Ft=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,It=/^[\\/]{2}/;function Lt(e,t){return t+e.replace(/\\/g,`/`)}var Rt=`popstate`;function zt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Bt(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Gt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Kt(t)}return Jt(t,n,null,e)}function Vt(e,t){if(e===!1||e==null)throw Error(t)}function Ht(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Ut(){return Math.random().toString(36).substring(2,10)}function Wt(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Gt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?qt(t):t,state:n,key:t&&t.key||r||Ut(),mask:i}}function Kt({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function qt(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Jt(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=zt(e)?e:Gt(h.location,e,t);n&&n(r,e),l=u()+1;let d=Wt(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=zt(e)?e:Gt(h.location,e,t);n&&n(r,e),l=u();let i=Wt(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Yt(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(Rt,d),c=e,()=>{i.removeEventListener(Rt,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Yt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),Vt(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Kt(t);return i=i.replace(/ $/,`%20`),!n&&It.test(i)&&(i=r+i),new URL(i,r)}function Xt(e,t,n=`/`){return Zt(e,t,n,!1)}function Zt(e,t,n,r,i){let a=_n((typeof t==`string`?qt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??$t(e),s=null,c=gn(a);for(let e=0;s==null&&e{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;Vt(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=Tn([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(Vt(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),en(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:un(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=hn(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of tn(e.path))a(e,t,!0,n)}),t}function tn(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=tn(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function W(e){e.sort((e,t)=>e.score===t.score?dn(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var nn=/^:[\w-]+$/,rn=3,an=2,on=1,sn=10,cn=-2,ln=e=>e===`*`;function un(e,t){let n=e.split(`/`),r=n.length;return n.some(ln)&&(r+=cn),t&&(r+=an),n.filter(e=>!ln(e)).reduce((e,t)=>e+(nn.test(t)?rn:t===``?on:sn),r)}function dn(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function fn(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function hn(e,t=!1,n=!0){Ht(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function gn(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return Ht(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function _n(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function vn(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?qt(e):e,a;return n?(n=wn(n),a=n.startsWith(`/`)?yn(n.substring(1),`/`):yn(n,t)):a=t,{pathname:a,search:On(r),hash:kn(i)}}function yn(e,t){let n=En(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function bn(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function xn(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Sn(e){let t=xn(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Cn(e,t,n,r=!1){let i;typeof e==`string`?i=qt(e):(i={...e},Vt(!i.pathname||!i.pathname.includes(`?`),bn(`?`,`pathname`,`search`,i)),Vt(!i.pathname||!i.pathname.includes(`#`),bn(`#`,`pathname`,`hash`,i)),Vt(!i.search||!i.search.includes(`#`),bn(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=vn(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var wn=e=>e.replace(/[\\/]{2,}/g,`/`),Tn=e=>wn(e.join(`/`)),En=e=>e.replace(/\/+$/,``),Dn=e=>En(e).replace(/^\/*/,`/`),On=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,kn=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,An=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function jn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Mn(e){return Tn(e.map(e=>e.route.path).filter(Boolean))||`/`}var Nn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Pn(e,t){let n=e;if(typeof n!=`string`||!Ft.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Nn)try{let e=new URL(window.location.href),r=It.test(n)?new URL(Lt(n,e.protocol)):new URL(n),a=_n(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{Ht(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Fn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Fn);var In=[`GET`,...Fn];new Set(In);var Ln=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Rn(e){try{return Ln.includes(new URL(e).protocol)}catch{return!1}}var zn=y.createContext(null);zn.displayName=`DataRouter`;var Bn=y.createContext(null);Bn.displayName=`DataRouterState`;var Vn=y.createContext(!1);function Hn(){return y.useContext(Vn)}var Un=y.createContext({isTransitioning:!1});Un.displayName=`ViewTransition`;var Wn=y.createContext(new Map);Wn.displayName=`Fetchers`;var Gn=y.createContext(null);Gn.displayName=`Await`;var Kn=y.createContext(null);Kn.displayName=`Navigation`;var qn=y.createContext(null);qn.displayName=`Location`;var Jn=y.createContext({outlet:null,matches:[],isDataRoute:!1});Jn.displayName=`Route`;var Yn=y.createContext(null);Yn.displayName=`RouteError`;var Xn=`REACT_ROUTER_ERROR`,Zn=`REDIRECT`,Qn=`ROUTE_ERROR_RESPONSE`;function $n(e){if(e.startsWith(`${Xn}:${Zn}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function er(e){if(e.startsWith(`${Xn}:${Qn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new An(t.status,t.statusText,t.data)}catch{}}function tr(e,{relative:t}={}){Vt(nr(),`useHref() may be used only in the context of a component.`);let{basename:n,navigator:r}=y.useContext(Kn),{hash:i,pathname:a,search:o}=fr(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:Tn([n,a])),r.createHref({pathname:s,search:o,hash:i})}function nr(){return y.useContext(qn)!=null}function rr(){return Vt(nr(),`useLocation() may be used only in the context of a component.`),y.useContext(qn).location}var ir=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function ar(e){y.useContext(Kn).static||y.useLayoutEffect(e)}function or(){let{isDataRoute:e}=y.useContext(Jn);return e?jr():sr()}function sr(){Vt(nr(),`useNavigate() may be used only in the context of a component.`);let e=y.useContext(zn),{basename:t,navigator:n}=y.useContext(Kn),{matches:r}=y.useContext(Jn),{pathname:i}=rr(),a=JSON.stringify(Sn(r)),o=y.useRef(!1);return ar(()=>{o.current=!0}),y.useCallback((r,s={})=>{if(Ht(o.current,ir),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Cn(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:Tn([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var cr=y.createContext(null);function lr(){return y.useContext(cr)}function ur(e){let t=y.useContext(Jn).outlet;return y.useMemo(()=>t&&y.createElement(cr.Provider,{value:e},t),[t,e])}function dr(){let{matches:e}=y.useContext(Jn);return e[e.length-1]?.params??{}}function fr(e,{relative:t}={}){let{matches:n}=y.useContext(Jn),{pathname:r}=rr(),i=JSON.stringify(Sn(n));return y.useMemo(()=>Cn(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function pr(e,t){return mr(e,t)}function mr(e,t,n){Vt(nr(),`useRoutes() may be used only in the context of a component.`);let{navigator:r}=y.useContext(Kn),{matches:i}=y.useContext(Jn),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Nr(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant (or called \`useRoutes()\`) at "${s}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. Please change the parent to .`)}let u=rr(),d;if(t){let e=typeof t==`string`?qt(t):t;Vt(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Xt(e,{pathname:p});Ht(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),Ht(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let h=xr(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:Tn([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:Tn([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?y.createElement(qn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function hr(){let e=Ar(),t=jn(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=y.createElement(y.Fragment,null,y.createElement(`p`,null,`💿 Hey developer 👋`),y.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,y.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,y.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),y.createElement(y.Fragment,null,y.createElement(`h2`,null,`Unexpected Application Error!`),y.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?y.createElement(`pre`,{style:i},n):null,o)}var gr=y.createElement(hr,null),_r=class extends y.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=er(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:y.createElement(Jn.Provider,{value:this.props.routeContext},y.createElement(Yn.Provider,{value:e,children:this.props.component}));return this.context?y.createElement(yr,{error:e},t):t}};_r.contextType=Vn;var vr=new WeakMap;function yr({children:e,error:t}){let{basename:n}=y.useContext(Kn);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=$n(t.digest);if(e){let r=vr.get(t);if(r)throw r;let i=Pn(e.location,n),a=i.absoluteURL||i.to;if(Rn(a))throw Error(`Invalid redirect location`);if(Nn&&!vr.get(t))if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw vr.set(t,n),n}return y.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function br({routeContext:e,match:t,children:n}){let r=y.useContext(zn);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),y.createElement(Jn.Provider,{value:e},n)}function xr(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);Vt(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:Mn(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||gr,o&&(s<0&&c===0?(Nr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?y.createElement(n.route.Component,null):n.route.element?n.route.element:e,y.createElement(br,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?y.createElement(_r,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Sr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Cr(e){let t=y.useContext(zn);return Vt(t,Sr(e)),t}function wr(e){let t=y.useContext(Bn);return Vt(t,Sr(e)),t}function Tr(e){let t=y.useContext(Jn);return Vt(t,Sr(e)),t}function Er(e){let t=Tr(e),n=t.matches[t.matches.length-1];return Vt(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Dr(){return Er(`useRouteId`)}function Or(){let e=wr(`useNavigation`);return y.useMemo(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function kr(){let{matches:e,loaderData:t}=wr(`useMatches`);return y.useMemo(()=>e.map(e=>Qt(e,t)),[e,t])}function Ar(){let e=y.useContext(Yn),t=wr(`useRouteError`),n=Er(`useRouteError`);return e===void 0?t.errors?.[n]:e}function jr(){let{router:e}=Cr(`useNavigate`),t=Er(`useNavigate`),n=y.useRef(!1);return ar(()=>{n.current=!0}),y.useCallback(async(r,i={})=>{Ht(n.current,ir),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Mr={};function Nr(e,t,n){!t&&!Mr[e]&&(Mr[e]=!0,Ht(!1,n))}y.memo(Pr);function Pr({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return mr(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Fr({to:e,replace:t,state:n,relative:r}){Vt(nr(),` may be used only in the context of a component.`);let{static:i}=y.useContext(Kn);Ht(!i,` must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.`);let{matches:a}=y.useContext(Jn),{pathname:o}=rr(),s=or(),c=Cn(e,Sn(a),o,r===`path`),l=JSON.stringify(c);return y.useEffect(()=>{s(JSON.parse(l),{replace:t,state:n,relative:r})},[s,l,r,t,n]),null}function Ir(e){return ur(e.context)}function Lr(e){Vt(!1,`A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .`)}function Rr({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){Vt(!nr(),`You cannot render a inside another . You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=y.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=qt(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=y.useMemo(()=>{let e=_n(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return Ht(h!=null,` is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the won't render anything.`),h==null?null:y.createElement(Kn.Provider,{value:c},y.createElement(qn.Provider,{children:t,value:h}))}function zr({children:e,location:t}){return pr(Br(e),t)}y.Component;function Br(e,t=[]){let n=[];return y.Children.forEach(e,(e,r)=>{if(!y.isValidElement(e))return;let i=[...t,r];if(e.type===y.Fragment){n.push.apply(n,Br(e.props.children,i));return}Vt(e.type===Lr,`[${typeof e.type==`string`?e.type:e.type.name}] is not a component. All component children of must be a or `),Vt(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=Br(e.props.children,i)),n.push(a)}),n}var Vr=`get`,Hr=`application/x-www-form-urlencoded`;function Ur(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Wr(e){return Ur(e)&&e.tagName.toLowerCase()===`button`}function Gr(e){return Ur(e)&&e.tagName.toLowerCase()===`form`}function Kr(e){return Ur(e)&&e.tagName.toLowerCase()===`input`}function qr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Jr(e,t){return e.button===0&&(!t||t===`_self`)&&!qr(e)}function Yr(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Xr(e,t){let n=Yr(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Zr=null;function Qr(){if(Zr===null)try{new FormData(document.createElement(`form`),0),Zr=!1}catch{Zr=!0}return Zr}var $r=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function ei(e){return e!=null&&!$r.has(e)?(Ht(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Hr}"`),null):e}function ti(e,t){let n,r,i,a,o;if(Gr(e)){let o=e.getAttribute(`action`);r=o?_n(o,t):null,n=e.getAttribute(`method`)||Vr,i=ei(e.getAttribute(`enctype`))||Hr,a=new FormData(e)}else if(Wr(e)||Kr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a