From 7eff2f725f15110a63c74c3a6e8d288de1e832ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Lewicki?= <102052759+levy52@users.noreply.github.com> Date: Wed, 6 May 2026 18:38:58 +0200 Subject: [PATCH] feat: add Polish localization (#1123) * Add Polish (pl) localization * translations * fix: add missing Polish translations * copy en keys to pl * fix: complete Polish settings translations * fix: localize PWA install prompt * fix pwa install prompt lifecycle and complete Polish locale keys * polish polish locale wording for natural phrasing --------- Co-authored-by: levy52 Co-authored-by: Bohdan Triapitsyn --- packages/ui/src/hooks/usePwaInstallPrompt.ts | 15 +- packages/ui/src/lib/i18n/messages/en.ts | 5 + packages/ui/src/lib/i18n/messages/es.ts | 5 + packages/ui/src/lib/i18n/messages/ko.ts | 5 + .../ui/src/lib/i18n/messages/pl.settings.ts | 1537 ++++++++++++ packages/ui/src/lib/i18n/messages/pl.ts | 2185 +++++++++++++++++ packages/ui/src/lib/i18n/messages/pt-BR.ts | 5 + packages/ui/src/lib/i18n/messages/uk.ts | 5 + packages/ui/src/lib/i18n/messages/zh-CN.ts | 5 + packages/ui/src/lib/i18n/runtime.ts | 10 +- packages/ui/src/lib/i18n/store.ts | 16 +- 11 files changed, 3779 insertions(+), 14 deletions(-) create mode 100644 packages/ui/src/lib/i18n/messages/pl.settings.ts create mode 100644 packages/ui/src/lib/i18n/messages/pl.ts diff --git a/packages/ui/src/hooks/usePwaInstallPrompt.ts b/packages/ui/src/hooks/usePwaInstallPrompt.ts index 2469053f..54e25c7d 100644 --- a/packages/ui/src/hooks/usePwaInstallPrompt.ts +++ b/packages/ui/src/hooks/usePwaInstallPrompt.ts @@ -2,6 +2,7 @@ import React from 'react'; import { toast } from '@/components/ui'; import { isWebRuntime } from '@/lib/desktop'; import { usePwaDetection } from '@/hooks/usePwaDetection'; +import { useI18n } from '@/lib/i18n'; import { getSafeSessionStorage } from '@/stores/utils/safeStorage'; type InstallPromptOutcome = 'accepted' | 'dismissed'; @@ -15,6 +16,12 @@ const INSTALL_TOAST_SESSION_KEY = 'pwa-install-toast-shown'; export const usePwaInstallPrompt = () => { const { browserTab } = usePwaDetection(); + const { t } = useI18n(); + const tRef = React.useRef(t); + + React.useEffect(() => { + tRef.current = t; + }, [t]); React.useEffect(() => { if (typeof window === 'undefined' || !isWebRuntime() || !browserTab) { @@ -44,7 +51,7 @@ export const usePwaInstallPrompt = () => { await promptEvent.prompt(); const { outcome } = await promptEvent.userChoice; if (outcome === 'accepted') { - toast.success('Install started'); + toast.success(tRef.current('pwa.installPrompt.started')); } }; @@ -68,10 +75,10 @@ export const usePwaInstallPrompt = () => { sessionStorage.setItem(INSTALL_TOAST_SESSION_KEY, 'true'); - installToastId = toast.info('Install OpenChamber for quicker access', { + installToastId = toast.info(tRef.current('pwa.installPrompt.description'), { duration: Infinity, action: { - label: 'Install', + label: tRef.current('pwa.installPrompt.action'), onClick: () => { void triggerInstall(); }, @@ -82,7 +89,7 @@ export const usePwaInstallPrompt = () => { const onAppInstalled = () => { deferredPrompt = null; dismissInstallToast(); - toast.success('OpenChamber installed'); + toast.success(tRef.current('pwa.installPrompt.installed')); }; window.addEventListener('beforeinstallprompt', onBeforeInstallPrompt as EventListener); diff --git a/packages/ui/src/lib/i18n/messages/en.ts b/packages/ui/src/lib/i18n/messages/en.ts index 0bc709be..88b4678d 100644 --- a/packages/ui/src/lib/i18n/messages/en.ts +++ b/packages/ui/src/lib/i18n/messages/en.ts @@ -10,9 +10,14 @@ export const dict = { 'common.language.spanish': 'Spanish', 'common.language.brazilianPortuguese': 'Brazilian Portuguese', 'common.language.korean': 'Korean', + 'common.language.polish': 'Polish', 'common.revealPath.finder': 'Reveal in Finder', 'common.revealPath.fileExplorer': 'Open in File Explorer', 'common.revealPath.fileManager': 'Open in File Manager', + 'pwa.installPrompt.description': 'Install OpenChamber for quicker access', + 'pwa.installPrompt.action': 'Install', + 'pwa.installPrompt.started': 'Install started', + 'pwa.installPrompt.installed': 'OpenChamber installed', 'layout.mainTab.chat': 'Chat', 'layout.mainTab.plan': 'Plan', 'layout.mainTab.diff': 'Diff', diff --git a/packages/ui/src/lib/i18n/messages/es.ts b/packages/ui/src/lib/i18n/messages/es.ts index 32cbb435..26fb867e 100644 --- a/packages/ui/src/lib/i18n/messages/es.ts +++ b/packages/ui/src/lib/i18n/messages/es.ts @@ -11,9 +11,14 @@ export const dict: Record = { "common.language.spanish": "Español", "common.language.brazilianPortuguese": "Portugués brasileño", "common.language.korean": "Coreano", + "common.language.polish": "Polaco", "common.revealPath.finder": "Mostrar en Finder", "common.revealPath.fileExplorer": "Abrir en File Explorer", "common.revealPath.fileManager": "Abrir en gestor de archivos", + "pwa.installPrompt.description": "Instala OpenChamber para acceder más rápido", + "pwa.installPrompt.action": "Instalar", + "pwa.installPrompt.started": "Instalación iniciada", + "pwa.installPrompt.installed": "OpenChamber se instaló", "layout.mainTab.chat": "Chat", "layout.mainTab.plan": "Plan", "layout.mainTab.diff": "Diff", diff --git a/packages/ui/src/lib/i18n/messages/ko.ts b/packages/ui/src/lib/i18n/messages/ko.ts index bae70b62..a5560d3c 100644 --- a/packages/ui/src/lib/i18n/messages/ko.ts +++ b/packages/ui/src/lib/i18n/messages/ko.ts @@ -11,9 +11,14 @@ export const dict: Record = { 'common.language.spanish': '스페인어', 'common.language.brazilianPortuguese': '브라질 포르투갈어', 'common.language.korean': '한국어', + 'common.language.polish': '폴란드어', 'common.revealPath.finder': 'Finder에서 보기', 'common.revealPath.fileExplorer': 'File Explorer에서 열기', 'common.revealPath.fileManager': '파일 관리자에서 열기', + 'pwa.installPrompt.description': '더 빠르게 접근하려면 OpenChamber를 설치하세요', + 'pwa.installPrompt.action': '설치', + 'pwa.installPrompt.started': '설치가 시작되었습니다', + 'pwa.installPrompt.installed': 'OpenChamber가 설치되었습니다', 'layout.mainTab.chat': '채팅', 'layout.mainTab.plan': '계획', 'layout.mainTab.diff': '변경사항', diff --git a/packages/ui/src/lib/i18n/messages/pl.settings.ts b/packages/ui/src/lib/i18n/messages/pl.settings.ts new file mode 100644 index 00000000..cef8d1c9 --- /dev/null +++ b/packages/ui/src/lib/i18n/messages/pl.settings.ts @@ -0,0 +1,1537 @@ +export const settingsDict = { + 'settings.appearance.language.description': 'Wybierz język interfejsu.', + 'settings.agents.modelSelector.actions.addToFavorites': 'Dodaj do ulubionych', + 'settings.agents.modelSelector.actions.favorite': 'Ulubione', + 'settings.agents.modelSelector.actions.removeFromFavorites': 'Usuń z ulubionych', + 'settings.agents.modelSelector.actions.unfavorite': 'Odznacz jako ulubione', + 'settings.agents.modelSelector.badge.current': 'Aktualny', + 'settings.agents.modelSelector.keyboardHints': '↑↓ nawiguj • Enter wybierz • Esc zamknij', + 'settings.agents.modelSelector.noModelOptional': 'Brak modelu (opcjonalnie)', + 'settings.agents.modelSelector.notSelected': 'Nie wybrano', + 'settings.agents.modelSelector.searchPlaceholder': 'Szukaj modeli', + 'settings.agents.modelSelector.section.favorites': 'Ulubione', + 'settings.agents.modelSelector.section.recent': 'Ostatnie', + 'settings.agents.modelSelector.section.recents': 'Ostatnie', + 'settings.agents.modelSelector.selectPlaceholder': 'Wybierz model...', + 'settings.agents.modelSelector.state.noModelsFound': 'Nie znaleziono modeli', + 'settings.agents.modelSelector.title': 'Wybierz model', + 'settings.agents.page.empty.description': 'lub utwórz nowego', + 'settings.agents.page.empty.title': 'Wybierz agenta z paska bocznego', + 'settings.agents.page.field.agentName': 'Nazwa agenta', + 'settings.agents.page.field.agentNamePlaceholder': 'nazwa-agenta', + 'settings.agents.page.field.clearTemperatureAria': 'Wyczyść nadpisanie temperatury', + 'settings.agents.page.field.clearTopPAria': 'Wyczyść nadpisanie Top P', + 'settings.agents.page.field.descriptionPlaceholder': 'Co robi ten agent?', + 'settings.agents.page.field.mode': 'Tryb', + 'settings.agents.page.field.modeTooltip': 'Widoczność: Główny vs Podagent', + 'settings.agents.page.field.overrideModel': 'Nadpisz model', + 'settings.agents.page.field.scopePlaceholder': 'Zakres', + 'settings.agents.page.field.systemPromptPlaceholder': 'Jesteś ekspertem w asystowaniu przy kodowaniu...', + 'settings.agents.page.field.temperature': 'Temperatura', + 'settings.agents.page.field.temperatureRange': 'od 0.0 do 2.0', + 'settings.agents.page.field.temperatureTooltip': 'Kontroluje losowość. Wyższa = bardziej kreatywny, niższa = bardziej skupiony.', + 'settings.agents.page.field.topP': 'Top P', + 'settings.agents.page.field.topPRange': 'od 0.0 do 1.0', + 'settings.agents.page.field.topPTooltip': 'Różnorodność próbkowania jądra. Niższa = tylko najbardziej prawdopodobne tokeny.', + 'settings.agents.page.mode.all': 'Wszystkie', + 'settings.agents.page.mode.primary': 'Główny', + 'settings.agents.page.mode.subagent': 'Podagent', + 'settings.agents.page.permissions.addCustomRule': 'Dodaj własną regułę', + 'settings.agents.page.permissions.advancedEditor': 'Zaawansowany edytor', + 'settings.agents.page.permissions.defaultLabel': 'Domyślne', + 'settings.agents.page.permissions.globalDefault': 'Domyślne globalne', + 'settings.agents.page.permissions.globalSummary': 'Globalne: {summary}', + 'settings.agents.page.permissions.hideEditor': 'Ukryj edytor', + 'settings.agents.page.permissions.pattern': 'Wzorzec', + 'settings.agents.page.permissions.patternPlaceholder': 'Wzorzec (np. *)', + 'settings.agents.page.permissions.permissionPlaceholder': 'Uprawnienie...', + 'settings.agents.page.permissions.rulesSummary': 'Reguły: {summary}', + 'settings.agents.page.section.identityRole': 'Tożsamość i Rola', + 'settings.agents.page.section.modelParameters': 'Model i Parametry', + 'settings.agents.page.section.systemPrompt': 'System Prompt', + 'settings.agents.page.section.toolPermissions': 'Uprawnienia do narzędzi', + 'settings.agents.page.subtitle.edit': 'Edytuj ustawienia agenta', + 'settings.agents.page.subtitle.new': 'Skonfiguruj nową personę asystenta', + 'settings.agents.page.title.new': 'Nowy Agent', + 'settings.agents.page.toast.createFailed': 'Nie udało się utworzyć agenta', + 'settings.agents.page.toast.created': 'Agent został utworzony pomyślnie', + 'settings.agents.page.toast.permissionNameRequired': 'Nazwa uprawnienia jest wymagana', + 'settings.agents.page.toast.saveUnexpectedError': 'Wystąpił błąd podczas zapisywania', + 'settings.agents.page.toast.updateFailed': 'Nie udało się zaktualizować agenta', + 'settings.agents.page.toast.updated': 'Agent został zaktualizowany pomyślnie', + 'settings.agents.sidebar.badge.system': 'system', + 'settings.agents.sidebar.dialog.deleteDescription': 'Czy na pewno chcesz usunąć agenta "{name}"?', + 'settings.agents.sidebar.dialog.deleteTitle': 'Usuń Agenta', + 'settings.agents.sidebar.dialog.resetDescription': 'Czy na pewno chcesz zresetować agenta "{name}" do domyślnej konfiguracji?', + 'settings.agents.sidebar.dialog.resetTitle': 'Zresetuj Agenta', + 'settings.agents.sidebar.empty.description': 'Użyj przycisku +, aby utworzyć nowego', + 'settings.agents.sidebar.empty.title': 'Brak skonfigurowanych agentów', + 'settings.agents.sidebar.renameDialog.description': 'Wprowadź nową nazwę dla agenta "@{name}"', + 'settings.agents.sidebar.renameDialog.placeholder': 'Nowa nazwa agenta...', + 'settings.agents.sidebar.renameDialog.title': 'Zmień nazwę agenta', + 'settings.agents.sidebar.section.builtIn': 'Wbudowani Agenci', + 'settings.agents.sidebar.section.custom': 'Własni Agenci', + 'settings.agents.sidebar.title': 'Agenci', + 'settings.agents.sidebar.toast.agentDeleted': 'Agent "{name}" został usunięty pomyślnie', + 'settings.agents.sidebar.toast.agentExists': 'Agent o tej nazwie już istnieje', + 'settings.agents.sidebar.toast.agentNameRequired': 'Nazwa agenta jest wymagana', + 'settings.agents.sidebar.toast.agentReset': 'Agent "{name}" został zresetowany do domyślnych ustawień', + 'settings.agents.sidebar.toast.builtInCannotDelete': 'Wbudowanych agentów nie można usuwać', + 'settings.agents.sidebar.toast.deleteFailed': 'Nie udało się usunąć agenta', + 'settings.agents.sidebar.toast.removeOldAfterRenameFailed': 'Nie udało się usunąć starego agenta po zmianie nazwy', + 'settings.agents.sidebar.toast.renameFailed': 'Nie udało się zmienić nazwy agenta', + 'settings.agents.sidebar.toast.resetFailed': 'Nie udało się zresetować agenta', + 'settings.agents.sidebar.total': 'Suma: {count}', + 'settings.behavior.page.field.systemPromptPlaceholder': 'Jesteś pomocnym asystentem AI...\n\nUżyj tej przestrzeni, aby zdefiniować absolutne reguły zachowania AI we wszystkich sesjach i u dostawców.', + 'settings.behavior.page.responseStyle.customPlaceholder': 'Napisz instrukcję, którą chcesz dodać do pierwszej wiadomości...', + 'settings.behavior.page.responseStyle.enable': 'Dodaj instrukcje stylu odpowiedzi do nowych rozmów', + 'settings.behavior.page.responseStyle.enableAria': 'Włącz instrukcje stylu odpowiedzi', + 'settings.behavior.page.responseStyle.option.concise': 'Zwięzły', + 'settings.behavior.page.responseStyle.option.custom': 'Własny', + 'settings.behavior.page.responseStyle.option.detailed': 'Szczegółowy', + 'settings.behavior.page.responseStyle.option.matchEnergy': 'Dostosuj do mojej energii', + 'settings.behavior.page.responseStyle.option.mentor': 'Mentor', + 'settings.behavior.page.responseStyle.option.noFiller': 'Bez zbędnych treści', + 'settings.behavior.page.responseStyle.option.pushback': 'Krytyczne podejście', + 'settings.behavior.page.responseStyle.option.warmPeer': 'Przyjazny kolega', + 'settings.behavior.page.responseStyle.preset': 'Preset', + 'settings.behavior.page.responseStyle.tooltip': 'Jeśli jest włączone, instrukcje te określają sposób odpowiadania asystenta w każdej nowej rozmowie. Są one przesyłane z Twoją pierwszą wiadomością i nie zmieniają Twoich globalnych reguł AGENTS.md.', + 'settings.behavior.page.section.responseStyle': 'Styl odpowiedzi', + 'settings.behavior.page.section.systemPrompt': 'Globalny AGENTS.md', + 'settings.behavior.page.title': 'Zachowanie', + 'settings.behavior.page.toast.saveFailed': 'Nie udało się zapisać zachowania', + 'settings.behavior.page.toast.saved': 'Zachowanie zostało zapisane pomyślnie', + 'settings.behavior.page.warning.description': 'Zmiany wprowadzone tutaj aktualizują {path}. OpenCode uwzględnia również reguły AGENTS.md na poziomie projektu, jeśli istnieją.', + 'settings.behavior.page.warning.title': 'Reguły globalne są łączone z regułami projektu', + 'settings.commands.agentSelector.notSelected': 'Nie wybrano', + 'settings.commands.agentSelector.selectAgentPlaceholder': 'Wybierz agenta...', + 'settings.commands.agentSelector.title': 'Wybierz agenta', + 'settings.commands.page.empty.description': 'lub utwórz nowego', + 'settings.commands.page.empty.title': 'Wybierz polecenie z paska bocznego', + 'settings.commands.page.field.commandName': 'Nazwa polecenia', + 'settings.commands.page.field.commandNamePlaceholder': 'nazwa-polecenia', + 'settings.commands.page.field.descriptionPlaceholder': 'Co robi to polecenie?', + 'settings.commands.page.field.overrideAgent': 'Nadpisz agenta', + 'settings.commands.page.field.templatePlaceholder': 'Twój szablon polecenia tutaj...\n\nUżyj $ARGUMENTS, aby odnieść się do danych wejściowych użytkownika.\nUżyj !`polecenie shell`, aby wstrzyknąć wynik z konsoli.\nUżyj @nazwa_pliku, aby dołączyć zawartość pliku.', + 'settings.commands.page.section.executionContext': 'Kontekst wykonania', + 'settings.commands.page.section.identity': 'Tożsamość', + 'settings.commands.page.section.template': 'Szablon polecenia', + 'settings.commands.page.subtitle.edit': 'Edytuj ustawienia polecenia', + 'settings.commands.page.subtitle.new': 'Skonfiguruj nowe polecenie slash', + 'settings.commands.page.templateHint.fileContents': 'zawartość pliku', + 'settings.commands.page.templateHint.shellOutput': 'wynik z konsoli', + 'settings.commands.page.templateHint.userInput': 'dane wejściowe użytkownika', + 'settings.commands.page.title.new': 'Nowe Polecenie', + 'settings.commands.page.toast.createFailed': 'Nie udało się utworzyć polecenia', + 'settings.commands.page.toast.created': 'Polecenie zostało utworzone pomyślnie', + 'settings.commands.page.toast.saveUnexpectedError': 'Wystąpił błąd podczas zapisywania', + 'settings.commands.page.toast.templateRequired': 'Szablon polecenia jest wymagany', + 'settings.commands.page.toast.updateFailed': 'Nie udało się zaktualizować polecenia', + 'settings.commands.page.toast.updated': 'Polecenie zostało zaktualizowane pomyślnie', + 'settings.commands.sidebar.dialog.deleteDescription': 'Czy na pewno chcesz usunąć polecenie "{name}"?', + 'settings.commands.sidebar.dialog.deleteTitle': 'Usuń Polecenie', + 'settings.commands.sidebar.dialog.resetDescription': 'Czy na pewno chcesz zresetować polecenie "{name}" do domyślnej konfiguracji?', + 'settings.commands.sidebar.dialog.resetTitle': 'Zresetuj Polecenie', + 'settings.commands.sidebar.empty.description': 'Użyj przycisku +, aby utworzyć nowe', + 'settings.commands.sidebar.empty.title': 'Brak skonfigurowanych poleceń', + 'settings.commands.sidebar.renameDialog.description': 'Wprowadź nową nazwę dla polecenia "/{name}"', + 'settings.commands.sidebar.renameDialog.placeholder': 'Nowa nazwa polecenia...', + 'settings.commands.sidebar.renameDialog.title': 'Zmień nazwę polecenia', + 'settings.commands.sidebar.section.builtIn': 'Wbudowane Polecenia', + 'settings.commands.sidebar.section.custom': 'Własne Polecenia', + 'settings.commands.sidebar.title': 'Polecenia', + 'settings.commands.sidebar.toast.builtInCannotDelete': 'Wbudowanych poleceń nie można usuwać', + 'settings.commands.sidebar.toast.commandDeleted': 'Polecenie "{name}" zostało usunięte pomyślnie', + 'settings.commands.sidebar.toast.commandExists': 'Polecenie o tej nazwie już istnieje', + 'settings.commands.sidebar.toast.commandNameRequired': 'Nazwa polecenia jest wymagana', + 'settings.commands.sidebar.toast.commandReset': 'Polecenie "{name}" zostało zresetowane do domyślnych ustawień', + 'settings.commands.sidebar.toast.deleteFailed': 'Nie udało się usunąć polecenia', + 'settings.commands.sidebar.toast.removeOldAfterRenameFailed': 'Nie udało się usunąć starego polecenia po zmianie nazwy', + 'settings.commands.sidebar.toast.renameFailed': 'Nie udało się zmienić nazwy polecenia', + 'settings.commands.sidebar.toast.resetFailed': 'Nie udało się zresetować polecenia', + 'settings.commands.sidebar.total': 'Suma: {count}', + 'settings.common.actions.cancel': 'Anuluj', + 'settings.common.actions.clear': 'Wyczyść', + 'settings.common.actions.copyAll': 'Kopiuj wszystko', + 'settings.common.actions.create': 'Utwórz', + 'settings.common.actions.delete': 'Usuń', + 'settings.common.actions.duplicate': 'Duplikuj', + 'settings.common.actions.import': 'Importuj', + 'settings.common.actions.rename': 'Zmień nazwę', + 'settings.common.actions.reset': 'Zresetuj', + 'settings.common.actions.saveChanges': 'Zapisz zmiany', + 'settings.common.actions.saving': 'Zapisywanie...', + 'settings.common.badge.modified': 'Zmodyfikowano', + 'settings.common.badge.new': 'Nowy', + 'settings.common.field.description': 'Opis', + 'settings.common.permission.allow': 'Zezwól', + 'settings.common.permission.ask': 'Zapytaj', + 'settings.common.permission.deny': 'Odmów', + 'settings.common.scope.global': 'Globalne', + 'settings.common.scope.project': 'Projekt', + 'settings.common.state.comingSoon': 'Wkrótce...', + 'settings.gitIdentities.editor.actions.close': 'Zamknij', + 'settings.gitIdentities.editor.actions.create': 'Utwórz', + 'settings.gitIdentities.editor.actions.save': 'Zapisz', + 'settings.gitIdentities.editor.description.editProfile': 'Edytuj ustawienia profilu tożsamości', + 'settings.gitIdentities.editor.description.globalReadOnly': 'Globalna tożsamość Git (tylko do odczytu)', + 'settings.gitIdentities.editor.description.newProfile': 'Utwórz nowy profil tożsamości Git', + 'settings.gitIdentities.editor.field.authMethod': 'Metoda uwierzytelniania', + 'settings.gitIdentities.editor.field.authToken': 'Token', + 'settings.gitIdentities.editor.field.color': 'Kolor', + 'settings.gitIdentities.editor.field.emailAddress': 'Adres e-mail', + 'settings.gitIdentities.editor.field.emailAddressPlaceholder': 'john@example.com', + 'settings.gitIdentities.editor.field.emailAddressTooltip': 'Powinien być zgodny z Twoim adresem e-mail w GitHub/GitLab dla prawidłowej atrybucji.', + 'settings.gitIdentities.editor.field.host': 'Host', + 'settings.gitIdentities.editor.field.hostPlaceholder': 'github.com', + 'settings.gitIdentities.editor.field.hostTooltip': 'Token zostanie odczytany z pliku ~/.git-credentials dla tego hosta.', + 'settings.gitIdentities.editor.field.icon': 'Icon', + 'settings.gitIdentities.editor.field.profileName': 'Nazwa profilu', + 'settings.gitIdentities.editor.field.profileNamePlaceholder': 'Profil służbowy, prywatny itp.', + 'settings.gitIdentities.editor.field.sshKeyPath': 'Ścieżka do klucza SSH', + 'settings.gitIdentities.editor.field.sshKeyPathPlaceholder': '~/.ssh/id_ed25519', + 'settings.gitIdentities.editor.field.sshKeyPathTooltip': 'Opcjonalna ścieżka do klucza prywatnego, np. ~/.ssh/id_ed25519', + 'settings.gitIdentities.editor.field.userName': 'Nazwa użytkownika', + 'settings.gitIdentities.editor.field.userNamePlaceholder': 'Jan Kowalski', + 'settings.gitIdentities.editor.field.userNameTooltip': 'Nazwa, która pojawi się w wiadomościach commitów Git.', + 'settings.gitIdentities.editor.title.editIdentity': 'Edytuj tożsamość', + 'settings.gitIdentities.editor.title.globalIdentity': 'Globalna tożsamość', + 'settings.gitIdentities.editor.title.importCredential': 'Importuj dane uwierzytelniające', + 'settings.gitIdentities.editor.title.newIdentity': 'Nowa tożsamość', + 'settings.gitIdentities.editor.toast.createProfileFailed': 'Failed to create profile', + 'settings.gitIdentities.editor.toast.deleteProfileFailed': 'Nie udało się usunąć profilu', + 'settings.gitIdentities.editor.toast.deleteUnexpectedError': 'Wystąpił błąd podczas usuwania', + 'settings.gitIdentities.editor.toast.hostRequiredForToken': 'Host jest wymagany dla uwierzytelniania opartego na tokenie', + 'settings.gitIdentities.editor.toast.profileCreated': 'Profil utworzony', + 'settings.gitIdentities.editor.toast.profileDeleted': 'Profil usunięty', + 'settings.gitIdentities.editor.toast.profileUpdated': 'Profil zaktualizowany', + 'settings.gitIdentities.editor.toast.saveUnexpectedError': 'Wystąpił błąd podczas zapisywania', + 'settings.gitIdentities.editor.toast.updateProfileFailed': 'Nie udało się zaktualizować profilu', + 'settings.gitIdentities.editor.toast.userNameEmailRequired': 'Nazwa użytkownika i e-mail są wymagane', + 'settings.gitIdentities.page.actions.import': 'Importuj', + 'settings.gitIdentities.page.actions.setAsDefault': 'Ustaw jako domyślny', + 'settings.gitIdentities.page.actions.unsetDefault': 'Usuń domyślny', + 'settings.gitIdentities.page.badge.default': 'domyślny', + 'settings.gitIdentities.page.deleteDialog.description': 'Czy na pewno chcesz usunąć "{name}"?', + 'settings.gitIdentities.page.deleteDialog.title': 'Usuń profil', + 'settings.gitIdentities.page.discoveredCredentials.title': 'Znaleziono w ~/.git-credentials', + 'settings.gitIdentities.page.empty.description': 'Utwórz profil, aby zarządzać ustawieniami autora Git dla każdego projektu', + 'settings.gitIdentities.page.empty.title': 'Brak skonfigurowanych tożsamości', + 'settings.gitIdentities.page.section.title': 'Tożsamości', + 'settings.gitIdentities.page.toast.defaultUnset': 'Domyślna tożsamość została usunięta', + 'settings.gitIdentities.page.toast.defaultUpdated': 'Domyślna tożsamość została zaktualizowana', + 'settings.gitIdentities.page.toast.deleteProfileFailed': 'Nie udało się usunąć profilu', + 'settings.gitIdentities.page.toast.profileDeleted': 'Profil "{name}" został usunięty', + 'settings.gitIdentities.page.toast.updateDefaultFailed': 'Nie udało się zaktualizować domyślnej tożsamości', + 'settings.github.page.actions.addAccount': 'Dodaj konto', + 'settings.github.page.actions.connect': 'Połącz z GitHub', + 'settings.github.page.actions.disconnect': 'Odłącz', + 'settings.github.page.actions.openGithub': 'Otwórz GitHub', + 'settings.github.page.actions.switchTo': 'Przełącz na', + 'settings.github.page.avatarAlt.fallback': 'Awatar GitHub', + 'settings.github.page.avatarAlt.withLogin': 'Awatar {login}', + 'settings.github.page.flow.description': 'W GitHub wpisz poniższy kod, aby autoryzować to urządzenie:', + 'settings.github.page.flow.title': 'Autoryzuj OpenChamber', + 'settings.github.page.flow.waiting': 'Oczekiwanie na zatwierdzenie... (automatyczne odświeżanie)', + 'settings.github.page.label.otherAccounts': 'Inne konta', + 'settings.github.page.label.scopes': 'Zakresy: {value}', + 'settings.github.page.label.unknownUser': 'nieznany', + 'settings.github.page.status.active': 'Aktywne', + 'settings.github.page.status.notConnected': 'Brak połączenia', + 'settings.github.page.toast.accountSwitchFailed': 'Nie udało się przełączyć konta GitHub', + 'settings.github.page.toast.accountSwitched': 'Konto GitHub zostało przełączone', + 'settings.github.page.toast.authorizationFailed': 'Autoryzacja GitHub nie powiodła się', + 'settings.github.page.toast.connected': 'Połączono z GitHub', + 'settings.github.page.toast.disconnectFailed': 'Nie udało się odłączyć GitHub', + 'settings.github.page.toast.disconnected': 'Odłączono od GitHub', + 'settings.github.page.toast.startConnectFailed': 'Nie udało się rozpocząć połączenia z GitHub', + 'settings.github.page.tooltip.connectAccount': 'Połącz konto GitHub, aby korzystać z przepływów pracy dla PR i Issue w aplikacji.', + 'settings.magicPrompts.page.actions.resetAllOverrides': 'Zresetuj wszystkie nadpisania', + 'settings.magicPrompts.page.actions.resetToDefault': 'Zresetuj do domyślnych', + 'settings.magicPrompts.page.actions.resetting': 'Resetowanie...', + 'settings.magicPrompts.page.actions.save': 'Save', + 'settings.magicPrompts.page.block.instructions': 'Instructions', + 'settings.magicPrompts.page.block.visiblePrompt': 'Visible Prompt', + 'settings.magicPrompts.page.group.gitCherrypickConflictResolve.description': 'Prompts used when resolving cherry-pick conflicts in integrate flow.', + 'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick Conflict Resolution', + 'settings.magicPrompts.page.group.gitCommitGenerate.description': 'Prompts used for commit message generation: visible user message + hidden instructions.', + 'settings.magicPrompts.page.group.gitCommitGenerate.title': 'Commit Generation', + 'settings.magicPrompts.page.group.gitConflictResolve.description': 'Prompts used when resolving merge/rebase conflicts with AI.', + 'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase Conflict Resolution', + 'settings.magicPrompts.page.group.gitPrGenerate.description': 'Prompts used for PR title/body generation: visible user message + hidden instructions.', + 'settings.magicPrompts.page.group.gitPrGenerate.title': 'Generowanie PR', + 'settings.magicPrompts.page.group.githubIssueReview.description': 'Prompty używane w przepływie przeglądu Issue: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.', + 'settings.magicPrompts.page.group.githubIssueReview.title': 'Przegląd Issue', + 'settings.magicPrompts.page.group.githubPrCommentsReview.description': 'Prompty używane do analizy komentarzy w PR.', + 'settings.magicPrompts.page.group.githubPrCommentsReview.title': 'Przegląd komentarzy PR', + 'settings.magicPrompts.page.group.githubPrFailedChecksReview.description': 'Prompty używane do analizy nieudanych sprawdzeń (checks) w PR.', + 'settings.magicPrompts.page.group.githubPrFailedChecksReview.title': 'Przegląd nieudanych sprawdzeń PR', + 'settings.magicPrompts.page.group.githubPrReview.description': 'Prompty używane w przepływie przeglądu PR: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.', + 'settings.magicPrompts.page.group.githubPrReview.title': 'Przegląd PR', + 'settings.magicPrompts.page.group.githubSinglePrCommentReview.description': 'Prompty używane do analizy pojedynczego komentarza w PR.', + 'settings.magicPrompts.page.group.githubSinglePrCommentReview.title': 'Przegląd pojedynczego komentarza PR', + 'settings.magicPrompts.page.group.planImplement.description': 'Ukryty prompt używany podczas przesyłania zapisanego planu do przepływu implementacji.', + 'settings.magicPrompts.page.group.planImplement.title': 'Implementuj Plan', + 'settings.magicPrompts.page.group.planImprove.description': 'Ukryty prompt używany podczas przesyłania zapisanego planu do przepływu ulepszania.', + 'settings.magicPrompts.page.group.planImprove.title': 'Ulepsz Plan', + 'settings.magicPrompts.page.group.planTodo.description': 'Ukryty prompt używany podczas przesyłania zadania (todo) do nowej sesji planowania.', + 'settings.magicPrompts.page.group.planTodo.title': 'Planowanie Todo', + 'settings.magicPrompts.page.group.sessionSummary.description': 'Prompty używane przez polecenie /summary: widoczna wiadomość użytkownika + ukryte instrukcje. Niedestrukcyjne – nie kompaktuje historii sesji.', + 'settings.magicPrompts.page.group.sessionSummary.title': 'Podsumowanie Sesji', + 'settings.magicPrompts.page.group.sessionWorkspaceReview.description': 'Prompty używane przez polecenie /workspace-review: widoczna wiadomość użytkownika + ukryte instrukcje. Przegląda zmiany w bieżącym obszarze roboczym tylko pod kątem istotnych problemów.', + 'settings.magicPrompts.page.group.sessionWorkspaceReview.title': 'Przegląd obszaru roboczego', + 'settings.magicPrompts.page.loading.aria': 'Ładowanie', + 'settings.magicPrompts.page.loading.text': 'Ładowanie Magicznych Promptów...', + 'settings.magicPrompts.page.placeholdersLabel': 'Placeholdery:', + 'settings.magicPrompts.page.status.unsavedChanges': 'Niezapisane zmiany', + 'settings.magicPrompts.page.status.usingBuiltinDefault': 'Używa domyślnych ustawień wbudowanych', + 'settings.magicPrompts.page.status.usingSavedOverride': 'Używa zapisanego nadpisania', + 'settings.magicPrompts.page.toast.loadFailed': 'Nie udało się załadować Magicznych Promptów', + 'settings.magicPrompts.page.toast.resetAllFailed': 'Nie udało się zresetować wszystkich promptów', + 'settings.magicPrompts.page.toast.resetAllSuccess': 'Wszystkie nadpisania promptów zostały zresetowane', + 'settings.magicPrompts.page.toast.resetFailed': 'Nie udało się zresetować promptu', + 'settings.magicPrompts.page.toast.resetSuccess': 'Prompt został zresetowany do domyślnych ustawień', + 'settings.magicPrompts.page.toast.saveFailed': 'Nie udało się zapisać magicznego promptu', + 'settings.magicPrompts.page.toast.saved': 'Magiczny prompt został zapisany', + 'settings.magicPrompts.page.toast.visiblePromptRequired': 'Widoczny prompt nie może być pusty', + 'settings.magicPrompts.page.validation.visiblePromptRequired': 'Widoczny prompt nie może być pusty.', + 'settings.magicPrompts.sidebar.description': 'Wybierz szablon promptu, aby go edytować.', + 'settings.magicPrompts.sidebar.group.git': 'Git', + 'settings.magicPrompts.sidebar.group.github': 'GitHub', + 'settings.magicPrompts.sidebar.group.planning': 'Planowanie', + 'settings.magicPrompts.sidebar.group.session': 'Sesja', + 'settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve': 'Rozwiązywanie konfliktów Cherry-pick', + 'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Generowanie commitów', + 'settings.magicPrompts.sidebar.item.gitConflictResolve': 'Rozwiązywanie konfliktów Merge/Rebase', + 'settings.magicPrompts.sidebar.item.gitPrGenerate': 'Generowanie PR', + 'settings.magicPrompts.sidebar.item.githubIssueReview': 'Przegląd Issue', + 'settings.magicPrompts.sidebar.item.githubPrCommentsReview': 'Przegląd komentarzy PR', + 'settings.magicPrompts.sidebar.item.githubPrFailedChecksReview': 'Przegląd nieudanych sprawdzeń PR', + 'settings.magicPrompts.sidebar.item.githubPrReview': 'Przegląd PR', + 'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': 'Przegląd pojedynczego komentarza PR', + 'settings.magicPrompts.sidebar.item.planImplement': 'Implementuj Plan', + 'settings.magicPrompts.sidebar.item.planImprove': 'Ulepsz Plan', + 'settings.magicPrompts.sidebar.item.planTodo': 'Planowanie Todo', + 'settings.magicPrompts.sidebar.item.sessionSummary': 'Podsumowanie Sesji', + 'settings.magicPrompts.sidebar.item.sessionWorkspaceReview': 'Przegląd obszaru roboczego', + 'settings.magicPrompts.sidebar.title': 'Magiczne Prompty', + 'settings.mcp.page.actions.authorize': 'Autoryzuj', + 'settings.mcp.page.actions.clearAuth': 'Wyczyść autoryzację', + 'settings.mcp.page.actions.clearing': 'Wyczyszczanie...', + 'settings.mcp.page.actions.completeAuthorization': 'Zakończ autoryzację', + 'settings.mcp.page.actions.completing': 'Zakończenie...', + 'settings.mcp.page.actions.connect': 'Połącz', + 'settings.mcp.page.actions.copyLink': 'Kopiuj link', + 'settings.mcp.page.actions.deleting': 'Usuwanie...', + 'settings.mcp.page.actions.disconnect': 'Odłącz', + 'settings.mcp.page.actions.openInBrowser': 'Otwórz w przeglądarce', + 'settings.mcp.page.actions.reauthorize': 'Ponowna autoryzacja', + 'settings.mcp.page.actions.starting': 'Uruchamianie...', + 'settings.mcp.page.actions.test': 'Testuj', + 'settings.mcp.page.actions.testConnection': 'Testuj połączenie', + 'settings.mcp.page.actions.testing': 'Testowanie...', + 'settings.mcp.page.actions.working': 'Praca...', + 'settings.mcp.page.advanced.autoDetect': 'Autowykrywanie', + 'settings.mcp.page.advanced.configure': 'Skonfiguruj zaawansowane opcje', + 'settings.mcp.page.advanced.custom': 'Własne', + 'settings.mcp.page.advanced.headerNamePlaceholder': 'Nazwa-Nagłówka', + 'settings.mcp.page.advanced.headers': 'nagłówki', + 'settings.mcp.page.advanced.oauthAutoDetection': 'Włącz autowykrywanie OAuth', + 'settings.mcp.page.advanced.oauthAutoDetectionAria': 'Włącz autowykrywanie OAuth', + 'settings.mcp.page.advanced.oauthCallbackHint': 'Autoryzacja MCP w przeglądarce używa tego adresu callback, gdy URI przekierowania jest pusty:', + 'settings.mcp.page.advanced.oauthClientIdPlaceholder': 'OAuth Client ID', + 'settings.mcp.page.advanced.oauthClientSecretPlaceholder': 'OAuth Client Secret', + 'settings.mcp.page.advanced.oauthHint': 'Pozostaw te pola puste, aby OpenCode mógł automatycznie odczytać ustawienia OAuth z serwera MCP.', + 'settings.mcp.page.advanced.oauthRedirectUriPlaceholder': 'Redirect URI', + 'settings.mcp.page.advanced.oauthScopesPlaceholder': 'Zakresy (rozdzielone spacją)', + 'settings.mcp.page.advanced.pasteHeaders': 'Wklej nagłówki', + 'settings.mcp.page.advanced.pasteHeadersTitle': 'Wklej linie nagłówków w formacie KLUCZ=WARTOŚĆ ze schowka', + 'settings.mcp.page.advanced.requestHeaders': 'Nagłówki żądań', + 'settings.mcp.page.advanced.timeoutHint': 'Pozostaw puste, aby użyć domyślnych ustawień OpenCode', + 'settings.mcp.page.advanced.timeoutMs': 'Czas oczekiwania (ms)', + 'settings.mcp.page.advanced.title': 'Zaawansowane opcje zdalne', + 'settings.mcp.page.auth.authorizationUrl': 'URL autoryzacji', + 'settings.mcp.page.auth.callbackInputPlaceholder': 'Wklej URL callback lub kod autoryzacyjny', + 'settings.mcp.page.auth.manualFallbackDescription': 'Jeśli przeglądarka przekieruje do innej maszyny lub wyświetli URL callback z kodem, wklej tutaj pełny URL lub sam kod.', + 'settings.mcp.page.auth.manualFallbackTitle': 'Ręczna autoryzacja alternatywna', + 'settings.mcp.page.auth.waitingForOpenCode': 'Oczekiwanie na OpenCode, aż zauważy zakończony proces autoryzacji w przeglądarce...', + 'settings.mcp.page.connection.command': 'Polecenie', + 'settings.mcp.page.connection.pasteCommand': 'Wklej polecenie', + 'settings.mcp.page.connection.pasteCommandTitle': 'Wklej lokalne polecenie ze schowka i podziel je automatycznie', + 'settings.mcp.page.connection.previewArgs': 'Podgląd ({count} argumentów)', + 'settings.mcp.page.connection.serverUrl': 'URL serwera', + 'settings.mcp.page.connection.serverUrlPlaceholder': 'https://mcp.example.com/mcp', + 'settings.mcp.page.deleteDialog.descriptionPrefix': 'To usunie serwer z', + 'settings.mcp.page.deleteDialog.descriptionSuffix': 'OpenCode będzie musiał zostać przeładowany.', + 'settings.mcp.page.deleteDialog.title': 'Usuń "{name}"?', + 'settings.mcp.page.empty.addNewOne': 'lub dodaj nowy', + 'settings.mcp.page.empty.selectServer': 'Wybierz serwer MCP z paska bocznego', + 'settings.mcp.page.env.addEnvironmentVariable': 'Dodaj zmienną środowiskową', + 'settings.mcp.page.env.addVariable': 'Dodaj zmienną', + 'settings.mcp.page.env.hide': 'Ukryj', + 'settings.mcp.page.env.key': 'Klucz', + 'settings.mcp.page.env.keyPlaceholder': 'API_KEY', + 'settings.mcp.page.env.pasteEnv': 'Wklej .env', + 'settings.mcp.page.env.pasteEnvTitle': 'Wklej linie KLUCZ=WARTOŚĆ ze schowka', + 'settings.mcp.page.env.plainTextWarning': '⚠ Wartości są przechowywane jako zwykły tekst w opencode.json', + 'settings.mcp.page.env.removeVariableAria': 'Usuń zmienną', + 'settings.mcp.page.env.show': 'Pokaż', + 'settings.mcp.page.env.title': 'Zmienne środowiskowe', + 'settings.mcp.page.env.value': 'Wartość', + 'settings.mcp.page.env.valuePlaceholder': 'wartość', + 'settings.mcp.page.header.configureNewServer': 'Skonfiguruj nowy serwer MCP', + 'settings.mcp.page.header.newServer': 'Nowy serwer MCP', + 'settings.mcp.page.header.transport': 'transport {type}', + 'settings.mcp.page.importDialog.description': 'Wklej pełny fragment JSON MCP z dokumentacji lub innego pliku konfiguracyjnego. Sparsowane wartości wypełnią ten formularz do przeglądu przed zapisaniem.', + 'settings.mcp.page.importDialog.pasteFromClipboard': 'Wklej JSON ze schowka', + 'settings.mcp.page.importDialog.title': 'Importuj fragment JSON', + 'settings.mcp.page.server.enable': 'Włącz serwer', + 'settings.mcp.page.server.enableAria': 'Włącz serwer', + 'settings.mcp.page.server.importJson': 'Importuj z fragmentu JSON', + 'settings.mcp.page.server.importJsonTitle': 'Importuj pełną konfigurację serwera MCP z fragmentu JSON', + 'settings.mcp.page.server.name': 'Nazwa serwera', + 'settings.mcp.page.server.namePlaceholder': 'moj-serwer-mcp', + 'settings.mcp.page.server.title': 'Serwer', + 'settings.mcp.page.server.transportMode': 'Tryb transportu', + 'settings.mcp.page.status.activeProject': 'aktywnego projektu', + 'settings.mcp.page.status.description.connected': 'Połączono i gotowy do odkrywania narzędzi i zasobów przez OpenCode.', + 'settings.mcp.page.status.description.default': 'Odśwież lub przetestuj połączenie, aby załadować aktualny status uruchomieniowy.', + 'settings.mcp.page.status.description.disabled': 'Ten serwer MCP jest wyłączony w konfiguracji.', + 'settings.mcp.page.status.description.failedDefault': 'OpenCode nie mógł połączyć się z tym serwerem MCP.', + 'settings.mcp.page.status.description.needsAuth': 'Ten zdalny serwer MCP wymaga autoryzacji przed połączeniem.', + 'settings.mcp.page.status.description.needsClientRegistrationDefault': 'Ten zdalny serwer MCP wymaga rejestracji klienta przed zakończeniem autoryzacji.', + 'settings.mcp.page.status.label.connected': 'Połączono', + 'settings.mcp.page.status.label.failed': 'Błąd', + 'settings.mcp.page.status.label.needsAuth': 'Wymaga autoryzacji', + 'settings.mcp.page.status.label.needsRegistration': 'Wymaga rejestracji', + 'settings.mcp.page.status.projectScopedTo': 'Ograniczony do projektu w {directory}', + 'settings.mcp.page.status.runtimeStatus': 'Status uruchomieniowy', + 'settings.mcp.page.status.userScoped': 'Konfiguracja użytkownika', + 'settings.mcp.page.toast.authSessionExpired': 'Sesja autoryzacji wygasła lub została wyczyszczona podczas przeładowania. Kliknij Autoryzuj ponownie.', + 'settings.mcp.page.toast.authorizationCompleteFailed': 'Nie udało się zakończyć autoryzacji MCP', + 'settings.mcp.page.toast.authorizationCompleted': 'Autoryzacja MCP zakończona', + 'settings.mcp.page.toast.authorizationCompletedFor': 'Autoryzacja MCP zakończona dla {name}', + 'settings.mcp.page.toast.authorizationFailed': 'Autoryzacja nie powiodła się', + 'settings.mcp.page.toast.authorizationStartFailed': 'Nie udało się rozpocząć autoryzacji', + 'settings.mcp.page.toast.authorizationStillInProgress': 'Autoryzacja wciąż trwa w Twojej przeglądarce. W razie potrzeby wklej URL callback lub kod.', + 'settings.mcp.page.toast.authorizationUrlCopied': 'URL autoryzacji został skopiowany', + 'settings.mcp.page.toast.authorizationUrlCopyFailed': 'Nie udało się skopiować URL autoryzacji', + 'settings.mcp.page.toast.clearAuthorizationFailed': 'Nie udało się wyczyścić autoryzacji', + 'settings.mcp.page.toast.clipboardReadFailed': 'Nie można odczytać schowka', + 'settings.mcp.page.toast.completeAuthorizationInBrowser': 'Zakończ proces autoryzacji MCP w swojej przeglądarce', + 'settings.mcp.page.toast.completeAuthorizationInBrowserWithPaste': 'Zakończ proces autoryzacji MCP w przeglądarce, a następnie wklej zwrócony kod lub URL callback tutaj', + 'settings.mcp.page.toast.configImported': 'Konfiguracja MCP została zaimportowana', + 'settings.mcp.page.toast.connected': 'Połączono', + 'settings.mcp.page.toast.connectionAttemptFinished': 'Próba połączenia zakończona. Odśwież status, aby zobaczyć szczegóły.', + 'settings.mcp.page.toast.connectionFailed': 'Połączenie nie powiodło się', + 'settings.mcp.page.toast.connectionNeedsAuthorization': 'Połączenie wymaga autoryzacji', + 'settings.mcp.page.toast.connectionNeedsClientRegistration': 'Połączenie wymaga rejestracji klienta', + 'settings.mcp.page.toast.connectionTestFailed': 'Test połączenia nie powiódł się', + 'settings.mcp.page.toast.connectionTestFinished': 'Test połączenia zakończony. Odśwież status, aby zobaczyć szczegóły.', + 'settings.mcp.page.toast.connectionTestSucceeded': 'Test połączenia powiódł się', + 'settings.mcp.page.toast.createServerBeforeLiveActions': 'Utwórz serwer przed uruchomieniem akcji na żywo', + 'settings.mcp.page.toast.deleteFailed': 'Nie udało się usunąć', + 'settings.mcp.page.toast.disconnected': 'Odłączono', + 'settings.mcp.page.toast.enableServerBeforeTest': 'Włącz ten serwer przed przetestowaniem połączenia', + 'settings.mcp.page.toast.importedVariablesCount': 'Zaimportowane zmienne: {count}', + 'settings.mcp.page.toast.localCommandRequired': 'Polecenie nie może być puste dla serwera lokalnego', + 'settings.mcp.page.toast.missingServerDetails': 'Brak szczegółów serwera MCP. Wybierz serwer ponownie lub wklej pełny URL callback.', + 'settings.mcp.page.toast.nameRequired': 'Nazwa jest wymagana', + 'settings.mcp.page.toast.noKeyValuePairsFound': 'Nie znaleziono par KLUCZ=WARTOŚĆ w schowku', + 'settings.mcp.page.toast.oauthBrowserCallbackSaveFailed': 'Nie udało się zapisać URL callback przeglądarki dla autoryzacji MCP', + 'settings.mcp.page.toast.oauthRedirectUrlBuildFailed': 'Nie udało się zbudować URL przekierowania OAuth dla MCP', + 'settings.mcp.page.toast.openAuthorizationUrlFailed': 'Nie udało się automatycznie otworzyć URL autoryzacji', + 'settings.mcp.page.toast.openCodeReloadFailedAfterCallbackSave': 'Przeładowanie OpenCode nie powiodło się po zapisaniu URL callback przeglądarki', + 'settings.mcp.page.toast.pasteCallbackOrCodeFirst': 'Najpierw wklej URL callback lub kod autoryzacyjny', + 'settings.mcp.page.toast.pastedArgumentsCount': 'Wklejone argumenty: {count}', + 'settings.mcp.page.toast.refreshListIfStale': 'Odśwież listę MCP, jeśli interfejs wydaje się nieaktualny.', + 'settings.mcp.page.toast.refreshStatusFailed': 'Nie udało się odświeżyć statusu MCP', + 'settings.mcp.page.toast.remoteUrlRequired': 'URL nie może być pusty dla serwera zdalnego', + 'settings.mcp.page.toast.retryRefreshHint': 'Spróbuj odświeżyć ponownie lub otwórz Ustawienia jeszcze raz przed autoryzacją tego serwera.', + 'settings.mcp.page.toast.saveBeforeLiveActions': 'Zapisz zmiany przed uruchomieniem akcji na żywo', + 'settings.mcp.page.toast.saveFailed': 'Nie udało się zapisać', + 'settings.mcp.page.toast.savedAuthorizationRemoved': 'Zapisana autoryzacja MCP została usunięta', + 'settings.mcp.page.toast.savedReloadFailed': 'Zapisano, ale przeładowanie OpenCode nie powiodło się.', + 'settings.mcp.page.toast.savedReloading': 'Zapisano. Przeładowywanie OpenCode...', + 'settings.mcp.page.toast.serverCreatedReloadFailed': 'Serwer MCP utworzony, ale przeładowanie OpenCode nie powiodło się.', + 'settings.mcp.page.toast.serverCreatedReloading': 'Serwer MCP utworzony. Przeładowywanie OpenCode...', + 'settings.mcp.page.toast.serverDeleted': '"{name}" został usunięty', + 'settings.mcp.page.toast.serverDeletedReloadFailed': '"{name}" został usunięty, ale przeładowanie OpenCode nie powiodło się', + 'settings.mcp.page.toast.serverNameExists': 'Serwer o tej nazwie już istnieje', + 'settings.mcp.page.toast.unexpectedError': 'Wystąpił błąd', + 'settings.mcp.page.transport.local': 'Lokalny · stdio', + 'settings.mcp.page.transport.remote': 'Zdalny · SSE', + 'settings.mcp.sidebar.actions.addServerTitle': 'Dodaj serwer MCP', + 'settings.mcp.sidebar.actions.deleting': 'Usuwanie...', + 'settings.mcp.sidebar.actions.refreshStatusAria': 'Odśwież status MCP', + 'settings.mcp.sidebar.actions.refreshStatusTitle': 'Odśwież status MCP', + 'settings.mcp.sidebar.deleteDialog.descriptionPrefix': 'Czy na pewno chcesz usunąć "{name}"? To usunie go z', + 'settings.mcp.sidebar.deleteDialog.title': 'Usuń serwer MCP', + 'settings.mcp.sidebar.empty.description': 'Użyj przycisku +, aby dodać nowy', + 'settings.mcp.sidebar.empty.title': 'Brak skonfigurowanych serwerów MCP', + 'settings.mcp.sidebar.group.projectServers': 'Serwery projektu', + 'settings.mcp.sidebar.group.userServers': 'Serwery użytkownika', + 'settings.mcp.sidebar.serverType.localTitle': 'Serwer lokalny', + 'settings.mcp.sidebar.serverType.remoteTitle': 'Serwer zdalny', + 'settings.mcp.sidebar.title': 'Serwery MCP', + 'settings.mcp.sidebar.toast.deleteFailed': 'Nie udało się usunąć serwera MCP', + 'settings.mcp.sidebar.toast.refreshListIfStale': 'Odśwież listę MCP, jeśli interfejs wydaje się nieaktualny.', + 'settings.mcp.sidebar.toast.serverDeleted': 'Serwer MCP "{name}" został usunięty', + 'settings.mcp.sidebar.total': 'Suma: {count}', + 'settings.notifications.page.delivery.browserPermissionHint': 'Twoja przeglądarka może poprosić o uprawnienia przy pierwszym uruchomieniu.', + 'settings.notifications.page.delivery.enableAria': 'Włącz powiadomienia', + 'settings.notifications.page.delivery.enableLabel': 'Włącz powiadomienia', + 'settings.notifications.page.delivery.focusedAria': 'Powiadamiaj, gdy aplikacja jest w centrum uwagi', + 'settings.notifications.page.delivery.focusedLabel': 'Powiadamiaj, gdy aplikacja jest w centrum uwagi', + 'settings.notifications.page.delivery.permissionDenied': 'Odmówiono uprawnień do powiadomień. Włącz je w ustawieniach przeglądarki.', + 'settings.notifications.page.delivery.permissionGrantedButDisabled': 'Uprawnienia przyznano, ale powiadomienia są wyłączone.', + 'settings.notifications.page.delivery.testAction': 'Wyślij powiadomienie testowe', + 'settings.notifications.page.delivery.title': 'Dostarczanie powiadomień', + 'settings.notifications.page.delivery.vscodeHint': 'Jeśli jest włączone, powiadomienia są dostarczane za pomocą natywnych powiadomień VS Code.', + 'settings.notifications.page.events.completionAria': 'Zakończenie pracy agenta', + 'settings.notifications.page.events.completionLabel': 'Zakończenie pracy agenta', + 'settings.notifications.page.events.errorAria': 'Błędy agenta', + 'settings.notifications.page.events.errorLabel': 'Błędy agenta', + 'settings.notifications.page.events.questionAria': 'Pytania agenta', + 'settings.notifications.page.events.questionLabel': 'Pytania agenta', + 'settings.notifications.page.events.subtaskAria': 'Zakończenie pracy podagenta', + 'settings.notifications.page.events.subtaskLabel': 'Zakończenie pracy podagenta', + 'settings.notifications.page.events.title': 'Zdarzenia powiadomień', + 'settings.notifications.page.push.enableAria': 'Włącz powiadomienia push', + 'settings.notifications.page.push.enableLabel': 'Włącz powiadomienia push', + 'settings.notifications.page.push.loadingAria': 'Ładowanie', + 'settings.notifications.page.push.supportedHint': 'Otrzymuj powiadomienia za pomocą usługi tła systemu operacyjnego', + 'settings.notifications.page.push.title': 'Powiadomienia Push w tle', + 'settings.notifications.page.push.unsupportedHint': 'Push nie jest wspierany. Wsparcie dla push posiadają Desktop Chrome/Edge oraz Android. iOS wymaga zainstalowanej aplikacji PWA.', + 'settings.notifications.page.summary.lengthHint': 'Docelowa długość podsumowania w znakach', + 'settings.notifications.page.summary.lengthLabel': 'Długość', + 'settings.notifications.page.summary.maxLengthHint': 'Otnij {last_message} do tej długości', + 'settings.notifications.page.summary.maxLengthLabel': 'Maksymalna długość', + 'settings.notifications.page.summary.modelLabel': 'Model podsumowywania', + 'settings.notifications.page.summary.modelTooltip': 'Używany do podsumowań w powiadomieniach i głosie.', + 'settings.notifications.page.summary.notSelected': 'Nie wybrano', + 'settings.notifications.page.summary.requiresTemplateVariable': 'Wymaga', + 'settings.notifications.page.summary.resetLengthAria': 'Zresetuj długość podsumowania', + 'settings.notifications.page.summary.resetMaxLengthAria': 'Zresetuj maksymalną długość wiadomości', + 'settings.notifications.page.summary.resetThresholdAria': 'Zresetuj próg', + 'settings.notifications.page.summary.thresholdHint': 'Wiadomości dłuższe niż ta wartość zostaną podsumowane', + 'settings.notifications.page.summary.thresholdLabel': 'Próg', + 'settings.notifications.page.summary.title': 'Podsumowywanie AI', + 'settings.notifications.page.summary.toggleAria': 'Podsumuj ostatnią wiadomość', + 'settings.notifications.page.summary.toggleLabel': 'Podsumuj ostatnią wiadomość', + 'settings.notifications.page.template.defaults.completion.message': '{model_name} zakończył zadanie', + 'settings.notifications.page.template.defaults.completion.title': '{agent_name} jest gotowy', + 'settings.notifications.page.template.defaults.error.message': '{last_message}', + 'settings.notifications.page.template.defaults.error.title': 'Błąd narzędzia', + 'settings.notifications.page.template.defaults.question.message': '{last_message}', + 'settings.notifications.page.template.defaults.question.title': 'Wymagane dane wejściowe', + 'settings.notifications.page.template.defaults.subtask.message': '{model_name} zakończył zadanie', + 'settings.notifications.page.template.defaults.subtask.title': '{agent_name} jest gotowy', + 'settings.notifications.page.template.event.completion': 'zakończenie', + 'settings.notifications.page.template.event.error': 'błąd', + 'settings.notifications.page.template.event.question': 'pytanie', + 'settings.notifications.page.template.event.subtask': 'Zakończenie pracy podagenta', + 'settings.notifications.page.template.field.message': 'Wiadomość', + 'settings.notifications.page.template.field.title': 'Tytuł', + 'settings.notifications.page.template.title': 'Szablony powiadomień', + 'settings.notifications.page.template.variablesLabel': 'Zmienne:', + 'settings.notifications.page.testNotification.body': 'To jest powiadomienie testowe z OpenChamber.', + 'settings.notifications.page.testNotification.title': 'Powiadomienie testowe', + 'settings.notifications.page.toast.backgroundDisabled': 'Powiadomienia w tle zostały wyłączone', + 'settings.notifications.page.toast.backgroundEnabled': 'Powiadomienia w tle zostały włączone', + 'settings.notifications.page.toast.enableBackgroundFailed': 'Nie udało się włączyć powiadomień w tle', + 'settings.notifications.page.toast.notificationsApiUnavailable': 'API powiadomień jest niedostępne', + 'settings.notifications.page.toast.permissionDenied.description': 'Włącz powiadomienia w ustawieniach przeglądarki.', + 'settings.notifications.page.toast.permissionDenied.enableInBrowser': 'Włącz powiadomienia w ustawieniach przeglądarki.', + 'settings.notifications.page.toast.permissionDenied.title': 'Odmówiono uprawnień do powiadomień', + 'settings.notifications.page.toast.pushApiUnavailable': 'API Push jest niedostępne', + 'settings.notifications.page.toast.pushKeyLoadFailed': 'Nie udało się załadować klucza push', + 'settings.notifications.page.toast.pushUnsupported': 'Powiadomienia push nie są wspierane', + 'settings.notifications.page.toast.requestPermissionFailed': 'Nie udało się poprosić o uprawnienia do powiadomień', + 'settings.notifications.page.toast.testNotificationFailed': 'Nie udało się wysłać powiadomienia testowego', + 'settings.notifications.page.toast.testNotificationSent': 'Powiadomienie testowe zostało wysłane pomyślnie', + 'settings.openchamber.about.actions.checkForUpdates': 'Sprawdź aktualizacje', + 'settings.openchamber.about.actions.checkUpdates': 'Sprawdź aktualizacje', + 'settings.openchamber.about.actions.update': 'Aktualizuj', + 'settings.openchamber.about.actions.updateToVersion': 'Aktualizuj do wersji {version}', + 'settings.openchamber.about.field.version': 'Wersja', + 'settings.openchamber.about.state.checking': 'Sprawdzanie...', + 'settings.openchamber.about.state.upToDate': 'Aktualna wersja', + 'settings.openchamber.about.title': 'O OpenChamber', + 'settings.openchamber.about.toast.latestVersion': 'Używasz najnowszej wersji', + 'settings.openchamber.defaults.field.defaultAgent': 'Domyślny Agent', + 'settings.openchamber.defaults.field.defaultModel': 'Domyślny Model', + 'settings.openchamber.defaults.field.defaultThinking': 'Domyślne Myślenie', + 'settings.openchamber.defaults.field.openFilesPreview': 'Otwieraj pliki w trybie podglądu', + 'settings.openchamber.defaults.field.openFilesPreviewAria': 'Otwieraj pliki w trybie podglądu', + 'settings.openchamber.defaults.field.showDeletionDialog': 'Pokaż dialog usuwania', + 'settings.openchamber.defaults.field.showDeletionDialogAria': 'Pokaż dialog usuwania', + 'settings.openchamber.defaults.field.thinkingPlaceholder': 'Myślenie', + 'settings.openchamber.defaults.option.default': 'Domyślne', + 'settings.openchamber.defaults.option.defaultLowercase': 'domyślne', + 'settings.openchamber.defaults.summaryOpenCodeDefault': 'Domyślny agent OpenCode', + 'settings.openchamber.defaults.summaryPrefix': 'Nowe sesje będą rozpoczynać się od:', + 'settings.openchamber.defaults.title': 'Domyślne ustawienia sesji', + 'settings.openchamber.desktopNetwork.actions.saveAndRestart': 'Zapisz + Zrestartuj', + 'settings.openchamber.desktopNetwork.error.loadFailed': 'Nie udało się załadować ustawień pulpitu', + 'settings.openchamber.desktopNetwork.error.saveFailed': 'Nie udało się zapisać ustawień pulpitu', + 'settings.openchamber.desktopNetwork.error.savedRestartFailed': 'Zapisano, ale restart aplikacji nie powiódł się', + 'settings.openchamber.desktopNetwork.field.allowLanAccess': 'Pozwól innym urządzeniom w sieci lokalnej otwierać tę aplikację', + 'settings.openchamber.desktopNetwork.field.allowLanAccessAria': 'Zezwól na dostęp LAN do sidecara pulpitu', + 'settings.openchamber.desktopNetwork.field.allowLanAccessDescription': 'Restartuje aplikację, aby telefony, tablety i inne komputery w Twojej sieci Wi-Fi mogły ją otworzyć.', + 'settings.openchamber.desktopNetwork.field.warning': 'Ostrzeżenie: po włączeniu aplikacja jest dostępna dla każdego w tej samej sieci lokalnej.', + 'settings.openchamber.desktopNetwork.hint.openAfterRestart': 'Po restarcie otwórz z innego urządzenia: ', + 'settings.openchamber.desktopNetwork.hint.openNow': 'Otwórz z innego urządzenia: ', + 'settings.openchamber.desktopNetwork.title': 'Dostęp sieciowy pulpitu', + 'settings.openchamber.git.changesViewAria': 'Tryb widoku zmian Git', + 'settings.openchamber.git.changesViewTitle': 'Widok zmian', + 'settings.openchamber.git.enableGitmoji': 'Włącz wybieranie Gitmoji', + 'settings.openchamber.git.enableGitmojiAria': 'Włącz wybieranie Gitmoji', + 'settings.openchamber.git.option.flatList': 'Płaska lista', + 'settings.openchamber.git.option.treeView': 'Widok drzewa', + 'settings.openchamber.git.optionAria': 'Tryb widoku zmian Git: {option}', + 'settings.openchamber.git.showGitignored': 'Wyświetlaj pliki zignorowane przez Git', + 'settings.openchamber.git.showGitignoredAria': 'Wyświetlaj pliki zignorowane przez Git', + 'settings.openchamber.git.title': 'Preferencje Git', + 'settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_backward.label': 'Przełącz ulubiony model wstecz', + 'settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_forward.label': 'Przełącz ulubiony model w przód', + 'settings.openchamber.keyboardShortcuts.action.cycle_right_sidebar_tab.label': 'Przełącz zakładkę prawego paska bocznego', + 'settings.openchamber.keyboardShortcuts.action.cycle_services_tab.label': 'Przełącz zakładkę usług', + 'settings.openchamber.keyboardShortcuts.action.cycle_theme.label': 'Przełącz motyw', + 'settings.openchamber.keyboardShortcuts.action.expand_input.label': 'Rozwiń pole wprowadzania', + 'settings.openchamber.keyboardShortcuts.action.focus_input.label': 'Skup pole wprowadzania', + 'settings.openchamber.keyboardShortcuts.action.new_chat.label': 'Nowa sesja', + 'settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label': 'Nowy szkic obszaru roboczego', + 'settings.openchamber.keyboardShortcuts.action.open_command_palette.label': 'Otwórz paletę poleceń', + 'settings.openchamber.keyboardShortcuts.action.open_go_to_line.label': 'Przejdź do linii (edytor plików)', + 'settings.openchamber.keyboardShortcuts.action.open_help.label': 'Otwórz skróty klawiszowe', + 'settings.openchamber.keyboardShortcuts.action.open_right_sidebar_files.label': 'Otwórz zakładkę Pliki w prawym pasku bocznym', + 'settings.openchamber.keyboardShortcuts.action.open_right_sidebar_git.label': 'Otwórz zakładkę Git w prawym pasku bocznym', + 'settings.openchamber.keyboardShortcuts.action.open_settings.label': 'Otwórz ustawienia', + 'settings.openchamber.keyboardShortcuts.action.toggle_context_plan.label': 'Przełącz panel kontekstu planu', + 'settings.openchamber.keyboardShortcuts.action.toggle_right_sidebar.label': 'Przełącz prawy pasek boczny', + 'settings.openchamber.keyboardShortcuts.action.toggle_services_menu.label': 'Przełącz menu usług', + 'settings.openchamber.keyboardShortcuts.action.toggle_sidebar.label': 'Przełącz pasek boczny', + 'settings.openchamber.keyboardShortcuts.action.toggle_terminal.label': 'Przełącz dokowanie terminala', + 'settings.openchamber.keyboardShortcuts.action.toggle_terminal_expanded.label': 'Przełącz rozszerzony terminal', + 'settings.openchamber.keyboardShortcuts.actions.overwrite': 'Nadpisz', + 'settings.openchamber.keyboardShortcuts.actions.resetAll': 'Zresetuj wszystko', + 'settings.openchamber.keyboardShortcuts.error.captureFirst': 'Najpierw przechwyć skrót.', + 'settings.openchamber.keyboardShortcuts.field.pressKeys': 'Naciśnij klawisze...', + 'settings.openchamber.keyboardShortcuts.overwritePrompt': 'Ta kombinacja jest już używana przez inny skrót. Nadpisać i wyczyścić to inne przypisanie?', + 'settings.openchamber.keyboardShortcuts.title': 'Skróty klawiszowe', + 'settings.openchamber.keyboardShortcuts.tooltip': 'Przechwyć nową kombinację klawiszy, zapisz ją, a przypisania zostaną natychmiast zaktualizowane.', + 'settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut': 'Ten skrót może kolidować z domyślnymi skrótami przeglądarki. Został jednak zapisany.', + 'settings.openchamber.opencodeCli.actions.browse': 'Przeglądaj', + 'settings.openchamber.opencodeCli.actions.browseAria': 'Przeglądaj ścieżkę do pliku binarnego OpenCode', + 'settings.openchamber.opencodeCli.actions.restartingOpenCode': 'Restartowanie OpenCode...', + 'settings.openchamber.opencodeCli.actions.saveAndReload': 'Zapisz + Przeładuj', + 'settings.openchamber.opencodeCli.dialog.selectBinaryTitle': 'Wybierz plik binarny opencode', + 'settings.openchamber.opencodeCli.field.binaryPath': 'Ścieżka do pliku binarnego OpenCode', + 'settings.openchamber.opencodeCli.field.binaryPathPlaceholder': '/Users/you/.bun/bin/opencode', + 'settings.openchamber.opencodeCli.tipMiddle': 'zmienna środowiskowa, ale to ustawienie jest zapisywane w', + 'settings.openchamber.opencodeCli.tipPrefix': 'Wskazówka: możesz również użyć', + 'settings.openchamber.opencodeCli.title': 'OpenCode CLI', + 'settings.openchamber.opencodeCli.tooltipPrefix': 'Opcjonalna ścieżka absolutna do', + 'settings.openchamber.opencodeCli.tooltipSuffix': 'pliku binarnego.', + 'settings.openchamber.passkeys.actions.add': 'Dodaj klucz dostępu (passkey)', + 'settings.openchamber.passkeys.actions.cancelSetup': 'Anuluj konfigurację klucza dostępu', + 'settings.openchamber.passkeys.actions.removing': 'Usuwanie...', + 'settings.openchamber.passkeys.actions.signOutEverywhere': 'Wyloguj ze wszystkich urządzeń', + 'settings.openchamber.passkeys.actions.signingOut': 'Wylogowywanie...', + 'settings.openchamber.passkeys.field.currentDevice': 'Obecne urządzenie', + 'settings.openchamber.passkeys.item.added': 'Dodano {time}', + 'settings.openchamber.passkeys.item.lastUsed': 'Ostatnio używane {time}', + 'settings.openchamber.passkeys.state.loading': 'Ładowanie kluczy dostępu...', + 'settings.openchamber.passkeys.state.noneSaved': 'Brak zapisanych kluczy dostępu dla tego hosta.', + 'settings.openchamber.passkeys.state.uiPasswordRequired': 'Klucze dostępu są dostępne tylko wtedy, gdy włączona jest blokada hasłem UI.', + 'settings.openchamber.passkeys.time.neverUsed': 'Nigdy nie używano', + 'settings.openchamber.passkeys.title': 'Klucze dostępu', + 'settings.openchamber.passkeys.toast.addFailed': 'Nie udało się dodać klucza dostępu.', + 'settings.openchamber.passkeys.toast.added': 'Klucz dostępu dodany', + 'settings.openchamber.passkeys.toast.clearAuthFailed': 'Nie udało się wyczyścić zapisanej autoryzacji.', + 'settings.openchamber.passkeys.toast.enableUiPasswordFirst': 'Włącz blokadę hasłem UI przed dodaniem kluczy dostępu.', + 'settings.openchamber.passkeys.toast.loadFailed': 'Nie udało się załadować kluczy dostępu.', + 'settings.openchamber.passkeys.toast.removeFailed': 'Nie udało się usunąć klucza dostępu.', + 'settings.openchamber.passkeys.toast.removed': 'Klucz dostępu usunięty', + 'settings.openchamber.passkeys.toast.setupCanceled': 'Konfiguracja klucza dostępu anulowana', + 'settings.openchamber.sessionRetention.action.archive': 'Archiwizuj', + 'settings.openchamber.sessionRetention.action.delete': 'Usuń', + 'settings.openchamber.sessionRetention.actions.cleaningUp': 'Sprzątanie...', + 'settings.openchamber.sessionRetention.actions.resetRetentionAria': 'Zresetuj okres przechowywania', + 'settings.openchamber.sessionRetention.actions.runCleanupNow': 'Uruchom czyszczenie teraz', + 'settings.openchamber.sessionRetention.field.days': 'dni', + 'settings.openchamber.sessionRetention.field.enableAutoCleanup': 'Włącz automatyczne czyszczenie', + 'settings.openchamber.sessionRetention.field.enableAutoCleanupAria': 'Włącz automatyczne czyszczenie', + 'settings.openchamber.sessionRetention.field.retentionPeriod': 'Okres przechowywania', + 'settings.openchamber.sessionRetention.field.retentionPeriodAria': 'Okres przechowywania w dniach', + 'settings.openchamber.sessionRetention.field.whenSessionsExpire': 'Kiedy sesje wygasają', + 'settings.openchamber.sessionRetention.manualCleanup.eligibleArchiveNow': 'Kwalifikuje się do archiwizacji teraz: {count}', + 'settings.openchamber.sessionRetention.manualCleanup.eligibleDeleteNow': 'Kwalifikuje się do usunięcia teraz: {count}', + 'settings.openchamber.sessionRetention.manualCleanup.title': 'Ręczne czyszczenie', + 'settings.openchamber.sessionRetention.title': 'Przechowywanie sesji', + 'settings.openchamber.sessionRetention.toast.archivedCount': 'Zarchiwizowano {count} sesji', + 'settings.openchamber.sessionRetention.toast.deletedCount': 'Usunięto {count} sesji', + 'settings.openchamber.sessionRetention.toast.failedArchiveCount': 'Nie udało się zarchiwizować {count} sesji', + 'settings.openchamber.sessionRetention.toast.failedDeleteCount': 'Nie udało się usunąć {count} sesji', + 'settings.openchamber.sessionRetention.toast.noneEligibleArchive': 'Brak sesji kwalifikujących się do archiwizacji', + 'settings.openchamber.sessionRetention.toast.noneEligibleDelete': 'Brak sesji kwalifikujących się do usunięcia', + 'settings.openchamber.sessionRetention.tooltip': 'Automatycznie archiwizuje lub usuwa nieaktywne sesje na podstawie ostatniej aktywności. Zachowuje 5 najnowszych sesji.', + 'settings.openchamber.tunnel.actions.browseConfigFileAria': 'Przeglądaj plik konfiguracyjny', + 'settings.openchamber.tunnel.actions.clearConfigFileAria': 'Wyczyść plik konfiguracyjny', + 'settings.openchamber.tunnel.actions.copied': 'Skopiowano', + 'settings.openchamber.tunnel.actions.newConnectLink': 'Nowy link połączenia', + 'settings.openchamber.tunnel.actions.openManagedLocalDocs': 'Sprawdź dokumentację konfiguracji tunelu managed local', + 'settings.openchamber.tunnel.actions.openManagedRemoteDocs': 'Sprawdź dokumentację konfiguracji tunelu managed remote', + 'settings.openchamber.tunnel.actions.removePresetAria': 'Usuń {name}', + 'settings.openchamber.tunnel.actions.retry': 'Spróbuj ponownie', + 'settings.openchamber.tunnel.actions.saveToken': 'Zapisz token', + 'settings.openchamber.tunnel.actions.startTunnel': 'Uruchom tunel', + 'settings.openchamber.tunnel.actions.startingTunnel': 'Uruchamianie tunelu...', + 'settings.openchamber.tunnel.actions.stopTunnel': 'Zatrzymaj tunel', + 'settings.openchamber.tunnel.actions.stopping': 'Zatrzymywanie...', + 'settings.openchamber.tunnel.badge.local': 'LOCAL', + 'settings.openchamber.tunnel.badge.quick': 'QUICK', + 'settings.openchamber.tunnel.badge.remote': 'REMOTE', + 'settings.openchamber.tunnel.description': 'Skonfiguruj bezpieczny dostęp zdalny z szybkim linkiem lub własnym zarządzanym tunelem Cloudflare.', + 'settings.openchamber.tunnel.empty.noManagedRemoteTunnels': 'Nie zapisano jeszcze żadnych tuneli managed remote.', + 'settings.openchamber.tunnel.error.invalidConfigExtension': 'Plik konfiguracji musi mieć rozszerzenie .yml, .yaml lub .json.', + 'settings.openchamber.tunnel.field.configurationFile': 'Plik konfiguracji', + 'settings.openchamber.tunnel.field.configurationFilePlaceholder': 'Używana jest domyślna konfiguracja cloudflared', + 'settings.openchamber.tunnel.field.connectLink': 'Link połączenia', + 'settings.openchamber.tunnel.field.connectLinkTtl': 'TTL linku połączenia', + 'settings.openchamber.tunnel.field.connectQrAlt': 'Kod QR połączenia tunelu', + 'settings.openchamber.tunnel.field.expires': 'Wygasa', + 'settings.openchamber.tunnel.field.hostnameLabel': 'Nazwa hosta:', + 'settings.openchamber.tunnel.field.managedRemoteTokenInfoAria': 'Informacje o tokenie tunelu managed remote', + 'settings.openchamber.tunnel.field.managedRemoteTunnelToConnect': 'Tunel managed remote do połączenia', + 'settings.openchamber.tunnel.field.newPresetHostnamePlaceholder': 'Nazwa hosta (np. oc.example.com)', + 'settings.openchamber.tunnel.field.newPresetNamePlaceholder': 'Nazwa tunelu (np. Produkcja)', + 'settings.openchamber.tunnel.field.newPresetTokenPlaceholder': 'Token', + 'settings.openchamber.tunnel.field.pasteTokenPlaceholder': 'Wklej token dla tego tunelu', + 'settings.openchamber.tunnel.field.provider': 'Dostawca', + 'settings.openchamber.tunnel.field.providerPlaceholder': 'Wybierz dostawcę', + 'settings.openchamber.tunnel.field.publicUrlHint': 'Publiczny URL (niedostępny bez tokenu)', + 'settings.openchamber.tunnel.field.savedTokenAvailablePlaceholder': 'Zapisany token dostępny (opcjonalnie do podmiany)', + 'settings.openchamber.tunnel.field.selectSavedTunnelPlaceholder': 'Wybierz zapisany tunel', + 'settings.openchamber.tunnel.field.tunnelSessionTtl': 'TTL sesji tunelu', + 'settings.openchamber.tunnel.field.tunnelType': 'Typ tunelu', + 'settings.openchamber.tunnel.notAvailable.cloudflaredNotFound': 'Nie znaleziono cloudflared', + 'settings.openchamber.tunnel.notAvailable.installHint': 'Zainstaluj go, aby włączyć zdalny dostęp przez tunel:', + 'settings.openchamber.tunnel.note.cloudflareConnectorTarget': 'Docelowy adres konektora Cloudflare:', + 'settings.openchamber.tunnel.note.cloudflareConnectorTargetUse': 'Dla docelowego adresu konektora Cloudflare użyj', + 'settings.openchamber.tunnel.note.connectLinksOneTime': 'Linki połączenia są jednorazowe i są unieważniane po zatrzymaniu tunelu lub wygaśnięciu TTL linku połączenia.', + 'settings.openchamber.tunnel.note.customConfigUsed': 'Przy uruchamianiu tunelu zostanie użyty własny plik konfiguracji.', + 'settings.openchamber.tunnel.note.defaultConfigUsed': 'Gdy pole jest puste, cloudflared używa domyślnej konfiguracji (~/.cloudflared/config.yml).', + 'settings.openchamber.tunnel.note.managedLocalUsesConfig': 'Tunele managed local używają lokalnego pliku konfiguracji cloudflared.', + 'settings.openchamber.tunnel.note.managedRemoteRequiresDomain': 'Tunele managed remote wymagają wykupionej domeny na Twoim koncie Cloudflare.', + 'settings.openchamber.tunnel.note.scanQrToConnect': 'Zeskanuj telefonem, aby się połączyć.', + 'settings.openchamber.tunnel.note.serverSideEnforced': 'Bezpieczny tunel jest wymuszony po stronie serwera.', + 'settings.openchamber.tunnel.note.startModeAndGenerateLink': 'Uruchom tunel {mode} i wygeneruj jednorazowy link połączenia. Nie zamykaj aplikacji, gdy ten tunel jest używany.', + 'settings.openchamber.tunnel.note.tokensSavedPerTunnel': 'Tokeny są zapisywane osobno dla każdego tunelu i ponownie używane z dysku.', + 'settings.openchamber.tunnel.option.mode.managedLocal.label': 'Managed Local', + 'settings.openchamber.tunnel.option.mode.managedLocal.tooltip': 'Managed Local używa lokalnego pliku konfiguracji cloudflared.', + 'settings.openchamber.tunnel.option.mode.managedRemote.label': 'Managed Remote', + 'settings.openchamber.tunnel.option.mode.managedRemote.tooltip': 'Managed Remote używa Twojego konta Cloudflare i nazwy hosta do długotrwałego dostępu.', + 'settings.openchamber.tunnel.option.mode.quick.label': 'Quick', + 'settings.openchamber.tunnel.option.mode.quick.tooltip': 'Quick Tunnel działa w trybie best effort i Cloudflare nie gwarantuje jego dostępności.', + 'settings.openchamber.tunnel.option.moreProvidersSoon': 'Wkrótce pojawi się więcej dostawców', + 'settings.openchamber.tunnel.section.redeemedAccessLinks': 'Wykorzystane linki dostępu', + 'settings.openchamber.tunnel.section.savedManagedRemoteTunnels': 'Zapisane tunele managed remote', + 'settings.openchamber.tunnel.session.expiresIn': 'Wygasa za {remaining}', + 'settings.openchamber.tunnel.session.inactiveWithReason': 'Nieaktywny ({reason})', + 'settings.openchamber.tunnel.session.redeemedAt': 'Wykorzystano {time}', + 'settings.openchamber.tunnel.state.expired': 'Wygasł', + 'settings.openchamber.tunnel.state.inactive': 'Nieaktywny', + 'settings.openchamber.tunnel.state.loading': 'Ładowanie', + 'settings.openchamber.tunnel.state.never': 'Nigdy', + 'settings.openchamber.tunnel.state.noExpiry': 'Bez wygaśnięcia', + 'settings.openchamber.tunnel.state.revoked': 'Unieważniony', + 'settings.openchamber.tunnel.state.tunnelReady': 'Tunel gotowy', + 'settings.openchamber.tunnel.title': 'Zdalny Tunel', + 'settings.openchamber.tunnel.toast.addManagedRemoteTokenBeforeStarting': 'Dodaj token tunelu managed remote przed uruchomieniem', + 'settings.openchamber.tunnel.toast.checkAvailabilityFailed': 'Nie udało się sprawdzić dostępności tunelu', + 'settings.openchamber.tunnel.toast.connectLinkCopied': 'Link połączenia został skopiowany', + 'settings.openchamber.tunnel.toast.copyUrlFailed': 'Nie udało się skopiować URL-a', + 'settings.openchamber.tunnel.toast.hostnameAlreadyExists': 'Ta nazwa hosta już istnieje', + 'settings.openchamber.tunnel.toast.linkReady': 'Link tunelu jest gotowy', + 'settings.openchamber.tunnel.toast.managedRemoteHostnameRequired': 'Nazwa hosta tunelu managed remote jest wymagana', + 'settings.openchamber.tunnel.toast.managedRemoteRemoved': 'Tunel managed remote został usunięty', + 'settings.openchamber.tunnel.toast.managedRemoteSaved': 'Tunel managed remote został zapisany', + 'settings.openchamber.tunnel.toast.managedRemoteTokenRequired': 'Token tunelu managed remote jest wymagany', + 'settings.openchamber.tunnel.toast.managedRemoteTokenRequiredBeforeStarting': 'Token tunelu managed remote jest wymagany przed uruchomieniem', + 'settings.openchamber.tunnel.toast.replacedTunnelManyLinksSingleSession': 'Zastąpiono poprzedni tunel: unieważniono {revokedBootstrapCount} linków i 1 sesję.', + 'settings.openchamber.tunnel.toast.replacedTunnelManyMany': 'Zastąpiono poprzedni tunel: unieważniono {revokedBootstrapCount} linków i {invalidatedSessionCount} sesji.', + 'settings.openchamber.tunnel.toast.replacedTunnelSingleManySessions': 'Zastąpiono poprzedni tunel: unieważniono 1 link i {invalidatedSessionCount} sesji.', + 'settings.openchamber.tunnel.toast.replacedTunnelSingleSingle': 'Zastąpiono poprzedni tunel: unieważniono 1 link i 1 sesję.', + 'settings.openchamber.tunnel.toast.saveSelectedManagedRemoteFailed': 'Nie udało się zapisać wybranego tunelu managed remote', + 'settings.openchamber.tunnel.toast.saveSettingsFailed': 'Nie udało się zapisać ustawień tunelu', + 'settings.openchamber.tunnel.toast.saveTokenFailed': 'Nie udało się zapisać tokenu tunelu managed remote', + 'settings.openchamber.tunnel.toast.saveTtlFailed': 'Nie udało się zapisać ustawień TTL tunelu', + 'settings.openchamber.tunnel.toast.selectOrAddManagedRemoteFirst': 'Najpierw wybierz lub dodaj tunel managed remote', + 'settings.openchamber.tunnel.toast.startFailed': 'Nie udało się uruchomić tunelu', + 'settings.openchamber.tunnel.toast.startedButNoPublicUrl': 'Tunel został uruchomiony, ale nie zwrócono publicznego URL-a', + 'settings.openchamber.tunnel.toast.stopFailed': 'Nie udało się zatrzymać tunelu', + 'settings.openchamber.tunnel.toast.stopped': 'Tunel został zatrzymany', + 'settings.openchamber.tunnel.toast.tunnelNameRequired': 'Nazwa tunelu jest wymagana', + 'settings.openchamber.tunnel.tooltip.tokensSavedPath': 'Tokeny są zapisywane w ~/.config/openchamber/cloudflare-managed-remote-tunnels.json.', + 'settings.openchamber.tunnel.warning.quickModeReliability': 'Aby uzyskać bardziej niezawodny długotrwały dostęp, przełącz się na tryb Managed Remote lub Managed Local.', + 'settings.openchamber.tunnel.warning.replacesActiveTunnel': 'Uruchomienie tego tunelu zastępuje aktywny tunel i unieważnia istniejące linki połączenia oraz zdalne sesje.', + 'settings.openchamber.visual.actions.reloadThemes': 'Przeładuj motywy', + 'settings.openchamber.visual.actions.reloadingThemes': 'Przeładowywanie motywów...', + 'settings.openchamber.visual.actions.resetCodeFontAria': 'Zresetuj czcionkę kodu', + 'settings.openchamber.visual.actions.resetFontSizeAria': 'Zresetuj rozmiar czcionki', + 'settings.openchamber.visual.actions.resetInputBarOffsetAria': 'Zresetuj przesunięcie paska wpisywania', + 'settings.openchamber.visual.actions.resetInstallAppNameAria': 'Zresetuj nazwę aplikacji instalacyjnej', + 'settings.openchamber.visual.actions.resetInstallOrientationAria': 'Zresetuj orientację instalacji', + 'settings.openchamber.visual.actions.resetInterfaceFontAria': 'Zresetuj czcionkę interfejsu', + 'settings.openchamber.visual.actions.resetSpacingAria': 'Zresetuj odstępy', + 'settings.openchamber.visual.actions.resetTerminalFontSizeAria': 'Zresetuj rozmiar czcionki terminala', + 'settings.openchamber.visual.field.activityDefaultModeAria': 'Domyślny tryb aktywności: {option}', + 'settings.openchamber.visual.field.bash': 'Bash', + 'settings.openchamber.visual.field.codeFont': 'Czcionka kodu', + 'settings.openchamber.visual.field.darkTheme': 'Ciemny motyw', + 'settings.openchamber.visual.field.diffLayoutAria': 'Układ diffa: {option}', + 'settings.openchamber.visual.field.diffViewModeAria': 'Tryb widoku diffa: {option}', + 'settings.openchamber.visual.field.editTools': 'Narzędzia edycji', + 'settings.openchamber.visual.field.enableSpellcheckInTextInputs': 'Włącz sprawdzanie pisowni w polach tekstowych', + 'settings.openchamber.visual.field.enableSpellcheckInTextInputsAria': 'Włącz sprawdzanie pisowni w polach tekstowych', + 'settings.openchamber.visual.field.fontSizePercentageAria': 'Procentowy rozmiar czcionki', + 'settings.openchamber.visual.field.inputBarOffset': 'Przesunięcie paska wpisywania', + 'settings.openchamber.visual.field.inputBarOffsetTooltip': 'Podnieś pasek wpisywania, aby uniknąć zasłaniania przez systemowe elementy ekranu, takie jak pasek gestów.', + 'settings.openchamber.visual.field.installAppName': 'Nazwa aplikacji do instalacji', + 'settings.openchamber.visual.field.installAppNameHint': 'Używana przez proces instalacji PWA.', + 'settings.openchamber.visual.field.installOrientation': 'Orientacja instalacji', + 'settings.openchamber.visual.field.installOrientationHint': 'Używana przez zainstalowaną aplikację webową. Po zmianie zainstaluj PWA ponownie.', + 'settings.openchamber.visual.field.interfaceFont': 'Czcionka interfejsu', + 'settings.openchamber.visual.field.interfaceFontSize': 'Rozmiar czcionki interfejsu', + 'settings.openchamber.visual.field.lightTheme': 'Jasny motyw', + 'settings.openchamber.visual.field.mermaidRenderingAria': 'Renderowanie Mermaid: {option}', + 'settings.openchamber.visual.field.persistDraftMessages': 'Zachowuj szkice wiadomości', + 'settings.openchamber.visual.field.persistDraftMessagesAria': 'Zachowuj szkice wiadomości', + 'settings.openchamber.visual.field.pwaInstallAppNameAria': 'Nazwa aplikacji instalacyjnej PWA', + 'settings.openchamber.visual.field.pwaInstallOrientationAria': 'Orientacja instalacji PWA', + 'settings.openchamber.visual.field.queueMessagesByDefault': 'Domyślnie kolejkuj wiadomości', + 'settings.openchamber.visual.field.queueMessagesByDefaultAria': 'Domyślnie kolejkuj wiadomości', + 'settings.openchamber.visual.field.queueMessagesByDefaultTooltip': 'Gdy ta opcja jest włączona, Enter dodaje wiadomości do kolejki. Użyj {modifier}+Enter, aby wysłać.', + 'settings.openchamber.visual.field.selectCodeFontAria': 'Wybierz czcionkę kodu', + 'settings.openchamber.visual.field.selectDarkThemeAria': 'Wybierz ciemny motyw', + 'settings.openchamber.visual.field.selectInterfaceFontAria': 'Wybierz czcionkę interfejsu', + 'settings.openchamber.visual.field.selectLightThemeAria': 'Wybierz jasny motyw', + 'settings.openchamber.visual.field.selectOrientationPlaceholder': 'Wybierz orientację', + 'settings.openchamber.visual.field.selectThemePlaceholder': 'Wybierz motyw', + 'settings.openchamber.visual.field.selectTimeFormatAria': 'Wybierz format czasu', + 'settings.openchamber.visual.field.selectWeekStartAria': 'Wybierz początek tygodnia', + 'settings.openchamber.visual.field.sendAnonymousUsageReports': 'Przesyłaj anonimowe raporty z użytkowania', + 'settings.openchamber.visual.field.sendAnonymousUsageReportsAria': 'Przesyłaj anonimowe raporty z użytkowania', + 'settings.openchamber.visual.field.sendAnonymousUsageReportsHint': 'Pomaga nam zrozumieć, które wersje aplikacji są aktywnie używane, co pozwala nam priorytetyzować ulepszenia. Zbierane są tylko wersja aplikacji, platforma i środowisko uruchomieniowe – żadne dane osobowe ani kod.', + 'settings.openchamber.visual.field.showDotfiles': 'Pokaż pliki ukryte', + 'settings.openchamber.visual.field.showDotfilesAria': 'Pokaż pliki ukryte', + 'settings.openchamber.visual.field.showExpandedBashToolsAria': 'Pokaż rozwinięte narzędzia bash', + 'settings.openchamber.visual.field.showExpandedEditToolsAria': 'Pokaż rozwinięte narzędzia edycji', + 'settings.openchamber.visual.field.showMobileStatusBar': 'Pokaż mobilny pasek statusu', + 'settings.openchamber.visual.field.showMobileStatusBarAria': 'Pokaż mobilny pasek statusu', + 'settings.openchamber.visual.field.showReasoningTraces': 'Pokaż ślady rozumowania', + 'settings.openchamber.visual.field.showReasoningTracesAria': 'Pokaż ślady rozumowania', + 'settings.openchamber.visual.field.showSplitAssistantMessageActions': 'Akcje asystenta w treści', + 'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': 'Akcje asystenta w treści', + 'settings.openchamber.visual.field.showSplitAssistantMessageActionsTooltip': 'Pokaż Kopiuj odpowiedź, Zapisz jako obraz i Odczytaj na głos w blokach tekstu asystenta, które pojawiają się przed późniejszymi wywołaniami narzędzi w tej samej odpowiedzi.', + 'settings.openchamber.visual.field.showToolFileIcons': 'Pokaż ikony plików narzędzi', + 'settings.openchamber.visual.field.showToolFileIconsAria': 'Pokaż ikony plików narzędzi', + 'settings.openchamber.visual.field.spacingDensity': 'Gęstość odstępów', + 'settings.openchamber.visual.field.stickyUserHeader': 'Przyklejony nagłówek użytkownika', + 'settings.openchamber.visual.field.stickyUserHeaderAria': 'Przyklejony nagłówek użytkownika', + 'settings.openchamber.visual.field.terminalFontSize': 'Rozmiar czcionki terminala', + 'settings.openchamber.visual.field.terminalQuickKeys': 'Szybkie klawisze terminala', + 'settings.openchamber.visual.field.terminalQuickKeysAria': 'Szybkie klawisze terminala', + 'settings.openchamber.visual.field.terminalQuickKeysTooltip': 'Pokaż Esc, Ctrl i strzałki w widoku terminala', + 'settings.openchamber.visual.field.themeImportInfoAria': 'Informacje o imporcie motywów', + 'settings.openchamber.visual.field.themeImportInfoTooltip': 'Importuj własne motywy z ~/.config/openchamber/themes/', + 'settings.openchamber.visual.field.timeFormat': 'Format czasu', + 'settings.openchamber.visual.field.userMessageRenderingAria': 'Renderowanie wiadomości użytkownika: {option}', + 'settings.openchamber.visual.field.weekStartsOn': 'Początek tygodnia', + 'settings.openchamber.visual.field.wideChatLayout': 'Szeroki układ czatu', + 'settings.openchamber.visual.field.wideChatLayoutAria': 'Szeroki układ czatu', + 'settings.openchamber.visual.option.activityRenderMode.collapsed.description': 'Domyślnie utrzymuj aktywność zwiniętą.', + 'settings.openchamber.visual.option.activityRenderMode.collapsed.label': 'Zwinięta', + 'settings.openchamber.visual.option.activityRenderMode.summary.description': 'Domyślnie rozwijaj aktywność.', + 'settings.openchamber.visual.option.activityRenderMode.summary.label': 'Rozwinięta', + 'settings.openchamber.visual.option.chatRenderMode.live.description': 'Strumieniuj tekst asystenta i narzędzia w miarę ich pojawiania się.', + 'settings.openchamber.visual.option.chatRenderMode.live.label': 'Na żywo', + 'settings.openchamber.visual.option.chatRenderMode.sorted.description': 'Renderuj zakończone wiadomości asystenta bez strumieniowania na żywo.', + 'settings.openchamber.visual.option.chatRenderMode.sorted.label': 'Posortowane', + 'settings.openchamber.visual.option.diffLayout.dynamic.description': 'Nowe pliki w widoku inline, zmodyfikowane obok siebie.', + 'settings.openchamber.visual.option.diffLayout.dynamic.label': 'Dynamiczny', + 'settings.openchamber.visual.option.diffLayout.inline.description': 'Pokaż jako pojedynczy widok ujednolicony.', + 'settings.openchamber.visual.option.diffLayout.inline.label': 'Zawsze inline', + 'settings.openchamber.visual.option.diffLayout.sideBySide.description': 'Porównuj oryginalne i zmodyfikowane pliki.', + 'settings.openchamber.visual.option.diffLayout.sideBySide.label': 'Zawsze obok siebie', + 'settings.openchamber.visual.option.diffViewMode.single.description': 'Pokazuj jeden plik naraz.', + 'settings.openchamber.visual.option.diffViewMode.single.label': 'Pojedynczy plik', + 'settings.openchamber.visual.option.diffViewMode.stacked.description': 'Układaj wszystkie zmienione pliki jeden pod drugim.', + 'settings.openchamber.visual.option.diffViewMode.stacked.label': 'Wszystkie pliki', + 'settings.openchamber.visual.option.mermaidRendering.ascii.description': 'Renderuj diagramy jako bloki tekstowe.', + 'settings.openchamber.visual.option.mermaidRendering.ascii.label': 'ASCII', + 'settings.openchamber.visual.option.mermaidRendering.svg.description': 'Renderuj diagramy jako skalowalną grafikę.', + 'settings.openchamber.visual.option.mermaidRendering.svg.label': 'SVG', + 'settings.openchamber.visual.option.messageTransport.auto.description': 'Preferuj WebSocket i przełączaj się na SSE, jeśli to potrzebne.', + 'settings.openchamber.visual.option.messageTransport.auto.label': 'Auto', + 'settings.openchamber.visual.option.messageTransport.sse.description': 'Używaj Server-Sent Events do strumieniowania wiadomości.', + 'settings.openchamber.visual.option.messageTransport.sse.label': 'SSE', + 'settings.openchamber.visual.option.messageTransport.ws.description': 'Używaj WebSocket do strumieniowania wiadomości.', + 'settings.openchamber.visual.option.messageTransport.ws.label': 'WebSocket', + 'settings.openchamber.visual.option.pwaOrientation.landscape.description': 'Zainstaluj aplikację z blokadą orientacji poziomej.', + 'settings.openchamber.visual.option.pwaOrientation.landscape.label': 'Blokada pozioma', + 'settings.openchamber.visual.option.pwaOrientation.portrait.description': 'Zainstaluj aplikację z blokadą orientacji pionowej.', + 'settings.openchamber.visual.option.pwaOrientation.portrait.label': 'Blokada pionowa', + 'settings.openchamber.visual.option.pwaOrientation.system.description': 'Uwzględniaj ustawienie obrotu urządzenia.', + 'settings.openchamber.visual.option.pwaOrientation.system.label': 'Zgodnie z systemem', + 'settings.openchamber.visual.option.themeMode.dark': 'Ciemny', + 'settings.openchamber.visual.option.themeMode.light': 'Jasny', + 'settings.openchamber.visual.option.themeMode.system': 'Systemowy', + 'settings.openchamber.visual.option.timeFormat.12h.description': 'Pokazuj czas jako 02:15 PM.', + 'settings.openchamber.visual.option.timeFormat.12h.label': '12-godzinny', + 'settings.openchamber.visual.option.timeFormat.24h.description': 'Pokazuj czas jako 14:15.', + 'settings.openchamber.visual.option.timeFormat.24h.label': '24-godzinny', + 'settings.openchamber.visual.option.timeFormat.auto.description': 'Używaj preferencji lokalnych systemu.', + 'settings.openchamber.visual.option.timeFormat.auto.label': 'Auto', + 'settings.openchamber.visual.option.userMessageRendering.markdown.description': 'Renderuj tekst użytkownika z formatowaniem Markdown.', + 'settings.openchamber.visual.option.userMessageRendering.markdown.label': 'Markdown', + 'settings.openchamber.visual.option.userMessageRendering.plain.description': 'Renderuj tekst użytkownika z zachowaniem białych znaków i linków.', + 'settings.openchamber.visual.option.userMessageRendering.plain.label': 'Zwykły tekst', + 'settings.openchamber.visual.option.weekStart.auto.description': 'Używaj lokalnego początku tygodnia.', + 'settings.openchamber.visual.option.weekStart.auto.label': 'Auto', + 'settings.openchamber.visual.option.weekStart.monday.label': 'Poniedziałek', + 'settings.openchamber.visual.option.weekStart.sunday.label': 'Niedziela', + 'settings.openchamber.visual.section.activityDefault': 'Domyślna aktywność', + 'settings.openchamber.visual.section.activityDefaultAria': 'Domyślny tryb aktywności', + 'settings.openchamber.visual.section.chatRenderMode': 'Tryb renderowania czatu', + 'settings.openchamber.visual.section.chatRenderModeAria': 'Tryb renderowania czatu', + 'settings.openchamber.visual.section.colorMode': 'Tryb kolorów', + 'settings.openchamber.visual.section.diffLayout': 'Układ diffa', + 'settings.openchamber.visual.section.diffLayoutAria': 'Układ diffa', + 'settings.openchamber.visual.section.diffViewMode': 'Tryb widoku diffa', + 'settings.openchamber.visual.section.diffViewModeAria': 'Tryb widoku diffa', + 'settings.openchamber.visual.section.localization': 'Lokalizacja', + 'settings.openchamber.visual.section.mermaidRendering': 'Renderowanie Mermaid', + 'settings.openchamber.visual.section.mermaidRenderingAria': 'Tryb renderowania Mermaid', + 'settings.openchamber.visual.section.messageStreamTransport': 'Transport strumienia wiadomości', + 'settings.openchamber.visual.section.navigation': 'Nawigacja', + 'settings.openchamber.visual.section.privacy': 'Prywatność', + 'settings.openchamber.visual.section.showToolsOpenedByDefault': 'Pokaż narzędzia domyślnie otwarte:', + 'settings.openchamber.visual.section.spacingAndLayout': 'Odstępy i układ', + 'settings.openchamber.visual.section.userMessageRendering': 'Renderowanie wiadomości użytkownika', + 'settings.openchamber.visual.section.userMessageRenderingAria': 'Tryb renderowania wiadomości użytkownika', + 'settings.openchamber.worktrees.list.deleteWorktreeAria': 'Usuń worktree {name}', + 'settings.openchamber.worktrees.list.detachedHead': 'Odłączony HEAD', + 'settings.openchamber.worktrees.list.empty': 'Nie znaleziono worktree dla tego projektu', + 'settings.openchamber.worktrees.list.loading': 'Ładowanie worktree...', + 'settings.openchamber.worktrees.list.title': 'Istniejące worktree', + 'settings.openchamber.worktrees.list.tooltip': 'Worktree znajdują się poza repozytorium i są zarządzane przez OpenCode. Usunięcie worktree usuwa także powiązane sesje.', + 'settings.openchamber.worktrees.setup.addCommand': 'Dodaj polecenie', + 'settings.openchamber.worktrees.setup.commandPlaceholder': 'np. bun install', + 'settings.openchamber.worktrees.setup.loading': 'Ładowanie...', + 'settings.openchamber.worktrees.setup.removeCommandAria': 'Usuń polecenie', + 'settings.openchamber.worktrees.setup.title': 'Polecenia konfiguracji', + 'settings.openchamber.worktrees.setup.tooltipPrefix': 'Uruchamiaj automatycznie w nowym katalogu worktree po jego utworzeniu. Użyj', + 'settings.openchamber.worktrees.setup.tooltipSuffix': 'dla katalogu głównego projektu.', + 'settings.openchamber.worktrees.state.gitOnly': 'Ustawienia worktree są dostępne tylko dla repozytoriów Git.', + 'settings.openchamber.worktrees.state.selectProject': 'Wybierz projekt, aby zarządzać worktree.', + 'settings.page.agents.title': 'Agenci', + 'settings.page.appearance.title': 'Wygląd', + 'settings.page.behavior.title': 'Zachowanie', + 'settings.page.chat.title': 'Czat', + 'settings.page.commands.title': 'Polecenia', + 'settings.page.git.title': 'Git', + 'settings.page.magicPrompts.title': 'Magiczne Prompty', + 'settings.page.mcp.title': 'MCP', + 'settings.page.notifications.title': 'Powiadomienia', + 'settings.page.projects.title': 'Projekty', + 'settings.page.providers.title': 'Dostawcy', + 'settings.page.remoteInstances.title': 'Zdalne instancje', + 'settings.page.sessions.title': 'Sesje', + 'settings.page.shortcuts.title': 'Skróty', + 'settings.page.skills.title': 'Umiejętności', + 'settings.page.skillsCatalog.title': 'Katalog umiejętności', + 'settings.page.tunnel.title': 'Zdalny Tunel', + 'settings.page.usage.title': 'Użycie', + 'settings.page.voice.title': 'Głos', + 'settings.projects.actions.actions.add': 'Dodaj akcję', + 'settings.projects.actions.actions.save': 'Zapisz akcje', + 'settings.projects.actions.description': 'Polecenia dla projektu wyświetlane w nagłówku obok nazwy projektu.', + 'settings.projects.actions.field.actionNamePlaceholder': 'Nazwa akcji', + 'settings.projects.actions.field.autoOpenUrl': 'Automatycznie otwieraj URL', + 'settings.projects.actions.field.autoOpenUrlDescription': 'Otwórz URL z wyniku lub własny URL poniżej', + 'settings.projects.actions.field.autoOpenUrlForAria': 'Automatycznie otwieraj URL dla {title}', + 'settings.projects.actions.field.command': 'Polecenie', + 'settings.projects.actions.field.commandPlaceholder': 'np. bun run lint', + 'settings.projects.actions.field.desktopSshForward': 'Przekierowanie SSH pulpitu', + 'settings.projects.actions.field.iconAria': 'Ikona {icon}', + 'settings.projects.actions.field.overrideUrlPlaceholder': 'Nadpisz URL (opcjonalnie)', + 'settings.projects.actions.field.overrideUrlTooltip': 'Jeśli to pole jest wypełnione, używany jest własny URL. Jeśli jest puste, aplikacja otwiera najlepszy URL z wyniku.', + 'settings.projects.actions.field.selectIconAria': 'Wybierz ikonę', + 'settings.projects.actions.field.useOutputManualUrl': 'Użyj URL-a z wyniku lub ręcznego', + 'settings.projects.actions.state.empty': 'Nie skonfigurowano jeszcze żadnych akcji.', + 'settings.projects.actions.state.loading': 'Ładowanie...', + 'settings.projects.actions.state.noDesktopSshForwards': 'Brak włączonych lokalnych przekierowań SSH.', + 'settings.projects.actions.state.untitled': 'Akcja bez nazwy', + 'settings.projects.actions.title': 'Akcje', + 'settings.projects.actions.toast.saveFailed': 'Nie udało się zapisać akcji', + 'settings.projects.actions.toast.saved': 'Akcje projektu zostały zapisane', + 'settings.projects.actions.validation.fillNameAndCommand': 'Przed zapisaniem uzupełnij nazwę akcji i polecenie.', + 'settings.projects.page.actions.discoverFavicon': 'Wykryj faviconę', + 'settings.projects.page.actions.discovering': 'Wykrywanie...', + 'settings.projects.page.actions.removeProjectIcon': 'Usuń ikonę projektu', + 'settings.projects.page.actions.removing': 'Usuwanie...', + 'settings.projects.page.actions.undoRemove': 'Cofnij usunięcie', + 'settings.projects.page.actions.uploadIcon': 'Prześlij ikonę', + 'settings.projects.page.actions.uploading': 'Przesyłanie...', + 'settings.projects.page.empty.noProjects': 'Brak dostępnych projektów.', + 'settings.projects.page.field.accentColor': 'Kolor akcentu', + 'settings.projects.page.field.clearBackground': 'Wyczyść tło', + 'settings.projects.page.field.clearIconBackgroundAria': 'Wyczyść tło ikony', + 'settings.projects.page.field.none': 'Brak', + 'settings.projects.page.field.preview': 'Podgląd', + 'settings.projects.page.field.projectIcon': 'Ikona projektu', + 'settings.projects.page.field.projectIconBackgroundAria': 'Kolor tła ikony projektu', + 'settings.projects.page.field.projectName': 'Nazwa projektu', + 'settings.projects.page.field.projectNamePlaceholder': 'Nazwa projektu', + 'settings.projects.page.section.worktree': 'Worktree', + 'settings.projects.page.title.default': 'Project Settings', + 'settings.projects.page.toast.customIconAlreadySet': 'Dla tego projektu ustawiono już własną ikonę', + 'settings.projects.page.toast.discoverIconFailed': 'Nie udało się wykryć ikony projektu', + 'settings.projects.page.toast.iconDiscovered': 'Wykryto ikonę projektu', + 'settings.projects.page.toast.iconRemoved': 'Ikona projektu została usunięta', + 'settings.projects.page.toast.iconUpdated': 'Ikona projektu została zaktualizowana', + 'settings.projects.page.toast.removeIconFailed': 'Nie udało się usunąć ikony projektu', + 'settings.projects.page.toast.uploadIconFailed': 'Nie udało się przesłać ikony projektu', + 'settings.projects.sidebar.actions.addProject': 'Dodaj projekt', + 'settings.projects.sidebar.total': 'Suma: {count}', + 'settings.providers.page.actions.complete': 'Zakończ', + 'settings.providers.page.actions.connect': 'Połącz', + 'settings.providers.page.actions.copy': 'Kopiuj', + 'settings.providers.page.actions.copyCode': 'Kopiuj kod', + 'settings.providers.page.actions.disconnect': 'Odłącz', + 'settings.providers.page.actions.disconnecting': 'Odłączanie...', + 'settings.providers.page.actions.hide': 'Ukryj', + 'settings.providers.page.actions.hideAll': 'Ukryj wszystko', + 'settings.providers.page.actions.open': 'Otwórz', + 'settings.providers.page.actions.reconnect': 'Połącz ponownie', + 'settings.providers.page.actions.saveKey': 'Zapisz klucz', + 'settings.providers.page.actions.saving': 'Zapisywanie...', + 'settings.providers.page.actions.showAll': 'Pokaż wszystko', + 'settings.providers.page.auth.apiKeyLabel': 'API Key', + 'settings.providers.page.auth.apiKeyPlaceholder': 'sk-...', + 'settings.providers.page.auth.apiKeyTooltip': 'Klucze są wysyłane bezpośrednio do OpenCode i nigdy nie są przechowywane przez OpenChamber.', + 'settings.providers.page.auth.connected': 'Połączono', + 'settings.providers.page.auth.loadingMethods': 'Ładowanie metod uwierzytelniania...', + 'settings.providers.page.auth.oauthMethodFallback': 'Metoda OAuth {index}', + 'settings.providers.page.auth.pasteAuthorizationCodePlaceholder': 'Wklej kod autoryzacyjny', + 'settings.providers.page.auth.title': 'Uwierzytelnianie', + 'settings.providers.page.auth.useReconnectHint': '· Użyj Połącz ponownie, aby zaktualizować dane logowania', + 'settings.providers.page.connect.allProvidersConnected': 'Wszyscy dostawcy są połączeni.', + 'settings.providers.page.connect.noProvidersFound': 'Nie znaleziono dostawców', + 'settings.providers.page.connect.providerField': 'Dostawca', + 'settings.providers.page.connect.searchProvidersPlaceholder': 'Szukaj...', + 'settings.providers.page.connect.selectProviderPlaceholder': 'Wybierz dostawcę', + 'settings.providers.page.connect.selectProviderTitle': 'Wybierz dostawcę', + 'settings.providers.page.connect.title': 'Połącz dostawcę', + 'settings.providers.page.connectionDetails.configuredIn': 'Skonfigurowano w:', + 'settings.providers.page.connectionDetails.noActiveSource': 'Brak aktywnego źródła konfiguracji', + 'settings.providers.page.connectionDetails.source.authCredentials': 'dane uwierzytelniające', + 'settings.providers.page.connectionDetails.source.customConfig': 'własna konfiguracja', + 'settings.providers.page.connectionDetails.source.projectConfig': 'konfiguracja projektu', + 'settings.providers.page.connectionDetails.source.userConfig': 'konfiguracja użytkownika', + 'settings.providers.page.connectionDetails.title': 'Szczegóły połączenia', + 'settings.providers.page.empty.checkOpenCodeConfiguration': 'Sprawdź konfigurację OpenCode', + 'settings.providers.page.empty.noProvidersDetected': 'Nie wykryto dostawców', + 'settings.providers.page.empty.reviewDetailsAndConfigureAuth': 'Sprawdź szczegóły i skonfiguruj uwierzytelnianie', + 'settings.providers.page.empty.selectProviderFromSidebar': 'Wybierz dostawcę z paska bocznego', + 'settings.providers.page.models.actions.hideModel': 'Ukryj model', + 'settings.providers.page.models.actions.hideModelFromSelectors': 'Ukryj model w selektorach', + 'settings.providers.page.models.actions.showModel': 'Pokaż model', + 'settings.providers.page.models.actions.showModelInSelectors': 'Pokaż model w selektorach', + 'settings.providers.page.models.capability.imageInput': 'Wejście obrazowe', + 'settings.providers.page.models.capability.reasoning': 'Rozumowanie', + 'settings.providers.page.models.capability.toolCalling': 'Wywoływanie narzędzi', + 'settings.providers.page.models.filterPlaceholder': 'Filtruj modele...', + 'settings.providers.page.models.noModelsMatchFilter': 'Żadne modele nie pasują do tego filtra.', + 'settings.providers.page.models.title': 'Dostępne modele', + 'settings.providers.page.models.tokenBadge.context': 'ctx', + 'settings.providers.page.models.tokenBadge.output': 'out', + 'settings.providers.page.state.loading': 'Ładowanie...', + 'settings.providers.page.state.unableToLoadProviderList': 'Nie udało się załadować listy dostawców', + 'settings.providers.page.toast.apiKeyRequired': 'Klucz API jest wymagany', + 'settings.providers.page.toast.apiKeySaveFailed': 'Nie udało się zapisać klucza API', + 'settings.providers.page.toast.apiKeySaved': 'Klucz API został zapisany', + 'settings.providers.page.toast.authMethodsLoadFailed': 'Nie udało się załadować metod uwierzytelniania dostawcy', + 'settings.providers.page.toast.completeOAuthInBrowser': 'Dokończ proces OAuth w przeglądarce', + 'settings.providers.page.toast.deviceCodeCopied': 'Kod urządzenia został skopiowany', + 'settings.providers.page.toast.deviceCodeCopyFailed': 'Nie udało się skopiować kodu urządzenia', + 'settings.providers.page.toast.oauthCompleteFailed': 'Nie udało się dokończyć procesu OAuth', + 'settings.providers.page.toast.oauthCompleted': 'Połączenie OAuth zostało zakończone', + 'settings.providers.page.toast.oauthDetailsMissing': 'Nie zwrócono szczegółów OAuth', + 'settings.providers.page.toast.oauthLinkCopied': 'Link OAuth został skopiowany', + 'settings.providers.page.toast.oauthLinkCopyFailed': 'Nie udało się skopiować linku OAuth', + 'settings.providers.page.toast.oauthStartFailed': 'Nie udało się rozpocząć procesu OAuth', + 'settings.providers.page.toast.providerDisconnectFailed': 'Nie udało się odłączyć dostawcy', + 'settings.providers.page.toast.providerDisconnected': 'Dostawca został odłączony', + 'settings.providers.page.toast.providerSourcesLoadFailed': 'Nie udało się załadować źródeł dostawcy', + 'settings.providers.sidebar.actions.connectProviderAria': 'Połącz dostawcę', + 'settings.providers.sidebar.actions.connectProviderTitle': 'Połącz dostawcę', + 'settings.providers.sidebar.empty.description': 'Sprawdź konfigurację OpenCode', + 'settings.providers.sidebar.empty.title': 'Nie znaleziono dostawców', + 'settings.providers.sidebar.section.projectProviders': 'Dostawcy projektu', + 'settings.providers.sidebar.section.userProviders': 'Dostawcy użytkownika', + 'settings.providers.sidebar.title': 'Dostawcy', + 'settings.providers.sidebar.total': 'Suma: {count}', + 'settings.remoteInstances.page.actions.addForward': 'Dodaj przekierowanie', + 'settings.remoteInstances.page.actions.cancel': 'Anuluj', + 'settings.remoteInstances.page.actions.connecting': 'Łączenie...', + 'settings.remoteInstances.page.actions.copyLocalUrl': 'Kopiuj lokalny URL', + 'settings.remoteInstances.page.actions.create': 'Utwórz', + 'settings.remoteInstances.page.actions.enableForwardAria': 'Włącz przekierowanie', + 'settings.remoteInstances.page.actions.logs': 'Logi SSH', + 'settings.remoteInstances.page.actions.open': 'Otwórz', + 'settings.remoteInstances.page.actions.openLocal': 'Otwórz lokalnie', + 'settings.remoteInstances.page.actions.pickRandomPort': 'Wybierz losowy port', + 'settings.remoteInstances.page.actions.reconnectNow': 'Połącz ponownie teraz', + 'settings.remoteInstances.page.actions.reconnecting': 'Ponowne łączenie...', + 'settings.remoteInstances.page.confirm.bindAllInterfaces': 'Powiązanie z 0.0.0.0 udostępnia przekierowane porty Twojej sieci lokalnej. Kontynuować?', + 'settings.remoteInstances.page.confirm.removeInstance': 'Usunąć tę zdalną instancję?', + 'settings.remoteInstances.page.confirm.storeSshPasswordPlaintext': 'Zapisać hasło SSH jawnym tekstem na dysku?', + 'settings.remoteInstances.page.confirm.storeUiPasswordPlaintext': 'Zapisać hasło UI jawnym tekstem na dysku?', + 'settings.remoteInstances.page.description': 'Skonfiguruj połączenie SSH, zdalny serwer i ustawienia przekierowania.', + 'settings.remoteInstances.page.empty.noExtraForwards': 'Nie skonfigurowano dodatkowych przekierowań portów.', + 'settings.remoteInstances.page.empty.selectInstance': 'Wybierz instancję, aby wyświetlić i edytować jej ustawienia.', + 'settings.remoteInstances.page.field.auto': 'Auto', + 'settings.remoteInstances.page.field.bindHost': 'Host powiązania', + 'settings.remoteInstances.page.field.bindHostHint': 'Interfejs sieciowy dla głównego lokalnego URL-a. Użyj 127.0.0.1/localhost dla dostępu tylko lokalnego.', + 'settings.remoteInstances.page.field.connectionTimeoutSeconds': 'Limit czasu połączenia (sekundy)', + 'settings.remoteInstances.page.field.forwardType': 'Typ przekierowania', + 'settings.remoteInstances.page.field.forwardTypeHint': 'Wybierz przekierowanie lokalne (-L), zdalne (-R) lub dynamiczne (-D).', + 'settings.remoteInstances.page.field.installMethod': 'Metoda instalacji', + 'settings.remoteInstances.page.field.installMethodDownloadRelease': 'Pobierz wydanie', + 'settings.remoteInstances.page.field.installMethodHint': 'Jak OpenChamber jest instalowany podczas działania w trybie zarządzanym.', + 'settings.remoteInstances.page.field.installMethodUploadBundle': 'Prześlij paczkę', + 'settings.remoteInstances.page.field.keepServerRunning': 'Pozostaw serwer uruchomiony', + 'settings.remoteInstances.page.field.keepServerRunningHint': 'Jeśli opcja jest włączona, demon OpenChamber pozostaje uruchomiony zdalnie po rozłączeniu.', + 'settings.remoteInstances.page.field.localHostPlaceholder': '127.0.0.1', + 'settings.remoteInstances.page.field.mode': 'Tryb', + 'settings.remoteInstances.page.field.modeExternal': 'Zewnętrzny (już uruchomiony)', + 'settings.remoteInstances.page.field.modeHint': 'Tryb zarządzany instaluje lub aktualizuje i uruchamia OpenChamber zdalnie. Tryb zewnętrzny zakłada, że usługa już działa.', + 'settings.remoteInstances.page.field.modeManaged': 'Zarządzany (auto start)', + 'settings.remoteInstances.page.field.modePlaceholder': 'Wybierz tryb', + 'settings.remoteInstances.page.field.nickname': 'Pseudonim', + 'settings.remoteInstances.page.field.nicknamePlaceholder': 'Mój zdalny host', + 'settings.remoteInstances.page.field.preferredLocalPort': 'Preferowany port lokalny', + 'settings.remoteInstances.page.field.preferredLocalPortHint': 'Preferowany lokalny port dla głównego tunelu OpenChamber. Zostaw puste, aby wybrać automatycznie.', + 'settings.remoteInstances.page.field.preferredRemotePort': 'Preferowany port zdalny', + 'settings.remoteInstances.page.field.preferredRemotePortHint': 'Port, którego OpenChamber powinien używać na zdalnym hoście. Zostaw puste, aby środowisko wybrało go automatycznie.', + 'settings.remoteInstances.page.field.remoteHostPlaceholder': '127.0.0.1', + 'settings.remoteInstances.page.field.selectBindHostPlaceholder': 'Wybierz host powiązania', + 'settings.remoteInstances.page.field.selectInstallMethodPlaceholder': 'Wybierz metodę instalacji', + 'settings.remoteInstances.page.field.sshCommand': 'Polecenie SSH', + 'settings.remoteInstances.page.field.sshCommandPlaceholder': 'ssh user@host', + 'settings.remoteInstances.page.field.sshPasswordOptional': 'Hasło SSH (opcjonalnie)', + 'settings.remoteInstances.page.field.sshPasswordPlaceholder': 'Wpisz hasło SSH', + 'settings.remoteInstances.page.field.typePlaceholder': 'Typ', + 'settings.remoteInstances.page.field.uiPasswordOptional': 'Hasło UI (opcjonalnie)', + 'settings.remoteInstances.page.field.uiPasswordPlaceholder': 'Wpisz hasło UI', + 'settings.remoteInstances.page.forwardType.dynamic': 'Dynamic (-D)', + 'settings.remoteInstances.page.forwardType.local': 'Local (-L)', + 'settings.remoteInstances.page.forwardType.remote': 'Remote (-R)', + 'settings.remoteInstances.page.forwardTypeDescription.dynamic': 'Udostępnij lokalny serwer proxy SOCKS5 przez SSH.', + 'settings.remoteInstances.page.forwardTypeDescription.local': 'Przekieruj ruch lokalny do zdalnego celu.', + 'settings.remoteInstances.page.forwardTypeDescription.remote': 'Udostępnij zdalny endpoint i przekieruj go z powrotem na lokalną maszynę.', + 'settings.remoteInstances.page.import.loading': 'Ładowanie hostów SSH...', + 'settings.remoteInstances.page.import.noneAvailable': 'Brak hostów SSH dostępnych do importu.', + 'settings.remoteInstances.page.import.noneFound': 'Nie znaleziono hostów SSH.', + 'settings.remoteInstances.page.import.patternSuffix': '(wzorzec)', + 'settings.remoteInstances.page.import.sectionTitle': 'Importuj z konfiguracji SSH', + 'settings.remoteInstances.page.logsDialog.empty': 'Brak logów SSH.', + 'settings.remoteInstances.page.logsDialog.loading': 'Ładowanie logów...', + 'settings.remoteInstances.page.logsDialog.selectedInstanceFallback': 'Wybrana instancja', + 'settings.remoteInstances.page.logsDialog.title': 'Logi SSH', + 'settings.remoteInstances.page.patternDialog.description': 'Wpisz cel.', + 'settings.remoteInstances.page.patternDialog.descriptionWithHost': '{host} wymaga konkretnego celu.', + 'settings.remoteInstances.page.patternDialog.destinationPlaceholder': 'user@host', + 'settings.remoteInstances.page.patternDialog.title': 'Utwórz z wzorca wildcard', + 'settings.remoteInstances.page.phase.checkingAuth': 'Sprawdzanie uwierzytelniania', + 'settings.remoteInstances.page.phase.detectingServer': 'Wykrywanie serwera', + 'settings.remoteInstances.page.phase.establishingSsh': 'Nawiązywanie połączenia SSH', + 'settings.remoteInstances.page.phase.forwardingPorts': 'Przekierowywanie portów', + 'settings.remoteInstances.page.phase.installingOpenChamber': 'Instalowanie OpenChamber', + 'settings.remoteInstances.page.phase.probingRemote': 'Sprawdzanie zdalnego hosta', + 'settings.remoteInstances.page.phase.reconnecting': 'Ponowne łączenie', + 'settings.remoteInstances.page.phase.resolvingConfiguration': 'Rozwiązywanie konfiguracji', + 'settings.remoteInstances.page.phase.startingServer': 'Uruchamianie serwera', + 'settings.remoteInstances.page.phase.updatingOpenChamber': 'Aktualizowanie OpenChamber', + 'settings.remoteInstances.page.preview.local': '(lokalny)', + 'settings.remoteInstances.page.preview.localSocks5': '(lokalny SOCKS5)', + 'settings.remoteInstances.page.preview.remote': '(zdalny)', + 'settings.remoteInstances.page.section.actions': 'Akcje', + 'settings.remoteInstances.page.section.actionsDescription': 'Połącz, połącz ponownie, sprawdź logi lub usuń tę instancję.', + 'settings.remoteInstances.page.section.authentication': 'Uwierzytelnianie', + 'settings.remoteInstances.page.section.authenticationDescription': 'Opcjonalne dane logowania dla SSH i zdalnego interfejsu OpenChamber.', + 'settings.remoteInstances.page.section.instance': 'Instancja', + 'settings.remoteInstances.page.section.instanceDescription': 'Podstawowe ustawienia SSH.', + 'settings.remoteInstances.page.section.mainTunnel': 'Główny tunel', + 'settings.remoteInstances.page.section.mainTunnelDescription': 'Główny lokalny endpoint dla tej zdalnej instancji.', + 'settings.remoteInstances.page.section.portForwards': 'Przekierowania portów', + 'settings.remoteInstances.page.section.portForwardsDescription': 'Dodatkowe przekierowania SSH poza głównym tunelem.', + 'settings.remoteInstances.page.section.remoteServer': 'Zdalny serwer', + 'settings.remoteInstances.page.section.remoteServerDescription': 'Jak OpenChamber jest zarządzany i uruchamiany na zdalnym hoście.', + 'settings.remoteInstances.page.status.currentLocalUrl': 'Aktualny lokalny URL:', + 'settings.remoteInstances.page.status.reconnectStale': 'Ponowne łączenie wygląda na zawieszone. Możesz spróbować jeszcze raz.', + 'settings.remoteInstances.page.title': 'Zdalna instancja', + 'settings.remoteInstances.page.toast.cancelConnectionFailed': 'Nie udało się anulować połączenia', + 'settings.remoteInstances.page.toast.clearLogsFailed': 'Nie udało się wyczyścić logów', + 'settings.remoteInstances.page.toast.connectFailed': 'Nie udało się połączyć z instancją', + 'settings.remoteInstances.page.toast.destinationRequired': 'Cel jest wymagany', + 'settings.remoteInstances.page.toast.disconnectFailed': 'Nie udało się rozłączyć instancji', + 'settings.remoteInstances.page.toast.instanceCreated': 'Instancja została utworzona', + 'settings.remoteInstances.page.toast.instanceRemoved': 'Instancja została usunięta', + 'settings.remoteInstances.page.toast.instanceSaved': 'Instancja została zapisana', + 'settings.remoteInstances.page.toast.instanceUrlUnavailable': 'URL instancji jest niedostępny', + 'settings.remoteInstances.page.toast.localUrlCopied': 'Lokalny URL został skopiowany', + 'settings.remoteInstances.page.toast.logsCleared': 'Logi zostały wyczyszczone', + 'settings.remoteInstances.page.toast.logsCopied': 'Logi zostały skopiowane', + 'settings.remoteInstances.page.toast.noLogsToCopy': 'Brak logów do skopiowania', + 'settings.remoteInstances.page.toast.openLocalEndpointFailed': 'Nie udało się otworzyć lokalnego endpointu', + 'settings.remoteInstances.page.toast.removeInstanceFailed': 'Nie udało się usunąć instancji', + 'settings.remoteInstances.page.toast.retryFailed': 'Nie udało się ponowić połączenia', + 'settings.remoteInstances.page.toast.saveFailed': 'Nie udało się zapisać instancji', + 'settings.remoteInstances.page.toast.sshCommandRequired': 'Polecenie SSH jest wymagane', + 'settings.remoteInstances.sidebar.actions.addSshInstance': 'Dodaj instancję SSH', + 'settings.remoteInstances.sidebar.actions.connect': 'Połącz', + 'settings.remoteInstances.sidebar.actions.disconnect': 'Rozłącz', + 'settings.remoteInstances.sidebar.actions.remove': 'Usuń', + 'settings.remoteInstances.sidebar.actions.retry': 'Ponów', + 'settings.remoteInstances.sidebar.confirm.localPortInUseRetry': 'Lokalny port jest już używany. Wybrać losowy wolny port lokalny i spróbować ponownie?', + 'settings.remoteInstances.sidebar.newSshInstanceName': 'Nowa instancja SSH', + 'settings.remoteInstances.sidebar.phase.connecting': 'Łączenie', + 'settings.remoteInstances.sidebar.phase.error': 'Błąd', + 'settings.remoteInstances.sidebar.phase.forwarding': 'Przekierowywanie', + 'settings.remoteInstances.sidebar.phase.idle': 'Bezczynny', + 'settings.remoteInstances.sidebar.phase.installing': 'Instalowanie', + 'settings.remoteInstances.sidebar.phase.ready': 'Gotowe', + 'settings.remoteInstances.sidebar.phase.reconnect': 'Połącz ponownie', + 'settings.remoteInstances.sidebar.phase.starting': 'Uruchamianie', + 'settings.remoteInstances.sidebar.phase.updating': 'Aktualizowanie', + 'settings.remoteInstances.sidebar.title': 'Zdalne instancje', + 'settings.remoteInstances.sidebar.toast.connectFailed': 'Nie udało się połączyć z instancją', + 'settings.remoteInstances.sidebar.toast.createFailed': 'Nie udało się utworzyć instancji SSH', + 'settings.remoteInstances.sidebar.toast.disconnectFailed': 'Nie udało się rozłączyć instancji', + 'settings.remoteInstances.sidebar.toast.removeFailed': 'Nie udało się usunąć instancji', + 'settings.remoteInstances.sidebar.toast.retriedWithRandomPort': 'Ponowiono próbę z losowym lokalnym portem', + 'settings.remoteInstances.sidebar.toast.retryFailed': 'Nie udało się ponowić połączenia', + 'settings.remoteInstances.sidebar.total': 'Suma: {count}', + 'settings.shared.projectSelector.fallbackProject': 'Projekt', + 'settings.shared.projectSelector.switchProjectAria': 'Przełącz projekt', + 'settings.shared.projectSelector.switchProjectTitle': 'Przełącz projekt', + 'settings.skills.catalog.add.actions.addCatalog': 'Dodaj katalog', + 'settings.skills.catalog.add.descriptionPrefix': 'Dodaj repozytorium Git jako nowe źródło katalogu. OpenChamber przeskanuje je w poszukiwaniu folderów zawierających', + 'settings.skills.catalog.add.descriptionSuffix': '.', + 'settings.skills.catalog.add.duplicateMessage': 'Ten katalog został już dodany.', + 'settings.skills.catalog.add.field.catalogName': 'Nazwa katalogu', + 'settings.skills.catalog.add.field.catalogNamePlaceholder': 'np. Umiejętności zespołu', + 'settings.skills.catalog.add.field.optionalSubpath': 'Opcjonalna podścieżka', + 'settings.skills.catalog.add.field.repository': 'Repozytorium', + 'settings.skills.catalog.add.field.repositoryHint': 'Publiczne repozytoria działają wszędzie. Prywatne repozytoria wymagają tożsamości SSH (tylko Desktop/Web).', + 'settings.skills.catalog.add.scanResult': 'Wynik skanowania: znaleziono {count} umiejętności', + 'settings.skills.catalog.add.title': 'Dodaj katalog umiejętności', + 'settings.skills.catalog.add.toast.authenticationRequiredScan': 'Wymagane uwierzytelnienie. Wybierz tożsamość Git i przeskanuj ponownie.', + 'settings.skills.catalog.add.toast.catalogAdded': 'Katalog został dodany', + 'settings.skills.catalog.add.toast.catalogAlreadyExists': 'Ten katalog już istnieje', + 'settings.skills.catalog.add.toast.catalogNameRequired': 'Nazwa katalogu jest wymagana', + 'settings.skills.catalog.add.toast.noSkillsFound': 'W tym repozytorium nie znaleziono umiejętności', + 'settings.skills.catalog.add.toast.repositoryRequired': 'Źródło repozytorium jest wymagane', + 'settings.skills.catalog.add.toast.saveFailed': 'Nie udało się zapisać katalogu', + 'settings.skills.catalog.add.toast.scanBeforeAdd': 'Przeskanuj repozytorium przed dodaniem tego katalogu', + 'settings.skills.catalog.add.toast.scanFailed': 'Nie udało się przeskanować repozytorium', + 'settings.skills.catalog.conflicts.actions.continue': 'Kontynuuj', + 'settings.skills.catalog.conflicts.actions.overwriteAll': 'Nadpisz wszystko', + 'settings.skills.catalog.conflicts.actions.skipAll': 'Pomiń wszystko', + 'settings.skills.catalog.conflicts.count': '{count} konfliktów', + 'settings.skills.catalog.conflicts.decision.overwrite': 'Nadpisz', + 'settings.skills.catalog.conflicts.decision.skip': 'Pomiń', + 'settings.skills.catalog.conflicts.description': 'Niektóre wybrane umiejętności są już zainstalowane w tym zakresie. Wybierz, czy je pominąć, czy nadpisać.', + 'settings.skills.catalog.conflicts.installedIn': 'Zainstalowano w {scope} / {source}', + 'settings.skills.catalog.conflicts.scope.project': 'projekt', + 'settings.skills.catalog.conflicts.scope.user': 'użytkownik', + 'settings.skills.catalog.conflicts.source.agents': 'agents', + 'settings.skills.catalog.conflicts.source.opencode': 'opencode', + 'settings.skills.catalog.conflicts.title': 'Umiejętności już istnieją', + 'settings.skills.catalog.installFromRepo.actions.installSelected': 'Zainstaluj wybrane', + 'settings.skills.catalog.installFromRepo.actions.selectAll': 'Zaznacz wszystko', + 'settings.skills.catalog.installFromRepo.actions.selectNone': 'Odznacz wszystko', + 'settings.skills.catalog.installFromRepo.authDescription': 'Wybierz tożsamość Git (klucz SSH), która ma dostęp do tego repozytorium.', + 'settings.skills.catalog.installFromRepo.badge.installed': 'zainstalowano ({scope}/{source})', + 'settings.skills.catalog.installFromRepo.descriptionPrefix': 'Przeskanuj repozytorium w poszukiwaniu folderów zawierających', + 'settings.skills.catalog.installFromRepo.descriptionSuffix': ', a następnie zainstaluj wybrane umiejętności.', + 'settings.skills.catalog.installFromRepo.empty.noScanResultsDescription': 'Przeskanuj repozytorium, aby znaleźć umiejętności', + 'settings.skills.catalog.installFromRepo.empty.noScanResultsTitle': 'Brak wyników skanowania', + 'settings.skills.catalog.installFromRepo.repositoryHintPrefix': 'Dla skróconego zapisu GitHub możesz dodać podścieżkę, np.', + 'settings.skills.catalog.installFromRepo.selectedCount': 'Wybrano: {selected} / {total}', + 'settings.skills.catalog.installFromRepo.title': 'Instaluj z repozytorium Git', + 'settings.skills.catalog.installFromRepo.toast.authenticationRequiredInstall': 'Wymagane uwierzytelnienie. Wybierz tożsamość Git i spróbuj zainstalować ponownie.', + 'settings.skills.catalog.installFromRepo.toast.authenticationRequiredScan': 'Wymagane uwierzytelnienie. Wybierz tożsamość Git i spróbuj przeskanować ponownie.', + 'settings.skills.catalog.installFromRepo.toast.installCompleted': 'Instalacja zakończona', + 'settings.skills.catalog.installFromRepo.toast.installFailed': 'Nie udało się zainstalować umiejętności', + 'settings.skills.catalog.installFromRepo.toast.installedCount': 'Zainstalowano {count} umiejętności', + 'settings.skills.catalog.installFromRepo.toast.scanFailed': 'Nie udało się przeskanować repozytorium', + 'settings.skills.catalog.installFromRepo.toast.selectAtLeastOne': 'Wybierz co najmniej jedną umiejętność do instalacji', + 'settings.skills.catalog.installSkill.actions.install': 'Zainstaluj', + 'settings.skills.catalog.installSkill.actions.installing': 'Instalowanie...', + 'settings.skills.catalog.installSkill.descriptionPrefix': 'Zainstaluj', + 'settings.skills.catalog.installSkill.descriptionSuffix': 'w jednej z czterech docelowych lokalizacji.', + 'settings.skills.catalog.installSkill.field.chooseProjectPlaceholder': 'Wybierz projekt', + 'settings.skills.catalog.installSkill.field.destination': 'Miejsce docelowe', + 'settings.skills.catalog.installSkill.field.noProjects': 'Brak dostępnych projektów', + 'settings.skills.catalog.installSkill.field.project': 'Projekt', + 'settings.skills.catalog.installSkill.title': 'Zainstaluj umiejętność', + 'settings.skills.catalog.installSkill.toast.authRequired': 'Wymagane uwierzytelnienie', + 'settings.skills.catalog.installSkill.toast.installFailed': 'Nie udało się zainstalować umiejętności', + 'settings.skills.catalog.installSkill.toast.installed': 'Umiejętność została zainstalowana', + 'settings.skills.catalog.page.actions.addCatalog': 'Dodaj katalog', + 'settings.skills.catalog.page.actions.loadMoreSkills': 'Załaduj więcej umiejętności', + 'settings.skills.catalog.page.actions.refreshTitle': 'Odśwież', + 'settings.skills.catalog.page.actions.removeCatalog': 'Usuń katalog', + 'settings.skills.catalog.page.actions.removeCatalogTitle': 'Usuń katalog', + 'settings.skills.catalog.page.badge.installed': 'zainstalowano ({scope})', + 'settings.skills.catalog.page.badge.notInstallable': 'nie można zainstalować', + 'settings.skills.catalog.page.badge.unknown': 'nieznane', + 'settings.skills.catalog.page.byOwnerPrefix': 'autor:', + 'settings.skills.catalog.page.empty.noSkillsDescription': 'Spróbuj innego wyszukiwania lub odśwież katalog', + 'settings.skills.catalog.page.empty.noSkillsTitle': 'Nie znaleziono umiejętności', + 'settings.skills.catalog.page.error.catalogTitle': 'Błąd katalogu', + 'settings.skills.catalog.page.field.selectSourcePlaceholder': 'Wybierz źródło', + 'settings.skills.catalog.page.foundCount': 'Znaleziono {count} umiejętności', + 'settings.skills.catalog.page.loading.catalog': 'Ładowanie...', + 'settings.skills.catalog.page.loading.more': 'Ładowanie...', + 'settings.skills.catalog.page.loading.skills': 'Ładowanie umiejętności...', + 'settings.skills.catalog.page.mode.external': 'Zewnętrzny', + 'settings.skills.catalog.page.mode.manual': 'Ręczny', + 'settings.skills.catalog.page.removeDialog.description': 'Czy na pewno chcesz usunąć ten katalog?', + 'settings.skills.catalog.page.removeDialog.title': 'Usuń katalog', + 'settings.skills.catalog.page.section.sourceRepository': 'Repozytorium źródłowe', + 'settings.skills.catalog.page.title': 'Katalog umiejętności', + 'settings.skills.catalog.shared.actions.install': 'Zainstaluj', + 'settings.skills.catalog.shared.actions.installing': 'Instalowanie...', + 'settings.skills.catalog.shared.actions.scan': 'Skanuj', + 'settings.skills.catalog.shared.actions.scanning': 'Skanowanie...', + 'settings.skills.catalog.shared.auth.chooseIdentity': 'Wybierz tożsamość', + 'settings.skills.catalog.shared.auth.description': 'Wybierz tożsamość Git (klucz SSH)', + 'settings.skills.catalog.shared.auth.footerHint': 'Skonfiguruj tożsamości w Ustawieniach - Tożsamości Git.', + 'settings.skills.catalog.shared.auth.footerHintArrow': 'Skonfiguruj tożsamości w Ustawieniach → Tożsamości Git.', + 'settings.skills.catalog.shared.auth.title': 'Wymagane uwierzytelnienie', + 'settings.skills.catalog.shared.field.chooseProjectPlaceholder': 'Wybierz projekt', + 'settings.skills.catalog.shared.field.noProjects': 'Brak dostępnych projektów', + 'settings.skills.catalog.shared.field.optionalSubpath': 'Opcjonalna podścieżka', + 'settings.skills.catalog.shared.field.project': 'Projekt', + 'settings.skills.catalog.shared.field.repository': 'Repozytorium', + 'settings.skills.catalog.shared.field.repositoryPlaceholder': 'owner/repo lub git@github.com:owner/repo.git', + 'settings.skills.catalog.shared.field.searchSkillsPlaceholder': 'Szukaj umiejętności…', + 'settings.skills.catalog.shared.field.subpathPlaceholder': 'np. skills', + 'settings.skills.catalog.shared.field.targetLocation': 'Lokalizacja docelowa', + 'settings.skills.catalog.shared.noDescription': 'Nie podano opisu', + 'settings.skills.catalog.shared.toast.foundSkills': 'Znaleziono {count} umiejętności', + 'settings.skills.catalog.shared.toast.privateRepoNotSupportedVsCode': 'Prywatne repozytoria nie są jeszcze obsługiwane w VS Code', + 'settings.skills.catalog.shared.toast.repositoryRequired': 'Źródło repozytorium jest wymagane', + 'settings.skills.location.option.projectAgents.description': 'Bieżąca lokalizacja zgodna z .agents dla projektu', + 'settings.skills.location.option.projectAgents.label': 'Projekt / Agents', + 'settings.skills.location.option.projectOpencode.description': 'Bieżąca lokalizacja .opencode projektu', + 'settings.skills.location.option.projectOpencode.label': 'Projekt / OpenCode', + 'settings.skills.location.option.userAgents.description': 'Globalna lokalizacja zgodna z .agents', + 'settings.skills.location.option.userAgents.label': 'Użytkownik / Agents', + 'settings.skills.location.option.userOpencode.description': 'Globalna lokalizacja konfiguracji OpenCode', + 'settings.skills.location.option.userOpencode.label': 'Użytkownik / OpenCode', + 'settings.skills.page.actions.addFile': 'Dodaj plik', + 'settings.skills.page.actions.createFile': 'Utwórz plik', + 'settings.skills.page.actions.createSkill': 'Utwórz umiejętność', + 'settings.skills.page.badge.claudeCompatible': 'Zgodne z Claude', + 'settings.skills.page.badge.pending': 'oczekuje', + 'settings.skills.page.deleteFileDialog.description': 'Czy na pewno chcesz usunąć „{path}”?', + 'settings.skills.page.deleteFileDialog.title': 'Usuń plik pomocniczy', + 'settings.skills.page.empty.description': 'lub utwórz nową', + 'settings.skills.page.empty.title': 'Wybierz umiejętność z paska bocznego', + 'settings.skills.page.field.descriptionHint': 'Agent używa tego, aby zdecydować, kiedy załadować umiejętność', + 'settings.skills.page.field.descriptionPlaceholder': 'Krótki opis tego, co robi ta umiejętność...', + 'settings.skills.page.field.instructionsPlaceholder': 'Instrukcje krok po kroku, wytyczne lub treść referencyjna...', + 'settings.skills.page.field.skillNameHint': 'Małe litery, cyfry, myślniki', + 'settings.skills.page.field.skillNameLocation': 'Nazwa i lokalizacja umiejętności', + 'settings.skills.page.field.skillNamePlaceholder': 'nazwa-umiejętnosci', + 'settings.skills.page.fileDialog.descriptionAdd': 'Utwórz nowy plik w katalogu umiejętności', + 'settings.skills.page.fileDialog.descriptionEdit': 'Zmodyfikuj zawartość pliku', + 'settings.skills.page.fileDialog.field.content': 'Zawartość', + 'settings.skills.page.fileDialog.field.contentPlaceholder': 'Zawartość pliku...', + 'settings.skills.page.fileDialog.field.filePath': 'Ścieżka pliku', + 'settings.skills.page.fileDialog.field.filePathHint': 'Ścieżka względna w katalogu umiejętności. Podkatalogi zostaną utworzone automatycznie.', + 'settings.skills.page.fileDialog.field.filePathPlaceholder': 'example.md lub docs/reference.txt', + 'settings.skills.page.fileDialog.titleAdd': 'Dodaj plik pomocniczy', + 'settings.skills.page.fileDialog.titleEdit': 'Edytuj plik pomocniczy', + 'settings.skills.page.loading.details': 'Ładowanie szczegółów umiejętności...', + 'settings.skills.page.loading.fileContent': 'Ładowanie zawartości pliku...', + 'settings.skills.page.section.basicInformation': 'Podstawowe informacje', + 'settings.skills.page.section.instructions': 'Instrukcje', + 'settings.skills.page.section.supportingFiles': 'Pliki pomocnicze', + 'settings.skills.page.subtitle.newSkill': 'Skonfiguruj nową umiejętność', + 'settings.skills.page.subtitle.skillLocation': 'Umiejętność {location}', + 'settings.skills.page.supportingFiles.empty': 'Brak plików pomocniczych. Użyj „Dodaj plik”, aby dołączyć materiały referencyjne.', + 'settings.skills.page.title.newSkill': 'Nowa umiejętność', + 'settings.skills.page.toast.createFileFailed': 'Nie udało się utworzyć pliku', + 'settings.skills.page.toast.createSkillFailed': 'Nie udało się utworzyć umiejętności', + 'settings.skills.page.toast.deleteFileFailed': 'Nie udało się usunąć pliku', + 'settings.skills.page.toast.descriptionRequired': 'Opis jest wymagany', + 'settings.skills.page.toast.fileAdded': 'Dodano plik „{path}”', + 'settings.skills.page.toast.fileCreated': 'Utworzono plik „{path}”', + 'settings.skills.page.toast.fileDeleted': 'Usunięto plik „{path}”', + 'settings.skills.page.toast.fileExists': 'Plik o tej nazwie już istnieje', + 'settings.skills.page.toast.fileNameRequired': 'Nazwa pliku jest wymagana', + 'settings.skills.page.toast.fileRemoved': 'Usunięto plik „{path}”', + 'settings.skills.page.toast.fileUpdated': 'Zaktualizowano plik „{path}”', + 'settings.skills.page.toast.invalidSkillName': 'Nazwa umiejętności musi mieć 1–64 małych znaków alfanumerycznych lub myślników i nie może zaczynać się ani kończyć myślnikiem', + 'settings.skills.page.toast.loadFileContentFailed': 'Nie udało się załadować zawartości pliku', + 'settings.skills.page.toast.noSkillSelected': 'Nie wybrano umiejętności', + 'settings.skills.page.toast.saveUnexpectedError': 'Wystąpił błąd podczas zapisywania', + 'settings.skills.page.toast.skillCreated': 'Umiejętność została utworzona', + 'settings.skills.page.toast.skillExists': 'Umiejętność o tej nazwie już istnieje', + 'settings.skills.page.toast.skillNameRequired': 'Nazwa umiejętności jest wymagana', + 'settings.skills.page.toast.skillUpdated': 'Umiejętność została zaktualizowana', + 'settings.skills.page.toast.updateFileFailed': 'Nie udało się zaktualizować pliku', + 'settings.skills.page.toast.updateSkillFailed': 'Nie udało się zaktualizować umiejętności', + 'settings.skills.sidebar.badge.agents': 'agents', + 'settings.skills.sidebar.badge.claude': 'claude', + 'settings.skills.sidebar.deleteDialog.description': 'Czy na pewno chcesz usunąć umiejętność „{name}”?', + 'settings.skills.sidebar.deleteDialog.title': 'Usuń umiejętność', + 'settings.skills.sidebar.empty.description': 'Użyj przycisku + powyżej, aby utworzyć nową', + 'settings.skills.sidebar.empty.title': 'Nie skonfigurowano żadnych umiejętności', + 'settings.skills.sidebar.renameDialog.description': 'Wpisz nową nazwę dla umiejętności „{name}”', + 'settings.skills.sidebar.renameDialog.placeholder': 'Nowa nazwa umiejętności...', + 'settings.skills.sidebar.renameDialog.title': 'Zmień nazwę umiejętności', + 'settings.skills.sidebar.section.project': 'Umiejętności projektu', + 'settings.skills.sidebar.section.user': 'Umiejętności użytkownika', + 'settings.skills.sidebar.title': 'Umiejętności', + 'settings.skills.sidebar.toast.deleteSkillFailed': 'Nie udało się usunąć umiejętności', + 'settings.skills.sidebar.toast.duplicateLoadFailed': 'Nie udało się załadować szczegółów umiejętności do duplikacji', + 'settings.skills.sidebar.toast.removeOldAfterRenameFailed': 'Nie udało się usunąć starej umiejętności po zmianie nazwy', + 'settings.skills.sidebar.toast.renameFailed': 'Nie udało się zmienić nazwy umiejętności', + 'settings.skills.sidebar.toast.renameLoadFailed': 'Nie udało się załadować szczegółów umiejętności', + 'settings.skills.sidebar.toast.skillDeleted': 'Umiejętność „{name}” została usunięta', + 'settings.skills.sidebar.total': 'Suma: {count}', + 'settings.usage.pace.prediction': 'Prognoza: {prediction}', + 'settings.usage.pace.predictionLabel': 'Prognoza: ', + 'settings.usage.pace.predictionTooltip': 'Przewidywane użycie na koniec okna na podstawie obecnego tempa: {prediction}', + 'settings.usage.pace.rate': 'Tempo: {rate}', + 'settings.usage.pace.status.onTrack': 'Zgodnie z planem', + 'settings.usage.pace.status.slightlyFast': 'Nieco za szybko', + 'settings.usage.pace.status.tooFast': 'Zbyt szybko', + 'settings.usage.pace.status.usedUp': 'Wykorzystano', + 'settings.usage.pace.wait': 'Czekaj {duration}', + 'settings.usage.pace.waitSeparator': ' · Czekaj ', + 'settings.usage.page.empty.selectProvider': 'Wybierz dostawcę, aby wyświetlić szczegóły użycia.', + 'settings.usage.page.header.lastUpdated': 'Ostatnio aktualizowano: {time}', + 'settings.usage.page.header.providerUsage': 'Użycie {provider}', + 'settings.usage.page.header.refreshing': 'Odświeżanie użycia...', + 'settings.usage.page.options.showInHeader': 'Pokaż w menu nagłówka', + 'settings.usage.page.options.showInHeaderAria': 'Pokaż w menu nagłówka', + 'settings.usage.page.options.showInHeaderTooltip': 'Jeśli jest włączone, ten dostawca', + 'settings.usage.page.section.modelQuotas': 'Limity modeli', + 'settings.usage.page.section.otherModels': 'Inne modele', + 'settings.usage.page.state.noData': 'Brak dostępnych danych o użyciu.', + 'settings.usage.page.state.noQuotaWindowsDescription': 'Ten dostawca obecnie nie raportuje żadnych limitów prędkości ani kwot użycia.', + 'settings.usage.page.state.noQuotaWindowsTitle': 'Brak raportowanych okien kwot', + 'settings.usage.page.state.providerNotConfiguredDescription': 'Dodaj dane uwierzytelniające w zakładce Dostawcy, aby włączyć śledzenie użycia.', + 'settings.usage.page.state.providerNotConfiguredTitle': 'Dostawca nie jest skonfigurowany', + 'settings.usage.page.state.refreshFailedTitle': 'Nie udało się odświeżyć danych o użyciu', + 'settings.usage.sidebar.actions.refreshAria': 'Odśwież użycie', + 'settings.usage.sidebar.actions.refreshTitle': 'Odśwież użycie', + 'settings.usage.sidebar.actions.toggleAutoRefreshAria': 'Przełącz automatyczne odświeżanie', + 'settings.usage.sidebar.field.display': 'Wyświetlanie', + 'settings.usage.sidebar.field.displayModePlaceholder': 'Tryb wyświetlania', + 'settings.usage.sidebar.field.displayModeRemaining': 'Pozostała kwota', + 'settings.usage.sidebar.field.displayModeUsage': 'Użycie', + 'settings.usage.sidebar.field.intervalPlaceholder': 'Interwał', + 'settings.usage.sidebar.status.notSet': 'Nie ustawiono', + 'settings.usage.sidebar.title': 'Użycie', + 'settings.usage.sidebar.tooltip.autoRefresh': 'Automatycznie odświeżaj dane o użyciu w określonych odstępach czasu', + 'settings.usage.sidebar.total': 'Suma: {count}', + 'settings.view.actions.back': 'Wstecz', + 'settings.view.actions.backToSettings': 'Powrót do ustawień', + 'settings.view.actions.closeSettings': 'Zamknij ustawienia', + 'settings.view.actions.closeSettingsWithShortcut': 'Zamknij ustawienia ({shortcut}+,)', + 'settings.view.actions.openSectionList': 'Otwórz listę sekcji', + 'settings.view.actions.reloadOpenCode': 'Przeładuj OpenCode', + 'settings.view.actions.reloadOpenCodeTooltip': 'Uruchom ponownie OpenCode i przeładuj jego konfigurację.', + 'settings.view.actions.resizeNavigation': 'Zmień rozmiar nawigacji', + 'settings.view.badge.beta': 'beta', + 'settings.view.home.cards.agents.description': 'Prompty, narzędzia, uprawnienia', + 'settings.view.home.cards.agents.title': 'Agenci', + 'settings.view.home.cards.mcp.description': 'Skonfiguruj serwery MCP + połączenia', + 'settings.view.home.cards.mcp.title': 'MCP', + 'settings.view.home.cards.providers.description': 'Połącz modele + dane uwierzytelniające', + 'settings.view.home.cards.providers.title': 'Dostawcy', + 'settings.view.home.cards.skillsCatalog.description': 'Zainstaluj skille z katalogów', + 'settings.view.home.cards.skillsCatalog.title': 'Katalog umiejętności', + 'settings.view.home.cards.usage.description': 'Kwota + widoczność wydatków', + 'settings.view.home.cards.usage.title': 'Użycie', + 'settings.view.home.description': 'Przejdź do popularnych stron.', + 'settings.view.home.title': 'Ustawienia', + 'settings.view.unavailable.description': 'Ta strona ustawień jest niedostępna w tym środowisku.', + 'settings.view.unavailable.title': 'Niedostępne', + 'settings.voice.page.actions.preview': 'Podgląd', + 'settings.voice.page.field.apiKey': 'Klucz API', + 'settings.voice.page.field.apiKeyHintProvide': 'Podaj swój klucz OpenAI', + 'settings.voice.page.field.apiKeyHintRequired': 'OpenAI TTS wymaga klucza API', + 'settings.voice.page.field.apiKeyHintUsingConfig': 'Użyto klucza z konfiguracji', + 'settings.voice.page.field.auto': 'Auto', + 'settings.voice.page.field.configuredAbove': 'Skonfigurowano powyżej', + 'settings.voice.page.field.enableVoiceMode': 'Włącz tryb głosowy', + 'settings.voice.page.field.enableVoiceModeAria': 'Włącz tryb głosowy', + 'settings.voice.page.field.language': 'Język', + 'settings.voice.page.field.messageReadAloudButton': 'Przycisk czytania wiadomości na głos', + 'settings.voice.page.field.messageReadAloudButtonAria': 'Przycisk czytania wiadomości na głos', + 'settings.voice.page.field.millisecondsUnit': 'ms', + 'settings.voice.page.field.model': 'Model', + 'settings.voice.page.field.provider': 'Dostawca', + 'settings.voice.page.field.selectLanguagePlaceholder': 'Wybierz język', + 'settings.voice.page.field.selectVoicePlaceholder': 'Wybierz głos', + 'settings.voice.page.field.serverUrl': 'URL serwera', + 'settings.voice.page.field.serverUrlHint': 'Bazowy URL serwera TTS zgodnego z OpenAI', + 'settings.voice.page.field.silenceHold': 'Podtrzymanie ciszy', + 'settings.voice.page.field.silenceThreshold': 'Próg ciszy', + 'settings.voice.page.field.speechPitch': 'Wysokość głosu', + 'settings.voice.page.field.speechRate': 'Tempo mowy', + 'settings.voice.page.field.speechVolume': 'Głośność mowy', + 'settings.voice.page.field.sttBrowserSupportError': 'MediaRecorder lub AudioContext nie są dostępne w tej przeglądarce. Serwerowe STT może nie działać.', + 'settings.voice.page.field.sttLanguageHint': 'Kod BCP-47 (na przykład en, fr). Zostaw puste, aby wykrywać automatycznie.', + 'settings.voice.page.field.sttServerUrlHint': 'Bazowy URL serwera zgodnego z Whisper', + 'settings.voice.page.field.summarizationThreshold': 'Próg podsumowania', + 'settings.voice.page.field.summarizeBeforePlayback': 'Podsumuj przed odtworzeniem', + 'settings.voice.page.field.summarizeBeforePlaybackAria': 'Podsumuj przed odtworzeniem', + 'settings.voice.page.field.summarizeVoiceModeResponses': 'Podsumowuj odpowiedzi w trybie głosowym', + 'settings.voice.page.field.summarizeVoiceModeResponsesAria': 'Podsumowuj odpowiedzi w trybie głosowym', + 'settings.voice.page.field.summaryMaxLength': 'Maksymalna długość podsumowania', + 'settings.voice.page.field.voice': 'Głos', + 'settings.voice.page.field.voiceIdentifierHint': 'Identyfikator głosu obsługiwany przez serwer', + 'settings.voice.page.hint.shiftClickPrefix': 'Naciśnij', + 'settings.voice.page.hint.shiftClickSuffix': 'na przycisku mikrofonu, aby przełączyć tryb ciągły', + 'settings.voice.page.preview.browserVoiceFallback': 'głos przeglądarki', + 'settings.voice.page.preview.customServerLine': 'Cześć! To jest podgląd własnego serwera TTS.', + 'settings.voice.page.preview.voiceLine': 'Cześć! Jestem {voiceName}. Tak brzmi mój głos.', + 'settings.voice.page.provider.browser': 'Przeglądarka', + 'settings.voice.page.provider.custom': 'Własny', + 'settings.voice.page.provider.say': 'Say', + 'settings.voice.page.provider.server': 'Serwer', + 'settings.voice.page.section.playbackAndSummary': 'Odtwarzanie i podsumowanie', + 'settings.voice.page.section.speechRecognition': 'Rozpoznawanie mowy', + 'settings.voice.page.section.voiceSetup': 'Konfiguracja głosu', + 'settings.voice.page.tooltip.browser': 'Darmowe, offline, ograniczone wsparcie mobilne.', + 'settings.voice.page.tooltip.custom': 'Serwer zgodny z OpenAI (na przykład Kokoro).', + 'settings.voice.page.tooltip.openai': 'Wysoka jakość, gotowe na urządzenia mobilne, wymaga klucza API.', + 'settings.voice.page.tooltip.say': 'Natywne dla macOS. Szybkie, darmowe, offline.', + 'settings.voice.page.tooltip.sttBrowser': 'Web Speech API (Chrome/Edge). Darmowe, bez konfiguracji.', + 'settings.voice.page.tooltip.sttServer': 'Serwer Whisper zgodny z OpenAI. Lepsza dokładność, dowolny język.', + 'settings.window.description': 'Okno ustawień OpenChamber.', +}; diff --git a/packages/ui/src/lib/i18n/messages/pl.ts b/packages/ui/src/lib/i18n/messages/pl.ts new file mode 100644 index 00000000..55a3a198 --- /dev/null +++ b/packages/ui/src/lib/i18n/messages/pl.ts @@ -0,0 +1,2185 @@ +import type { I18nKey } from './en'; +import { settingsDict } from './pl.settings'; + +export const dict: Record = { + ...settingsDict, + + 'common.loading': 'Ładowanie...', + 'common.unavailable': 'Niedostępne', + 'common.language.english': 'Angielski', + 'common.language.simplifiedChinese': 'Chiński (Uproszczony)', + 'common.language.ukrainian': 'Ukraiński', + 'common.language.spanish': 'Hiszpański', + 'common.language.brazilianPortuguese': 'Portugalski (Brazylia)', + 'common.language.korean': 'Koreański', + 'common.language.polish': 'Polski', + 'common.revealPath.finder': 'Pokaż w Finderze', + 'common.revealPath.fileExplorer': 'Otwórz w Eksploratorze plików', + 'common.revealPath.fileManager': 'Otwórz w Menedżerze plików', + 'pwa.installPrompt.description': 'Zainstaluj OpenChamber, aby mieć szybszy dostęp', + 'pwa.installPrompt.action': 'Zainstaluj', + 'pwa.installPrompt.started': 'Instalacja rozpoczęta', + 'pwa.installPrompt.installed': 'OpenChamber został zainstalowany', + 'layout.mainTab.chat': 'Czat', + 'layout.mainTab.plan': 'Plan', + 'layout.mainTab.diff': 'Różnice', + 'layout.mainTab.files': 'Pliki', + 'layout.mainTab.terminal': 'Terminal', + 'layout.rightSidebar.git': 'Git', + 'layout.rightSidebar.files': 'Pliki', + 'layout.rightSidebar.context': 'Kontekst', + 'layout.services.instance': 'Instancja', + 'layout.services.usage': 'Użycie', + 'sessions.sidebar.header.actions.closeSessions': 'Zamknij sesje', + 'sessions.sidebar.header.actions.addProject': 'Dodaj projekt', + 'sessions.sidebar.header.actions.newSession': 'Nowa sesja', + 'sessions.sidebar.header.actions.newMultiRun': 'Nowe wielokrotne uruchomienie', + 'sessions.sidebar.header.actions.scheduledTasks': 'Zaplanowane zadania', + 'sessions.sidebar.header.actions.searchSessions': 'Szukaj sesji', + 'sessions.sidebar.header.actions.exitSelection': 'Wyjdź z zaznaczenia', + 'sessions.sidebar.header.actions.selectSessions': 'Wybierz sesje', + 'sessions.sidebar.header.actions.sessionDisplayMode': 'Tryb wyświetlania sesji', + 'sessions.sidebar.header.displayMode.label': 'Tryb wyświetlania', + 'sessions.sidebar.header.displayMode.default': 'Domyślny', + 'sessions.sidebar.header.displayMode.minimal': 'Minimalny', + 'sessions.sidebar.header.displayMode.showRecent': 'Pokaż sekcję ostatnich', + 'sessions.sidebar.header.displayMode.collapseAll': 'Zwiń wszystkie', + 'sessions.sidebar.header.displayMode.expandAll': 'Rozwiń wszystkie', + 'sessions.sidebar.header.search.matchCountSingle': '{count} dopasowanie', + 'sessions.sidebar.header.search.matchCountPlural': '{count} dopasowań', + 'sessions.sidebar.header.search.escapeHint': 'Esc aby wyczyścić', + 'sessions.sidebar.header.search.placeholder': 'Szukaj sesji...', + 'sessions.sidebar.header.search.clear': 'Wyczyść wyszukiwanie', + 'sessions.sidebar.footer.actions.settings': 'Ustawienia', + 'sessions.sidebar.footer.actions.shortcuts': 'Skróty', + 'sessions.sidebar.footer.actions.aboutOpenChamber': 'O OpenChamber', + 'sessions.sidebar.footer.actions.update': 'Aktualizuj', + 'sessions.sidebar.empty.noSessions.title': 'Brak sesji', + 'sessions.sidebar.empty.noSessions.description': 'Utwórz swoją pierwszą sesję, aby rozpocząć kodowanie.', + 'sessions.sidebar.empty.noMatches.title': 'Brak pasujących sesji', + 'sessions.sidebar.empty.noMatches.description': 'Spróbuj innego tytułu, gałęzi, folderu lub ścieżki.', + 'sessions.sidebar.activity.recentTitle': 'ostatnie', + 'sessions.sidebar.updateCheck.errorTitle': 'Nie udało się sprawdzić aktualizacji', + 'sessions.sidebar.updateCheck.latestVersion': 'Masz najnowszą wersję', + 'sessions.sidebar.directory.errorAddProjectTitle': 'Nie udało się dodać projektu', + 'sessions.sidebar.directory.errorAddProjectDescription': 'Wybierz prawidłowy katalog.', + 'sessions.sidebar.directory.errorSelectDirectoryTitle': 'Nie udało się wybrać katalogu', + 'sessions.sidebar.folder.newFolderName': 'Nowy folder', + 'sessions.sidebar.folders.newFolderEllipsis': 'Nowy folder...', + 'sessions.sidebar.folders.removeFromFolder': 'Usuń z folderu', + 'sessions.sidebar.folders.moveToFolder': 'Przenieś do folderu', + 'sessions.sidebar.project.actions.newWorktree': 'Nowe drzewo pracy', + 'sessions.sidebar.project.actions.newWorktreeEllipsis': 'Nowe drzewo pracy...', + 'sessions.sidebar.project.actions.projectMenu': 'Menu projektu', + 'sessions.sidebar.project.actions.newSession': 'Nowa sesja', + 'sessions.sidebar.project.actions.closeProject': 'Zamknij projekt', + 'sessions.sidebar.project.actions.newDraftSession': 'Nowa sesja robocza', + 'sessions.sidebar.session.menu.rename': 'Zmień nazwę', + 'sessions.sidebar.session.menu.unpin': 'Odepnij sesję', + 'sessions.sidebar.session.menu.pin': 'Przypnij sesję', + 'sessions.sidebar.session.menu.share': 'Udostępnij', + 'sessions.sidebar.session.menu.copied': 'Skopiowano', + 'sessions.sidebar.session.menu.copyLink': 'Kopiuj link', + 'sessions.sidebar.session.menu.unshare': 'Cofnij udostępnienie', + 'sessions.sidebar.session.menu.exportMarkdown': 'Eksportuj Markdown', + 'sessions.sidebar.session.menu.openInSidePanel': 'Otwórz w panelu bocznym', + 'sessions.sidebar.session.menu.betaBadge': 'beta', + 'sessions.sidebar.session.menu.label': 'Menu sesji', + 'sessions.sidebar.session.untitled': 'Nienazwana Sesja', + 'sessions.sidebar.session.export.nothingToExport': 'Brak danych do eksportu', + 'sessions.sidebar.session.export.success': 'Sesja wyeksportowana', + 'sessions.sidebar.session.export.failedRevealPath': 'Nie udało się ujawnić ścieżki', + 'sessions.sidebar.session.export.untitledSubagent': 'Nienazwane Pod-agent', + 'sessions.sidebar.session.export.skippedSubtaskSingle': 'Wyeksportowano sesję, ale pominięto {count} pod-agenta, którego nie można załadować.', + 'sessions.sidebar.session.export.skippedSubtaskMany': 'Wyeksportowano sesję, ale pominięto {count} pod-agentów, których nie można załadować.', + 'sessions.sidebar.session.export.dialog.title': 'Eksportuj Markdown', + 'sessions.sidebar.session.export.dialog.descriptionSingle': 'Ta sesja ma {count} pod-agenta. Czy dołączyć go do eksportu?', + 'sessions.sidebar.session.export.dialog.descriptionMany': 'Ta sesja ma {count} pod-agentów. Czy dołączyć je do eksportu?', + 'sessions.sidebar.bulkActions.delete': 'Usuń', + 'sessions.sidebar.bulkActions.archive': 'Archiwizuj', + 'sessions.sidebar.bulkActions.selectedCount': 'Wybrano {count}', + 'sessions.sidebar.bulkActions.moveToFolder': 'Przenieś do folderu', + 'sessions.sidebar.bulkActions.deletedSingle': 'Usunięto {count} sesję', + 'sessions.sidebar.bulkActions.deletedPlural': 'Usunięto {count} sesji', + 'sessions.sidebar.bulkActions.failedDeleteSingle': 'Nie udało się usunąć {count} sesji', + 'sessions.sidebar.bulkActions.failedDeletePlural': 'Nie udało się usunąć {count} sesji', + 'sessions.sidebar.bulkActions.archivedSingle': 'Zarchiwizowano {count} sesję', + 'sessions.sidebar.bulkActions.archivedPlural': 'Zarchiwizowano {count} sesji', + 'sessions.sidebar.bulkActions.failedArchiveSingle': 'Nie udało się zarchiwizować {count} sesji', + 'sessions.sidebar.bulkActions.failedArchivePlural': 'Nie udało się zarchiwizować {count} sesji', + 'sessions.scheduledTasks.dialog.title': 'Zaplanowane zadania', + 'sessions.scheduledTasks.dialog.description': 'Zadania po stronie serwera, które tworzą nową sesję i wysyłają skonfigurowany prompt.', + 'sessions.scheduledTasks.dialog.project.label': 'Projekt', + 'sessions.scheduledTasks.dialog.project.placeholder': 'Wybierz projekt', + 'sessions.scheduledTasks.dialog.project.empty': 'Brak projektów', + 'sessions.scheduledTasks.dialog.actions.newTask': 'Nowe zadanie', + 'sessions.scheduledTasks.dialog.actions.runNow': 'Uruchom teraz', + 'sessions.scheduledTasks.dialog.actions.edit': 'Edytuj', + 'sessions.scheduledTasks.dialog.actions.editAria': 'Edytuj {taskName}', + 'sessions.scheduledTasks.dialog.actions.deleteAria': 'Usuń {taskName}', + 'sessions.scheduledTasks.dialog.loading': 'Ładowanie zadań...', + 'sessions.scheduledTasks.dialog.empty.noTasks': 'Brak zaplanowanych zadań.', + 'sessions.scheduledTasks.dialog.empty.selectProject': 'Wybierz projekt, aby zarządzać zaplanowanymi zadaniami.', + 'sessions.scheduledTasks.dialog.error.chooseProjectFirst': 'Najpierw wybierz projekt', + 'sessions.scheduledTasks.dialog.toast.loadFailed': 'Nie udało się załadować zaplanowanych zadań', + 'sessions.scheduledTasks.dialog.toast.saved': 'Zaplanowane zadanie zapisane', + 'sessions.scheduledTasks.dialog.toast.updateFailed': 'Nie udało się zaktualizować zadania', + 'sessions.scheduledTasks.dialog.toast.deleted': 'Zaplanowane zadanie usunięte', + 'sessions.scheduledTasks.dialog.toast.deleteFailed': 'Nie udało się usunąć zadania', + 'sessions.scheduledTasks.dialog.toast.started': 'Zadanie uruchomione', + 'sessions.scheduledTasks.dialog.toast.runFailed': 'Nie udało się uruchomić zadania', + 'sessions.scheduledTasks.dialog.confirm.deleteTask': 'Usunąć zaplanowane zadanie "{taskName}"?', + 'sessions.scheduledTasks.dialog.schedule.daily': 'Codziennie {time}', + 'sessions.scheduledTasks.dialog.schedule.dailyWithTimezone': 'Codziennie {time} ({timezone})', + 'sessions.scheduledTasks.dialog.schedule.weekly': 'Co tydzień {days} {time}', + 'sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone': 'Co tydzień {days} {time} ({timezone})', + 'sessions.scheduledTasks.dialog.schedule.once': 'Jednorazowo {date} {time}', + 'sessions.scheduledTasks.dialog.schedule.onceWithTimezone': 'Jednorazowo {date} {time} ({timezone})', + 'sessions.scheduledTasks.dialog.schedule.cron': 'Cron: {cron}', + 'sessions.scheduledTasks.dialog.schedule.cronWithTimezone': 'Cron: {cron} ({timezone})', + 'sessions.scheduledTasks.dialog.schedule.unknownDate': 'Nieznana data', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.sun': 'Nie', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.mon': 'Pon', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.tue': 'Wt', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.wed': 'Śr', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.thu': 'Czw', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.fri': 'Pt', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.sat': 'Sob', + 'sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown': '?', + 'sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute': 'za <1m', + 'sessions.scheduledTasks.dialog.relativeTime.justNow': 'przed chwilą', + 'sessions.scheduledTasks.dialog.relativeTime.inMinutes': 'za {count}m', + 'sessions.scheduledTasks.dialog.relativeTime.minutesAgo': '{count}m temu', + 'sessions.scheduledTasks.dialog.relativeTime.inDuration': 'za {duration}', + 'sessions.scheduledTasks.dialog.relativeTime.durationAgo': '{duration} temu', + 'sessions.scheduledTasks.dialog.status.success': 'Sukces', + 'sessions.scheduledTasks.dialog.status.error': 'Błąd', + 'sessions.scheduledTasks.dialog.status.running': 'Uruchomione', + 'sessions.scheduledTasks.dialog.status.idle': 'Bezczynne', + 'sessions.scheduledTasks.dialog.nextRun.label': 'Następne', + 'sessions.scheduledTasks.dialog.lastRun.label': 'Ostatnie uruchomienie', + 'sessions.scheduledTasks.dialog.lastRun.runningNow': 'uruchomione teraz', + 'sessions.scheduledTasks.dialog.lastRun.never': 'nigdy', + 'sessions.scheduledTasks.dialog.taskToggle.enableAria': 'Włącz {taskName}', + 'sessions.scheduledTasks.dialog.taskToggle.pauseAria': 'Wstrzymaj {taskName}', + 'sessions.scheduledTasks.dialog.taskToggle.enabled': 'Włączone', + 'sessions.scheduledTasks.dialog.taskToggle.paused': 'Wstrzymane', + 'sessions.scheduledTasks.editor.title.edit': 'Edytuj zaplanowane zadanie', + 'sessions.scheduledTasks.editor.title.new': 'Nowe zaplanowane zadanie', + 'sessions.scheduledTasks.editor.description': 'Skonfiguruj zadanie po stronie serwera, które tworzy nową sesję i wysyła prompt.', + 'sessions.scheduledTasks.editor.taskName.label': 'Nazwa zadania', + 'sessions.scheduledTasks.editor.taskName.placeholder': 'Codzienna synchronizacja', + 'sessions.scheduledTasks.editor.scheduleType.label': 'Typ harmonogramu', + 'sessions.scheduledTasks.editor.scheduleType.daily': 'Codziennie', + 'sessions.scheduledTasks.editor.scheduleType.weekly': 'Co tydzień', + 'sessions.scheduledTasks.editor.scheduleType.once': 'Jednorazowo', + 'sessions.scheduledTasks.editor.date.label': 'Data', + 'sessions.scheduledTasks.editor.date.placeholder': 'Wybierz datę', + 'sessions.scheduledTasks.editor.date.previousMonth': 'Poprzedni miesiąc', + 'sessions.scheduledTasks.editor.date.nextMonth': 'Następny miesiąc', + 'sessions.scheduledTasks.editor.date.jumpToToday': 'Przejdź do dzisiaj', + 'sessions.scheduledTasks.editor.date.today': 'Dzisiaj', + 'sessions.scheduledTasks.editor.time.label': 'Czas', + 'sessions.scheduledTasks.editor.time.hourAria': 'Godziny', + 'sessions.scheduledTasks.editor.time.minuteAria': 'Minuty', + 'sessions.scheduledTasks.editor.time.periodAria': 'Okres', + 'sessions.scheduledTasks.editor.time.period.am': 'AM', + 'sessions.scheduledTasks.editor.time.period.pm': 'PM', + 'sessions.scheduledTasks.editor.times.label': 'Czasy', + 'sessions.scheduledTasks.editor.times.add': 'Dodaj czas', + 'sessions.scheduledTasks.editor.times.removeAria': 'Usuń czas', + 'sessions.scheduledTasks.editor.timezone.label': 'Strefa czasowa', + 'sessions.scheduledTasks.editor.weekdays.label': 'Dni tygodnia', + 'sessions.scheduledTasks.editor.model.label': 'Model', + 'sessions.scheduledTasks.editor.thinkingLevel.label': 'Poziom myślenia', + 'sessions.scheduledTasks.editor.thinkingLevel.default': 'Domyślny', + 'sessions.scheduledTasks.editor.agent.label': 'Agent', + 'sessions.scheduledTasks.editor.prompt.label': 'Prompt', + 'sessions.scheduledTasks.editor.prompt.placeholder': 'Podsumuj otwarte zadania i zaproponuj następne działania', + 'sessions.scheduledTasks.editor.enabled.aria': 'Włącz zadanie', + 'sessions.scheduledTasks.editor.enabled.label': 'Włączone', + 'sessions.scheduledTasks.editor.actions.closeAria': 'Zamknij', + 'sessions.scheduledTasks.editor.actions.cancel': 'Anuluj', + 'sessions.scheduledTasks.editor.actions.save': 'Zapisz', + 'sessions.scheduledTasks.editor.actions.saving': 'Zapisywanie...', + 'sessions.scheduledTasks.editor.toast.saveFailed': 'Nie udało się zapisać zadania', + 'sessions.scheduledTasks.editor.validation.taskNameRequired': 'Nazwa zadania jest wymagana', + 'sessions.scheduledTasks.editor.validation.promptRequired': 'Prompt jest wymagany', + 'sessions.scheduledTasks.editor.validation.modelRequired': 'Model jest wymagany', + 'sessions.scheduledTasks.editor.validation.dateFormat': 'Data musi mieć format YYYY-MM-DD', + 'sessions.scheduledTasks.editor.validation.timeFormat': 'Czas musi mieć format HH:mm', + 'sessions.scheduledTasks.editor.validation.atLeastOneTime': 'Dodaj przynajmniej jeden prawidłowy czas', + 'sessions.scheduledTasks.editor.validation.atLeastOneWeekday': 'Wybierz przynajmniej jeden dzień tygodnia', + 'sessions.scheduledTasks.editor.validation.timezoneRequired': 'Strefa czasowa jest wymagana', + 'multirun.launcher.title': 'Nowe wielokrotne uruchomienie', + 'multirun.launcher.actions.closeEsc': 'Zamknij (Esc)', + 'multirun.launcher.actions.cancel': 'Anuluj', + 'multirun.launcher.actions.creating': 'Tworzenie...', + 'multirun.launcher.actions.startWithModelCount': 'Uruchom ({count} modeli)', + 'multirun.launcher.project.label': 'Projekt', + 'multirun.launcher.project.placeholder': 'Wybierz projekt', + 'multirun.launcher.project.empty': 'Najpierw dodaj projekt.', + 'multirun.launcher.groupName.label': 'Nazwa grupy', + 'multirun.launcher.groupName.info': 'Używane dla katalogu drzewa pracy i nazw gałęzi', + 'multirun.launcher.groupName.placeholder': 'feature-auth, bugfix-login', + 'multirun.launcher.baseBranch.label': 'Gałąź bazowa', + 'multirun.launcher.baseBranch.info': 'Nowa gałąź tworzona z tej bazy dla każdego modelu', + 'multirun.launcher.agent.label': 'Agent', + 'multirun.launcher.agent.info': 'Agent używany dla wszystkich uruchomień. Domyślnie twój skonfigurowany agent.', + 'multirun.launcher.setupCommands.label': 'Polecenia konfiguracji', + 'multirun.launcher.setupCommands.loading': 'Ładowanie...', + 'multirun.launcher.setupCommands.commandPlaceholder': 'bun install', + 'multirun.launcher.setupCommands.removeCommandAria': 'Usuń polecenie', + 'multirun.launcher.setupCommands.addCommand': 'Dodaj polecenie', + 'multirun.launcher.prompt.label': 'Prompt', + 'multirun.launcher.prompt.placeholder': 'Wpisz prompt do wysłania do wszystkich modeli...', + 'multirun.launcher.attachments.attach': 'Dołącz', + 'multirun.launcher.attachments.tooltip': 'Te same pliki wysłane do wszystkich uruchomień', + 'multirun.launcher.models.label': 'Modele', + 'multirun.launcher.models.info': 'Wybierz od 2 do {max} modeli. Ten sam model może być dodany wielokrotnie.', + 'multirun.launcher.toast.fileTooLarge': 'Plik "{fileName}" jest zbyt duży (max 10MB)', + 'multirun.launcher.toast.attachFailed': 'Nie udało się dołączyć "{fileName}"', + 'multirun.launcher.toast.attachedSingle': 'Dołączono {count} plik', + 'multirun.launcher.toast.attachedPlural': 'Dołączono {count} plików', + 'multirun.modelMultiSelect.actions.addModel': 'Dodaj model', + 'multirun.modelMultiSelect.search.placeholder': 'Szukaj modeli', + 'multirun.modelMultiSelect.search.noResults': 'Nie znaleziono modeli', + 'multirun.modelMultiSelect.sections.favorites': 'Ulubione', + 'multirun.modelMultiSelect.sections.recent': 'Ostatnie', + 'multirun.modelMultiSelect.variant.placeholder': 'Myślenie', + 'multirun.modelMultiSelect.variant.default': 'Domyślny', + 'multirun.modelMultiSelect.keyboard.hint': '↑↓ nawigacja • Enter wybierz • Esc zamknij', + 'multirun.modelMultiSelect.validation.minOnly': 'Wybierz przynajmniej {min} modele.', + 'multirun.modelMultiSelect.validation.minToMax': 'Wybierz od {min} do {max} modeli.', + 'multirun.agentSelector.placeholder': 'Wybierz agenta', + 'sessions.sidebar.session.export.dialog.includeSubtasks': 'Dołącz pod-agentów', + 'sessions.sidebar.session.export.dialog.confirm': 'Eksportuj', + 'sessions.sidebar.session.status.active': 'Sesja aktywna', + 'sessions.sidebar.session.status.unread': 'Nieprzeczytane aktualizacje', + 'sessions.sidebar.session.status.pinned': 'Przypięta sesja', + 'sessions.sidebar.session.status.permissionRequired': 'Wymagane uprawnienie', + 'sessions.sidebar.session.subsessions.collapse': 'Zwiń pod-sesje', + 'sessions.sidebar.session.subsessions.expand': 'Rozwiń pod-sesje', + 'sessions.sidebar.dialogs.deleteSession.title': 'Usunąć sesję?', + 'sessions.sidebar.dialogs.archiveSession.title': 'Archiwizować sesję?', + 'sessions.sidebar.dialogs.deleteSession.withOneSubtask': '"{sessionTitle}" i jej {count} pod-zadanie zostaną trwale usunięte.', + 'sessions.sidebar.dialogs.deleteSession.withManySubtasks': '"{sessionTitle}" i jej {count} pod-zadań zostaną trwale usunięte.', + 'sessions.sidebar.dialogs.archiveSession.withOneSubtask': '"{sessionTitle}" i jej {count} pod-zadanie zostaną zarchiwizowane.', + 'sessions.sidebar.dialogs.archiveSession.withManySubtasks': '"{sessionTitle}" i jej {count} pod-zadań zostaną zarchiwizowane.', + 'sessions.sidebar.dialogs.deleteSession.single': '"{sessionTitle}" zostanie trwale usunięte.', + 'sessions.sidebar.dialogs.archiveSession.single': '"{sessionTitle}" zostanie zarchiwizowane.', + 'sessions.sidebar.dialogs.neverAsk': 'Nigdy nie pytaj', + 'sessions.sidebar.dialogs.cancel': 'Anuluj', + 'sessions.sidebar.dialogs.deleteSession.titleAction': 'Usuń sesję', + 'sessions.sidebar.dialogs.deleteSessions.titleAction': 'Usuń sesje', + 'sessions.sidebar.dialogs.deleteSessions.title': 'Usunąć sesje?', + 'sessions.sidebar.dialogs.archiveSessions.title': 'Archiwizować sesje?', + 'sessions.sidebar.dialogs.deleteSessions.singleDescription': '{count} sesja zostanie trwale usunięta.', + 'sessions.sidebar.dialogs.deleteSessions.pluralDescription': '{count} sesji zostanie trwale usuniętych.', + 'sessions.sidebar.dialogs.archiveSessions.singleDescription': '{count} sesja zostanie zarchiwizowana.', + 'sessions.sidebar.dialogs.archiveSessions.pluralDescription': '{count} sesji zostanie zarchiwizowanych.', + 'sessions.sidebar.dialogs.deleteFolder.title': 'Usunąć folder?', + 'sessions.sidebar.dialogs.deleteFolder.withOneSubfolder': '"{folderName}" zostanie usunięty wraz z {count} pod-folderem. Sesje wewnątrz nie zostaną usunięte.', + 'sessions.sidebar.dialogs.deleteFolder.withManySubfolders': '"{folderName}" zostanie usunięty wraz z {count} pod-folderami. Sesje wewnątrz nie zostaną usunięte.', + 'sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders': '"{folderName}" zostanie usunięty. Sesje wewnątrz nie zostaną usunięte.', + 'sessions.sidebar.dialogs.deleteFolder.single': '"{folderName}" zostanie trwale usunięty.', + 'sessions.sidebar.dialogs.deleteResult.singleFailedToDelete': '{count} sesja nie mogła zostać usunięta.', + 'sessions.sidebar.dialogs.deleteResult.manyFailedToDelete': '{count} sesji nie mogło zostać usuniętych.', + 'sessions.sidebar.dialogs.deleteResult.singleFailedToArchive': '{count} sesja nie mogła zostać zarchiwizowana.', + 'sessions.sidebar.dialogs.deleteResult.manyFailedToArchive': '{count} sesji nie mogło zostać zarchiwizowanych.', + 'sessions.sidebar.dialogs.deleteResult.removedFromDate': 'Usunięto wszystkie sesje z {dateLabel}.', + 'sessions.sidebar.dialogs.deleteResult.tryAgain': 'Spróbuj ponownie za chwilę.', + 'sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked': 'To usuwa wybrane drzewo pracy.', + 'sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked': 'To usuwa wybrane drzewo pracy i archiwizuje {count} powiązaną sesję.', + 'sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked': 'To usuwa wybrane drzewo pracy i archiwizuje {count} powiązane sesje.', + 'sessions.sidebar.dialogs.sessionDelete.descriptionOne': 'Ta akcja trwale usuwa 1 sesję.', + 'sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate': 'Ta akcja trwale usuwa 1 sesję z {dateLabel}.', + 'sessions.sidebar.dialogs.sessionDelete.descriptionMany': 'Ta akcja trwale usuwa {count} sesji.', + 'sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate': 'Ta akcja trwale usuwa {count} sesji z {dateLabel}.', + 'sessions.sidebar.dialogs.sessionList.more': '+{count} więcej', + 'sessions.sidebar.session.share.successTitle': 'Sesja udostępniona', + 'sessions.sidebar.session.share.successDescription': 'Możesz skopiować link z menu.', + 'sessions.sidebar.session.share.error': 'Nie można udostępnić sesji', + 'sessions.sidebar.session.share.copyUrlError': 'Nie udało się skopiować URL', + 'sessions.sidebar.session.unshare.success': 'Cofnięto udostępnienie sesji', + 'sessions.sidebar.session.unshare.error': 'Nie można cofnąć udostępnienia sesji', + 'sessions.sidebar.session.delete.success': 'Sesja usunięta', + 'sessions.sidebar.session.delete.error': 'Nie udało się usunąć sesji', + 'sessions.sidebar.session.archive.success': 'Sesja zarchiwizowana', + 'sessions.sidebar.session.archive.error': 'Nie udało się zarchiwizować sesji', + 'sessions.sidebar.group.pr.checksPassed': '{success}/{total} testów przeszło', + 'sessions.sidebar.group.pr.failingCount': '{count} niepowodzeń', + 'sessions.sidebar.group.pr.pendingCount': '{count} oczekujących', + 'sessions.sidebar.group.pr.conflictsOrBlocked': 'Konflikty lub zablokowane', + 'sessions.sidebar.group.pr.mergeable': 'Można scalć', + 'sessions.sidebar.group.pr.mergeState': 'Stan scalania: {state}', + 'sessions.sidebar.group.pr.status.merged': 'Scalone', + 'sessions.sidebar.group.pr.status.readyToMerge': 'Gotowe do scalenia', + 'sessions.sidebar.group.pr.status.open': 'PR otwarty', + 'sessions.sidebar.group.pr.status.mergeConflicts': 'Konflikty scalania', + 'sessions.sidebar.group.pr.status.mergeBlocked': 'Scalanie zablokowane', + 'sessions.sidebar.group.pr.status.draft': 'Szkic PR', + 'sessions.sidebar.group.pr.status.closed': 'Zamknięty', + 'sessions.sidebar.group.empty.noArchivedSessions': 'Brak zarchiwizowanych sesji.', + 'sessions.sidebar.group.empty.noSessionsInWorkspace': 'Brak sesji w tej przestrzeni roboczej.', + 'sessions.sidebar.group.showMoreSingle': 'Pokaż {count} więcej sesji', + 'sessions.sidebar.group.showMorePlural': 'Pokaż {count} więcej sesji', + 'sessions.sidebar.group.showFewer': 'Pokaż mniej sesji', + 'sessions.sidebar.group.expandAria': 'Rozwiń {label}', + 'sessions.sidebar.group.collapseAria': 'Zwiń {label}', + 'sessions.sidebar.group.actions.deleteArchivedInGroupAria': 'Usuń zarchiwizowane sesje w {label}', + 'sessions.sidebar.group.actions.deleteArchivedSessions': 'Usuń zarchiwizowane sesje', + 'sessions.sidebar.group.actions.deleteGroupAria': 'Usuń {label}', + 'sessions.sidebar.group.actions.deleteWorktree': 'Usuń drzewo pracy', + 'sessions.sidebar.group.actions.newDraftInGroupAria': 'Nowa sesja robocza w {label}', + 'sessions.sidebar.grouping.projectRoot': 'główny katalog projektu', + 'sessions.sidebar.grouping.projectRootWithBranch': 'główny katalog projektu: {branch}', + 'sessions.sidebar.grouping.archived': 'zarchiwizowane', + 'sessions.sidebar.grouping.archivedDescription': 'Zarchiwizowane i nieprzypisane sesje', + 'sessions.sidebar.folderItem.expandAria': 'Rozwiń folder {folderName}', + 'sessions.sidebar.folderItem.collapseAria': 'Zwiń folder {folderName}', + 'sessions.sidebar.folderItem.namePlaceholder': 'Nazwa folderu', + 'sessions.sidebar.folderItem.newSessionAria': 'Nowa sesja w {folderName}', + 'sessions.sidebar.folderItem.newSubfolderAria': 'Nowy pod-folder w {folderName}', + 'sessions.sidebar.folderItem.newSubfolder': 'Nowy pod-folder', + 'sessions.sidebar.folderItem.renameAria': 'Zmień nazwę folderu {folderName}', + 'sessions.sidebar.folderItem.deleteArchivedInFolderAria': 'Usuń zarchiwizowane sesje w folderze {folderName}', + 'sessions.sidebar.folderItem.deleteFolderAria': 'Usuń folder {folderName}', + 'sessions.sidebar.folderItem.emptyFolder': 'Pusty folder', + 'sessions.sidebar.sessionDialogs.ok': 'OK', + 'sessions.sidebar.sessionDialogs.linkedSessionSingle': 'Powiązana sesja', + 'sessions.sidebar.sessionDialogs.linkedSessionPlural': 'Powiązane sesje', + 'sessions.sidebar.sessionDialogs.delete.note': 'Katalogi drzew pracy pozostają nienaruszone. Pod-sesje powiązane z wybranymi sesjami również zostaną usunięte.', + 'sessions.sidebar.sessionDialogs.directory.errorSelectTitle': 'Nie udało się wybrać katalogu', + 'sessions.sidebar.sessionDialogs.directory.errorOpenTitle': 'Nie udało się otworzyć katalogu', + 'sessions.sidebar.sessionDialogs.directory.errorOpenDescription': 'Aplikacja desktopowa nie mogła nadać dostępu do plików.', + 'sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle': 'Nie udało się dodać projektu', + 'sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription': 'Wybierz prawidłową ścieżkę katalogu.', + 'sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle': 'Nie udało się usunąć drzewa pracy', + 'sessions.sidebar.sessionDialogs.worktree.removedTitle': 'Drzewo pracy usunięte', + 'sessions.sidebar.sessionDialogs.worktree.removed': 'Drzewo pracy usunięte.', + 'sessions.sidebar.sessionDialogs.worktree.removedWithRemote': 'Drzewo pracy i zdalna gałąź usunięte.', + 'sessions.sidebar.sessionDialogs.worktree.attachedArchived': 'Dołączone drzewo pracy zarchiwizowane.', + 'sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural': 'Dołączone drzewa pracy zarchiwizowane.', + 'sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved': 'Zarchiwizowane drzewa pracy i usunięte zdalne gałęzie.', + 'sessions.sidebar.sessionDialogs.worktree.label': 'Drzewo pracy', + 'sessions.sidebar.sessionDialogs.worktree.pathUnavailable': 'Ścieżka drzewa pracy niedostępna.', + 'sessions.sidebar.sessionDialogs.worktree.uncommittedWarning': 'Niezatwierdzone zmiany zostaną odrzucone.', + 'sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch': 'Usuń zdalną gałąź', + 'sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable': 'Informacje o zdalnej gałęzi niedostępne', + 'sessions.sidebar.sessionDialogs.actions.deleteLocalBranch': 'Usuń lokalną gałąź', + 'sessions.sidebar.sessionDialogs.actions.deleting': 'Usuwanie...', + 'sessions.sidebar.sessionDialogs.actions.deleteWorktree': 'Usuń drzewo pracy', + 'session.githubIntegration.title': 'Wybierz z GitHub', + 'session.githubIntegration.tabs.issues': 'Zagadnienia', + 'session.githubIntegration.tabs.pullRequests': 'Pull requesty', + 'session.githubIntegration.connect.title': 'Połącz z GitHub', + 'session.githubIntegration.connect.description': 'Połącz zagadnienia lub pull requesty aby auto-wypełnić szczegóły drzewa pracy', + 'session.githubIntegration.connect.action': 'Połącz GitHub', + 'session.githubIntegration.search.issuesPlaceholder': 'Szukaj zagadnień lub wpisz #123...', + 'session.githubIntegration.search.prsPlaceholder': 'Szukaj PR lub wpisz #456...', + 'session.githubIntegration.empty.noIssuesFound': 'Nie znaleziono zagadnień', + 'session.githubIntegration.empty.noPullRequestsFound': 'Nie znaleziono pull requestów', + 'session.githubIntegration.actions.loadMore': 'Załaduj więcej', + 'session.githubIntegration.actions.cancel': 'Anuluj', + 'session.githubIntegration.actions.select': 'Wybierz', + 'session.githubIntegration.selected.issueNumber': 'Zagadnienie #{number}', + 'session.githubIntegration.selected.prNumber': 'PR #{number}', + 'session.githubIntegration.includeDiffAria': 'Dołącz diff PR do kontekstu sesji', + 'session.githubIntegration.includeDiff': 'Dołącz diff PR', + 'session.githubIntegration.error.notConnected': 'GitHub nie jest połączony', + 'session.githubIntegration.error.loadDataFailed': 'Nie udało się załadować danych', + 'session.githubIntegration.validation.branchAlreadyCheckedOut': 'Gałąź jest już wyewidencjonowana w drzewie pracy', + 'session.githubIntegration.validation.failed': 'Walidacja nie powiodła się', + 'chat.fileAttachment.toast.attachFailed': 'Nie udało się dołączyć pliku', + 'chat.fileAttachment.toast.someFilesSkipped': 'Niektóre pliki zostały pominięte:\n{summary}', + 'chat.fileAttachment.toast.vscodePickFailed': 'Nie udało się wybrać plików w VS Code', + 'chat.fileAttachment.fileFallback': 'plik', + 'chat.fileAttachment.skippedFallback': 'pominięty', + 'chat.fileAttachment.actions.attachAria': 'Dołącz pliki', + 'chat.fileAttachment.actions.attach': 'Dołącz pliki', + 'chat.fileAttachment.actions.removeNamed': 'Usuń {name}', + 'chat.fileAttachment.actions.removeImage': 'Usuń obraz', + 'chat.fileAttachment.activeEditor.addFile': 'Dodaj plik:{name} do kontekstu', + 'chat.fileAttachment.activeEditor.pinSelection': 'Przypnij zaznaczenie do kontekstu', + 'chat.fileAttachment.activeEditor.remove': 'Usuń z kontekstu', + 'chat.pendingChanges.fileCountSingle': '{count} plik', + 'chat.pendingChanges.fileCountPlural': '{count} plików', + 'chat.pendingChanges.changedInWorkspace': 'zmienione w przestrzeni roboczej', + 'chat.changedFiles.title': 'Zmienione pliki', + 'chat.changedFiles.actions.openFileTitle': 'Otwórz {path}', + 'chat.emptyState.opencodeUnreachable': 'OpenCode jest nieosiągalny', + 'chat.emptyState.startNewChat': 'Rozpocznij nowy czat', + 'chat.scrollToBottom.aria': 'Przewiń na dół', + 'chat.timeline.relative.justNow': 'przed chwilą', + 'chat.timeline.relative.minutesAgo': '{count}m temu', + 'chat.timeline.relative.hoursAgo': '{count}h temu', + 'chat.timeline.relative.daysAgo': '{count}d temu', + 'chat.timeline.title': 'Oś Czasu Rozmowy', + 'chat.timeline.description': 'Nawiguj do dowolnego punktu w rozmowie lub rozwidl nową sesję', + 'chat.timeline.searchPlaceholder': 'Szukaj wiadomości...', + 'chat.timeline.empty.search': 'Nie znaleziono wiadomości', + 'chat.timeline.empty.session': 'Brak wiadomości w tej sesji', + 'chat.timeline.noTextContent': '[Brak treści tekstowej]', + 'chat.timeline.actions.title': 'Akcje', + 'chat.timeline.actions.revertFromHere': 'Cofnij od tego miejsca', + 'chat.timeline.actions.forkFromHere': 'Rozwidl od tego miejsca', + 'chat.timeline.actions.previousTurn': 'Poprzednia tura', + 'chat.timeline.actions.latest': 'Najnowsze', + 'chat.timeline.help.clickMessage': 'Kliknij na wiadomość aby przewinąć do niej w rozmowie', + 'chat.timeline.help.undoToPoint': 'Cofnij do tego punktu (tekst wiadomości wypełni pole wejściowe)', + 'chat.timeline.help.createSessionFromHere': 'Utwórz nową sesję zaczynając od tego miejsca', + 'chat.statusRow.todo.status.inProgress': 'W toku', + 'chat.statusRow.todo.status.pending': 'Oczekujące', + 'chat.statusRow.todo.status.completed': 'Ukończone', + 'chat.statusRow.todo.status.cancelled': 'Anulowane', + 'chat.statusRow.todo.priority.high': 'Wysoki priorytet', + 'chat.statusRow.todo.priority.medium': 'Średni priorytet', + 'chat.statusRow.todo.priority.low': 'Niski priorytet', + 'chat.statusRow.actions.stopGeneratingAria': 'Zatrzymaj generowanie', + 'chat.statusRow.tasksTitle': 'Zadania', + 'chat.statusRow.summary.activeLeft': '{active} aktywne · {left} pozostało', + 'chat.statusRow.aborted': 'Przerwane', + 'chat.errorBoundary.title': 'Błąd Czatu', + 'chat.errorBoundary.description': 'Interfejs czatu napotkał błąd. Może to być spowodowane tymczasowym problemem sieciowym lub uszkodzonymi danymi wiadomości.', + 'chat.errorBoundary.sessionLabel': 'Sesja', + 'chat.errorBoundary.detailsSummary': 'Szczegóły błędu', + 'chat.errorBoundary.resetAction': 'Resetuj Czat', + 'chat.errorBoundary.persistentHint': 'Jeśli problem będzie się powtarzał, spróbuj odświeżyć stronę.', + 'chat.autocomplete.tabs.commands': 'Polecenia', + 'chat.autocomplete.tabs.agents': 'Agenci', + 'chat.autocomplete.tabs.files': 'Pliki', + 'chat.autocomplete.keyboardHint': '↑↓ nawigacja • Enter wybierz • Esc zamknij', + 'chat.commandAutocomplete.command.initDescription': 'Utwórz/zaktualizuj plik AGENTS.md', + 'chat.commandAutocomplete.command.undoDescription': 'Cofnij ostatnią wiadomość', + 'chat.commandAutocomplete.command.redoDescription': 'Ponów poprzednio cofnięte wiadomości', + 'chat.commandAutocomplete.command.compactDescription': 'Skompresuj historię sesji używając AI aby zredukować rozmiar kontekstu', + 'chat.commandAutocomplete.command.summaryDescription': 'Niedestrukcyjne podsumowanie sesji. Opcjonalna wskazówka tematu po poleceniu.', + 'chat.commandAutocomplete.command.workspaceReviewDescription': 'Recenzja obecnych zmian w przestrzeni roboczej tylko dla problemów o wysokim sygnale.', + 'chat.commandAutocomplete.badge.skill': 'skill', + 'chat.commandAutocomplete.badge.system': 'system', + 'chat.commandAutocomplete.empty': 'Nie znaleziono poleceń', + 'chat.agentMentionAutocomplete.badge.system': 'system', + 'chat.agentMentionAutocomplete.empty': 'Nie znaleziono agentów', + 'chat.fileMentionAutocomplete.searchMoreAgents': 'Wpisz aby szukać więcej agentów', + 'chat.fileMentionAutocomplete.empty': 'Nie znaleziono pasujących', + 'chat.queuedMessage.attachments': '+{count} plik(i)', + 'chat.queuedMessage.empty': '(puste)', + 'chat.queuedMessage.removeAria': 'Usuń z kolejki', + 'chat.container.returnToParent.aria': 'Powrót do sesji nadrzędnej', + 'chat.container.returnToParent.titleNamed': 'Powrót do: {title}', + 'chat.container.returnToParent.title': 'Powrót do sesji nadrzędnej', + 'chat.container.returnToParent.label': 'Nadrzędna', + 'chat.unifiedControls.title': 'Kontrolki', + 'chat.unifiedControls.model.title': 'Model', + 'chat.unifiedControls.model.noRecent': 'Brak ostatnich modeli', + 'chat.unifiedControls.model.moreAria': 'Więcej modeli', + 'chat.unifiedControls.effort.title': 'Wysiłek', + 'chat.unifiedControls.effort.moreAria': 'Więcej opcji wysiłku', + 'chat.questionCard.summaryTab': 'Podsumowanie', + 'chat.questionCard.noAnswer': '(brak odpowiedzi)', + 'chat.questionCard.inputNeeded': 'Wymagane wejście', + 'chat.questionCard.fromSubagent': 'Od pod-agenta', + 'chat.questionCard.questionFallback': 'Pytanie {index}', + 'chat.questionCard.selectMultiple': 'Wybierz wiele', + 'chat.questionCard.recommended': 'rekomendowane', + 'chat.questionCard.other': 'Inne...', + 'chat.questionCard.yourAnswer': 'Twoja odpowiedź', + 'chat.questionCard.submit': 'Wyślij', + 'chat.questionCard.next': 'Następne', + 'chat.questionCard.dismiss': 'Odrzuć', + 'chat.textSelection.toast.noProject': 'Nie znaleziono projektu dla tej sesji', + 'chat.textSelection.toast.addToNotesFailed': 'Nie udało się dodać do notatek', + 'chat.textSelection.toast.addToNotesSuccess': 'Dodano destylowaną wiedzę do notatek', + 'chat.textSelection.toast.addToNotesSummaryFailed': 'Nie można podsumować zaznaczenia, dodano wybrany tekst do notatek', + 'chat.textSelection.actions.addToChat': 'Dodaj do czatu', + 'chat.textSelection.actions.newSession': 'Nowa sesja', + 'chat.textSelection.actions.copy': 'Kopiuj', + 'chat.textSelection.actions.addToNotes': 'Dodaj do notatek', + 'chat.textSelection.title.addToCurrentChat': 'Dodaj do obecnego czatu', + 'chat.textSelection.title.newSessionWithSelection': 'Utwórz nową sesję z zaznaczeniem', + 'chat.textSelection.title.saveInsightToNotes': 'Zapisz destylowaną wiedzę do notatek', + 'chat.messageBody.actions.revertAria': 'Cofnij do tej wiadomości', + 'chat.messageBody.actions.revert': 'Cofnij od tego miejsca', + 'chat.messageBody.actions.forkAria': 'Rozwidl z tej wiadomości', + 'chat.messageBody.actions.fork': 'Rozwidl od tego miejsca', + 'chat.messageBody.actions.copyMessageAria': 'Kopiuj tekst wiadomości', + 'chat.messageBody.actions.copyMessage': 'Kopiuj wiadomość', + 'chat.messageBody.actions.openPreviewAria': 'Otwórz podgląd', + 'chat.messageBody.actions.openPreview': 'Otwórz podgląd', + 'chat.messageBody.actions.copyAnswer': 'Kopiuj odpowiedź', + 'chat.messageBody.actions.savingImage': 'Zapisywanie obrazu...', + 'chat.messageBody.actions.saveAsImage': 'Zapisz jako obraz', + 'chat.messageBody.actions.saveAsPlan': 'Zapisz jako plan', + 'chat.messageBody.actions.startNewSession': 'Rozpocznij nową sesję z tej odpowiedzi', + 'chat.messageBody.actions.startNewMultiRun': 'Rozpocznij nowe wielokrotne uruchomienie z tej odpowiedzi', + 'chat.messageBody.tts.stopSpeaking': 'Przestań mówić', + 'chat.messageBody.tts.readAloud': 'Czytaj na głos', + 'chat.messageBody.tts.readAloudWithProvider': 'Czytaj na głos ({provider} voice)', + 'chat.messageBody.toast.noProject': 'Nie znaleziono projektu dla tej sesji', + 'chat.messageBody.toast.savePlanFailed': 'Nie udało się zapisać planu', + 'chat.messageBody.toast.planSaved': 'Plan zapisany', + 'chat.messageBody.toast.imageSaved': 'Obraz zapisany', + 'chat.messageBody.toast.generateImageFailed': 'Nie udało się wygenerować obrazu', + 'errorBoundary.title': 'Coś poszło nie tak', + 'errorBoundary.description': 'Aplikacja napotkała nieoczekiwany błąd. Zostało to zalogowane do celów debugowania.', + 'errorBoundary.state.unknownError': 'Nieznany błąd', + 'errorBoundary.state.componentStackLabel': 'Stos komponentów:', + 'errorBoundary.actions.errorDetails': 'Szczegóły błędu', + 'errorBoundary.actions.tryAgain': 'Spróbuj ponownie', + 'errorBoundary.actions.copy': 'Kopiuj', + 'errorBoundary.actions.copied': 'Skopiowano', + 'jsonTreeView.error.emptyJson': 'Pusty JSON', + 'jsonTreeView.error.invalidJson': 'Nieprawidłowy JSON', + 'jsonTreeView.error.invalidJsonTitle': 'Nieprawidłowy JSON', + 'jsonTreeView.actions.expandAll': 'Rozwiń wszystko', + 'jsonTreeView.actions.collapseAll': 'Zwiń wszystko', + 'numberInput.actions.decreaseAria': 'Zmniejsz wartość', + 'numberInput.actions.increaseAria': 'Zwiększ wartość', + 'goToLineDialog.field.linePlaceholder': 'Linia', + 'goToLineDialog.field.linePlaceholderShort': 'Linia', + 'goToLineDialog.actions.go': 'Przejdź', + 'goToLineDialog.helper.editorUnavailable': 'Edytor niedostępny.', + 'goToLineDialog.helper.currentLineRange': 'Obecna linia: {current}. Wpisz numer linii między 1 a {max} aby nawigować.', + 'goToLineDialog.helper.goToLine': 'Przejdź do linii {line}', + 'dialog.common.actions.close': 'Zamknij', + 'filesView.toast.relativePathCopied': 'Względna ścieżka skopiowana', + 'filesView.tree.menu.copyRelativePath': 'Kopiuj względną ścieżkę', + 'multiRun.branchSelector.placeholder.selectSourceBranch': 'Wybierz gałąź źródłową...', + 'multiRun.branchSelector.status.loadingBranches': 'Ładowanie gałęzi...', + 'multiRun.branchSelector.status.noBranchesFound': 'Nie znaleziono gałęzi', + 'multiRun.branchSelector.status.notInGitRepository': 'Nie w repozytorium git.', + 'multiRun.branchSelector.groups.localBranches': 'Lokalne gałęzie', + 'multiRun.branchSelector.groups.remoteBranches': 'Zdalne gałęzie', + 'multiRun.window.actions.closeAria': 'Zamknij wielokrotne uruchomienie', + 'multiRun.window.description': 'Okno wielokrotnego uruchomienia OpenChamber.', + 'voice.status.idle': 'Głos gotowy', + 'voice.status.listening': 'Słucham...', + 'voice.status.processing': 'Przetwarzanie...', + 'voice.status.speaking': 'Mówię...', + 'voice.status.error': 'Błąd głosu', + 'voice.status.conversationModeActiveAria': 'Tryb rozmowy aktywny', + 'onboarding.common.actions.back': 'Wstecz', + 'onboarding.common.copyToClipboard': 'Kopiuj do schowka', + 'onboarding.common.status.copiedToClipboard': 'Skopiowano do schowka', + 'onboarding.chooser.title': 'Witaj w OpenChamber', + 'onboarding.chooser.description': 'Wybierz sposób połączenia aby rozpocząć.', + 'onboarding.chooser.tabs.localInstall': 'Lokalna instalacja', + 'onboarding.chooser.tabs.connectRemote': 'Połącz zdalnie', + 'onboarding.localSetup.title': 'Konfiguracja OpenCode', + 'onboarding.localSetup.description': 'Zainstaluj CLI OpenCode aby kontynuować.', + 'onboarding.localSetup.dialog.selectOpencodeBinary': 'Wybierz binarkę opencode', + 'onboarding.localSetup.errors.cliNotReady': 'OpenCode CLI nie jest jeszcze gotowy. Potwierdź, że instalacja jest kompletna i spróbuj ponownie.', + 'onboarding.localSetup.errors.detectionFailed': 'Wykrywanie nie powiodło się', + 'onboarding.localSetup.windows.title': 'Konfiguracja Windows (zalecane WSL)', + 'onboarding.localSetup.windows.stepInstallWsl': 'Zainstaluj WSL (jeśli potrzeba) z', + 'onboarding.localSetup.windows.stepInstallWslSuffix': 'w PowerShell.', + 'onboarding.localSetup.windows.stepRunInstallInWsl': 'Uruchom polecenie instalacji poniżej wewnątrz terminala WSL.', + 'onboarding.localSetup.windows.stepSetBinaryPath': 'Jeśli OpenChamber nie wykryje OpenCode automatycznie, ustaw ścieżkę binarki poniżej.', + 'onboarding.localSetup.docs.windows': 'Wyświetl dokumentację Windows + WSL', + 'onboarding.localSetup.docs.default': 'Wyświetl dokumentację', + 'onboarding.localSetup.actions.checking': 'Sprawdzanie...', + 'onboarding.localSetup.helper.checkAndContinue': 'Kliknij aby sprawdzić czy OpenCode CLI jest dostępny. Jeśli się uda, automatycznie przejdziesz do głównego ekranu.', + 'onboarding.localSetup.field.alreadyInstalled': 'Juz zainstalowane? Ustaw ścieżkę binarki OpenCode:', + 'onboarding.localSetup.actions.browse': 'Przeglądaj', + 'onboarding.localSetup.actions.apply': 'Zastosuj', + 'onboarding.localSetup.helper.saveAndReload': 'Zapisuje do ustawień OpenChamber i przeładowuje konfigurację OpenCode.', + 'onboarding.localSetup.remotePreference': 'Wolisz używać zdalnego serwera?', + 'onboarding.localSetup.actions.connectRemoteServer': 'Połącz z serwerem zdalnym →', + 'onboarding.localSetup.windows.hintInstallInWsl': 'W Windows, zainstaluj i uruchom OpenCode w WSL dla najlepszej kompatybilności.', + 'onboarding.localSetup.windows.hintDetectionFailed': 'Jeśli wykrywanie nie powiedzie się, ustaw natywną ścieżkę (opencode.cmd/opencode.exe), wsl.exe, lub wsl:/usr/local/bin/opencode.', + 'onboarding.localSetup.hint.ensurePath': 'Juz zainstalowane? Upewnij się, że opencode jest w twoim PATH.', + 'onboarding.localSetup.hint.setEnv': 'Lub ustaw zmienną środowiskową OPENCODE_BINARY.', + 'onboarding.localSetup.hint.missingRuntime': 'Jeśli widzisz "env: node: No such file or directory" lub "env: bun: No such file or directory", zainstaluj to środowisko lub upewnij się, że jest w PATH.', + 'onboarding.remoteConnection.title': 'Połącz z serwerem zdalnym', + 'onboarding.remoteConnection.titleRecovery': 'Połącz z innym serwerem', + 'onboarding.remoteConnection.description': 'Wpisz adres serwera OpenChamber aby się połączyć.', + 'onboarding.remoteConnection.field.serverAddress': 'Adres serwera', + 'onboarding.remoteConnection.field.serverAddressPlaceholder': 'https://twoj-serwer.przykład.com:4096', + 'onboarding.remoteConnection.field.nameOptional': 'Nazwa (opcjonalna)', + 'onboarding.remoteConnection.field.namePlaceholder': 'Mój serwer zdalny', + 'onboarding.remoteConnection.errors.connectionTestFailed': 'Test połączenia nie powiódł się', + 'onboarding.remoteConnection.errors.failedToSaveConnection': 'Nie udało się zapisać połączenia', + 'onboarding.remoteConnection.status.connectedSuccessfully': 'Połączono pomyślnie ({latencyMs}ms)', + 'onboarding.remoteConnection.status.authWarning': 'Serwer wymaga uwierzytelnienia. Nadal możesz się połączyć.', + 'onboarding.remoteConnection.status.connectionFailed': 'Połączenie nie powiodło się', + 'onboarding.remoteConnection.status.suggestionsUnreachable': 'Sugestie: Sprawdź adres serwera, zweryfikuj czy serwer działa, lub sprawdź swoje połączenie sieciowe.', + 'onboarding.remoteConnection.status.suggestionsWrongService': 'Sugestie: Zweryfikuj czy URL wskazuje na serwer OpenChamber, lub skontaktuj się z administratorem serwera.', + 'onboarding.remoteConnection.actions.testing': 'Testowanie...', + 'onboarding.remoteConnection.actions.testConnection': 'Testuj połączenie', + 'onboarding.remoteConnection.actions.connectAndRestart': 'Połącz i przeładuj', + 'onboarding.remoteConnection.actions.whatToDo': 'Co chcesz zrobić?', + 'onboarding.remoteConnection.actions.chooseDifferentServer': 'Wybierz inny serwer', + 'onboarding.remoteConnection.actions.useLocalInstead': 'Użyj lokalnego zamiast', + 'onboarding.remoteConnection.probe.authMessage': 'Serwer wymaga uwierzytelnienia. Nadal możesz się połączyć, ale może być konieczne podanie danych uwierzytelniających.', + 'onboarding.remoteConnection.probe.wrongServiceMessage': 'Serwer odpowiedział, ale nie uruchomiono na nim OpenChamber. Zweryfikuj czy adres wskazuje na serwer OpenChamber.', + 'onboarding.remoteConnection.probe.unreachableMessage': 'Serwer jest nieosiągalny. Sprawdź swoje połączenie sieciowe i zweryfikuj adres serwera.', + 'onboarding.desktopRecovery.localUnavailable.title': 'OpenCode lokalny niedostępny', + 'onboarding.desktopRecovery.localUnavailable.description': 'Nie można było uruchomić OpenCode CLI lub nie jest zainstalowany. Zainstaluj OpenCode lub połącz się z serwerem zdalnym.', + 'onboarding.desktopRecovery.localUnavailable.retry': 'Ponów lokalnie', + 'onboarding.desktopRecovery.localUnavailable.useLocal': 'Skonfiguruj lokalny', + 'onboarding.desktopRecovery.noDefaultConnection.title': 'Brak domyślnego połączenia', + 'onboarding.desktopRecovery.noDefaultConnection.description': 'Nie można było znaleźć twojego zapisanego domyślnego połączenia. Wybierz sposób połączenia.', + 'onboarding.desktopRecovery.remoteUnreachable.title': 'Serwer zdalny nieosiągalny', + 'onboarding.desktopRecovery.remoteUnreachable.description': 'Nie można było połączyć się z "{host}". Sprawdź połączenie sieciowe i zweryfikuj adres serwera.', + 'onboarding.desktopRecovery.remoteUnreachable.retry': 'Ponów połączenie', + 'onboarding.desktopRecovery.incompatibleServer.title': 'Niekompatybilny serwer', + 'onboarding.desktopRecovery.incompatibleServer.description': 'Serwer pod adresem "{host}" nie uruchamia OpenChamber. Zweryfikuj czy adres wskazuje na serwer OpenChamber.', + 'onboarding.desktopRecovery.common.useLocal': 'Użyj lokalnego', + 'onboarding.desktopRecovery.common.useRemote': 'Użyj zdalnego', + 'onboarding.desktopRecovery.actions.retrying': 'Ponawianie...', + 'onboarding.desktopRecovery.actions.retryConnection': 'Ponów połączenie', + 'startup.initRecovery.title': 'Uruchamianie nie powiodło się', + 'startup.initRecovery.description': 'OpenChamber nie mógł dokończyć inicjalizacji. Sprawdź czy serwer działa, następnie spróbuj ponownie.', + 'startup.initRecovery.retry': 'Ponów', + 'startup.initRecovery.retrying': 'Ponawianie...', + 'onboarding.desktopRecovery.placeholders.remoteServer': 'serwer zdalny', + 'onboarding.desktopRecovery.placeholders.unknownServer': 'nieznany', + 'aboutDialog.actions.copyDiagnostics': 'Kopiuj diagnostykę', + 'aboutDialog.actions.diagnosticsCopied': 'Diagnostyka skopiowana', + 'aboutDialog.actions.preparingDiagnostics': 'Przygotowywanie diagnostyki...', + 'aboutDialog.diagnosticsDescription': 'Zawiera stan OpenChamber, kondycję OpenCode, katalogi i projekty.', + 'aboutDialog.footerNote': 'Stworzone z sercem dla społeczności', + 'aboutDialog.tagline': 'Kodowanie z agentami w starannie zaprojektowanej przestrzeni roboczej.', + 'aboutDialog.toast.copyFailed': 'Nie udało się skopiować', + 'aboutDialog.toast.diagnosticsCopied': 'Diagnostyka skopiowana', + 'aboutDialog.toast.diagnosticsNotReady': 'Diagnostyka nie jest jeszcze gotowa. Poczekaj chwilę i spróbuj ponownie.', + 'aboutDialog.versionLabel': 'Wersja {version}', + 'agentManager.detail.actions.copyWorktreePath': 'Kopiuj ścieżkę drzewa pracy', + 'agentManager.detail.actions.keepThisRemoveOthers': 'Zostaw to, usuń pozostałe', + 'agentManager.detail.actions.removeThisWorktree': 'Usuń to drzewo pracy', + 'agentManager.detail.actions.worktreeActionsAria': 'Akcje drzewa pracy', + 'agentManager.detail.dialog.cancel': 'Anuluj', + 'agentManager.detail.dialog.remove': 'Usuń', + 'agentManager.detail.dialog.removeOtherWorktreesDescription': 'Zachować „{label}” i usunąć pozostałe drzewa pracy w „{group}”?', + 'agentManager.detail.dialog.removeOtherWorktreesTitle': 'Usuń pozostałe drzewa pracy', + 'agentManager.detail.dialog.removeOthers': 'Usuń pozostałe', + 'agentManager.detail.dialog.removeWorktreeDescription': 'Usunąć „{label}”? Spowoduje to usunięcie wszystkich sesji w tym drzewie pracy i samego drzewa pracy.', + 'agentManager.detail.dialog.removeWorktreeTitle': 'Usuń drzewo pracy', + 'agentManager.detail.dialog.working': 'Trwa przetwarzanie...', + 'agentManager.detail.header.modelCountPlural': '{count} modele', + 'agentManager.detail.header.modelCountSingle': '{count} model', + 'agentManager.detail.header.noBranch': 'Brak gałęzi', + 'agentManager.detail.state.loadingSessionFor': 'Ładowanie sesji dla {label}', + 'agentManager.detail.state.noSessionsInGroup': 'Brak sesji w tej grupie', + 'agentManager.detail.state.sessionId': 'ID sesji: {id}', + 'agentManager.detail.toast.failedToCopyPath': 'Nie udało się skopiować ścieżki', + 'agentManager.detail.toast.failedToFullyRemoveWorktree': 'Nie udało się całkowicie usunąć drzewa pracy', + 'agentManager.detail.toast.noWorktreePath': 'Brak dostępnej ścieżki drzewa pracy', + 'agentManager.detail.toast.otherWorktreesRemoved': 'Usunięto pozostałe drzewa pracy', + 'agentManager.detail.toast.removingOtherWorktrees': 'Usuwanie pozostałych drzew pracy...', + 'agentManager.detail.toast.removingWorktree': 'Usuwanie drzewa pracy...', + 'agentManager.detail.toast.worktreePathCopied': 'Ścieżka drzewa pracy skopiowana', + 'agentManager.detail.toast.worktreeRemoved': 'Drzewo pracy usunięte', + 'agentManager.empty.actions.startAgentGroupAria': 'Uruchom grupę agentów', + 'agentManager.empty.agent.description': 'Domyślnie używany jest skonfigurowany agent domyślny', + 'agentManager.empty.agent.label': 'Agent', + 'agentManager.empty.baseBranch.description': 'Tworzy nowe gałęzie na podstawie {branch}', + 'agentManager.empty.baseBranch.label': 'Gałąź bazowa', + 'agentManager.empty.groupName.description': 'Używane do nazwy katalogu drzewa pracy i gałęzi', + 'agentManager.empty.groupName.label': 'Nazwa grupy', + 'agentManager.empty.groupName.placeholder': 'np. feature-auth, bugfix-login', + 'agentManager.empty.models.addModel': 'Dodaj model', + 'agentManager.empty.models.label': 'Modele', + 'agentManager.empty.models.selectedPlural': 'Wybrano {count} modeli', + 'agentManager.empty.models.selectedSingle': 'Wybrano {count} model', + 'agentManager.empty.prompt.addAttachmentAria': 'Dodaj załącznik', + 'agentManager.empty.prompt.label': 'Prompt', + 'agentManager.empty.prompt.placeholder': 'Zapytaj o cokolwiek...', + 'agentManager.empty.setupCommands.addCommand': 'Dodaj polecenie', + 'agentManager.empty.setupCommands.commandPlaceholder': 'np. bun install', + 'agentManager.empty.setupCommands.configured': 'Skonfigurowano {count}', + 'agentManager.empty.setupCommands.description': 'Polecenia uruchamiane w każdym nowym drzewie pracy. Użyj $ROOT_PROJECT_PATH dla katalogu projektu.', + 'agentManager.empty.setupCommands.label': 'Polecenia konfiguracji', + 'agentManager.empty.setupCommands.loading': 'Ładowanie...', + 'agentManager.empty.setupCommands.removeCommandAria': 'Usuń polecenie', + 'agentManager.empty.toast.attachedPlural': 'Dołączono {count} plików', + 'agentManager.empty.toast.attachedSingle': 'Dołączono {count} plik', + 'agentManager.empty.toast.failedToAttach': 'Nie udało się dołączyć „{fileName}”', + 'agentManager.empty.toast.failedToCreateGroup': 'Nie udało się utworzyć grupy agentów', + 'agentManager.empty.toast.fileTooLarge': 'Plik „{fileName}” jest zbyt duży (maks. 10 MB)', + 'agentManager.sidebar.actions.more': '... Więcej ({count})', + 'agentManager.sidebar.actions.newAgentGroup': 'Nowa grupa agentów', + 'agentManager.sidebar.actions.showLess': 'Pokaż mniej', + 'agentManager.sidebar.dialog.cancel': 'Anuluj', + 'agentManager.sidebar.dialog.delete': 'Usuń', + 'agentManager.sidebar.dialog.deleteGroupDescription': 'Usunąć „{group}”? Spowoduje to usunięcie wszystkich drzew pracy i sesji w tej grupie.', + 'agentManager.sidebar.dialog.deleteGroupTitle': 'Usuń grupę agentów', + 'agentManager.sidebar.dialog.deleting': 'Usuwanie...', + 'agentManager.sidebar.item.delete': 'Usuń', + 'agentManager.sidebar.item.groupMenuAria': 'Menu grupy', + 'agentManager.sidebar.item.modelCountPlural': '{count} modele', + 'agentManager.sidebar.item.modelCountSingle': '{count} model', + 'agentManager.sidebar.relativeTime.days': '{count}d', + 'agentManager.sidebar.relativeTime.hours': '{count}h', + 'agentManager.sidebar.relativeTime.minutes': '{count}m', + 'agentManager.sidebar.relativeTime.now': 'teraz', + 'agentManager.sidebar.search.placeholder': 'Szukaj grup agentów...', + 'agentManager.sidebar.section.agentGroups': 'Grupy agentów', + 'agentManager.sidebar.state.createToGetStarted': 'Utwórz nową grupę agentów, aby zacząć', + 'agentManager.sidebar.state.loading': 'Ładowanie...', + 'agentManager.sidebar.state.noGroupsFound': 'Nie znaleziono grup', + 'agentManager.sidebar.state.noGroupsYet': 'Brak grup agentów', + 'agentManager.sidebar.toast.deletedGroup': 'Usunięto „{group}”', + 'agentManager.sidebar.toast.deletingGroup': 'Usuwanie „{group}”...', + 'agentManager.sidebar.toast.failedToDeleteGroup': 'Nie udało się całkowicie usunąć „{group}”', + 'branchPickerDialog.actions.cancelDeleteAria': 'Anuluj usuwanie gałęzi', + 'branchPickerDialog.actions.cancelRenameAria': 'Anuluj zmianę nazwy', + 'branchPickerDialog.actions.confirmDeleteAria': 'Potwierdź usunięcie gałęzi', + 'branchPickerDialog.actions.confirmRenameAria': 'Potwierdź zmianę nazwy', + 'branchPickerDialog.actions.createWorktreeAria': 'Utwórz drzewo pracy z gałęzi', + 'branchPickerDialog.actions.deleteAria': 'Usuń gałąź', + 'branchPickerDialog.actions.deletePrompt': 'Usuń', + 'branchPickerDialog.actions.deleteWorktreeAria': 'Usuń drzewo pracy', + 'branchPickerDialog.actions.forceDeletePrompt': 'Wymuś usunięcie', + 'branchPickerDialog.actions.renameAria': 'Zmień nazwę gałęzi', + 'branchPickerDialog.badge.head': 'HEAD', + 'branchPickerDialog.badge.worktree': 'worktree', + 'branchPickerDialog.description.localBranchesForProject': 'Lokalne gałęzie dla {project}', + 'branchPickerDialog.description.selectProject': 'Wybierz projekt, aby zobaczyć gałęzie', + 'branchPickerDialog.error.createWorktreeFailed': 'Nie udało się utworzyć drzewa pracy', + 'branchPickerDialog.error.deleteFailed': 'Nie udało się usunąć gałęzi', + 'branchPickerDialog.error.deleteRejected': 'Usunięcie zostało odrzucone', + 'branchPickerDialog.error.failedToLoad': 'Nie udało się załadować gałęzi', + 'branchPickerDialog.error.renameFailed': 'Nie udało się zmienić nazwy gałęzi', + 'branchPickerDialog.error.renameRejected': 'Zmiana nazwy została odrzucona', + 'branchPickerDialog.search.placeholder': 'Szukaj gałęzi...', + 'branchPickerDialog.search.renameBranchPlaceholder': 'Zmień nazwę gałęzi', + 'branchPickerDialog.state.loadingBranches': 'Ładowanie gałęzi...', + 'branchPickerDialog.state.noBranchesFound': 'Nie znaleziono gałęzi', + 'branchPickerDialog.state.noMatchingBranches': 'Brak pasujących gałęzi', + 'branchPickerDialog.state.noProjectSelected': 'Nie wybrano projektu', + 'branchPickerDialog.title': 'Wybór gałęzi', + 'branchPickerDialog.toast.branchDeleted': 'Gałąź usunięta', + 'branchPickerDialog.toast.branchNotMerged': 'Gałąź nie została jeszcze w pełni scalona', + 'branchPickerDialog.toast.branchRenamed': 'Nazwę gałęzi zmieniono', + 'branchPickerDialog.toast.confirmAgainToForceDelete': 'Potwierdź ponownie, aby wymusić usunięcie', + 'branchPickerDialog.toast.failedToCreateWorktree': 'Nie udało się utworzyć drzewa pracy', + 'branchPickerDialog.toast.failedToDeleteBranch': 'Nie udało się usunąć gałęzi', + 'branchPickerDialog.toast.failedToRenameBranch': 'Nie udało się zmienić nazwy gałęzi', + 'branchPickerDialog.toast.worktreeCreated': 'Drzewo pracy utworzone', + 'branchPickerDialog.tooltip.createWorktree': 'Utwórz drzewo pracy', + 'branchPickerDialog.tooltip.delete': 'Usuń gałąź', + 'branchPickerDialog.tooltip.deleteCurrentBranch': 'Nie można usunąć bieżącej gałęzi', + 'branchPickerDialog.tooltip.deleteDisabledForRoot': 'Nie można usunąć głównej gałęzi', + 'branchPickerDialog.tooltip.deleteWorktree': 'Usuń drzewo pracy', + 'branchPickerDialog.tooltip.deleteWorktreeRootProtected': 'Nie można usunąć głównego drzewa pracy', + 'branchPickerDialog.tooltip.rename': 'Zmień nazwę gałęzi', + 'branchPickerDialog.tooltip.renameDisabledForRoot': 'Nie można zmienić nazwy głównej gałęzi', + 'branchPickerDialog.tooltip.worktreeAlreadyExists': 'Drzewo pracy już istnieje', + 'chat.chatInput.actions.addAttachment': 'Dodaj załącznik', + 'chat.chatInput.actions.attachFiles': 'Attach files', + 'chat.chatInput.actions.commands': 'Commands', + 'chat.chatInput.actions.linkGithubIssue': 'Link GitHub Issue', + 'chat.chatInput.actions.linkGithubPr': 'Link GitHub PR', + 'chat.chatInput.actions.modelAgentSettings': 'Model and agent settings', + 'chat.chatInput.actions.queueMessageAria': 'Queue message', + 'chat.chatInput.actions.sendMessageAria': 'Send message', + 'chat.chatInput.actions.stopGeneratingAria': 'Stop generating', + 'chat.chatInput.branch': 'Gałąź', + 'chat.chatInput.devServerLogs': 'Dev Server logs:', + 'chat.chatInput.devServerLogsRemove': 'Usuń logi serwera deweloperskiego', + 'chat.chatInput.drop.attachFiles': 'Drop files here to attach', + 'chat.chatInput.drop.insertMention': 'Drop to insert as mention', + 'chat.chatInput.fileFallback': 'file', + 'chat.chatInput.focusMode.label': 'Focus mode', + 'chat.chatInput.focusMode.toggleAria': 'Toggle focus mode', + 'chat.chatInput.linked.byAuthor': 'by {author}', + 'chat.chatInput.linked.issue.openInBrowserAria': 'Otwórz zgłoszenie w przeglądarce', + 'chat.chatInput.linked.issue.removeAria': 'Usuń powiązane zgłoszenie', + 'chat.chatInput.linked.pr.number': 'PR #{number}', + 'chat.chatInput.linked.pr.openInBrowserAria': 'Otwórz pull request w przeglądarce', + 'chat.chatInput.linked.pr.removeAria': 'Usuń powiązany pull request', + 'chat.chatInput.permissionAutoAccept.disable': 'Disable permission auto-accept', + 'chat.chatInput.permissionAutoAccept.enable': 'Enable permission auto-accept', + 'chat.chatInput.permissionAutoAccept.off': 'Permission auto-accept: off', + 'chat.chatInput.permissionAutoAccept.on': 'Permission auto-accept: on', + 'chat.chatInput.placeholder.chat': '@ for files/agents; / for commands; ! for shell', + 'chat.chatInput.placeholder.selectSession': 'Wybierz lub utwórz sesję, aby zacząć czatować', + 'chat.chatInput.placeholder.shell': 'Wpisz polecenie powłoki...', + 'chat.chatInput.previewAnnotations': 'Adnotacje podglądu:', + 'chat.chatInput.previewContext': 'Kontekst podglądu:', + 'chat.chatInput.previewContextRemove': 'Usuń kontekst podglądu', + 'chat.chatInput.projectRoot': 'Katalog główny projektu', + 'chat.chatInput.reviewComments': 'Komentarze do przeglądu:', + 'chat.chatInput.toast.addedFileMentions': 'Dodano {count} wzmianek o plikach', + 'chat.chatInput.toast.attachFileFailed': 'Nie udało się dołączyć pliku', + 'chat.chatInput.toast.attachNamedFailed': 'Nie udało się dołączyć {name}', + 'chat.chatInput.toast.attachmentsTooLarge': 'Załączniki są zbyt duże, aby je wysłać. Spróbuj zmniejszyć liczbę lub rozmiar obrazów.', + 'chat.chatInput.toast.clipboardAttachFailed': 'Nie udało się dołączyć obrazu ze schowka', + 'chat.chatInput.toast.compactFailed': 'Nie udało się skompaktować sesji', + 'chat.chatInput.toast.messageSendFailed': 'Nie udało się wysłać wiadomości. Załączniki zostały przywrócone.', + 'chat.chatInput.toast.openSessionFirst': 'Najpierw otwórz sesję', + 'chat.chatInput.toast.reviewFailed': 'Nie udało się przejrzeć zmian', + 'chat.chatInput.toast.sendAttachmentsFailed': 'Nie udało się wysłać załączników. Spróbuj użyć mniejszej liczby plików lub mniejszych obrazów.', + 'chat.chatInput.toast.someFilesSkipped': 'Pominięto niektóre pliki:\n{summary}', + 'chat.chatInput.toast.summaryFailed': 'Nie udało się wygenerować podsumowania', + 'chat.chatInput.toast.togglePermissionAutoAcceptFailed': 'Nie udało się przełączyć automatycznej akceptacji uprawnień', + 'chat.chatInput.toast.vscodePickFailed': 'Nie udało się wybrać plików w VS Code', + 'chat.chatInput.worktreeNew': '+ Nowe', + 'chat.chatInput.worktrees': 'Drzewa pracy', + 'chat.messageBody.shellCommand.copied': 'Skopiowano', + 'chat.messageBody.shellCommand.copyOutput': 'Kopiuj wynik', + 'chat.messageBody.shellCommand.hideOutput': 'Ukryj wynik', + 'chat.messageBody.shellCommand.showOutput': 'Pokaż wynik', + 'chat.messageBody.shellCommand.title': 'Polecenie powłoki', + 'chat.messageBody.subtask.hidePrompt': 'Ukryj prompt', + 'chat.messageBody.subtask.openSession': 'Otwórz sesję podzadania', + 'chat.messageBody.subtask.showPrompt': 'Pokaż prompt', + 'chat.messageBody.subtask.title': 'Zadanie delegowane', + 'chat.mobileStatus.editProjects.empty': 'Brak projektów do edycji', + 'chat.mobileStatus.editProjects.footer': 'Przeciągnij elementy, aby zmienić kolejność, lub użyj strzałek do przesuwania. Dotknij „edytuj”, aby zmienić szczegóły.', + 'chat.mobileStatus.editProjects.title': 'Edytuj projekty', + 'chat.mobileStatus.new': 'Nowy', + 'chat.mobileStatus.noSessionsInProject': 'Brak sesji w tym projekcie', + 'chat.mobileStatus.projects.addAria': 'Dodaj projekt', + 'chat.mobileStatus.projects.cancel': 'Anuluj', + 'chat.mobileStatus.projects.empty': 'Brak projektów', + 'chat.mobileStatus.projects.remove': 'Usuń', + 'chat.mobileStatus.projects.removeDescriptionPrefix': 'Czy na pewno chcesz usunąć', + 'chat.mobileStatus.projects.removeTitle': 'Usuń projekt', + 'chat.mobileStatus.swipeHint': '← Przesuń tutaj, aby otworzyć paski boczne →', + 'chat.mobileStatus.toast.addProjectFailed': 'Nie udało się dodać projektu', + 'chat.mobileStatus.toast.selectDirectoryFailed': 'Nie udało się wybrać katalogu', + 'chat.mobileStatus.toast.selectValidDirectory': 'Wybierz prawidłowy katalog.', + 'chat.modelControls.addNewProvider': 'Dodaj nowego dostawcę', + 'chat.modelControls.addToFavorites': 'Dodaj do ulubionych', + 'chat.modelControls.bash': 'Bash', + 'chat.modelControls.capabilities': 'Możliwości', + 'chat.modelControls.capability.reasoning': 'Rozumowanie', + 'chat.modelControls.capability.toolCalling': 'Wywoływanie narzędzi', + 'chat.modelControls.clearSearch': 'Wyczyść wyszukiwanie', + 'chat.modelControls.collapseProvider': 'Zwiń dostawcę', + 'chat.modelControls.context': 'Kontekst', + 'chat.modelControls.costPerMillion': 'Koszt ($/1 mln tokenów)', + 'chat.modelControls.current': 'Bieżący', + 'chat.modelControls.customPrompt': 'Niestandardowy prompt', + 'chat.modelControls.default': 'Domyślny', + 'chat.modelControls.edit': 'Edytuj', + 'chat.modelControls.expandProvider': 'Rozwiń dostawcę', + 'chat.modelControls.favoriteAria': 'Ulubione', + 'chat.modelControls.favorites': 'Ulubione', + 'chat.modelControls.hideThinkingModes': 'Ukryj tryby myślenia', + 'chat.modelControls.input': 'Wejście', + 'chat.modelControls.keyboardHint': '↑↓ nawigacja{thinking} • Enter wybór • Esc zamknij', + 'chat.modelControls.keyboardHintNavigate': '↑↓ nawigacja', + 'chat.modelControls.keyboardHintSwitchAgent': 'Tab przełącz agenta', + 'chat.modelControls.keyboardHintThinking': '←→ myślenie', + 'chat.modelControls.knowledge': 'Wiedza', + 'chat.modelControls.limits': 'Limity', + 'chat.modelControls.metadata': 'Metadane', + 'chat.modelControls.metadataUnavailable': 'Metadane modelu są niedostępne.', + 'chat.modelControls.modalities': 'Modalności', + 'chat.modelControls.modality.audio': 'Dźwięk', + 'chat.modelControls.modality.image': 'Obraz', + 'chat.modelControls.modality.pdf': 'PDF', + 'chat.modelControls.modality.text': 'Tekst', + 'chat.modelControls.modality.video': 'Wideo', + 'chat.modelControls.mode': 'Tryb', + 'chat.modelControls.modeValue.all': 'Wszystko', + 'chat.modelControls.modeValue.none': '—', + 'chat.modelControls.modeValue.primary': 'Główny', + 'chat.modelControls.modeValue.subagent': 'Podagent', + 'chat.modelControls.model': 'Model', + 'chat.modelControls.moreThinkingModes': 'Więcej trybów myślenia', + 'chat.modelControls.noAgentSelected': 'Nie wybrano agenta.', + 'chat.modelControls.noModelsFound': 'Nie znaleziono modeli', + 'chat.modelControls.noProvidersOrModelsFound': 'Żaden dostawca ani model nie pasuje do wyszukiwania.', + 'chat.modelControls.output': 'Wyjście', + 'chat.modelControls.permissionLabel.allow': 'Zezwól', + 'chat.modelControls.permissionLabel.ask': 'Pytaj', + 'chat.modelControls.permissionLabel.custom': 'Niestandardowy', + 'chat.modelControls.permissionLabel.deny': 'Odrzuć', + 'chat.modelControls.permissions': 'Uprawnienia', + 'chat.modelControls.provider': 'Dostawca', + 'chat.modelControls.recent': 'Ostatnie', + 'chat.modelControls.release': 'Wydanie', + 'chat.modelControls.removeFromFavorites': 'Usuń z ulubionych', + 'chat.modelControls.reorderFavoriteAria': 'Zmień kolejność ulubionych', + 'chat.modelControls.reorderFavoriteTitle': 'Przeciągnij, aby zmienić kolejność ulubionych', + 'chat.modelControls.resetToDefault': 'Przywróć domyślne', + 'chat.modelControls.searchAgents': 'Szukaj agentów', + 'chat.modelControls.searchModels': 'Szukaj modeli...', + 'chat.modelControls.searchProvidersOrModels': 'Szukaj dostawców lub modeli', + 'chat.modelControls.selectAgent': 'Wybierz agenta', + 'chat.modelControls.selectModel': 'Wybierz model', + 'chat.modelControls.showThinkingModes': 'Pokaż tryby myślenia', + 'chat.modelControls.temperature': 'Temperatura', + 'chat.modelControls.thinking': 'Myślenie', + 'chat.modelControls.topP': 'Top P', + 'chat.modelControls.unfavoriteAria': 'Usuń z ulubionych', + 'chat.modelControls.webFetch': 'WebFetch', + 'chat.permissionCard.action': 'Akcja:', + 'chat.permissionCard.body': 'Treść:', + 'chat.permissionCard.details': 'Szczegóły:', + 'chat.permissionCard.headers': 'Nagłówki:', + 'chat.permissionCard.patterns': 'Wzorce:', + 'chat.permissionCard.request': 'Żądanie:', + 'chat.permissionCard.timeout': 'Limit czasu:', + 'chat.permissionCard.workingDirectory': 'Katalog roboczy:', + 'chat.permissionRequest.actions.always': 'Zawsze', + 'chat.permissionRequest.actions.once': 'Raz', + 'chat.permissionRequest.actions.reject': 'Odrzuć', + 'chat.permissionRequest.required': 'Wymagane uprawnienie:', + 'chat.permissionToast.actions.always': 'Zawsze', + 'chat.permissionToast.actions.approveAlwaysAria': 'Zatwierdź zawsze', + 'chat.permissionToast.actions.approveAlwaysAriaWithSession': 'Zatwierdź zawsze dla {session}', + 'chat.permissionToast.actions.approveOnceAria': 'Zatwierdź raz', + 'chat.permissionToast.actions.approveOnceAriaWithSession': 'Zatwierdź raz dla {session}', + 'chat.permissionToast.actions.deny': 'Odrzuć', + 'chat.permissionToast.actions.denyAria': 'Odrzuć uprawnienie', + 'chat.permissionToast.actions.denyAriaWithSession': 'Odrzuć uprawnienie dla {session}', + 'chat.permissionToast.actions.once': 'Raz', + 'chat.permissionToast.labels.permission': 'Uprawnienie:', + 'chat.permissionToast.labels.session': 'Sesja:', + 'chat.permissionToast.permissionFallback': 'Szczegóły uprawnienia są niedostępne', + 'chat.permissionToast.sessionFallback': 'Sesja', + 'chat.todo.cancelled': 'Anulowane', + 'chat.todo.completed': 'Ukończone', + 'chat.todo.inProgress': 'W trakcie', + 'chat.todo.pending': 'Oczekujące', + 'chat.todo.total': 'Łącznie', + 'chat.toolOutputDialog.commandCompleted': 'Polecenie zakończone pomyślnie', + 'chat.toolOutputDialog.image.closeAria': 'Zamknij podgląd obrazu', + 'chat.toolOutputDialog.image.nextAria': 'Następny obraz', + 'chat.toolOutputDialog.image.previousAria': 'Poprzedni obraz', + 'chat.toolOutputDialog.mermaid.closeAria': 'Zamknij podgląd diagramu', + 'chat.toolOutputDialog.mermaid.loadFailed': 'Nie udało się wczytać diagramu Mermaid.', + 'chat.toolOutputDialog.mermaid.loading': 'Ładowanie diagramu...', + 'chat.toolOutputDialog.mermaid.missingSource': 'Brakuje adresu URL źródła Mermaid.', + 'chat.toolOutputDialog.mermaid.renderFailed': 'Nie udało się wyrenderować diagramu Mermaid.', + 'chat.toolOutputDialog.mermaid.retry': 'Ponów', + 'chat.toolOutputDialog.noOutputProduced': 'Brak wygenerowanego wyniku', + 'chat.toolPart.awaitingResponse': 'Oczekiwanie na odpowiedź...', + 'chat.toolPart.error': 'Błąd:', + 'chat.toolPart.lspErrors': 'Błędy LSP', + 'chat.toolPart.moreErrors': '+{count} kolejnych błędów', + 'chat.toolPart.noOutputProduced': 'Brak wygenerowanego wyniku', + 'chat.toolPart.openSubtask': 'Otwórz podzadanie typu {type}', + 'chat.toolPart.output': 'Wyjście', + 'commandPalette.description': 'Szukaj plików, sesji i poleceń.', + 'commandPalette.empty.noResults': 'Nie znaleziono wyników.', + 'commandPalette.empty.searchingFiles': 'Wyszukiwanie plików...', + 'commandPalette.input.placeholder': 'Szukaj plików, sesji i poleceń...', + 'commandPalette.item.newSession': 'Nowa sesja', + 'commandPalette.item.newWorktreeDraft': 'Nowy szkic drzewa pracy', + 'commandPalette.item.openSettings': 'Otwórz ustawienia...', + 'commandPalette.item.showContextUsage': 'Pokaż użycie kontekstu', + 'commandPalette.item.showSessionSwitcher': 'Pokaż przełącznik sesji', + 'commandPalette.item.toggleRightSidebar': 'Przełącz prawy panel boczny', + 'commandPalette.item.toggleSidebar': 'Przełącz panel boczny', + 'commandPalette.item.toggleTerminal': 'Przełącz terminal', + 'commandPalette.session.untitled': 'Nienazwana sesja', + 'commandPalette.title': 'Paleta poleceń', + 'contextPanel.actions.closePanel': 'Zamknij panel', + 'contextPanel.actions.collapsePanel': 'Zwiń panel', + 'contextPanel.actions.expandPanel': 'Rozwiń panel', + 'contextPanel.actions.resizePanelAria': 'Zmień rozmiar panelu kontekstu', + 'contextPanel.iframe.sessionChatTitle': 'Czat sesji {sessionID}', + 'contextPanel.mode.chat': 'Chat', + 'contextPanel.mode.context': 'Context', + 'contextPanel.mode.diff': 'Różnice', + 'contextPanel.mode.files': 'Pliki', + 'contextPanel.mode.plan': 'Plan', + 'contextPanel.mode.preview': 'Podgląd', + 'contextPanel.preview.actions.openExternal': 'Otwórz w przeglądarce', + 'contextPanel.preview.actions.reload': 'Odśwież podgląd', + 'contextPanel.preview.actions.retry': 'Ponów', + 'contextPanel.preview.console.attach': 'Dołącz', + 'contextPanel.preview.console.attachAnnotation': 'To są logi konsoli przeglądarki z serwera deweloperskiego uruchomionego dla tego projektu.', + 'contextPanel.preview.console.attachNoSession': 'Otwórz sesję czatu przed dołączeniem logów podglądu', + 'contextPanel.preview.console.attached': 'Konsola podglądu dołączona do czatu', + 'contextPanel.preview.console.clear': 'Wyczyść', + 'contextPanel.preview.console.copied': 'Konsola podglądu skopiowana', + 'contextPanel.preview.console.copy': 'Kopiuj', + 'contextPanel.preview.console.copyFailed': 'Nie udało się skopiować konsoli podglądu', + 'contextPanel.preview.console.empty': 'Brak zdarzeń konsoli podglądu.', + 'contextPanel.preview.console.filter.all': 'Wszystko', + 'contextPanel.preview.console.filter.errors': 'Błędy', + 'contextPanel.preview.console.filter.logs': 'Logi', + 'contextPanel.preview.console.filter.warnings': 'Ostrzeżenia', + 'contextPanel.preview.console.noFilteredEvents': 'Żadne zdarzenia nie pasują do tego filtra.', + 'contextPanel.preview.console.open': 'Otwórz konsolę podglądu', + 'contextPanel.preview.console.runtimeError': 'Błąd wykonania', + 'contextPanel.preview.console.title': 'Konsola podglądu', + 'contextPanel.preview.console.waiting': 'Oczekiwanie na konsolę podglądu', + 'contextPanel.preview.description': 'Użyj Akcji projektu lub przycisku Podgląd w terminalu, aby otworzyć podgląd.', + 'contextPanel.preview.empty': 'Brak adresu URL podglądu', + 'contextPanel.preview.iframeTitle': 'Podgląd', + 'contextPanel.preview.inspect.attachAnnotation': 'To zaznaczony element DOM z podglądu w aplikacji.', + 'contextPanel.preview.inspect.attachAnnotationWithScreenshot': 'To zaznaczony element DOM z podglądu w aplikacji. Dołączono zrzut ekranu widocznego obszaru podglądu z podświetlonym elementem.', + 'contextPanel.preview.inspect.attachNoSession': 'Otwórz sesję czatu przed dołączeniem adnotacji podglądu', + 'contextPanel.preview.inspect.attached': 'Adnotacja podglądu dołączona do czatu', + 'contextPanel.preview.inspect.toggle': 'Sprawdź element podglądu', + 'contextPanel.preview.invalidUrl': 'Podgląd wymaga prawidłowego adresu URL http(s).', + 'contextPanel.preview.loading': 'Łączenie z proxy podglądu...', + 'contextPanel.preview.noDevServer': 'Nie znaleziono polecenia serwera deweloperskiego. Skonfiguruj akcję projektu lub dodaj skrypt „dev” do package.json.', + 'contextPanel.preview.noUrlDetected': 'Serwer deweloperski został uruchomiony, ale w jego wyjściu nie wykryto adresu URL. Otwórz kartę terminala Podgląd, aby sprawdzić logi.', + 'contextPanel.preview.noUrlDetectedWithLog': 'Serwer deweloperski nie stał się dostępny. Ostatnie wyjście:\n\n{log}', + 'contextPanel.preview.proxyError': 'Nie udało się uruchomić proxy podglądu.', + 'contextPanel.preview.serverExited': 'Serwer deweloperski zakończył działanie niespodziewanie.', + 'contextPanel.preview.serverExitedWithLog': 'Serwer deweloperski zakończył działanie niespodziewanie. Ostatnie wyjście:\n\n{log}', + 'contextPanel.preview.startFailed': 'Nie udało się uruchomić serwera podglądu.', + 'contextPanel.preview.startPreview': 'Uruchom podgląd', + 'contextPanel.preview.starting': 'Uruchamianie...', + 'contextPanel.preview.startingServer': 'Uruchamianie serwera deweloperskiego...', + 'contextPanel.preview.startingServerHint': 'Oczekiwanie, aż serwer zacznie przyjmować połączenia.', + 'contextPanel.preview.title': 'Podgląd', + 'contextPanel.preview.upstreamUnreachable': 'Serwer deweloperski nie odpowiada.', + 'contextPanel.preview.upstreamUnreachableHint': 'Upewnij się, że serwer deweloperski nadal działa, a następnie ponów próbę.', + 'contextPanel.tab.closeTabAria': 'Zamknij kartę {label}', + 'contextSidebar.actions.copied': 'Skopiowano', + 'contextSidebar.actions.copy': 'Kopiuj', + 'contextSidebar.actions.copyJson': 'Kopiuj JSON', + 'contextSidebar.breakdown.assistant': 'Asystent', + 'contextSidebar.breakdown.other': 'Inne', + 'contextSidebar.breakdown.toolCalls': 'Wywołania narzędzi', + 'contextSidebar.breakdown.user': 'Użytkownik', + 'contextSidebar.context.percentUsed': 'Wykorzystano {percent}%', + 'contextSidebar.empty.openSession': 'Otwórz sesję, aby sprawdzić kontekst.', + 'contextSidebar.section.context': 'Kontekst', + 'contextSidebar.section.lastAssistantMessage': 'Ostatnia wiadomość asystenta', + 'contextSidebar.section.rawMessages': 'Surowe wiadomości', + 'contextSidebar.session.untitled': 'Nienazwana sesja', + 'contextSidebar.stats.assistant': 'Asystent', + 'contextSidebar.stats.cost': 'Koszt', + 'contextSidebar.stats.messages': 'Wiadomości', + 'contextSidebar.stats.user': 'Użytkownik', + 'contextSidebar.tokens.cacheRead': 'Odczyt cache', + 'contextSidebar.tokens.cacheWrite': 'Zapis cache', + 'contextSidebar.tokens.input': 'Wejście', + 'contextSidebar.tokens.output': 'Wyjście', + 'contextSidebar.tokens.reasoning': 'Rozumowanie', + 'contextUsage.aria.label': 'Użycie kontekstu', + 'contextUsage.mobile.contextLimit': 'Limit kontekstu', + 'contextUsage.mobile.outputLimit': 'Limit wyjścia', + 'contextUsage.mobile.title': 'Użycie kontekstu', + 'contextUsage.mobile.usage': 'Zużycie', + 'contextUsage.mobile.usedTokens': 'Zużyte tokeny', + 'contextUsage.tooltip.contextLimit': 'Limit kontekstu: {tokens}', + 'contextUsage.tooltip.outputLimit': 'Limit wyjścia: {tokens}', + 'contextUsage.tooltip.usedTokens': 'Zużyte tokeny: {tokens}', + 'desktopHostSwitcher.actions.add': 'Dodaj', + 'desktopHostSwitcher.actions.addInstance': 'Dodaj instancję', + 'desktopHostSwitcher.actions.cancel': 'Anuluj', + 'desktopHostSwitcher.actions.connect': 'Połącz', + 'desktopHostSwitcher.actions.defaultInstanceAria': 'Instancja domyślna', + 'desktopHostSwitcher.actions.delete': 'Usuń', + 'desktopHostSwitcher.actions.edit': 'Edytuj', + 'desktopHostSwitcher.actions.instanceActionsAria': 'Akcje instancji', + 'desktopHostSwitcher.actions.openInNewWindow': 'Otwórz w nowym oknie', + 'desktopHostSwitcher.actions.openInNewWindowAria': 'Otwórz w nowym oknie', + 'desktopHostSwitcher.actions.refresh': 'Odśwież', + 'desktopHostSwitcher.actions.refreshInstancesAria': 'Odśwież instancje', + 'desktopHostSwitcher.actions.remoteSsh': 'Zdalne SSH', + 'desktopHostSwitcher.actions.retry': 'Ponów', + 'desktopHostSwitcher.actions.save': 'Zapisz', + 'desktopHostSwitcher.actions.setAsDefault': 'Ustaw jako domyślną', + 'desktopHostSwitcher.actions.setAsDefaultAria': 'Ustaw jako domyślną', + 'desktopHostSwitcher.actions.switchInstance': 'Przełącz instancję', + 'desktopHostSwitcher.actions.switchInstanceAria': 'Przełącz instancję', + 'desktopHostSwitcher.actions.switchToAria': 'Przełącz na {instance}', + 'desktopHostSwitcher.actions.switchToLocal': 'Przełącz na lokalną', + 'desktopHostSwitcher.add.title': 'Dodaj instancję', + 'desktopHostSwitcher.description': 'Przełączaj między lokalnymi i zdalnymi serwerami OpenChamber', + 'desktopHostSwitcher.edit.title': 'Edytuj instancję', + 'desktopHostSwitcher.error.failedToLoad': 'Nie udało się załadować', + 'desktopHostSwitcher.error.failedToOpenNewWindow': 'Nie udało się otworzyć nowego okna', + 'desktopHostSwitcher.error.failedToSave': 'Nie udało się zapisać', + 'desktopHostSwitcher.error.invalidUrl': 'Nieprawidłowy URL (musi używać http/https)', + 'desktopHostSwitcher.field.labelOptionalPlaceholder': 'Etykieta (opcjonalna)', + 'desktopHostSwitcher.field.labelPlaceholder': 'Etykieta', + 'desktopHostSwitcher.field.urlPlaceholder': 'https://host:port', + 'desktopHostSwitcher.header.current': 'Bieżący', + 'desktopHostSwitcher.header.currentColon': 'Bieżąca:', + 'desktopHostSwitcher.header.currentDefaultColon': 'Bieżąca domyślna:', + 'desktopHostSwitcher.header.default': 'Domyślny', + 'desktopHostSwitcher.instance.fallback': 'Instancja', + 'desktopHostSwitcher.instance.local': 'Lokalny', + 'desktopHostSwitcher.ssh.connectingTo': 'Łączenie z {host}', + 'desktopHostSwitcher.ssh.instanceFallback': 'Instancja SSH', + 'desktopHostSwitcher.ssh.needInstancesHint': 'Potrzebujesz instancji SSH? Zarządzaj nimi w Ustawieniach.', + 'desktopHostSwitcher.sshPhase.checkingAuth': 'Sprawdzanie uwierzytelnienia', + 'desktopHostSwitcher.sshPhase.connectingSsh': 'Łączenie przez SSH', + 'desktopHostSwitcher.sshPhase.detectingServer': 'Wykrywanie serwera', + 'desktopHostSwitcher.sshPhase.error': 'Błąd', + 'desktopHostSwitcher.sshPhase.forwardingPorts': 'Przekierowywanie portów', + 'desktopHostSwitcher.sshPhase.idle': 'Bezczynne', + 'desktopHostSwitcher.sshPhase.installing': 'Instalowanie', + 'desktopHostSwitcher.sshPhase.probingRemote': 'Sprawdzanie zdalnego hosta', + 'desktopHostSwitcher.sshPhase.ready': 'Gotowe', + 'desktopHostSwitcher.sshPhase.reconnecting': 'Ponowne łączenie', + 'desktopHostSwitcher.sshPhase.resolvingConfig': 'Rozwiązywanie konfiguracji', + 'desktopHostSwitcher.sshPhase.startingServer': 'Uruchamianie serwera', + 'desktopHostSwitcher.sshPhase.updating': 'Aktualizowanie', + 'desktopHostSwitcher.startup.connectingTo': 'Łączenie z {host}...', + 'desktopHostSwitcher.startup.failed': 'Nie udało się połączyć z domyślną instancją SSH.', + 'desktopHostSwitcher.startup.title': 'Domyślna instancja SSH jest niedostępna', + 'desktopHostSwitcher.state.instanceUnreachable': 'Instancja niedostępna', + 'desktopHostSwitcher.state.limitedOnPage': 'Przełącznik instancji jest ograniczony na tej stronie. Użyj Lokalnej, aby odzyskać dostęp.', + 'desktopHostSwitcher.state.loading': 'Ładowanie...', + 'desktopHostSwitcher.status.authRequired': 'Wymagane uwierzytelnienie', + 'desktopHostSwitcher.status.connected': 'Połączono', + 'desktopHostSwitcher.status.ping': ' · {ms}ms ping', + 'desktopHostSwitcher.status.unknown': 'Nieznany', + 'desktopHostSwitcher.status.unreachable': 'Nieosiągalna', + 'desktopHostSwitcher.status.wrongService': 'Nieprawidłowa usługa', + 'desktopHostSwitcher.statusAria': 'Status instancji', + 'desktopHostSwitcher.title': 'Instancja', + 'desktopHostSwitcher.toast.instanceUnreachable': 'Instancja „{host}” jest nieosiągalna', + 'desktopHostSwitcher.toast.sshConnected': 'Połączono z instancją SSH „{host}”', + 'desktopHostSwitcher.toast.sshFailedToConnect': 'Nie udało się połączyć z instancją SSH „{host}”', + 'diffView.actions.disableLineWrap': 'Wyłącz zawijanie linii', + 'diffView.actions.enableLineWrap': 'Włącz zawijanie linii', + 'diffView.actions.openFileAtFirstChangedLine': 'Otwórz plik na pierwszej zmienionej linii', + 'diffView.actions.openFileInEditorAtChange': 'Otwórz plik w edytorze na zmianie', + 'diffView.actions.retry': 'Ponów', + 'diffView.binary.unavailable': 'Nie można wyświetlić zawartości tego pliku.', + 'diffView.change.copied': 'Skopiowany plik', + 'diffView.change.deleted': 'Usunięty plik', + 'diffView.change.modified': 'Zmodyfikowany plik', + 'diffView.change.new': 'Nowy plik', + 'diffView.change.renamed': 'Plik o zmienionej nazwie', + 'diffView.change.untracked': 'Nieśledzony plik', + 'diffView.image.modified': 'Zmodyfikowany', + 'diffView.image.modifiedAlt': 'Modified: {path}', + 'diffView.image.new': 'Nowy', + 'diffView.image.original': 'Original', + 'diffView.image.originalAlt': 'Original: {path}', + 'diffView.mode.single.description': 'Show one file at a time', + 'diffView.mode.single.label': 'Single file', + 'diffView.mode.stacked.description': 'Stack all modified files together', + 'diffView.mode.stacked.label': 'All files', + 'diffView.section.files': 'Pliki', + 'diffView.selector.selectFile': 'Select file', + 'diffView.selector.viewMode': 'View mode', + 'diffView.state.cleanWorkingTree': 'Working tree clean, no changes to display', + 'diffView.state.failedToLoadDiff': 'Failed to load diff', + 'diffView.state.loadingChanges': 'Loading changes...', + 'diffView.state.loadingDiff': 'Loading diff...', + 'diffView.state.loadingRepositoryStatus': 'Loading repository status...', + 'diffView.state.notGitRepository': 'Not a git repository. Use the Git tab to initialize or change directories.', + 'diffView.state.selectSessionDirectory': 'Select a session directory to view diffs', + 'diffView.summary.changedFilesPlural': '{count} files changed', + 'diffView.summary.changedFilesSingle': '{count} file changed', + 'directoryExplorerDialog.actions.addProject': 'Add project', + 'directoryExplorerDialog.actions.adding': 'Adding...', + 'directoryExplorerDialog.actions.alreadyAdded': 'Already added', + 'directoryExplorerDialog.actions.cancel': 'Anuluj', + 'directoryExplorerDialog.actions.createAndAdd': 'Create & add', + 'directoryExplorerDialog.actions.openInFinder': 'Open in Finder', + 'directoryExplorerDialog.actions.openingFinder': 'Opening...', + 'directoryExplorerDialog.browse.addedBadge': 'Added', + 'directoryExplorerDialog.browse.directories': 'Directories', + 'directoryExplorerDialog.browse.empty': 'No matching directories.', + 'directoryExplorerDialog.browse.loading': 'Loading directories...', + 'directoryExplorerDialog.browse.parentDirectory': 'Parent directory', + 'directoryExplorerDialog.description': 'Choose a folder to add as a project.', + 'directoryExplorerDialog.footer.add': 'Dodaj', + 'directoryExplorerDialog.footer.close': 'Zamknij', + 'directoryExplorerDialog.footer.navigate': 'Navigate', + 'directoryExplorerDialog.footer.select': 'Wybierz', + 'directoryExplorerDialog.pathInput.placeholder': 'Enter path or select from tree...', + 'directoryExplorerDialog.shortcut.enter': 'Enter', + 'directoryExplorerDialog.title': 'Add project directory', + 'directoryExplorerDialog.toast.desktopCouldNotGrantAccess': 'Desktop could not grant file access.', + 'directoryExplorerDialog.toast.desktopDeniedAccess': 'Desktop denied directory access.', + 'directoryExplorerDialog.toast.failedToAddProject': 'Failed to add project', + 'directoryExplorerDialog.toast.failedToOpenDirectory': 'Failed to open directory', + 'directoryExplorerDialog.toast.failedToSelectDirectory': 'Failed to select directory', + 'directoryExplorerDialog.toast.selectValidDirectoryPath': 'Please select a valid directory path.', + 'directoryExplorerDialog.toast.unableToAccessDirectory': 'Unable to access directory', + 'directoryExplorerDialog.toast.unknownError': 'Unknown error occurred.', + 'directoryExplorerDialog.toggle.showHidden': 'Show hidden', + 'directoryTree.actions.cancel': 'Anuluj', + 'directoryTree.actions.createDirectory': 'Create directory', + 'directoryTree.actions.createNewDirectory': 'Create new directory', + 'directoryTree.actions.pinDirectory': 'Pin directory', + 'directoryTree.actions.selectWorkingDirectoryAria': 'Select working directory', + 'directoryTree.actions.unpinDirectory': 'Unpin directory', + 'directoryTree.field.newDirectoryPlaceholder': 'new_directory', + 'directoryTree.section.browse': 'Browse', + 'directoryTree.section.pinned': 'Pinned', + 'directoryTree.state.loading': 'Loading...', + 'directoryTree.state.locatingHomeDirectory': 'Locating home directory...', + 'directoryTree.state.noDirectoriesFound': 'No directories found', + 'filesView.dialog.cancel': 'Anuluj', + 'filesView.dialog.confirm': 'Potwierdź', + 'filesView.dialog.createFile.description': 'Utwórz nowy plik w {path}', + 'filesView.dialog.createFile.title': 'Utwórz plik', + 'filesView.dialog.createFolder.description': 'Utwórz nowy folder w {path}', + 'filesView.dialog.createFolder.title': 'Utwórz folder', + 'filesView.dialog.delete.confirm': 'Usuń', + 'filesView.dialog.delete.description': 'Czy na pewno chcesz usunąć {name}? Tej akcji nie można cofnąć.', + 'filesView.dialog.delete.title': 'Usuń', + 'filesView.dialog.namePlaceholder': 'Nazwa', + 'filesView.dialog.rename.description': 'Zmień nazwę {name}', + 'filesView.dialog.rename.placeholder': 'Nowa nazwa', + 'filesView.dialog.rename.title': 'Zmień nazwę', + 'filesView.dialog.rootFallback': 'główny', + 'filesView.editor.back': 'Wstecz', + 'filesView.editor.closeFileAria': 'Zamknij {name}', + 'filesView.editor.controlsTitle': 'Kontrolki edytora', + 'filesView.editor.copyFileContents': 'Kopiuj zawartość pliku', + 'filesView.editor.copyFilePathTitle': 'Kopiuj ścieżkę pliku ({path})', + 'filesView.editor.disableLineWrap': 'Wyłącz zawijanie linii', + 'filesView.editor.enableLineWrap': 'Włącz zawijanie linii', + 'filesView.editor.exitFullscreen': 'Wyjdź z pełnego ekranu', + 'filesView.editor.findInFile': 'Znajdź w pliku', + 'filesView.editor.fullscreen': 'Pełny ekran', + 'filesView.editor.goToLine': 'Przejdź do linii', + 'filesView.editor.htmlPreviewTitle': 'Podgląd HTML', + 'filesView.editor.imageAltFallback': 'Obraz', + 'filesView.editor.openFilesAria': 'Otwarte pliki', + 'filesView.editor.openInDesktopApp': 'Otwórz w aplikacji desktopowej', + 'filesView.editor.pickFileFromTree': 'Wybierz plik z drzewa.', + 'filesView.editor.refreshApps': 'Odśwież aplikacje', + 'filesView.editor.saveAria': 'Zapisz ({shortcut})', + 'filesView.editor.saveFile': 'Zapisz plik', + 'filesView.editor.saveNowTitle': 'Zapisz teraz ({shortcut}) — autozapis po 1,5 s', + 'filesView.editor.saved': 'Zapisano', + 'filesView.editor.saving': 'Zapisywanie...', + 'filesView.editor.selectFile': 'Wybierz plik', + 'filesView.editor.showControlsAria': 'Pokaż kontrolki edytora', + 'filesView.editor.switchToTextView': 'Przełącz na widok tekstowy', + 'filesView.editor.switchToTreeView': 'Przełącz na widok drzewa', + 'filesView.error.jsonViewerUnavailable': 'Podgląd JSON jest niedostępny', + 'filesView.error.previewUnavailable': 'Podgląd jest niedostępny', + 'filesView.error.readFileFailed': 'Nie udało się odczytać pliku', + 'filesView.error.switchToEditMode': 'Przełącz do trybu edycji, aby naprawić problem.', + 'filesView.error.switchToTextMode': 'Przełącz do trybu tekstowego, aby zobaczyć surową zawartość.', + 'filesView.state.loading': 'Ładowanie...', + 'filesView.state.openingFileAtChange': 'Otwieranie pliku na zmianie...', + 'filesView.toast.copyFailed': 'Nie udało się skopiować', + 'filesView.toast.openInAppFailed': 'Nie udało się otworzyć w {app}', + 'filesView.toast.saveFailed': 'Nie udało się zapisać', + 'filesView.toast.savingNotSupported': 'Zapisywanie nie jest obsługiwane', + 'filesView.toast.writeFileFailed': 'Nie udało się zapisać pliku', + 'filesView.tree.actions.newFileTitle': 'Nowy plik', + 'filesView.tree.actions.newFolderTitle': 'Nowy folder', + 'filesView.tree.search.clearAria': 'Wyczyść wyszukiwanie', + 'filesView.tree.search.placeholder': 'Szukaj plików...', + 'filesView.tree.search.searching': 'Wyszukiwanie...', + 'filesView.unsaved.description': 'Zapisać zmiany przed kontynuowaniem?', + 'filesView.unsaved.discard': 'Odrzuć', + 'filesView.unsaved.saveChanges': 'Zapisz zmiany', + 'filesView.unsaved.title': 'Niezapisane zmiany', + 'filesView.warning.largeFilePreviewLimited': 'Ten plik jest duży ({sizeKb}KB). Podgląd może być ograniczony.', + 'gitView.branch.actionsUnavailable': 'Akcje gałęzi są niedostępne w tym stanie repozytorium', + 'gitView.branch.branchToMergeInto': 'Gałąź docelowa scalenia', + 'gitView.branch.branchToRebaseOnto': 'Gałąź docelowa rebase', + 'gitView.branch.create': 'Utwórz nową gałąź...', + 'gitView.branch.currentBadge': 'Bieżący', + 'gitView.branch.currentBranchFallback': 'bieżąca gałąź', + 'gitView.branch.currentBranchTooltip': 'Bieżąca gałąź', + 'gitView.branch.detachedHead': 'Odłączony HEAD', + 'gitView.branch.dialogDescriptionPrefix': 'Opis okna dialogowego', + 'gitView.branch.empty': 'Nie znaleziono gałęzi.', + 'gitView.branch.localBranches': 'Lokalne gałęzie', + 'gitView.branch.mergeDescription': 'Opis scalania', + 'gitView.branch.mergeRebase': 'Scal/Rebase', + 'gitView.branch.mergeRebaseTooltip': 'Scal lub wykonaj rebase', + 'gitView.branch.mergingInProgress': 'Trwa scalanie', + 'gitView.branch.namePlaceholder': 'Nazwa gałęzi', + 'gitView.branch.newBranchPlaceholder': 'Nazwa nowej gałęzi', + 'gitView.branch.noLocalBranches': 'Brak lokalnych gałęzi', + 'gitView.branch.noRemoteBranches': 'Brak zdalnych gałęzi', + 'gitView.branch.operation': 'Operacja', + 'gitView.branch.operationCompleted': 'Operacja zakończona', + 'gitView.branch.operationFailed': 'Operacja nie powiodła się', + 'gitView.branch.pushToPrefix': 'Wypchnij do', + 'gitView.branch.pushToSuffix': '', + 'gitView.branch.rebaseDescription': 'Opis rebase', + 'gitView.branch.rebasingInProgress': 'Trwa rebase', + 'gitView.branch.remoteBranches': 'Zdalne gałęzie', + 'gitView.branch.renameTitle': 'Zmień nazwę gałęzi', + 'gitView.branch.searchPlaceholder': 'Szukaj gałęzi...', + 'gitView.branch.selectBranch': 'Wybierz gałąź', + 'gitView.branch.summaryMergeInfix': ' do ', + 'gitView.branch.summaryMergePrefix': 'Scalono ', + 'gitView.branch.summaryRebaseInfix': ' na ', + 'gitView.branch.summaryRebasePrefix': 'Wykonano rebase ', + 'gitView.branch.updateDescriptionPrefix': 'Zaktualizuj', + 'gitView.branch.updateTitle': 'Update branch', + 'gitView.changes.changedFilesAria': 'Zmienione pliki', + 'gitView.changes.clearSelectionAria': 'Wyczyść zaznaczenie plików', + 'gitView.changes.collapseDirectoryAria': 'Zwiń katalog', + 'gitView.changes.expandDirectoryAria': 'Rozwiń katalog', + 'gitView.changes.revertAll': 'Cofnij wszystko', + 'gitView.changes.revertAllDescriptionPlural': 'Zmiany we wszystkich plikach z listy zostaną odrzucone.', + 'gitView.changes.revertAllDescriptionSingle': 'Zmiany w wybranym pliku zostaną odrzucone.', + 'gitView.changes.revertAllDialogTitle': 'Cofnąć wszystkie zmiany?', + 'gitView.changes.revertFileAria': 'Cofnij plik', + 'gitView.changes.revertFileTooltip': 'Cofnij zmiany', + 'gitView.changes.reverting': 'Cofanie...', + 'gitView.changes.selectAllAria': 'Zaznacz wszystkie pliki', + 'gitView.changes.selectFileAria': 'Zaznacz plik', + 'gitView.changes.title': 'Zmiany', + 'gitView.changes.toggleDirectorySelectionAria': 'Przełącz zaznaczenie katalogu', + 'gitView.commit.addGitmoji': 'Dodaj gitmoji', + 'gitView.commit.aiHighlights.insertAria': 'Wstaw', + 'gitView.commit.aiHighlights.insertTooltip': 'Wstaw', + 'gitView.commit.aiHighlights.title': 'Tytuł', + 'gitView.commit.commit': 'Zatwierdź', + 'gitView.commit.commitAria': 'Zatwierdź zmiany', + 'gitView.commit.committing': 'Zatwierdzanie...', + 'gitView.commit.generate': 'Generuj', + 'gitView.commit.generateAria': 'Generuj wiadomość commita', + 'gitView.commit.messagePlaceholder': 'Wiadomość commita', + 'gitView.commit.push': 'Wypchnij', + 'gitView.commit.pushAria': 'Wypchnij', + 'gitView.commit.pushing': 'Wypychanie...', + 'gitView.commit.selectFilesHint': 'Zaznacz pliki w sekcji Zmiany, aby włączyć commit.', + 'gitView.commit.title': 'Commit', + 'gitView.common.cancel': 'Anuluj', + 'gitView.common.close': 'Zamknij', + 'gitView.common.done': 'Gotowe', + 'gitView.common.processing': 'Przetwarzanie...', + 'gitView.common.reset': 'Reset', + 'gitView.conflict.abortOperation': 'Abort Operation', + 'gitView.conflict.conflictedFiles': 'Conflicted files:', + 'gitView.conflict.continueLater': 'Continue Later', + 'gitView.conflict.detectedDescription': 'Detected Description', + 'gitView.conflict.detectedTitle': 'Detected Title', + 'gitView.conflict.errorLoadingDetails': 'Error Loading Details', + 'gitView.conflict.headInfo': 'HEAD information:', + 'gitView.conflict.loadFailed': 'Load Failed', + 'gitView.conflict.loading': 'Loading conflict details...', + 'gitView.conflict.noActiveSession': 'No Active Session', + 'gitView.conflict.noActiveSessionDescription': 'No Active Session Description', + 'gitView.conflict.noDetailsAvailable': 'No conflict details available', + 'gitView.conflict.resolveCurrentSession': 'Resolve in Current Session', + 'gitView.conflict.resolveNewSession': 'Resolve in New Session', + 'gitView.empty.cleanDescription': 'All changes have been committed', + 'gitView.empty.cleanTitle': 'Working tree clean', + 'gitView.empty.notGitRepository': 'This directory is not a Git repository', + 'gitView.empty.notGitRepositoryDescription': 'Initialize Git in this directory or open a repository.', + 'gitView.empty.pullBehindPlural': 'Pull {count} commits', + 'gitView.empty.pullBehindSingle': 'Pull {count} commit', + 'gitView.empty.selectSessionOrDirectory': 'Select a session or directory to view Git status', + 'gitView.empty.worktreeFeaturesUnavailable': 'Worktree features are unavailable in this workspace mode.', + 'gitView.empty.worktreeSetupDescription': 'Finishing worktree setup and preparing repository state.', + 'gitView.empty.worktreeSetupInProgress': 'Worktree setup in progress', + 'gitView.gitmoji.empty': 'No gitmoji found', + 'gitView.gitmoji.searchPlaceholder': 'Search gitmoji...', + 'gitView.gitmoji.title': 'Insert gitmoji', + 'gitView.header.identityTooltip': 'Git identity', + 'gitView.header.noIdentity': 'No identity', + 'gitView.header.noProfiles': 'No profiles available to apply.', + 'gitView.header.removeRemoteAria': 'Remove Remote aria label', + 'gitView.header.removeRemoteTitle': 'Remove Remote Title', + 'gitView.history.binary': 'Binary', + 'gitView.history.commitsPlaceholder': 'Commits Placeholder', + 'gitView.history.copySha': 'Copy SHA', + 'gitView.history.dialogDescription': 'Browse recent commits and inspect changed files.', + 'gitView.history.loadingFiles': 'Loading files...', + 'gitView.history.logSize100': 'Log Size100', + 'gitView.history.logSize25': 'Log Size25', + 'gitView.history.logSize50': 'Log Size50', + 'gitView.history.noCommits': 'No commits found', + 'gitView.history.noFiles': 'No files', + 'gitView.history.title': 'History', + 'gitView.integrate.checking': 'Sprawdzanie…', + 'gitView.integrate.cherryPickAbortedToast': 'Cherry-pick został przerwany', + 'gitView.integrate.cherryPickConflictDescription': 'Wykryto konflikt podczas cherry-pick.', + 'gitView.integrate.cherryPickConflictToast': 'Wykryto konflikt podczas cherry-pick', + 'gitView.integrate.cherryPickContinueFailedToast': 'Nie udało się kontynuować cherry-pick', + 'gitView.integrate.cherryPickFinishedToast': 'Cherry-pick zakończony', + 'gitView.integrate.commitsMovedDescriptionPlural': 'Wybrane commity zostaną przeniesione.', + 'gitView.integrate.commitsMovedDescriptionSingle': 'Wybrany commit zostanie przeniesiony.', + 'gitView.integrate.commitsMovedToast': 'Commity przeniesione', + 'gitView.integrate.commitsToMove': 'Commity do przeniesienia', + 'gitView.integrate.conflictsInFiles': 'Konflikty w plikach', + 'gitView.integrate.currentCommit': 'Bieżący commit', + 'gitView.integrate.currentSession': 'Bieżąca sesja', + 'gitView.integrate.failedToMoveToast': 'Nie udało się przenieść commitów', + 'gitView.integrate.moreFiles': 'Więcej plików', + 'gitView.integrate.move': 'Przenieś', + 'gitView.integrate.moveCommits': 'Przenieś commity', + 'gitView.integrate.moving': 'Przenoszenie…', + 'gitView.integrate.newSession': 'Nowa sesja', + 'gitView.integrate.noActiveSession': 'Brak aktywnej sesji', + 'gitView.integrate.noActiveSessionDescription': 'Otwórz lub utwórz sesję, aby przenieść commity.', + 'gitView.integrate.noCommitsToMove': 'Brak commitów do przeniesienia.', + 'gitView.integrate.noCommitsToMoveToast': 'Nie ma commitów do przeniesienia', + 'gitView.integrate.previewUnavailable': 'Podgląd niedostępny', + 'gitView.integrate.showAll': 'Pokaż wszystko', + 'gitView.integrate.showLess': 'Pokaż mniej', + 'gitView.integrate.showingFirstCommits': 'Pokazywanie pierwszych commitów', + 'gitView.integrate.target': 'Cel', + 'gitView.integrate.title': 'Re-integrate commits', + 'gitView.integrate.toMoveCount': 'Liczba commitów do przeniesienia', + 'gitView.loading.checkingRepository': 'Sprawdzanie repozytorium...', + 'gitView.loading.loading': 'Ładowanie...', + 'gitView.operation.abort': 'Przerwij', + 'gitView.operation.continue': 'Kontynuuj', + 'gitView.operation.inProgressTitle': 'Operacja w toku', + 'gitView.operation.merge': 'Scal', + 'gitView.operation.mergeInProgressWithHead': 'Trwa scalanie z HEAD', + 'gitView.operation.mergingMessage': 'Trwa scalanie', + 'gitView.operation.rebase': 'Rebase', + 'gitView.operation.rebaseInProgress': 'Trwa rebase', + 'gitView.operation.rebasingOnto': 'Wykonywanie rebase na', + 'gitView.operation.resolveConflictsHint': 'Rozwiąż konflikty, aby kontynuować.', + 'gitView.operation.resolveWithAi': 'Rozwiąż za pomocą AI', + 'gitView.pr.actions.add': 'Dodaj', + 'gitView.pr.actions.cancelEditing': 'Anuluj edycję', + 'gitView.pr.actions.cancelEditingAria': 'Anuluj edycję PR', + 'gitView.pr.actions.createPr': 'Utwórz PR', + 'gitView.pr.actions.edit': 'Edytuj', + 'gitView.pr.actions.editPr': 'Edytuj PR', + 'gitView.pr.actions.editPrAria': 'Edytuj pull request', + 'gitView.pr.actions.hide': 'Ukryj', + 'gitView.pr.actions.markReady': 'Oznacz jako gotowe', + 'gitView.pr.actions.markReadyAria': 'Oznacz pull request jako gotowy do recenzji', + 'gitView.pr.actions.mergePr': 'Scal PR', + 'gitView.pr.actions.mergePrAria': 'Scal pull request', + 'gitView.pr.actions.openChecks': 'Otwórz checki', + 'gitView.pr.actions.openChecksAria': 'Otwórz nieudane checki', + 'gitView.pr.actions.openComments': 'Otwórz komentarze', + 'gitView.pr.actions.openCommentsAria': 'Otwórz komentarze do pull requesta', + 'gitView.pr.actions.openOnGitHub': 'Otwórz w GitHub', + 'gitView.pr.actions.openOnGitHubAria': 'Otwórz pull request w GitHub', + 'gitView.pr.actions.openSettings': 'Otwórz ustawienia', + 'gitView.pr.actions.refresh': 'Odśwież status PR', + 'gitView.pr.actions.refreshAria': 'Odśwież status pull requesta', + 'gitView.pr.actions.repo': 'Repozytorium', + 'gitView.pr.actions.resolveFailedChecks': 'Rozwiąż nieudane checki', + 'gitView.pr.actions.resolveFailedChecksAria': 'Wyślij nieudane checki do agenta', + 'gitView.pr.actions.savePr': 'Zapisz PR', + 'gitView.pr.actions.savePrAria': 'Zapisz zmiany pull requesta', + 'gitView.pr.actions.sendCommentToAgent': 'Wyślij komentarz do agenta', + 'gitView.pr.actions.sendCommentToAgentAria': 'Wyślij ten komentarz do agenta', + 'gitView.pr.actions.sendToAgent': 'Wyślij do agenta', + 'gitView.pr.actions.shareComments': 'Udostępnij komentarze', + 'gitView.pr.actions.shareCommentsAria': 'Wyślij komentarze pull requesta do agenta', + 'gitView.pr.actions.toggleDraftAria': 'Przełącz stan szkicu', + 'gitView.pr.additionalContext.added': 'Dodano', + 'gitView.pr.additionalContext.hint': 'Dodaj dodatkowy kontekst, aby poprawić jakość recenzji.', + 'gitView.pr.additionalContext.optional': 'Opcjonalne', + 'gitView.pr.additionalContext.title': 'Dodatkowy kontekst', + 'gitView.pr.checkDetails.empty': 'Brak szczegółów checków', + 'gitView.pr.checkDetails.title': 'Szczegóły nieudanych checków', + 'gitView.pr.checkingStatus': 'Sprawdzanie statusu pull requesta...', + 'gitView.pr.checks.completedLabel': 'Ukończono', + 'gitView.pr.checks.conclusionLabel': 'Wynik', + 'gitView.pr.checks.startedLabel': 'Rozpoczęto', + 'gitView.pr.checks.statusLabel': 'Status', + 'gitView.pr.checks.stepLabel': 'Krok', + 'gitView.pr.checks.steps': 'Kroki', + 'gitView.pr.comments.empty': 'Brak komentarzy', + 'gitView.pr.comments.generalContext': 'Komentarz ogólny', + 'gitView.pr.comments.reviewContext': 'Komentarz do recenzji', + 'gitView.pr.comments.title': 'Komentarze', + 'gitView.pr.comments.unknownAuthor': 'Nieznany autor', + 'gitView.pr.createTitle': 'Utwórz pull request', + 'gitView.pr.draftMustBeReady': 'Szkic PR musi zostać oznaczony jako gotowy przed scaleniem.', + 'gitView.pr.field.baseBranch': 'Gałąź bazowa', + 'gitView.pr.field.description': 'Opis', + 'gitView.pr.field.draft': 'Szkic', + 'gitView.pr.field.title': 'Tytuł', + 'gitView.pr.githubNotConnected': 'GitHub nie jest połączony', + 'gitView.pr.loadingDescription': 'Loading description...', + 'gitView.pr.mergeMethod.merge': 'Create a merge commit', + 'gitView.pr.mergeMethod.rebase': 'Rebase and merge', + 'gitView.pr.mergeMethod.squash': 'Squash and merge', + 'gitView.pr.noDescription': 'Brak opisu', + 'gitView.pr.noMergePermission': 'Nie masz uprawnień do scalenia tego pull requesta.', + 'gitView.pr.notMergeable': 'Nie można scalić', + 'gitView.pr.numberLabel': 'PR #{number}', + 'gitView.pr.placeholder.additionalContext': 'Ograniczenia, notatki wdrożeniowe lub kontekst dla recenzenta...', + 'gitView.pr.placeholder.description': 'Opisz zmianę...', + 'gitView.pr.placeholder.main': 'Podsumuj swój pull request', + 'gitView.pr.placeholder.selectBaseBranch': 'Wybierz gałąź bazową', + 'gitView.pr.placeholder.title': 'Tytuł pull requesta', + 'gitView.pr.placeholder.whatChanged': 'Co się zmieniło i dlaczego?', + 'gitView.pr.statusUnavailable': 'Status pull requesta jest niedostępny', + 'gitView.pr.toast.baseBranchRequired': 'Wybierz gałąź bazową', + 'gitView.pr.toast.baseMustDifferFromHead': 'Gałąź bazowa musi różnić się od bieżącej gałęzi', + 'gitView.pr.toast.createPrFailed': 'Nie udało się utworzyć pull requesta', + 'gitView.pr.toast.generateDescriptionFailed': 'Nie udało się wygenerować opisu pull requesta', + 'gitView.pr.toast.githubApiUnavailable': 'API GitHub jest niedostępne', + 'gitView.pr.toast.loadCheckDetailsFailed': 'Nie udało się załadować szczegółów checków', + 'gitView.pr.toast.loadChecksFailed': 'Nie udało się załadować checków pull requesta', + 'gitView.pr.toast.loadCommentsFailed': 'Nie udało się załadować komentarzy', + 'gitView.pr.toast.loadPrCommentsFailed': 'Nie udało się załadować komentarzy pull requesta', + 'gitView.pr.toast.markReadyFailed': 'Nie udało się oznaczyć pull requesta jako gotowego', + 'gitView.pr.toast.markedReady': 'Pull request oznaczony jako gotowy do recenzji', + 'gitView.pr.toast.mergeFailed': 'Nie udało się scalić pull requesta', + 'gitView.pr.toast.noActiveSession': 'Brak aktywnej sesji czatu', + 'gitView.pr.toast.noActiveSessionDescription': 'Otwórz lub utwórz sesję czatu, aby wysłać kontekst do agenta.', + 'gitView.pr.toast.noFailedChecks': 'Nie znaleziono nieudanych checków', + 'gitView.pr.toast.noModelSelected': 'Najpierw wybierz model', + 'gitView.pr.toast.noPrComments': 'Nie znaleziono komentarzy do pull requesta', + 'gitView.pr.toast.prCreated': 'Pull request utworzony', + 'gitView.pr.toast.prMerged': 'Pull request scalony', + 'gitView.pr.toast.prNotMerged': 'Pull request nie został scalony', + 'gitView.pr.toast.prUpdated': 'Pull request zaktualizowany', + 'gitView.pr.toast.sendMessageFailed': 'Nie udało się wysłać wiadomości do agenta', + 'gitView.pr.toast.titleRequired': 'Tytuł jest wymagany', + 'gitView.pr.toast.updatePrFailed': 'Nie udało się zaktualizować pull requesta', + 'gitView.pullRequest.createHint': 'Utwórz i zarządzaj pull requestami z tej gałęzi.', + 'gitView.pullRequest.title': 'Pull request', + 'gitView.stash.confirmButton': 'Potwierdź', + 'gitView.stash.description': 'Opis', + 'gitView.stash.mergeWith': 'Scal z', + 'gitView.stash.rebaseOnto': 'Wykonaj rebase na', + 'gitView.stash.restoreAfterOperation': 'Przywróć po operacji', + 'gitView.stash.restoreAria': 'Przywróć zmiany ze schowka', + 'gitView.stash.stepRestore': 'Przywróć odłożone zmiany', + 'gitView.stash.stepStash': 'Odłóż niezacommitowane zmiany', + 'gitView.stash.thisWill': 'To spowoduje:', + 'gitView.stash.title': 'Niezacommitowane zmiany', + 'gitView.sync.fetch': 'Pobierz', + 'gitView.sync.fetchTooltip': 'Pobierz z remote', + 'gitView.sync.pull': 'Pobierz i scal', + 'gitView.sync.pullTooltip': 'Pobierz zmiany', + 'gitView.sync.pullTooltipBehind': 'Pobierz zmiany ({count} w tyle)', + 'gitView.sync.push': 'Wypchnij', + 'gitView.sync.pushTooltip': 'Wypchnij zmiany', + 'gitView.sync.pushTooltipAhead': 'Wypchnij zmiany ({count} do przodu)', + 'gitView.tabs.commit': 'Commit', + 'gitView.tabs.pr': 'PR', + 'gitView.tabs.update': 'Aktualizuj', + 'gitView.tabs.worktree': 'Drzewo pracy', + 'gitView.toast.abortOperationFailed': 'Nie udało się przerwać operacji', + 'gitView.toast.appliedIdentity': 'Zastosowano tożsamość: {name}', + 'gitView.toast.applyIdentityFailed': 'Nie udało się zastosować tożsamości', + 'gitView.toast.branchCreatedLocally': 'Gałąź została utworzona lokalnie, ale nie udało się ustawić upstreamu.', + 'gitView.toast.cannotCheckout': 'Nie można przełączyć gałęzi: {reason}', + 'gitView.toast.cannotCreateBranch': 'Nie można utworzyć gałęzi: {reason}', + 'gitView.toast.cannotRemoveOriginRemote': 'Nie można usunąć zdalnego origin', + 'gitView.toast.cannotRenameBranch': 'Nie można zmienić nazwy gałęzi: {reason}', + 'gitView.toast.checkedOut': 'Przełączono na {name}', + 'gitView.toast.checkoutFailed': 'Nie udało się przełączyć na {name}', + 'gitView.toast.commitCreated': 'Commit utworzony', + 'gitView.toast.commitHashCopied': 'Hash commita skopiowany', + 'gitView.toast.continueOperationFailed': 'Nie udało się kontynuować operacji', + 'gitView.toast.copyFailed': 'Nie udało się skopiować', + 'gitView.toast.createBranchFailed': 'Nie udało się utworzyć gałęzi', + 'gitView.toast.createCommitFailed': 'Nie udało się utworzyć commita', + 'gitView.toast.createdBranch': 'Utworzono gałąź {name}', + 'gitView.toast.enterCommitMessage': 'Wpisz wiadomość commita', + 'gitView.toast.fetchedFromRemote': 'Pobrano z {name}', + 'gitView.toast.generateCommitMessageFailed': 'Nie udało się wygenerować wiadomości commita', + 'gitView.toast.mergeAborted': 'Scalanie przerwane', + 'gitView.toast.mergeCompleted': 'Scalanie zakończone', + 'gitView.toast.mergeConflictsDetected': 'Wykryto konflikty scalania', + 'gitView.toast.mergedIntoBranch': 'Scalono {branch} z {currentBranch}', + 'gitView.toast.pulledFilesPlural': 'Pobrano {count} plików z {name}', + 'gitView.toast.pulledFilesSingle': 'Pobrano {count} plik z {name}', + 'gitView.toast.pushedToUpstream': 'Wypchnięto do upstreamu', + 'gitView.toast.rebaseAborted': 'Rebase przerwany', + 'gitView.toast.rebaseConflictsDetected': 'Wykryto konflikty rebase', + 'gitView.toast.rebaseStepCompleted': 'Krok rebase zakończony', + 'gitView.toast.rebasedOntoBranch': 'Wykonano rebase {currentBranch} na {branch}', + 'gitView.toast.refreshRepositoryFailed': 'Nie udało się odświeżyć repozytorium', + 'gitView.toast.remoteNameRequired': 'Nazwa remote jest wymagana', + 'gitView.toast.removedRemote': 'Usunięto remote {name}', + 'gitView.toast.renameBranchFailed': 'Nie udało się zmienić nazwy {oldName} na {newName}', + 'gitView.toast.renamedBranch': 'Zmieniono nazwę {oldName} na {newName}', + 'gitView.toast.restoreStashFailed': 'Nie udało się przywrócić stasha', + 'gitView.toast.restoreStashManually': 'Wymagane jest ręczne przywrócenie stasha', + 'gitView.toast.revertFailed': 'Nie udało się cofnąć zmian', + 'gitView.toast.revertedFile': 'Cofnięto {path}', + 'gitView.toast.revertedFilesPlural': 'Cofnięto {count} plików', + 'gitView.toast.revertedFilesSingle': 'Cofnięto {count} plik', + 'gitView.toast.revertedSomePlural': 'Cofnięto {success} plików, {failed} nieudanych', + 'gitView.toast.revertedSomeSingle': 'Cofnięto {success} plik, {failed} nieudanych', + 'gitView.toast.selectFileToCommit': 'Zaznacz co najmniej jeden plik do commita', + 'gitView.toast.selectFileToDescribe': 'Zaznacz co najmniej jeden plik do opisu', + 'gitView.toast.stashedRestored': 'Przywrócono odłożone zmiany', + 'gitView.toast.syncActionFailed': 'Operacja {action} nie powiodła się', + 'gitView.toast.upstreamSet': 'Ustawiono upstream dla {branch} na {remote}', + 'gitView.worktree.availableInWorktreeMode': 'Dostępne tylko w trybie drzewa pracy', + 'header.actions.backAria': 'Wstecz', + 'header.actions.closeSessionsAria': 'Zamknij sesje', + 'header.actions.newSessionAria': 'Nowa sesja', + 'header.actions.newSessionWithShortcut': 'Nowa sesja ({shortcut})', + 'header.actions.openPlanAria': 'Otwórz plan', + 'header.actions.openSessionsAria': 'Otwórz sesje', + 'header.actions.openSessionsWithShortcut': 'Otwórz sesje ({shortcut})', + 'header.actions.planWithShortcut': 'Plan ({shortcut})', + 'header.actions.rightSidebarWithShortcut': 'Prawy panel boczny ({shortcut})', + 'header.actions.terminalPanelWithShortcut': 'Panel terminala ({shortcut})', + 'header.actions.toggleRightSidebarAria': 'Przełącz prawy panel boczny', + 'header.actions.toggleTerminalPanelAria': 'Przełącz panel terminala', + 'header.changes.availableAria': 'Dostępne zmiany', + 'header.github.accountsTitle': 'Konta GitHub', + 'header.github.avatar': 'Awatar GitHub', + 'header.github.avatarWithLogin': 'Awatar {login}', + 'header.github.connected': 'GitHub połączony', + 'header.github.connectedWithLogin': 'GitHub: {login}', + 'header.navigation.mainAria': 'Nawigacja główna', + 'header.services.closeAria': 'Zamknij usługi', + 'header.services.modelFamily.other': 'Inne', + 'header.services.noRateLimits': 'Brak dostępnych limitów użycia.', + 'header.services.noRateLimitsReported': 'Nie zgłoszono limitów użycia.', + 'header.services.open': 'Otwórz instancję, użycie i MCP', + 'header.services.openWithCurrent': 'Otwórz instancję, użycie i MCP (bieżąca: {current})', + 'header.services.rateLimits': 'Limity użycia', + 'header.services.refreshRateLimitsAria': 'Odśwież limity użycia', + 'header.services.remaining': 'Pozostało', + 'header.services.shutdownDev': 'Zatrzymaj OpenChamber', + 'header.services.title': 'Usługi', + 'header.services.tooltip.currentInstanceWithShortcuts': 'Bieżąca instancja: {current} ({toggle}; następna karta {nextTab})', + 'header.services.tooltip.servicesWithShortcuts': 'Usługi ({toggle}; następna karta {nextTab})', + 'header.services.used': 'Wykorzystano', + 'header.services.viewAria': 'Pokaż usługi', + 'header.sessions.title': 'Sesje', + 'helpDialog.description': 'Użyj tych skrótów klawiaturowych, aby sprawnie poruszać się po OpenChamber.', + 'helpDialog.item.abortActiveRun': 'Przerwij aktywne uruchomienie (dwukrotne naciśnięcie)', + 'helpDialog.item.adjustThinkingMode': 'Dostosuj tryb myślenia (w selektorze, gdy obsługiwane)', + 'helpDialog.item.createNewSession': 'Utwórz nową sesję', + 'helpDialog.item.createNewWorktreeDraft': 'Utwórz nowy szkic drzewa pracy', + 'helpDialog.item.cycleAgent': 'Przełącz agenta (w polu czatu)', + 'helpDialog.item.cycleRightSidebarTab': 'Przełącz kartę prawego panelu', + 'helpDialog.item.cycleServicesTab': 'Przełącz kartę usług', + 'helpDialog.item.cycleTheme': 'Przełącz motyw (Jasny → Ciemny → Systemowy)', + 'helpDialog.item.cycleThinkingVariant': 'Przełącz wariant myślenia (skrót globalny)', + 'helpDialog.item.focusChatInput': 'Ustaw fokus na polu czatu', + 'helpDialog.item.navigateModels': 'Nawiguj po modelach (w selektorze)', + 'helpDialog.item.newWindow': 'Nowe okno (tylko desktop)', + 'helpDialog.item.openCommandPalette': 'Otwórz paletę poleceń', + 'helpDialog.item.openModelSelector': 'Otwórz selektor modeli', + 'helpDialog.item.openRightSidebarFilesTab': 'Otwórz kartę Pliki w prawym panelu', + 'helpDialog.item.openRightSidebarGitTab': 'Otwórz kartę Git w prawym panelu', + 'helpDialog.item.openSettings': 'Otwórz ustawienia', + 'helpDialog.item.showKeyboardShortcuts': 'Pokaż skróty klawiaturowe (to okno)', + 'helpDialog.item.switchProject': 'Przełącz projekt', + 'helpDialog.item.togglePlanContextPanel': 'Przełącz panel kontekstu planu', + 'helpDialog.item.toggleRightSidebar': 'Przełącz prawy panel boczny', + 'helpDialog.item.toggleServicesMenu': 'Przełącz menu usług', + 'helpDialog.item.toggleSessionSidebar': 'Przełącz panel sesji', + 'helpDialog.item.toggleTerminalDock': 'Przełącz dolny terminal', + 'helpDialog.item.toggleTerminalExpanded': 'Przełącz rozszerzenie terminala', + 'helpDialog.keyCombiner.or': 'lub', + 'helpDialog.proTips.commandPalette': 'Użyj Palety poleceń ({shortcut}), aby szybko uzyskać dostęp do wszystkich akcji', + 'helpDialog.proTips.recentSessions': '5 ostatnich sesji pojawia się w Palecie poleceń', + 'helpDialog.proTips.themeCycling': 'Przełączanie motywów zapamiętuje twoje preferencje między sesjami', + 'helpDialog.proTips.title': 'Wskazówki:', + 'helpDialog.section.interface': 'Interfejs', + 'helpDialog.section.navigationCommands': 'Nawigacja i polecenia', + 'helpDialog.section.panels': 'Panele', + 'helpDialog.section.sessionManagement': 'Zarządzanie sesjami', + 'helpDialog.title': 'Skróty klawiaturowe', + 'inlineComment.actions.cancel': 'Anuluj', + 'inlineComment.actions.comment': 'Comment', + 'inlineComment.actions.deleteComment': 'Delete comment', + 'inlineComment.actions.editComment': 'Edit comment', + 'inlineComment.actions.save': 'Zapisz', + 'inlineComment.actions.showLess': 'Show less', + 'inlineComment.actions.showMore': 'Show more', + 'inlineComment.input.placeholder': 'Add a comment... (Cmd+Enter to save)', + 'inlineComment.range.lines': 'Lines {start}-{end}', + 'inlineComment.toast.selectSessionToSave': 'Select a session to save comment', + 'mainLayout.mobile.closeDrawerAria': 'Zamknij szufladę', + 'markdownRenderer.mermaid.actions.copySourceTitle': 'Kopiuj źródło', + 'markdownRenderer.mermaid.actions.copyTitle': 'Kopiuj', + 'markdownRenderer.mermaid.actions.downloadSvgTitle': 'Pobierz SVG', + 'markdownRenderer.mermaid.toast.downloadFailed': 'Nie udało się pobrać diagramu', + 'markdownRenderer.table.actions.copyTitle': 'Kopiuj tabelę', + 'markdownRenderer.table.actions.downloadTitle': 'Pobierz tabelę', + 'markdownRenderer.table.toast.downloadedAsFormat': 'Tabela została pobrana jako {format}', + 'mcpDropdown.actions.openAria': 'Serwery MCP', + 'mcpDropdown.actions.refreshAria': 'Odśwież', + 'mcpDropdown.empty.configureInConfig': 'Skonfiguruj serwery MCP w konfiguracji OpenCode.', + 'mcpDropdown.status.connected': 'Połączono', + 'mcpDropdown.status.failed': 'Błąd: {error}', + 'mcpDropdown.status.needsAuth': 'Wymaga uwierzytelnienia', + 'mcpDropdown.status.needsRegistration': 'Wymaga rejestracji: {error}', + 'mcpDropdown.status.unknown': 'Nieznany', + 'mcpDropdown.status.unknownError': 'Nieznany błąd', + 'mcpDropdown.statusAria': 'Status MCP', + 'mcpDropdown.title': 'Serwery MCP', + 'memoryDebugPanel.actions.copyJson': 'Kopiuj JSON', + 'memoryDebugPanel.actions.logState': 'Zaloguj stan', + 'memoryDebugPanel.common.idle': 'idle', + 'memoryDebugPanel.common.live': 'live', + 'memoryDebugPanel.common.notAvailable': 'n/a', + 'memoryDebugPanel.common.untitled': 'Bez tytułu', + 'memoryDebugPanel.metric.avgValue': 'średnio {value}', + 'memoryDebugPanel.metric.cachedSessions': 'Sesje w cache', + 'memoryDebugPanel.metric.chatMessageRenders': 'Renderowania ChatMessage', + 'memoryDebugPanel.metric.chatMessageStaticDuringStream': 'ChatMessage statyczny podczas streamu', + 'memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn': 'ChatMessage statyczny poza aktywną turą', + 'memoryDebugPanel.metric.chatMessageStreamRenders': 'Renderowania ChatMessage podczas streamu', + 'memoryDebugPanel.metric.countValue': 'liczba {value}', + 'memoryDebugPanel.metric.githubTotalRequests': 'Łączna liczba żądań GitHub', + 'memoryDebugPanel.metric.lastUpdate': 'Ostatnia aktualizacja', + 'memoryDebugPanel.metric.maxValue': 'maks. {value}', + 'memoryDebugPanel.metric.messageListRenders': 'Renderowania listy wiadomości', + 'memoryDebugPanel.metric.messageListStreamRenders': 'Renderowania listy wiadomości podczas streamu', + 'memoryDebugPanel.metric.messagesValue': '{count} wiadomości', + 'memoryDebugPanel.metric.metrics': 'Metryki', + 'memoryDebugPanel.metric.minutesValue': '{count} minut', + 'memoryDebugPanel.metric.msgsValue': '{count} wiad.', + 'memoryDebugPanel.metric.samples': 'Próbki', + 'memoryDebugPanel.metric.totalMessages': 'Łączna liczba wiadomości', + 'memoryDebugPanel.metric.totalValue': 'łącznie {value}', + 'memoryDebugPanel.metric.uiMetrics': 'Metryki UI', + 'memoryDebugPanel.metric.viewportWindow': 'Okno widoku', + 'memoryDebugPanel.metric.vscodeMetrics': 'Metryki VS Code', + 'memoryDebugPanel.metric.zombieTimeout': 'Limit zombie', + 'memoryDebugPanel.section.noUiSamples': 'Brak próbek streamingu UI. Uruchom stream i pozostaw ten panel otwarty.', + 'memoryDebugPanel.section.noVscodeSamples': 'Brak próbek mostka VS Code.', + 'memoryDebugPanel.section.sessionsInMemory': 'Sesje w pamięci', + 'memoryDebugPanel.section.uiStreamingMetrics': 'Metryki streamingu UI', + 'memoryDebugPanel.section.vscodeBridgeMetrics': 'Metryki mostka VS Code', + 'memoryDebugPanel.streaming.copy.copied': 'Skopiowano JSON debugowania streamingu', + 'memoryDebugPanel.streaming.copy.failed': 'Nie udało się skopiować JSON', + 'memoryDebugPanel.streaming.copy.hint': 'Kopiowanie eksportuje metryki streamingu zarówno UI, jak i VS Code w formacie JSON', + 'memoryDebugPanel.tabs.memory': 'Pamięć', + 'memoryDebugPanel.tabs.streaming': 'Streaming', + 'memoryDebugPanel.title': 'Panel debugowania', + 'memoryDebugPanel.tooltip.logCurrentState': 'Zaloguj bieżący stan pamięci do konsoli przeglądarki', + 'openChamberLogo.aria.logo': 'Logo OpenChamber', + 'openCodeStatusDialog.actions.copy': 'Kopiuj', + 'openCodeStatusDialog.description': 'Sprawdź bieżący status i diagnostykę OpenCode.', + 'openCodeStatusDialog.empty.noData': 'Brak danych.', + 'openCodeStatusDialog.title': 'Status OpenCode', + 'openCodeStatusDialog.toast.copiedDescription': 'Status skopiowany do schowka', + 'openCodeStatusDialog.toast.copiedTitle': 'Skopiowano', + 'openCodeStatusDialog.toast.copyFailed': 'Nie udało się skopiować statusu', + 'openInApp.actions.chooseAppAria': 'Wybierz aplikację do otwarcia', + 'openInApp.actions.copyPath': 'Kopiuj ścieżkę', + 'openInApp.actions.open': 'Otwórz', + 'openInApp.actions.openInAria': 'Otwórz w {app}', + 'openInApp.actions.refreshApps': 'Odśwież aplikacje', + 'openInApp.toast.pathCopied': 'Ścieżka skopiowana do schowka', + 'planView.actions.copyPlanContents': 'Kopiuj treść planu', + 'planView.actions.implement': 'Wdróż', + 'planView.actions.implementPlanAria': 'Wdróż plan', + 'planView.actions.improve': 'Ulepsz', + 'planView.actions.improvePlanAria': 'Ulepsz plan', + 'planView.actions.sendToNewSession': 'Wyślij do nowej sesji', + 'planView.actions.sendToNewWorktreeSession': 'Wyślij do nowej sesji drzewa pracy', + 'planView.error.previewUnavailable': 'Podgląd jest niedostępny', + 'planView.error.saveFailed': 'Nie udało się zapisać', + 'planView.error.switchToEditMode': 'Przełącz do trybu edycji, aby naprawić problem.', + 'planView.error.writeFailed': 'Nie udało się zapisać', + 'planView.error.writePlanFileFailed': 'Nie udało się zapisać pliku planu ({status})', + 'planView.file.defaultName': 'plan', + 'planView.state.loading': 'Loading...', + 'planView.title.default': 'Plan', + 'projectActions.actions.addAction': 'Dodaj akcję', + 'projectActions.actions.addActionAria': 'Dodaj akcję', + 'projectActions.actions.addNewAction': 'Dodaj nową akcję', + 'projectActions.actions.autoDiscover': 'Wykryj automatycznie', + 'projectActions.actions.chooseActionAria': 'Wybierz akcję projektu', + 'projectActions.actions.openPreview': 'Otwórz podgląd', + 'projectActions.actions.runNamedAria': 'Uruchom {name}', + 'projectActions.actions.stopNamedAria': 'Zatrzymaj {name}', + 'projectActions.error.failedToCreateTerminalSession': 'Nie udało się utworzyć sesji terminala', + 'projectActions.error.failedToRunAction': 'Nie udało się uruchomić akcji', + 'projectActions.error.invalidCustomUrlFormat': 'Nieprawidłowy format własnego adresu URL', + 'projectActions.error.noActiveDirectory': 'Brak aktywnego katalogu', + 'projectActions.error.noActiveDirectoryForAction': 'Brak aktywnego katalogu dla akcji', + 'projectActions.error.selectedDesktopSshForwardUnavailable': 'Wybrane przekierowanie SSH z desktopu jest niedostępne', + 'projectActions.label.fallbackAction': 'Akcja', + 'projectActions.toast.openedActionUrl': 'Otwarto adres URL akcji', + 'projectActions.toast.openedForwardedUrl': 'Otwarto przekierowany adres URL', + 'projectActions.toast.openedUrlFromOutput': 'Otwarto adres URL z wyjścia akcji', + 'projectEditDialog.actions.cancel': 'Anuluj', + 'projectEditDialog.actions.clear': 'Wyczyść', + 'projectEditDialog.actions.discoverFavicon': 'Znajdź faviconę', + 'projectEditDialog.actions.discovering': 'Wykrywanie...', + 'projectEditDialog.actions.removeProjectIcon': 'Usuń ikonę projektu', + 'projectEditDialog.actions.removing': 'Usuwanie...', + 'projectEditDialog.actions.save': 'Zapisz', + 'projectEditDialog.actions.undoRemove': 'Cofnij usunięcie', + 'projectEditDialog.actions.uploadIcon': 'Prześlij ikonę', + 'projectEditDialog.actions.uploading': 'Przesyłanie...', + 'projectEditDialog.field.color': 'Kolor', + 'projectEditDialog.field.icon': 'Ikona', + 'projectEditDialog.field.iconBackground': 'Tło ikony', + 'projectEditDialog.field.iconBackgroundAria': 'Kolor tła ikony projektu', + 'projectEditDialog.field.name': 'Nazwa', + 'projectEditDialog.field.namePlaceholder': 'Nazwa projektu', + 'projectEditDialog.field.preview': 'Podgląd', + 'projectEditDialog.option.none': 'Brak', + 'projectEditDialog.title': 'Edytuj projekt', + 'projectEditDialog.toast.customIconAlreadySet': 'Dla tego projektu jest już ustawiona własna ikona', + 'projectEditDialog.toast.failedToDiscoverIcon': 'Nie udało się wykryć ikony projektu', + 'projectEditDialog.toast.failedToRemoveIcon': 'Nie udało się usunąć ikony projektu', + 'projectEditDialog.toast.failedToUploadIcon': 'Nie udało się przesłać ikony projektu', + 'projectEditDialog.toast.iconDiscovered': 'Wykryto ikonę projektu', + 'projectEditDialog.toast.iconRemoved': 'Usunięto ikonę projektu', + 'projectEditDialog.toast.iconUpdated': 'Zaktualizowano ikonę projektu', + 'rightSidebar.contextNotesTodo.empty.selectProject': 'Wybierz projekt, aby dodać notatki i zadania.', + 'rightSidebar.contextNotesTodo.notes.placeholder': 'Zapisz kontekst, przypomnienia lub linki', + 'rightSidebar.contextNotesTodo.notes.title': 'Szybkie notatki — {project}', + 'rightSidebar.contextNotesTodo.plan.defaultTitle': 'Plan', + 'rightSidebar.contextNotesTodo.plans.deletePlan': 'Usuń plan', + 'rightSidebar.contextNotesTodo.plans.deletePlanWithTitle': 'Usuń plan „{title}”', + 'rightSidebar.contextNotesTodo.plans.empty': 'Brak zapisanych planów.', + 'rightSidebar.contextNotesTodo.plans.filesPlural': '{count} plików', + 'rightSidebar.contextNotesTodo.plans.filesSingle': '{count} plik', + 'rightSidebar.contextNotesTodo.plans.importFromFile': 'Importuj plan z pliku', + 'rightSidebar.contextNotesTodo.plans.title': 'Plany', + 'rightSidebar.contextNotesTodo.sendDialog.actions.cancel': 'Anuluj', + 'rightSidebar.contextNotesTodo.sendDialog.actions.send': 'Wyślij', + 'rightSidebar.contextNotesTodo.sendDialog.actions.sending': 'Wysyłanie', + 'rightSidebar.contextNotesTodo.sendDialog.title.newSession': 'Wyślij do nowej sesji', + 'rightSidebar.contextNotesTodo.sendDialog.title.newWorktree': 'Wyślij do nowego drzewa pracy', + 'rightSidebar.contextNotesTodo.sendDialog.variant.default': 'Domyślny', + 'rightSidebar.contextNotesTodo.toast.createSessionFailed': 'Nie udało się utworzyć sesji', + 'rightSidebar.contextNotesTodo.toast.deletePlanFailed': 'Nie udało się usunąć planu', + 'rightSidebar.contextNotesTodo.toast.importPlanFailed': 'Nie udało się zaimportować planu', + 'rightSidebar.contextNotesTodo.toast.loadNotesFailed': 'Nie udało się załadować notatek projektu', + 'rightSidebar.contextNotesTodo.toast.noActiveSession': 'Nie wybrano aktywnej sesji', + 'rightSidebar.contextNotesTodo.toast.planFileEmpty': 'Plik planu jest pusty', + 'rightSidebar.contextNotesTodo.toast.planImported': 'Plan zaimportowany', + 'rightSidebar.contextNotesTodo.toast.readPlanFileFailed': 'Nie udało się odczytać pliku planu', + 'rightSidebar.contextNotesTodo.toast.saveNotesFailed': 'Nie udało się zapisać notatek projektu', + 'rightSidebar.contextNotesTodo.toast.sendTodoFailed': 'Nie udało się wysłać zadania', + 'rightSidebar.contextNotesTodo.toast.sentToCurrentSession': 'Zadanie wysłane do bieżącej sesji', + 'rightSidebar.contextNotesTodo.toast.sentToNewSession': 'Zadanie wysłane do nowej sesji', + 'rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession': 'Zadanie wysłane do nowej sesji drzewa pracy', + 'rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo': 'Akcje drzewa pracy są dostępne tylko dla repozytoriów Git', + 'rightSidebar.contextNotesTodo.todo.actions.collapse': 'Zwiń zadanie „{text}”', + 'rightSidebar.contextNotesTodo.todo.actions.delete': 'Usuń „{text}”', + 'rightSidebar.contextNotesTodo.todo.actions.expand': 'Rozwiń zadanie „{text}”', + 'rightSidebar.contextNotesTodo.todo.actions.markComplete': 'Oznacz „{text}” jako ukończone', + 'rightSidebar.contextNotesTodo.todo.actions.send': 'Wyślij „{text}”', + 'rightSidebar.contextNotesTodo.todo.addAria': 'Dodaj zadanie', + 'rightSidebar.contextNotesTodo.todo.clearCompleted': 'Wyczyść ukończone', + 'rightSidebar.contextNotesTodo.todo.empty': 'Brak zadań. Dodaj krótką checklistę dla tego projektu.', + 'rightSidebar.contextNotesTodo.todo.inputPlaceholder': 'Dodaj zadanie', + 'rightSidebar.contextNotesTodo.todo.itemsPlural': '{count} elementów', + 'rightSidebar.contextNotesTodo.todo.itemsSingle': '{count} element', + 'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': 'Wyślij do bieżącej sesji', + 'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': 'Wyślij do nowej sesji', + 'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': 'Wyślij do nowej sesji drzewa pracy', + 'rightSidebar.contextNotesTodo.todo.title': 'Zadania', + 'saveProjectPlanDialog.actions.cancel': 'Anuluj', + 'saveProjectPlanDialog.actions.save': 'Zapisz', + 'saveProjectPlanDialog.actions.saving': 'Saving...', + 'saveProjectPlanDialog.description': 'Zapisz ten plan w projekcie jako plik Markdown.', + 'saveProjectPlanDialog.field.contentPreview': 'Podgląd treści', + 'saveProjectPlanDialog.field.title': 'Tytuł', + 'saveProjectPlanDialog.field.titlePlaceholder': 'Tytuł planu', + 'saveProjectPlanDialog.title': 'Zapisz plan projektu', + 'session.githubIssuePicker.actions.createInWorktree': 'Utwórz w drzewie pracy', + 'session.githubIssuePicker.actions.loadMore': 'Załaduj więcej', + 'session.githubIssuePicker.actions.openInGitHubAria': 'Otwórz w GitHub', + 'session.githubIssuePicker.actions.openRepo': 'Otwórz repozytorium', + 'session.githubIssuePicker.actions.openSettings': 'Otwórz ustawienia', + 'session.githubIssuePicker.actions.refresh': 'Odśwież', + 'session.githubIssuePicker.actions.sectionTitle': 'Akcje', + 'session.githubIssuePicker.actions.toggleWorktreeAria': 'Przełącz drzewo pracy', + 'session.githubIssuePicker.actions.useIssue': 'Użyj zgłoszenia #{number}', + 'session.githubIssuePicker.description.createSession': 'Tworzy nową sesję z ukrytym kontekstem zgłoszenia (tytuł/treść/etykiety/komentarze).', + 'session.githubIssuePicker.description.select': 'Wybierz zgłoszenie, które chcesz powiązać z tą sesją.', + 'session.githubIssuePicker.empty.noActiveProject': 'Nie wybrano aktywnego projektu.', + 'session.githubIssuePicker.empty.noIssuesFound': 'Nie znaleziono zgłoszeń', + 'session.githubIssuePicker.empty.noOpenIssuesFound': 'Nie znaleziono otwartych zgłoszeń', + 'session.githubIssuePicker.empty.notConnected': 'GitHub nie jest połączony. Połącz konto GitHub w ustawieniach.', + 'session.githubIssuePicker.empty.runtimeUnavailable': 'API środowiska GitHub jest niedostępne.', + 'session.githubIssuePicker.error.issueNotFound': 'Nie znaleziono zgłoszenia', + 'session.githubIssuePicker.error.noActiveProject': 'Brak aktywnego projektu', + 'session.githubIssuePicker.error.noModelSelected': 'Nie wybrano modelu', + 'session.githubIssuePicker.error.notConnected': 'GitHub nie jest połączony', + 'session.githubIssuePicker.error.repoMustBeGithub': 'remote origin musi być adresem URL GitHub', + 'session.githubIssuePicker.error.repoNotResolvable': 'Nie udało się rozpoznać repozytorium', + 'session.githubIssuePicker.error.runtimeUnavailable': 'API środowiska GitHub jest niedostępne', + 'session.githubIssuePicker.loading.issues': 'Ładowanie zgłoszeń...', + 'session.githubIssuePicker.loading.more': 'Ładowanie...', + 'session.githubIssuePicker.searchPlaceholder': 'Szukaj po tytule lub #123, albo wklej URL zgłoszenia', + 'session.githubIssuePicker.title.createSession': 'Nowa sesja ze zgłoszenia GitHub', + 'session.githubIssuePicker.title.select': 'Połącz zgłoszenie GitHub', + 'session.githubIssuePicker.toast.loadIssueDetailsFailed': 'Nie udało się załadować szczegółów zgłoszenia', + 'session.githubIssuePicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych zgłoszeń', + 'session.githubIssuePicker.toast.sendContextFailed': 'Nie udało się wysłać kontekstu zgłoszenia', + 'session.githubIssuePicker.toast.sessionCreated': 'Sesja utworzona ze zgłoszenia', + 'session.githubIssuePicker.toast.startSessionFailed': 'Nie udało się uruchomić sesji', + 'session.githubPrPicker.actions.loadMore': 'Załaduj więcej', + 'session.githubPrPicker.actions.openInGitHubAria': 'Otwórz w GitHub', + 'session.githubPrPicker.actions.openSettings': 'Otwórz ustawienia', + 'session.githubPrPicker.actions.usePullRequest': 'Użyj pull requesta #{number}', + 'session.githubPrPicker.description': 'Wybierz pull request, aby dołączyć kontekst recenzji do tej wiadomości.', + 'session.githubPrPicker.empty.noActiveProject': 'Nie wybrano aktywnego projektu.', + 'session.githubPrPicker.empty.noOpenPullRequestsFound': 'Nie znaleziono otwartych pull requestów', + 'session.githubPrPicker.empty.noPullRequestsFound': 'Nie znaleziono pull requestów', + 'session.githubPrPicker.empty.notConnected': 'GitHub nie jest połączony. Połącz konto GitHub w ustawieniach.', + 'session.githubPrPicker.empty.runtimeUnavailable': 'API środowiska GitHub jest niedostępne.', + 'session.githubPrPicker.error.noActiveProject': 'Brak aktywnego projektu', + 'session.githubPrPicker.error.notConnected': 'GitHub nie jest połączony', + 'session.githubPrPicker.error.prNotFound': 'Nie znaleziono pull requesta', + 'session.githubPrPicker.error.repoMustBeGithub': 'remote origin musi być adresem URL GitHub', + 'session.githubPrPicker.error.repoNotResolvable': 'Nie udało się rozpoznać repozytorium', + 'session.githubPrPicker.error.runtimeUnavailable': 'API środowiska GitHub jest niedostępne', + 'session.githubPrPicker.includeDiff': 'Dołącz diff PR', + 'session.githubPrPicker.includeDiffAria': 'Dołącz diff PR do załączonego kontekstu', + 'session.githubPrPicker.loading.more': 'Ładowanie...', + 'session.githubPrPicker.loading.pullRequests': 'Ładowanie pull requestów...', + 'session.githubPrPicker.searchPlaceholder': 'Szukaj po tytule lub #123, albo wklej URL pull requesta', + 'session.githubPrPicker.title': 'Połącz pull request GitHub', + 'session.githubPrPicker.toast.loadDetailsFailed': 'Nie udało się załadować szczegółów pull requesta', + 'session.githubPrPicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych pull requestów', + 'session.newWorktree.actions.cancel': 'Anuluj', + 'session.newWorktree.actions.change': 'Zmień', + 'session.newWorktree.actions.createWorktree': 'Utwórz drzewo pracy', + 'session.newWorktree.actions.creating': 'Tworzenie...', + 'session.newWorktree.actions.reset': 'Resetuj', + 'session.newWorktree.actions.startFromGitHubIssuePr': 'Rozpocznij ze zgłoszenia/PR GitHub', + 'session.newWorktree.branchName': 'Nazwa gałęzi', + 'session.newWorktree.branchNamePlaceholder': 'feature/my-awesome-feature', + 'session.newWorktree.chooseBranch': 'Wybierz gałąź...', + 'session.newWorktree.error.branchNameRequired': 'Nazwa gałęzi jest wymagana', + 'session.newWorktree.error.createWorktreeFailed': 'Nie udało się utworzyć drzewa pracy', + 'session.newWorktree.error.noActiveProject': 'Brak aktywnego projektu', + 'session.newWorktree.error.noModelSelected': 'Nie wybrano modelu', + 'session.newWorktree.error.sendGitHubContextFailed': 'Nie udało się wysłać kontekstu GitHub', + 'session.newWorktree.error.worktreeDirectoryRequired': 'Katalog drzewa pracy jest wymagany', + 'session.newWorktree.fetchBranches': 'Pobierz gałęzie', + 'session.newWorktree.fromIssue': 'Ze zgłoszenia #{number}: {title}', + 'session.newWorktree.fromSource': 'z {source}', + 'session.newWorktree.includeDiffBadge': '+diff', + 'session.newWorktree.issueNumber': 'Issue #{number}', + 'session.newWorktree.loadingBranches': 'Ładowanie gałęzi...', + 'session.newWorktree.localBranches': 'Lokalne gałęzie', + 'session.newWorktree.matchingBranches': 'Pasujące gałęzie', + 'session.newWorktree.mode.existingBranch': 'Istniejąca gałąź', + 'session.newWorktree.mode.newBranch': 'Nowa gałąź', + 'session.newWorktree.newBranchFromSource': 'Nowa gałąź zostanie utworzona z {source}', + 'session.newWorktree.newSessionTitle': 'Nowa sesja', + 'session.newWorktree.noBranchesFound': 'Nie znaleziono gałęzi', + 'session.newWorktree.noMatchingBranches': 'Brak pasujących gałęzi', + 'session.newWorktree.otherLocalBranches': 'Pozostałe lokalne gałęzie', + 'session.newWorktree.otherRemoteBranches': 'Pozostałe zdalne gałęzie', + 'session.newWorktree.prNumber': 'PR #{number}', + 'session.newWorktree.remoteBranches': 'Zdalne gałęzie', + 'session.newWorktree.resetToMatchBranchName': 'Zresetuj do nazwy zgodnej z gałęzią', + 'session.newWorktree.searchBranches': 'Szukaj gałęzi...', + 'session.newWorktree.selectBranch': 'Wybierz gałąź', + 'session.newWorktree.selectSourceBranch': 'Wybierz gałąź źródłową', + 'session.newWorktree.selectSourceBranchPlaceholder': 'Wybierz gałąź źródłową...', + 'session.newWorktree.sourceBranch': 'Gałąź źródłowa', + 'session.newWorktree.title': 'Nowe drzewo pracy', + 'session.newWorktree.toast.sessionFromIssue': 'Sesja utworzona ze zgłoszenia', + 'session.newWorktree.toast.sessionFromPr': 'Sesja utworzona z PR', + 'session.newWorktree.toast.worktreeCreated': 'Drzewo pracy utworzone', + 'session.newWorktree.toast.worktreeCreatedDescription': '{target} — inicjalizacja w tle', + 'session.newWorktree.usingPrBranch': 'Używana gałąź PR: {branch}', + 'session.newWorktree.worktreeDirectory': 'Katalog drzewa pracy', + 'session.newWorktree.worktreeDirectoryPlaceholder': 'my-worktree-directory', + 'sessionAuth.actions.addPasskey': 'Add passkey', + 'sessionAuth.actions.cancelPasskey': 'Anuluj klucz dostępu', + 'sessionAuth.actions.cancelPasskeySetup': 'Anuluj konfigurację klucza dostępu', + 'sessionAuth.actions.trustDevice': 'Zaufaj temu urządzeniu', + 'sessionAuth.actions.trustDeviceAria': 'Zaufaj temu urządzeniu', + 'sessionAuth.actions.unlockAria': 'Odblokuj', + 'sessionAuth.actions.unlockingAria': 'Odblokowywanie', + 'sessionAuth.actions.usePasskey': 'Użyj klucza dostępu', + 'sessionAuth.error.enterPasswordForPasskey': 'Wpisz hasło, aby dodać klucz dostępu.', + 'sessionAuth.error.incorrectPassword': 'Nieprawidłowe hasło. Spróbuj ponownie.', + 'sessionAuth.error.networkDescription': 'Nie udało się zweryfikować sesji UI. Sprawdź, czy usługa działa, i spróbuj ponownie.', + 'sessionAuth.error.networkRetry': 'Błąd sieci. Sprawdź połączenie i spróbuj ponownie.', + 'sessionAuth.error.networkTitle': 'Nie można połączyć się z serwerem', + 'sessionAuth.error.passkeySetupFailed': 'Nie udało się skonfigurować klucza dostępu.', + 'sessionAuth.error.passkeySignInCanceled': 'Logowanie kluczem dostępu zostało anulowane.', + 'sessionAuth.error.rateLimitDescriptionPlural': 'Poczekaj {minutes} minut przed ponowną próbą.', + 'sessionAuth.error.rateLimitDescriptionSingle': 'Poczekaj {minutes} minutę przed ponowną próbą.', + 'sessionAuth.error.rateLimitTitle': 'Zbyt wiele prób', + 'sessionAuth.error.retry': 'Ponów', + 'sessionAuth.error.unexpectedResponse': 'Nieoczekiwana odpowiedź serwera.', + 'sessionAuth.locked.hostSwitcherHint': 'Użyj Lokalnej, jeśli zdalna jest niedostępna.', + 'sessionAuth.locked.passwordDescription': 'Ta sesja jest chroniona hasłem.', + 'sessionAuth.locked.tunnelDescription': 'Otwórz ten tunel za pomocą jednorazowego linku połączenia z aplikacji desktopowej.', + 'sessionAuth.locked.tunnelTitle': 'Wymagany dostęp przez tunel', + 'sessionAuth.locked.unlockTitle': 'Odblokuj OpenChamber', + 'sessionAuth.password.placeholder': 'Wpisz hasło', + 'sessionAuth.toast.passkeyAdded': 'Dodano klucz dostępu', + 'sessionAuth.toast.passkeySetupCanceled': 'Konfiguracja klucza dostępu została anulowana', + 'sessions.sidebar.folders.none': 'Brak folderów', + 'sidebar.resize.leftPanelAria': 'Zmień rozmiar lewego panelu', + 'sidebar.resize.rightPanelAria': 'Zmień rozmiar prawego panelu', + 'sidebarFilesTree.actions.newFileTitle': 'Nowy plik', + 'sidebarFilesTree.actions.newFolderTitle': 'Nowy folder', + 'sidebarFilesTree.actions.refreshTitle': 'Odśwież', + 'sidebarFilesTree.dialog.cancel': 'Anuluj', + 'sidebarFilesTree.dialog.confirm': 'Potwierdź', + 'sidebarFilesTree.dialog.createFile.description': 'Utwórz nowy plik w {path}', + 'sidebarFilesTree.dialog.createFile.title': 'Utwórz plik', + 'sidebarFilesTree.dialog.createFolder.description': 'Utwórz nowy folder w {path}', + 'sidebarFilesTree.dialog.createFolder.title': 'Utwórz folder', + 'sidebarFilesTree.dialog.delete.confirm': 'Usuń', + 'sidebarFilesTree.dialog.delete.description': 'Czy na pewno chcesz usunąć {name}? Tej akcji nie można cofnąć.', + 'sidebarFilesTree.dialog.delete.title': 'Usuń', + 'sidebarFilesTree.dialog.namePlaceholder': 'Nazwa', + 'sidebarFilesTree.dialog.rename.description': 'Zmień nazwę {name}', + 'sidebarFilesTree.dialog.rename.placeholder': 'Nowa nazwa', + 'sidebarFilesTree.dialog.rename.title': 'Zmień nazwę', + 'sidebarFilesTree.dialog.rootFallback': 'główny', + 'sidebarFilesTree.menu.copyPath': 'Kopiuj ścieżkę', + 'sidebarFilesTree.menu.delete': 'Usuń', + 'sidebarFilesTree.menu.newFile': 'Nowy plik', + 'sidebarFilesTree.menu.newFolder': 'Nowy folder', + 'sidebarFilesTree.menu.rename': 'Zmień nazwę', + 'sidebarFilesTree.menu.save': 'Zapisz', + 'sidebarFilesTree.search.clearAria': 'Wyczyść wyszukiwanie', + 'sidebarFilesTree.search.placeholder': 'Szukaj plików...', + 'sidebarFilesTree.state.loading': 'Ładowanie...', + 'sidebarFilesTree.state.searching': 'Wyszukiwanie...', + 'sidebarFilesTree.toast.copyFailed': 'Nie udało się skopiować', + 'sidebarFilesTree.toast.deleteNotSupported': 'Usuwanie nie jest obsługiwane', + 'sidebarFilesTree.toast.deletedSuccessfully': 'Usunięto pomyślnie', + 'sidebarFilesTree.toast.fileCreated': 'Plik utworzony', + 'sidebarFilesTree.toast.filenameRequired': 'Nazwa pliku jest wymagana', + 'sidebarFilesTree.toast.folderCreated': 'Folder utworzony', + 'sidebarFilesTree.toast.folderNameRequired': 'Nazwa folderu jest wymagana', + 'sidebarFilesTree.toast.nameRequired': 'Nazwa jest wymagana', + 'sidebarFilesTree.toast.operationFailed': 'Operacja nie powiodła się', + 'sidebarFilesTree.toast.pathCopied': 'Ścieżka skopiowana', + 'sidebarFilesTree.toast.renameNotSupported': 'Zmiana nazwy nie jest obsługiwana', + 'sidebarFilesTree.toast.renamedSuccessfully': 'Zmieniono nazwę pomyślnie', + 'sidebarFilesTree.toast.revealFailed': 'Nie udało się pokazać ścieżki', + 'sidebarFilesTree.toast.writeNotSupported': 'Zapis nie jest obsługiwany', + 'sortableTabsStrip.aria.tabs': 'Tabs', + 'terminalView.actions.hardRestart': 'Hard Restart', + 'terminalView.actions.hardRestartTitle': 'Force kill and create fresh session', + 'terminalView.actions.retry': 'Ponów', + 'terminalView.bottomDock.closeAria': 'Close terminal panel', + 'terminalView.bottomDock.closeTitle': 'Close terminal panel', + 'terminalView.bottomDock.expandAria': 'Expand terminal panel', + 'terminalView.bottomDock.expandTitle': 'Expand terminal panel', + 'terminalView.bottomDock.resizeAria': 'Resize terminal panel', + 'terminalView.bottomDock.restoreAria': 'Restore terminal panel height', + 'terminalView.bottomDock.restoreTitle': 'Restore terminal panel height', + 'terminalView.empty.noWorkingDirectory': 'No working directory available for terminal.', + 'terminalView.empty.noWorkingDirectoryForSession': 'No working directory available for this session.', + 'terminalView.empty.selectSession': 'Select a session to open the terminal.', + 'terminalView.error.connectionFailed': 'Connection failed: {message}', + 'terminalView.error.restartFailed': 'Failed to restart terminal', + 'terminalView.error.sendInputFailed': 'Failed to send input', + 'terminalView.error.sessionEnded': 'Terminal session ended', + 'terminalView.error.startSessionFailed': 'Failed to start terminal session', + 'terminalView.preview.open': 'Preview', + 'terminalView.preview.openTitle': 'Open preview pane', + 'terminalView.quickKeys.arrowDownAria': 'Arrow down', + 'terminalView.quickKeys.arrowLeftAria': 'Arrow left', + 'terminalView.quickKeys.arrowRightAria': 'Arrow right', + 'terminalView.quickKeys.arrowUpAria': 'Arrow up', + 'terminalView.quickKeys.commandModifierAria': 'Command modifier', + 'terminalView.quickKeys.controlLabel': 'Ctrl', + 'terminalView.quickKeys.controlModifierAria': 'Control modifier', + 'terminalView.quickKeys.enterAria': 'Enter', + 'terminalView.quickKeys.escape': 'Esc', + 'terminalView.quickKeys.tabAria': 'Tab', + 'terminalView.stream.processExitedMessage': '\r\n[Process exited{exitCodeSegment}{signalSegment}]\r\n', + 'terminalView.stream.processExitedWithCode': ' with code {exitCode}', + 'terminalView.stream.processExitedWithSignal': ' (signal {signal})', + 'terminalView.tabs.closeTabTitle': 'Close tab', + 'terminalView.tabs.newTabTitle': 'New tab', + 'terminalView.viewport.inputAria': 'Terminal input', + 'textarea.resizeHandleAria': 'Resize textarea', + 'updateDialog.actions.copied': 'Skopiowano!', + 'updateDialog.actions.copyCommand': 'Kopiuj polecenie', + 'updateDialog.actions.downloadUpdate': 'Pobierz aktualizację', + 'updateDialog.actions.restartToUpdate': 'Uruchom ponownie, aby zaktualizować', + 'updateDialog.actions.updateNow': 'Aktualizuj teraz', + 'updateDialog.error.takingLonger': 'Aktualizacja trwa dłużej niż oczekiwano. Poczekaj chwilę i odśwież albo uruchom: openchamber update', + 'updateDialog.error.updateFailed': 'Aktualizacja nie powiodła się', + 'updateDialog.fallback.updateViaTerminal': 'Lub zaktualizuj przez terminal:', + 'updateDialog.header.updateAvailable': 'Dostępna aktualizacja', + 'updateDialog.header.updating': 'Aktualizowanie OpenChamber...', + 'updateDialog.status.autoReloadHint': 'Strona automatycznie odświeży się po zakończeniu aktualizacji.', + 'updateDialog.status.downloading': 'Pobieranie...', + 'updateDialog.status.downloadingPayload': 'Pobieranie pakietu aktualizacji...', + 'updateDialog.status.installingUpdate': 'Instalowanie aktualizacji...', + 'updateDialog.status.serverRestarting': 'Ponowne uruchamianie serwera...', + 'updateDialog.status.updating': 'Aktualizowanie...', + 'updateDialog.status.waitingForServer': 'Oczekiwanie na serwer...', + 'vscodeLayout.actions.backToSessionsAria': 'Powrót do sesji', + 'vscodeLayout.actions.newSessionAria': 'Nowa sesja', + 'vscodeLayout.actions.openAgentManagerAria': 'Otwórz menedżer agentów', + 'vscodeLayout.actions.resizeSessionsSidebarAria': 'Zmień rozmiar panelu sesji', + 'vscodeLayout.actions.settingsAria': 'Ustawienia', + 'vscodeLayout.quota.actions.rateLimitsAria': 'Limity użycia', + 'vscodeLayout.quota.actions.refreshAria': 'Odśwież limity użycia', + 'vscodeLayout.quota.actions.showRemainingAria': 'Pokaż pozostały limit', + 'vscodeLayout.quota.actions.showUsedAria': 'Pokaż wykorzystany limit', + 'vscodeLayout.quota.lastUpdated': 'Ostatnia aktualizacja {time}', + 'vscodeLayout.quota.mode.remaining': 'Pozostało', + 'vscodeLayout.quota.mode.used': 'Wykorzystano', + 'vscodeLayout.quota.noRateLimitsAvailable': 'Brak dostępnych limitów użycia.', + 'vscodeLayout.quota.noRateLimitsReported': 'Nie zgłoszono limitów użycia.', + 'vscodeLayout.quota.title': 'Limity użycia', + 'vscodeLayout.title.chat': 'Czat', + 'vscodeLayout.title.newSession': 'Nowa sesja', + 'vscodeLayout.title.sessionFallback': 'Sesja', + 'vscodeLayout.title.sessions': 'Sesje', + + // Onboarding + 'onboarding.localSetup.actions.checkAndContinue': 'Sprawdź i kontynuuj', + 'onboarding.localSetup.intro': 'OpenCode to serce OpenChamber — zainstaluj je, aby zacząć.', + 'onboarding.localSetup.actions.checkNow': 'Sprawdź teraz', + 'onboarding.localSetup.status.watching': 'Czekanie na OpenCode', + 'onboarding.localSetup.status.autoContinue': 'Przejdziemy dalej automatycznie, gdy zostanie wykryty.', + 'onboarding.localSetup.advanced.title': 'Ustaw niestandardową ścieżkę binarki', + 'onboarding.localSetup.troubleshoot.title': 'Masz problem?', + + // Update dialog + 'updateDialog.changelog.title': 'Informacje o wersji', + 'settings.appearance.language.label': 'Język', + 'settings.appearance.language.select': 'Wybierz język', + 'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': 'Otwórz oś czasu', + 'settings.openchamber.visual.field.mobileKeyboardMode': 'Tryb klawiatury mobilnej', + 'settings.openchamber.visual.field.mobileKeyboardModeHint': 'Wybierz sposób zachowania widoku podczas otwartej klawiatury.', + 'settings.openchamber.visual.field.mobileKeyboardModeAria': 'Tryb klawiatury mobilnej', + 'settings.openchamber.visual.field.selectMobileKeyboardModePlaceholder': 'Wybierz tryb klawiatury mobilnej', + 'settings.openchamber.visual.actions.resetMobileKeyboardModeAria': 'Resetuj tryb klawiatury mobilnej', + 'settings.openchamber.visual.option.mobileKeyboardMode.native.label': 'Natywny', + 'settings.openchamber.visual.option.mobileKeyboardMode.native.description': 'Użyj domyślnego zachowania przeglądarki/systemu.', + 'settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.label': 'Zmień rozmiar zawartości', + 'settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.description': 'Dopasuj układ tak, aby zawartość pozostała widoczna ponad klawiaturą.', + 'gitView.stashes.actions.apply': 'Zastosuj', + 'gitView.stashes.actions.drop': 'Usuń', + 'gitView.stashes.actions.pop': 'Przywróć i usuń', + 'gitView.stashes.actions.stashCurrent': 'Schowaj bieżące zmiany', + 'gitView.stashes.actions.stashCurrentWithCount': 'Schowaj bieżące zmiany ({count})', + 'gitView.stashes.confirm.drop': 'Usunąć ten stash?', + 'gitView.stashes.description': 'Zarządzaj schowanymi zmianami Git.', + 'gitView.stashes.empty.list': 'Brak stashy.', + 'gitView.stashes.empty.search': 'Brak wyników dla tego wyszukiwania.', + 'gitView.stashes.includeUntrackedHint': 'Uwzględnij nieśledzone pliki', + 'gitView.stashes.fileCount': '{count} plików', + 'gitView.stashes.fileCountLoading': 'Ładowanie liczby plików...', + 'gitView.stashes.itemNumber': 'Stash #{number}', + 'gitView.stashes.latestLabel': 'najnowszy', + 'gitView.stashes.messagePlaceholder': 'Wiadomość stasha (opcjonalnie)', + 'gitView.stashes.searchPlaceholder': 'Szukaj stashy...', + 'gitView.stashes.title': 'Stashe', + 'gitView.stashes.toast.applyFailed': 'Nie udało się zastosować stasha', + 'gitView.stashes.toast.applySuccess': 'Stash zastosowany', + 'gitView.stashes.toast.createFailed': 'Nie udało się utworzyć stasha', + 'gitView.stashes.toast.created': 'Stash utworzony', + 'gitView.stashes.toast.dropFailed': 'Nie udało się usunąć stasha', + 'gitView.stashes.toast.dropSuccess': 'Stash usunięty', + 'gitView.stashes.toast.loadFailed': 'Nie udało się załadować stashy', + 'gitView.stashes.toast.noChanges': 'Brak zmian do schowania', + 'gitView.stashes.toast.popFailed': 'Nie udało się przywrócić stasha', + 'gitView.stashes.toast.popSuccess': 'Stash przywrócony i usunięty', + 'gitView.stashes.untitled': 'Bez nazwy', + 'gitView.sync.fetchFromRemote': 'Pobierz ze zdalnego', + 'gitView.sync.commitOrStashTooltip': 'Zacommituj lub schowaj zmiany przed synchronizacją.', + 'gitView.sync.moreActionsAria': 'Więcej akcji synchronizacji', + 'gitView.sync.noRemoteTooltip': 'Brak skonfigurowanego zdalnego repozytorium.', + 'gitView.sync.sync': 'Synchronizuj', + 'gitView.sync.syncChanges': 'Synchronizuj zmiany', + 'gitView.sync.syncChangesTooltip': 'Pobierz i wypchnij najnowsze zmiany.', + 'gitView.sync.syncChangesWithCounts': 'Synchronizuj ({ahead}/{behind})', + 'gitView.sync.syncCounts': '{ahead} do wypchnięcia, {behind} do pobrania', + 'gitView.pr.checks.label': 'Sprawdzenia', + 'gitView.pullRequest.availableOnFeatureBranches': 'Dostępne na gałęziach feature', + 'gitView.toast.commitOrStashBeforeSync': 'Zacommituj lub schowaj zmiany przed synchronizacją', + 'gitView.toast.alreadyUpToDate': 'Już masz najnowszą wersję', + 'gitView.toast.syncedPulledPluralAndPushed': 'Zsynchronizowano: pobrano {pulled} commitów i wypchnięto {pushed}', + 'gitView.toast.syncedPulledSingleAndPushed': 'Zsynchronizowano: pobrano {pulled} commit i wypchnięto {pushed}', + 'gitView.toast.syncedChanges': 'Zmiany zsynchronizowane', + 'filesView.editor.autoSaveOn': 'Autozapis włączony', + 'filesView.editor.manualSave': 'Zapis ręczny', + 'filesView.editor.saveNowManualTitle': 'Zapisz teraz (tryb ręczny)', + 'chat.commandAutocomplete.command.timelineDescription': 'Pokaż oś czasu sesji', +} as const; diff --git a/packages/ui/src/lib/i18n/messages/pt-BR.ts b/packages/ui/src/lib/i18n/messages/pt-BR.ts index cb26a47a..e379dcaa 100644 --- a/packages/ui/src/lib/i18n/messages/pt-BR.ts +++ b/packages/ui/src/lib/i18n/messages/pt-BR.ts @@ -11,9 +11,14 @@ export const dict: Record = { "common.language.spanish": "Espanhol", "common.language.brazilianPortuguese": "Português brasileiro", "common.language.korean": "Coreano", + "common.language.polish": "Polonês", "common.revealPath.finder": "Mostrar no Finder", "common.revealPath.fileExplorer": "Abrir no File Explorer", "common.revealPath.fileManager": "Abrir no gerenciador de arquivos", + "pwa.installPrompt.description": "Instale o OpenChamber para acessar mais rápido", + "pwa.installPrompt.action": "Instalar", + "pwa.installPrompt.started": "Instalação iniciada", + "pwa.installPrompt.installed": "OpenChamber instalado", "layout.mainTab.chat": "Chat", "layout.mainTab.plan": "Plano", "layout.mainTab.diff": "Diff", diff --git a/packages/ui/src/lib/i18n/messages/uk.ts b/packages/ui/src/lib/i18n/messages/uk.ts index 1bcaf8a6..0c85c2c8 100644 --- a/packages/ui/src/lib/i18n/messages/uk.ts +++ b/packages/ui/src/lib/i18n/messages/uk.ts @@ -11,9 +11,14 @@ export const dict: Record = { "common.language.spanish": "Іспанська", "common.language.brazilianPortuguese": "Бразильська португальська", "common.language.korean": "Корейська", + "common.language.polish": "Польська", "common.revealPath.finder": "Показати у Finder", "common.revealPath.fileExplorer": "Відкрити у File Explorer", "common.revealPath.fileManager": "Відкрити у файловому менеджері", + "pwa.installPrompt.description": "Установіть OpenChamber для швидшого доступу", + "pwa.installPrompt.action": "Установити", + "pwa.installPrompt.started": "Установлення розпочато", + "pwa.installPrompt.installed": "OpenChamber встановлено", "layout.mainTab.chat": "Чат", "layout.mainTab.plan": "План", "layout.mainTab.diff": "Diff", diff --git a/packages/ui/src/lib/i18n/messages/zh-CN.ts b/packages/ui/src/lib/i18n/messages/zh-CN.ts index f83f58f1..b3619d83 100644 --- a/packages/ui/src/lib/i18n/messages/zh-CN.ts +++ b/packages/ui/src/lib/i18n/messages/zh-CN.ts @@ -11,9 +11,14 @@ export const dict: Record = { 'common.language.spanish': '西班牙语', 'common.language.brazilianPortuguese': '巴西葡萄牙语', 'common.language.korean': '韩语', + 'common.language.polish': '波兰语', 'common.revealPath.finder': '在 Finder 中显示', 'common.revealPath.fileExplorer': '在文件资源管理器中打开', 'common.revealPath.fileManager': '在文件管理器中打开', + 'pwa.installPrompt.description': '安装 OpenChamber 以便更快访问', + 'pwa.installPrompt.action': '安装', + 'pwa.installPrompt.started': '已开始安装', + 'pwa.installPrompt.installed': 'OpenChamber 已安装', 'layout.mainTab.chat': '聊天', 'layout.mainTab.plan': '计划', 'layout.mainTab.diff': '差异', diff --git a/packages/ui/src/lib/i18n/runtime.ts b/packages/ui/src/lib/i18n/runtime.ts index f3ef6e5f..20b4abda 100644 --- a/packages/ui/src/lib/i18n/runtime.ts +++ b/packages/ui/src/lib/i18n/runtime.ts @@ -1,16 +1,17 @@ -export type Locale = 'en' | 'zh-CN' | 'uk' | 'es' | 'pt-BR' | 'ko'; +export type Locale = 'en' | 'zh-CN' | 'uk' | 'es' | 'pt-BR' | 'ko' | 'pl'; -export const LOCALES = ['en', 'zh-CN', 'uk', 'es', 'pt-BR', 'ko'] as const satisfies readonly Locale[]; +export const LOCALES = ['en', 'zh-CN', 'uk', 'es', 'pt-BR', 'ko', 'pl'] as const satisfies readonly Locale[]; export const DEFAULT_LOCALE: Locale = 'en'; -export const LOCALE_LABEL_KEYS: Record = { +export const LOCALE_LABEL_KEYS: Record = { en: 'common.language.english', 'zh-CN': 'common.language.simplifiedChinese', uk: 'common.language.ukrainian', es: 'common.language.spanish', 'pt-BR': 'common.language.brazilianPortuguese', ko: 'common.language.korean', + pl: 'common.language.polish', }; export const LOCALE_STORAGE_KEY = 'openchamber.i18n.v1'; @@ -46,6 +47,9 @@ export function normalizeLocale(value: string | undefined | null): Locale { if (normalized === 'ko' || normalized.startsWith('ko-')) { return 'ko'; } + if (normalized === 'pl' || normalized.startsWith('pl-')) { + return 'pl'; + } return DEFAULT_LOCALE; } diff --git a/packages/ui/src/lib/i18n/store.ts b/packages/ui/src/lib/i18n/store.ts index 0bfb669b..f9705c2a 100644 --- a/packages/ui/src/lib/i18n/store.ts +++ b/packages/ui/src/lib/i18n/store.ts @@ -25,13 +25,15 @@ async function loadDictionary(locale: Locale): Promise { ? await import('./messages/zh-CN') as { dict: I18nDictionary } : locale === 'es' ? await import('./messages/es') as { dict: I18nDictionary } - : locale === 'pt-BR' - ? await import('./messages/pt-BR') as { dict: I18nDictionary } - : locale === 'uk' - ? await import('./messages/uk') as { dict: I18nDictionary } - : locale === 'ko' - ? await import('./messages/ko') as { dict: I18nDictionary } - : { dict: enDict }; + : locale === 'pt-BR' + ? await import('./messages/pt-BR') as { dict: I18nDictionary } + : locale === 'uk' + ? await import('./messages/uk') as { dict: I18nDictionary } + : locale === 'ko' + ? await import('./messages/ko') as { dict: I18nDictionary } + : locale === 'pl' + ? await import('./messages/pl') as { dict: I18nDictionary } + : { dict: enDict }; dictionaries.set(locale, mod.dict); return mod.dict; }