Files
apes-sidebar/src/client/locales-pl.ts
T
Menghuan1918 f584b67813 feat(tasks): 图节点改为双段式卡片 + 折叠聚合 + 窄栏可读性
图模式(主显示模式)换成新的卡片语言,树模式保持不变:

- 卡片 = 上段(类型徽章 + 相位徽标 + 名称两行 + mono 元信息 + 团队任务行)
  + 下段小条(状态点 + 状态词 + 主 Agent 同款合并活动 + 完成后的折叠 chevron)。
  类型徽章用页面自己的词汇(主代理 / 子代理 / 成员 / 工作流 / ✓N 已完成)。
- 分组色(层级):按树深度取 4 档令牌色阶(color-mix 混 --dsw-alias-state-business-primary),
  作用于左描边与上段极淡底色;相位徽标走 ink 色族,两套分组不撞色。
  相位虚线框保留但改用同色极淡描边,卡片徽标承担「这是哪个阶段」。
- 执行态:小条 `data-running` + 从左到右扫光(1.5s,末 1/3 停顿,
  prefers-reduced-motion 关闭);合并活动行来自宿主 chat 词条,缺失时回退插件文案。
- 折叠:已完成节点的 chevron 把该节点「收进已完成聚合」(模型新增 foldedIds,
  与全局 folded 走同一组守卫:只在已结算叶子、非当前会话、非团队成员时生效);
  聚合节点点击 = 全部展开(清空手动集 + 关闭全局折叠);控制条仍只管全局规则。
- 布局与窄栏(用户反馈 a–f):卡片高度预算按新行重算(徽章 + 两行标题 + 元信息 +
  小条 = 103px,任务行 +18),宽度 176 → 190;fit 按内容包围盒双轴居中、
  FIT_MAX_SCALE 1.15 → 1.30;缩放范围 0.4–2.0 并归一化 wheel deltaMode;
  平移加边界夹取(至少 72px 内容留在视口内);空画布双击重新适配并恢复自动 fit;
  连线改「垂直出线 stub + 贝塞尔」并加粗到 1.5px。

验证:typecheck / lint 通过;pnpm test 1253 passed / 9 skipped(含新增双段结构、
data-running、chevron → 聚合、聚合 → 全部展开、工作流相位徽标 5 例)。

(cherry picked from commit aee571e50beb5dc979995f0841cffd0a575f2173)
2026-09-27 22:18:35 +08:00

492 lines
33 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* The pl (Polish) dictionary for the betterSidebar namespace.
*
* Mirrors the key set of `zh` in `locales.ts`. The sidebar's `t()`
* consults this dict when `attachBetterLocale(store)` has been called
* with an active better-locale store whose `active` is `'pl'`; absent
* that, the existing zh/en chain runs unchanged.
*
* Translation conventions:
* - Formal register (Pan/Pani/Państwo) for user-facing copy.
* - Polish diacritics used throughout (ą, ć, ę, ł, ń, ó, ś, ź, ż).
* - {placeholder} patterns kept verbatim (interpolation runs after lookup).
* - Git vocabulary follows the English-leaning developer style
* (commit, branch, stage, diff, cherry-pick, hash, push, fetch, pull).
* - English brand names (VS Code, Cursor, Zed, SSH, Mermaid, HTML, CSS,
* PDF, Markdown, Cursor) stay as-is.
*/
/** The pl dictionary (key-set-equal to zh, enforced by the type annotation in locales.ts). */
export const pl: Record<string, string> = {
files: 'Pliki',
guideDescFiles: 'Przeglądaj drzewo plików obszaru roboczego; klik otwiera podgląd lub edycję',
guideDescGit: 'Zmiany Git i zmiany plików z tej sesji w jednej karcie',
guideDescSubagent: 'Graf przepływu pracy, tablica zadań zespołu i zadania w tle, na żywo',
guideDescSidechat: 'Niezależny wątek uzupełniający dziedziczący kontekst tej sesji',
guideDescTerminal: 'Prawdziwy shell (xterm + pty) z ponownym łączeniem',
guideDescBrowser: 'Wbudowana przeglądarka, może przejmować linki z czatu',
changesSessionEmpty: 'Brak operacji na plikach w tej sesji',
changesRead: 'Odczyt',
changesMdReading: 'Czytanie',
changesHtmlRender: "Renderuj",
changesHtmlRaw: "Źródło",
changesPdfRender: "Renderuj",
changesPdfRaw: "Źródło",
changesMdRaw: 'Źródło',
changesWrite: 'Zapis',
changesEdit: 'Edycja',
changesRunning: 'w toku',
changesError: 'błąd',
changesFold: '{count} wierszy… kliknij, aby rozwinąć',
changesFoldLoading: 'Rozwijanie…',
changesFoldUnavailable: 'Kontekst niedostępny',
changesContext: 'kontekst',
changesPriorUnknown: 'Zawartość sprzed zmiany jest poza oknem; pokazana jako w całości nowa',
explorer: 'Eksplorator',
terminal: 'Terminal',
editor: 'Edytor',
editorExplorer: 'Sposób otwierania plików',
editorExplorerDesc: 'Kontroluje sposób otwierania plików',
editorExplorerMerged: 'Połączone',
editorExplorerMergedDesc: 'Pliki przełączają się w miejscu w tym samym oknie; nowe okna zaczynają z rozwiniętym drzewem',
editorExplorerSplit: 'Osobne',
editorExplorerSplitDesc: 'Okna bez ścieżki to samodzielny eksplorator (tylko drzewo); każdy plik otwiera własne okno (drzewo zadokowane, domyślnie zwinięte)',
editorTreeToggle: 'Panel drzewa plików',
editorPathPlaceholder: 'Ścieżka pliku (względna do katalogu sesji lub bezwzględna), Enter, aby otworzyć',
editorSearchPlaceholder: 'Szukaj po nazwie pliku…',
editorSearchNoResults: 'Brak pasujących plików',
editorSearchTruncated: 'Zbyt wiele wyników — pokazuję częściową listę',
editorEmptyHint: 'Wybierz plik z panelu drzewa lub pola ścieżki powyżej, aby rozpocząć podgląd',
openFileNewTab: 'Otwórz w nowej karcie',
openFileSide: 'Otwórz z boku',
openWithMenu: 'Otwórz za pomocą',
openWithSshSuffix: ' (SSH)',
pinOpenWith: 'Przypnij do menu',
unpinOpenWith: 'Odepnij',
openWithExplorer: 'Menedżer plików',
openWithVscode: 'VS Code',
openWithCursor: 'Cursor',
openWithZed: 'Zed',
openWithSettingsSshTitle: 'Zdalny host SSH',
openWithSettingsSshDesc: 'Puste = lokalny obszar roboczy; z user@host lub aliasem SSH otwieracze rodziny VSCode przełączają się na protokół vscode-remote/ssh-remote, a Menedżer plików / Zed / niestandardowe edytory spoza rodziny VSCode są ukrywane w menu',
openWithSettingsSshPlaceholder: 'user@host lub alias SSH',
openWithSettingsCustomTitle: 'Niestandardowe edytory',
openWithSettingsCustomDesc: 'Nazwa + szablon URL (zastępnik {path}) + flaga rodziny VSCode; w trybie zdalnym tylko edytory rodziny VSCode mogą otwierać ścieżkę zdalną',
openWithSettingsAdd: 'Dodaj',
openWithSettingsName: 'Nazwa',
openWithSettingsTemplate: 'np. cursor://file/{path}',
openWithSettingsFamily: 'Rodzina VSCode',
openWithSettingsFamilyDesc: 'Ten edytor używa dialektu URL VSCode (obsługuje otwieranie zdalne przez SSH)',
openWithSettingsRemove: 'Usuń',
openWithSettingsInvalidHint: 'Edytory z brakującą nazwą lub szablonem bez {path} / scheme:// nie są pokazywane w menu',
newTab: 'Nowa karta',
brokenSymlink: 'Uszkodzone dowiązanie symboliczne',
close: 'Zamknij',
closeOtherTabs: 'Zamknij inne karty',
closeLeftTabs: 'Zamknij karty po lewej',
closeRightTabs: 'Zamknij karty po prawej',
pinTerminal: 'Przypnij Terminal',
pinAgentTerminal: 'Przypnij Terminal Agent',
pinToWorkspace: 'Przypnij do obszaru roboczego',
pinToGlobal: 'Przypnij globalnie',
unpinTerminal: 'Odepnij',
collapseBottomPanel: 'Zwiń panel dolny',
expandBottomPanel: 'Rozwiń panel dolny',
terminalError: 'Połączenie z terminalem nie powiodło się',
terminalConnectFailed: 'Terminal nie mógł połączyć się wielokrotnie',
terminalRetry: 'Ponów',
terminalWaitBanner: 'Agent czeka na {needle}',
terminalSkipWait: 'Pomiń oczekiwanie',
terminalDepsFailed: 'Zależność terminala node-pty nie mogła się załadować',
terminalDepsHint: 'Uruchom poniższe polecenie w terminalu lub cmd na maszynie DSH, aby to naprawić, a następnie ponów (node-pty pozostaje w synchronizacji z wersją rdzenia DSH):',
terminalDepsProfile: ' (wykryty profil: {profile})',
terminalShellNotFound: 'Nie znaleziono skonfigurowanej powłoki: {name} — sprawdź ścieżkę powłoki w Ustawienia → Side card → Terminal',
preview: 'Podgląd',
toc: 'Spis treści',
edit: 'Edytuj',
mermaidError: 'Renderowanie Mermaid nie powiodło się',
mermaidZoomIn: 'Powiększ',
mermaidZoomOut: 'Pomniejsz',
mermaidZoomReset: 'Resetuj',
mermaidZoomHint: 'Kółko: powiększenie · przeciąganie: panowanie · Esc: zamknięcie',
refresh: 'Odśwież',
showInFolder: 'Pokaż w folderze',
refreshUnsavedConfirm: 'Plik zmienił się na dysku. Odświeżenie odrzuci niezapisane zmiany. Kontynuować?',
save: 'Zapisz',
saved: 'Zapisano',
unsaved: 'Niezapisane',
saveFailed: 'Zapis nie powiódł się',
truncation: 'Plik zbyt duży — pokazuję pierwsze 512 KB',
binary: 'Plik binarny, podgląd niedostępny',
loading: 'Ładowanie…',
error: 'Ładowanie nie powiodło się',
retry: 'Ponów',
notRepo: 'Ten katalog nie jest repozytorium git',
noChanges: 'Brak zmian',
statusTruncated: 'Zbyt wiele zmian; pokazywane jest tylko pierwsze 2000 wpisów',
stage: 'Dodaj do indeksu',
unstage: 'Usuń z indeksu',
stageAll: 'Dodaj wszystko do indeksu',
unstageAll: 'Usuń wszystko z indeksu',
commitPlaceholder: 'Komunikat commitu (Ctrl+Enter)',
commit: 'Commit',
branch: 'Gałąź',
worktree: 'Drzewo robocze',
checkoutError: 'Przełączenie gałęzi nie powiodło się',
history: 'Historia',
changes: 'Zmiany plików',
changesGitLens: 'Git',
changesSessionLens: 'Sesja',
changesFilterAll: 'Wszystko',
changesFilterEmpty: 'Brak operacji tego rodzaju',
changesOpenDiffTab: 'Otwórz w osobnej karcie',
changesClosePreview: 'Zamknij podgląd',
changesResizePreview: 'Zmień wysokość podglądu',
changesLoadError: 'Zapisy plików sesji są teraz niedostępne',
staged: 'W indeksie',
unstaged: 'Poza indeksem',
cancel: 'Anuluj',
diffEmpty: 'Brak zmian tekstowych',
diffLoadError: 'Ładowanie diff nie powiodło się',
diffBinary: 'Binarny',
diffAdded: 'Dodany',
diffDeleted: 'Usunięty',
diffRenamed: 'Zmieniono nazwę',
diffExpand: 'Rozwiń jeszcze {count} wierszy',
discard: 'Odrzuć zmiany',
discardTitle: 'Odrzuć zmiany',
discardDesc: 'To odrzuci zmiany w drzewie roboczym dla „{path}” (nieodwracalne).',
viewCommitDiff: 'Pokaż diff commitu',
copyShortHash: 'Kopiuj krótki hash',
copyFullHash: 'Kopiuj pełny hash',
copySubject: 'Kopiuj temat commitu',
revertCommit: 'Cofnij commit',
revertTitle: 'Cofnij commit',
revertDesc: 'Utworzy nowy commit na bieżącej gałęzi, który cofa „{subject}”.',
cherryPickCommit: 'Cherry-pick commit',
cherryPickTitle: 'Cherry-pick commit',
cherryPickDesc: 'Zastosuje zmiany z „{subject}” na bieżącej gałęzi.',
timeJustNow: 'przed chwilą',
timeMinutesAgo: '{n} min temu',
timeHoursAgo: '{n} g temu',
timeYesterday: 'wczoraj',
loadMore: 'Wczytaj więcej',
historyLoadError: 'Ładowanie dalszej historii nie powiodło się',
produced: 'Wyprodukowane',
disconnected: 'Terminal odłączony, ponowne łączenie…',
exited: 'Proces terminala zakończony',
noSession: 'Wybierz rozmowę, aby korzystać z panelu bocznego',
pluginNotLoaded: 'Wtyczka niezaładowana; karta chwilowo niedostępna:',
parent: 'Katalog nadrzędny',
copied: 'Skopiowano',
copy: 'Kopiuj',
openEditor: 'Otwórz edytor',
referenceFile: '@plik',
addToConversation: 'Dodaj do rozmowy',
copyRelative: 'Kopiuj ścieżkę względną',
copyAbsolute: 'Kopiuj ścieżkę bezwzględną',
rename: 'Zmień nazwę',
renameInvalid: 'Nazwa nie może być pusta ani zawierać separatorów ścieżki.',
delete: 'Usuń',
deleteTitle: 'Usunąć „{name}”?',
deleteDescFile: 'Spowoduje to trwałe usunięcie pliku. Tej operacji nie można cofnąć.',
deleteDescDir: 'Spowoduje to trwałe usunięcie katalogu i całej jego zawartości. Tej operacji nie można cofnąć.',
dismiss: 'Zamknij',
download: 'Pobierz',
uploadFiles: 'Wgraj pliki',
uploadFolder: 'Wgraj folder',
uploadHere: 'Wgraj tutaj',
uploadDropHint: 'Upuść pliki/foldery tutaj, aby wgrać',
uploadDropChat: 'Upuść na obszar czatu, aby dodać obrazy do rozmowy',
uploadTo: 'Wgraj do {dir}',
uploadingTo: 'Wgrywanie do {dir}…',
uploadProgress: 'Wgrywanie {done}/{total}: {name}',
uploadDone: 'Wgrano {count} plików',
uploadFailed: 'Wgrywanie nie powiodło się: {error}',
uploadFailedUnknown: 'Nieznany błąd',
uploadTooLarge: 'Plik zbyt duży (ponad limit wgrywania)',
uploadCancelled: 'Wgrywanie anulowane',
settingsNav: 'Karta boczna',
settingsIntro: 'Zarządzaj tym, co pokazuje karta boczna i jak się zachowuje',
settingsPopupDesc: 'Skonfiguruj opcje powiązane z: {feature}',
settingsDone: 'Gotowe',
settingsOpenToolsTitle: 'Wstrzyknij narzędzie otwierania panelu bocznego dla modelu',
settingsOpenToolsDesc: 'Po włączeniu model może otwierać pliki, foldery i strony HTTP(S) w panelu bocznym za pomocą narzędzia sidebar_open (domyślnie wyłączone)',
settingsTitleBarTitle: 'Tryb zgodności pozycji',
settingsTitleBarDesc: 'Wybierz schemat zgodności paska tytułu: automatyczne wykrywanie (domyślne, konserwatywne) / oficjalny web DSH / znane powłoki pulpitu / niestandardowy (przesunięcie + własne CSS)',
settingsTitleBarStripTitle: 'Przesunięcie',
settingsTitleBarStripDesc: 'Wysokość paska tytułu: o ile pikseli przyciski i treść panelu bocznego są przesunięte w dół (0–120, domyślnie 40; obowiązuje w schemacie niestandardowym)',
settingsSchemeAutoTitle: 'Automatyczne wykrywanie',
settingsSchemeAutoDesc: 'Konserwatywne: tylko standardowe API Window Controls Overlay się wlicza (rzeczywista wysokość nakładki); zwykłe środowiska web nie są modyfikowane',
settingsSchemeWebTitle: 'Oficjalny web DSH',
settingsSchemeWebDesc: 'Jawnie zadeklaruj oficjalny interfejs web: brak adaptacji (nawet standardowa geometria WCO nie ma zastosowania)',
settingsSchemeCustomTitle: 'Niestandardowy',
settingsSchemeCustomDesc: 'Pełna kontrola: wstrzykuj własne CSS (może nadpisać style wbudowane) i ustawiasz przesunięcie paska tytułu',
settingsSchemeDetectedSuffix: 'wykryto',
settingsCustomCssTitle: 'Niestandardowe CSS',
settingsCustomCssPlaceholder: '/* np. zarezerwuj 36px dla powłoki z własnym paskiem tytułu */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}',
settingsSaveFailed: 'Zapis nie powiódł się',
settingsConflict: 'Ustawienie zmienione w innym oknie — spróbuj ponownie',
binaryNoPreview: 'Tego typu pliku nie można wyświetlić w podglądzie',
downloadToView: 'Pobierz, aby zobaczyć',
settingsSubagentTitle: 'Automatycznie aktywuj stronę „Zadania” po pojawieniu się podagenta',
settingsSubagentDesc: 'Gdy w bieżącej rozmowie pojawi się nowy podagent, automatycznie aktywuj stronę „Zadania”; na szerokich ekranach rozwiń także panel boczny, a na wąskich nie wymuszaj otwarcia pełnoekranowego panelu; wyłącz, aby wybierać stronę ręcznie',
settingsJobsTitle: 'Automatycznie aktywuj stronę „Zadania” po pojawieniu się nowego zadania w tle',
settingsJobsDesc: 'Gdy w bieżącej rozmowie pojawi się nowe zadanie w tle, automatycznie aktywuj stronę „Zadania” (akcja jest wyzwalana przez każde nowe zadanie); na szerokich ekranach rozwiń także panel boczny, a na wąskich nie wymuszaj otwarcia pełnoekranowego panelu; wyłącz, aby wybierać stronę ręcznie',
settingsToolsTitle: 'Wstrzyknij narzędzia terminala dla modelu',
settingsToolsDesc: 'Po włączeniu model może tworzyć i sterować terminalami panelu bocznego przez 8 narzędzi terminal_* (domyślnie wyłączone)',
settingsFenceTitle: 'Kontrola ścieżek obszaru roboczego',
settingsFenceDesc: 'Włączona: funkcje plików paska bocznego sięgają tylko ścieżek w obszarze roboczym sesji (domyślnie); wyłączona: dostępny jest dowolny plik hosta — skrypty strony zyskują ten sam zasięg przez ten czas',
fenceErrorReason: 'Ta ścieżka jest poza obszarem roboczym sesji i została zablokowana przez kontrolę',
fenceDisableAction: 'Wyłącz kontrolę obszaru roboczego',
settingsBottomTerminalTitle: 'Automatycznie otwieraj terminal przy pierwszym rozwinięciu panelu dolnego',
settingsBottomTerminalDesc: 'Gdy panel dolny jest rozwijany po raz pierwszy w sesji, spróbuj otworzyć nową kartę terminala tam (limit terminali nadal obowiązuje; domyślnie włączone)',
settingsFontFamilyTitle: 'Krój czcionki terminala',
settingsFontFamilyDesc: 'Niestandardowy krój czcionki terminala (stos font-family CSS, np. "JetBrains Mono", monospace; puste = krój monospace z motywu)',
settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace',
settingsFontSizeTitle: 'Rozmiar czcionki terminala',
settingsFontSizeDesc: 'Rozmiar czcionki terminala w px (9–32, domyślnie 13)',
settingsShellTitle: 'Ścieżka powłoki',
settingsShellDesc: 'Powłoka uruchamiana dla terminali UI i modelu (ścieżka bezwzględna lub nazwa pliku). Puste zachowuje dawną kolejność: yaml config.shell → $SHELL / powłoka logowania / Windows powershell.exe. Dotyczy terminali otwieranych potem',
settingsShellPlaceholder: 'np. /bin/zsh (puste = auto)',
settingsShellArgsTitle: 'Argumenty powłoki',
settingsShellArgsDesc: 'Jawne argumenty powłoki, oddzielone spacjami; niepuste w pełni zastępuje domyślne (zgodnie z kontraktem shellArgs w yaml)',
settingsShellArgsPlaceholder: 'np. -l (puste = domyślne)',
settingsTabsTitle: 'Treść panelu bocznego',
settingsViewersTitle: 'Podglądy plików',
settingsGeneralTitle: 'Ogólne',
settingsPopup: 'Ustawienia funkcji',
settingsViewerCatchAll: 'Zapasowy: dowolny plik',
viewerMarkdown: 'Markdown',
viewerCode: 'Kod',
viewerHtml: 'HTML',
browser: 'Przeglądarka',
browserPlaceholder: 'Wpisz adres URL, np. example.com',
browserGo: 'Przejdź',
browserBack: 'Wstecz',
browserForward: 'Naprzód',
browserStart: 'Wpisz adres URL, aby rozpocząć przeglądanie (tryb piaskownicy)',
browserBlockedScheme: 'Zablokowano: dozwolone są tylko adresy URL http/https',
browserBlockedLoopback: 'Zablokowano: nie można tu przeglądać adresów lokalnych i wewnętrznych',
browserInvalid: 'Nieprawidłowy adres URL',
htmlNoSandboxWarning: 'Piaskownica wyłączona: ten HTML działa z pełnymi uprawnieniami interfejsu (można przywrócić w ustawieniach)',
sandboxStatusOn: 'Tryb piaskownicy: włączony · strony nie mogą dostępować danych interfejsu ani plików lokalnych; logowania i ciasteczka firm trzecich mogą nie działać',
sandboxUnlock: 'Wyłącz tymczasowo (niebezpieczne)',
sandboxRestore: 'Przywróć piaskownicę',
settingsHtmlDefaultUnsafeTitle: 'Otwieraj podgląd HTML bez piaskownicy domyślnie (niebezpieczne)',
settingsHtmlDefaultUnsafeDesc: 'Po włączeniu każdy nowo otwarty podgląd HTML zaczyna się bez piaskownicy (ten sam origin co interfejs — może czytać pliki sesji i wewnętrzne API); pasek stanu nadal pozwala przywrócić piaskownicę',
settingsHtmlSandboxTitle: 'Wyłącz piaskownicę podglądu HTML (niebezpieczne)',
settingsHtmlSandboxDesc: 'Po wyłączeniu podglądany HTML działa w tym samym originie co interfejs: może czytać pliki sesji, localStorage i wywoływać wewnętrzne API. Włączaj tylko dla w pełni zaufanych plików',
settingsBrowserSandboxTitle: 'Wyłącz piaskownicę przeglądarki (niebezpieczne)',
settingsBrowserSandboxDesc: 'Po wyłączeniu każda odwiedzana strona działa w tym samym originie co interfejs: może czytać dane sesji i podszywać się pod Twoją sesję logowania. Włączaj tylko dla w pełni zaufanych witryn',
settingsBrowserLoopbackTitle: 'Dozwolone adresy lokalne',
settingsBrowserLoopbackDesc: 'Rozdzielana przecinkami lista dozwolonych adresów loopback (np. localhost:5174 lub 127.0.0.1:8080), które może odwiedzać przeglądarka paska bocznego; puste domyślnie blokuje wszystkie adresy lokalne. Piaskownica nadal obowiązuje — strony nie mogą odczytywać danych GUI',
settingsBrowserLoopbackPlaceholder: 'np. localhost:5174, 127.0.0.1:8080',
browserOpenExternal: 'Otwórz w przeglądarce',
browserEmbedBlocked: '{host} odmówił osadzenia',
browserEmbedBlockedDesc: 'Witryna zabrania wyświetlania w innych stronach (X-Frame-Options / frame-ancestors), więc nie może się załadować w panelu bocznym. Otwórz ją bezpośrednio w przeglądarce.',
browserEmbedAnyway: 'Załaduj mimo to',
subagent: 'Zadania',
subagentMainAgent: 'Agent główny',
subagentEmpty: 'Brak podagentów',
subagentEmptyDesc: 'Podagenci powołani przez agenta głównego pojawią się tutaj',
subagentInactive: 'Bezczynny',
subagentModeOneShot: 'Jednorazowy',
subagentModeContinuable: 'Kontynuowalny',
subagentCount: '{count} podagentów',
subagentCountRunning: '{count} podagentów · {running} działa',
subagentThinking: 'Myśli…',
sideChat: 'Czat boczny (beta)',
sideChatNew: 'Nowy wątek',
sideChatUntitled: 'Nowy wątek',
sideChatEmpty: 'Brak rozmów bocznych',
sideChatEmptyDesc: 'Każda rozmowa boczna to własna karta w pasku kart — dziedziczy kontekst bieżącej sesji i nigdy nie trafia do rozmowy głównej',
sideChatCreating: 'Tworzenie rozmowy bocznej…',
sideChatRetry: 'Ponów',
sideChatThreads: 'Przełącz wątek / nowy',
sideChatSave: 'Zapisz jako nową sesję',
sideChatSaveTitle: 'Promuj ten wątek do sesji najwyższego poziomu na głównej liście sesji',
sideChatSaved: 'Zapisano jako nową sesję',
sideChatNoTurn: 'Zapis jest dostępny po pierwszej ukończonej turze',
sideChatPendingDrop: 'Ostatnie niezakończone pytanie następcze nie zostanie uwzględnione w zapisanej sesji',
sideChatFirstPlaceholder: 'Zadaj pierwsze pytanie — kontekst odziedziczony…',
sideChatComposerPlaceholder: 'Pytaj dalej…',
sideChatThinking: 'Drążenie…',
sideChatThink: 'Myślenie',
sideChatInjection: 'Kontekst wstrzyknięty',
sideChatSend: 'Wyślij',
sideChatCancelTitle: 'Przerwij bieżącą turę (kolejka jest zachowana)',
sideChatError: 'Błąd czatu bocznego: {message}',
sideChatTurnUsage: 'Wejście {input} tok · Wyjście {output} tok',
sideChatBlockCollapse: 'Zwiń',
sideChatBlockCollapseAria: 'Zwiń',
sideChatBlockExpand: 'Rozwiń {hidden} wierszy',
sideChatBlockExpandAria: 'Rozwiń kolejne {hidden} wierszy',
sideChatBlockSignal: 'Zakończono sygnałem: {signal}',
sideChatBlockExitCode: 'Kod zakończenia {code}',
sideChatBlockNoExitCode: "Zakończono bez kodu wyjścia",
sideChatBlockRunning: 'Uruchomione',
sideChatBlockFailed: 'Niepowodzenie',
sideChatBlockDone: 'Zakończono',
sideChatBlockNoOutput: '(brak wyniku)',
codeBlockTitle: 'Blok kodu',
codeBlockWrap: 'Zawijanie wierszy',
codeBlockUnwrap: 'Bez zawijania wierszy',
sideChatBlockWindow: '{shown} z {total} wierszy',
sideChatConnDisconnected: 'Połączenie utracone',
sideChatConnConnecting: 'Łączenie ponownie…',
sideChatConnRecovered: 'Połączenie przywrócone',
sideChatConnReconnectAction: 'Połącz ponownie teraz',
sideChatConnRestartAction: 'Uruchom połączenie ponownie',
jobs: 'Zadania w tle',
jobsCount: '{count} zadań w tle',
jobsCountRunning: '{count} zadań w tle · {running} działa',
jobStatusRunning: 'Działa',
jobStatusStopping: 'Zatrzymywanie',
jobStatusCompleted: 'Ukończono',
jobStatusKilled: 'Zabito',
jobStatusFailed: 'Nie powiodło się',
jobDurationSeconds: '{seconds}s',
jobDurationMinutes: '{minutes}m {seconds}s',
jobDurationHours: '{hours}g {minutes}m',
jobViewOutput: 'Pokaż wyjście',
jobNoOutput: 'Brak wyjścia',
jobNotReadYet: 'Oczekiwanie, aż model odczyta to zadanie; wyjście pojawi się tutaj, gdy model uruchomi job_output',
jobOutputTruncated: 'Wyjście skrócone',
jobOutputError: 'Ładowanie wyjścia nie powiodło się',
jobKill: 'Zabij',
jobKillConfirm: 'Kliknij ponownie, aby potwierdzić zabicie',
jobKillError: 'Zabicie nie powiodło się',
tasksViewGraph: 'Graf przepływu pracy',
tasksViewTree: 'Drzewo',
tasksViewSwitchToGraph: 'Przełącz na graf przepływu pracy',
tasksViewSwitchToTree: 'Przełącz na drzewo',
settingsViewModeTitle: 'Domyślny widok strony zadań',
settingsViewModeDesc: 'Jak strona zadań renderuje się po otwarciu (przełącznik na stronie nadal działa doraźnie)',
settingsViewModeGraph: 'Graf przepływu pracy',
settingsViewModeGraphDesc: 'Warstwowy graf węzłów ze zoomowaniem i przesuwaniem',
settingsViewModeTree: 'Drzewo',
settingsViewModeTreeDesc: 'Klasyczne drzewo wcięć, nawigowalne z klawiatury',
tasksFoldCompleted: '✓ {count} ukończonych',
tasksFoldOne: 'Zwiń do ukończonych',
tasksFoldExpand: 'Rozwiń ukończone węzły',
tasksFoldCollapse: 'Zwiń ukończone węzły',
tasksZoomIn: 'Przybliż',
tasksZoomOut: 'Oddal',
tasksZoomFit: 'Dopasuj do kanwy',
tasksNodeJump: 'Otwórz transkrypcję',
tasksNodeDetail: 'Szczegóły węzła',
workflowRun: 'Przepływ pracy',
tasksNodeState: 'Stan',
tasksNodeMode: 'Tryb',
tasksNodeModel: 'Model',
tasksNodeTeamRole: 'Rola w zespole',
tasksNodeActivity: 'Ostatnia aktywność',
tasksStateRunning: 'Działa',
tasksStateIdle: 'Gotowe',
tasksStateDone: 'Ukończone',
tasksStateError: 'Błąd',
tasksKindSubagent: 'Podagent',
tasksKindTeammate: 'Członek zespołu',
tasksKindWorkflow: 'Przepływ pracy',
teamBoard: 'Tablica zadań zespołu',
teamChip: 'Zespół {members} członków · {tasks} zadań',
teamTasksEmpty: 'Brak wspólnych zadań',
teamTaskCreate: 'Nowe zadanie',
teamTaskSubject: 'Temat',
teamTaskDescription: 'Opis',
teamTaskOwner: 'Odpowiedzialny',
teamTaskUnowned: 'Nieprzypisane',
teamTaskPending: 'Do zrobienia',
teamTaskInProgress: 'W toku',
teamTaskCompleted: 'Ukończone',
teamTaskBlocked: 'Zablokowane',
teamTaskComplete: 'Ukończ',
teamTaskReopen: 'Otwórz ponownie',
teamTaskDelete: 'Usuń',
teamTaskDeleteConfirm: 'Potwierdź usunięcie',
teamTaskEdit: 'Edytuj',
teamTaskSave: 'Zapisz',
teamTaskCancel: 'Anuluj',
teamTaskConflict: 'Zadanie zostało zmienione przez kogoś innego; odświeżono',
teamTaskError: 'Operacja nie powiodła się: {message}',
teamTaskDeleted: 'Usunięte',
teamTaskActions: 'Akcje zadania',
teamTaskDetail: 'Szczegóły zadania',
teamTaskNoDescription: 'Brak opisu — kliknij „Edytuj”, aby dodać',
teamTaskBlockedBy: 'Zablokowane przez',
teamTaskSubjectPlaceholder: 'Opisz pracę w jednym zdaniu',
teamTaskDescriptionPlaceholder: 'Dodatkowe informacje (opcjonalnie)',
teamFilterAll: 'Wszystko',
tasksNodeTasks: 'Wspólne zadania',
jobCopyOutput: 'Kopiuj wyjście',
jobCopied: 'Skopiowano',
jobFollowTail: 'Śledź najnowsze',
jobDragHint: 'Przeciągnij, aby przenieść',
workflowRunning: 'W toku',
workflowCompleted: 'Ukończony',
workflowCancelled: 'Anulowany',
workflowFailed: 'Niepowodzenie',
workflowPhaseUnnamed: 'Faza bez nazwy',
workflowMembers: '{done}/{total} członków',
jobsAutoCollapsed: 'Automatycznie zwinięto (wiele agentów)',
catalogLoadFailed: 'Nie udało się załadować {count} gałęzi',
addPluginsTabCard: 'Dodaj wtyczki kart',
addPluginsTabCardDesc: 'Zarejestruj nową stronę panelu bocznego',
addPluginsViewerCard: 'Dodaj wtyczki podglądu',
addPluginsViewerCardDesc: 'Zarejestruj podgląd typu pliku',
addPluginsTabDesc: 'Strony panelu bocznego (karty) mogą być rozszerzane przez wtyczki. Wtyczki rejestrują się przez usługę ctx.betterSidebar; kliknięcie „Zainstaluj” kopiuje polecenie instalacji — wklej je do terminala tam, gdzie żyje Twój profil DSH, i uruchom.',
addPluginsViewerDesc: 'Podglądy plików mogą być rozszerzane przez wtyczki. Wtyczki rejestrują się przez usługę ctx.betterSidebar; kliknięcie „Zainstaluj” kopiuje polecenie instalacji — wklej je do terminala tam, gdzie żyje Twój profil DSH, i uruchom.',
addPluginsBrowseMore: 'Przeglądaj więcej wtyczek na GitHub (topic: dsh-better-sidebar)',
addPluginsSearch: 'Szukaj po nazwie lub opisie wtyczki…',
addPluginsNoMatch: 'Brak pasujących wtyczek',
addPluginsRecommended: 'Zalecane wtyczki',
addPluginsEmpty: 'Brak wyselekcjonowanych wtyczek — opublikuj swoją pod tematem na GitHub',
openPlugin: 'Otwórz',
copyInstall: 'Kopiuj polecenie instalacji',
pluginOfficeDesc: 'Podgląd pakietu Office (.docx / .xlsx / .pptx) dla edytora better-sidebar, utrzymujący ciężkie biblioteki renderujące Office poza rdzeniem głównego pakietu',
pluginFlowglassDesc: 'Wykres przepływu sesji na żywo: trzy tory dla użytkownika, asystenta i wywołań narzędzi, z grupami równoległymi, gałęziami podagentów, drążeniem i statusem na żywo; rejestruje natywną kartę Flowglass po zainstalowaniu better-sidebar, z fallbackiem do samodzielnej szuflady',
pluginGitForgeDesc: 'Karta Git Forge: biblioteka kont GitHub/Gitea (i innych forges) + autoryzacja per projekt + twarda polityka push; tokeny zostają w lokalnych sekretach (nigdy w kontekście modelu); narzędzie GitForge tylko do odczytu i agentowy helper poświadczeń HTTPS',
pluginGithubWorkbenchDesc: 'Karta GitHub Workbench: drzewo zdalnego repozytorium + Issues / Pull requests / Actions z pełną obsługą zapisu — tworzenie issue/PR, komentowanie, edycja, zamykanie/ponowne otwieranie, scalanie squash·merge·rebase (mocne potwierdzenie), ponowne uruchomienie/anulowanie CI; przełącznik repozytoriów automatycznie wyświetla dostępne repozytoria i wyszukuje publiczne; bez better-sidebar następuje przejście na samodzielny panel po prawej stronie',
pluginMdExportDesc: 'Dodaje przycisk „Eksportuj" do paska narzędzi Markdown w better-sidebar: jednym kliknięciem renderuje bieżący .md do samodzielnego HTML (tabele/bloki kodu/diagramy Mermaid w treści, układ zgodny z motywem podglądu) i zapisuje obok pliku .md albo eksportuje do PDF przez okno drukowania',
pluginCodeNavDesc: 'Nawigacja podglądu kodu: rozpoznaje język po typie pliku i koloruje składnię, konspekt symboli (filtry klas/metod/zmiennych + skok jednym kliknięciem) oraz wyszukiwanie w pliku (podświetlanie wszystkich trafień, poprzedni/następny, rozróżnianie wielkości liter) — przejmuje podgląd plików kodu w edytorze better-sidebar',
pluginSuhuangScrollDesc: 'Łączy lokalny Suhuang Scroll Runtime z ustawieniami DSH i better-sidebar, zapewniając konfigurację modelu, test połączenia i sterowanie ciągłym ocenianiem; wymaga Suhuang Scroll Runtime i dsh-better-sidebar',
pluginBetterOverleafDesc: 'Karta Overleaf dla better-sidebar: logowanie bezpośrednio przez przeglądarkę CDP (obsługa Chromium innych firm), lista/przełączanie projektów, lokalne kopie lustrzane git w <workspace>/overleaf/, dwukierunkowa synchronizacja git z awaryjnym API tylko do odczytu oraz podgląd plików przez warsztat panelu bocznego',
pluginGitRemotesDesc: 'Karta Git Remotes: gałąź/nadrzędne/ahead-behind, fetch (z opcjonalnym prune), ff-only pull i push dopiero po potwierdzeniu w karcie. Nie zastępuje wbudowanej karty Git stage/commit i nie oferuje force-push ani narzędzia auto-push modelu',
pluginSentinelDesc: 'Budzenie agenta sterowane warunkami: czujniki plików/procesów/portów/HTTP/poleceń/webhooków wybudzają uśpione sesje, gdy warunek zajdzie; rejestruje kartę „Sentinel” z ogólnoserwerową tabelą obserwacji',
pluginServerDeckDesc: 'Pulpit kart serwerów: jedna karta na host z statusem online, systemem, czasem pracy, użyciem CPU/RAM/dysku i opóźnieniem; kliknięcie karty otwiera interaktywny terminal xterm.js; import ~/.ssh/config jednym kliknięciem (aliasy hostingów Git są pomijane). Rejestruje natywną kartę „Serwery”, gdy better-sidebar jest zainstalowany, w przeciwnym razie zachowuje niezależny panel szuflady',
pluginSidebarQaDesc: 'Wybierz-i-zapytaj: Zaznacz tekst rozmowy → zapytaj w prawym panelu → niezależna sesja pytań następczych (❓) w tym samym obszarze roboczym; szybki model bez myślenia kompresuje główny kontekst i wstrzykuje go z cytatem, nie przerywając głównej rozmowy; pytania następcze mogą zagnieżdżać się, kontynuować i być archiwizowane',
pluginSidenoteDesc: 'Czat boczny w stylu Codex + adnotacje z zaznaczenia: fork bieżącej sesji do trwałego panelu bocznego (archiwizowany poza listą sesji, wiele instancji, komenda /side, przeżywa przeładowanie, model podąża za sesją główną); zaznacz tekst assistant → numerowany badge + edytor notatek → chip "N adnotacji" dołączany do następnej wiadomości, albo od razu zapytaj w czacie bocznym',
pluginSshTunnelDesc: 'Karta SSH Tunnel: spis wielu hostów + autoryzacja per projekt + klucze trzymane lokalnie; narzędzie modelu SSHManager (exec/SFTP/strategie sesji); centralny interaktywny terminal i dwupanelowy SFTP',
pluginTurnReviewDesc: 'Ludzka bramka na diffie „tej właśnie tury”: Approve / Request changes per ścieżka z opcjonalnym komentarzem; ścieżki pogrupowane wg sesji głównej / podagenta / nieprzypisane; wbudowany diff migawka-początku-tury vs teraz, zanim zdecydujesz. Bez forka, bez /rewind',
pluginVideoPreviewDesc: 'Wbudowany podgląd plików wideo (.mp4/.webm/.mov/.mkv/.avi itp.) w edytorze better-sidebar, wspierany przez dedykowaną trasę hosta /video z obsługą HTTP Range (206) — przewijanie działa, a pliki nie są ograniczane przez mediaLimit 20 MB',
pluginDocsPanelDesc: 'Globalne dokumenty w panelu bocznym DSH: globalne notatki Markdown, czytelne z dowolnego obszaru roboczego — lista z kliknięciem, kontur z przejściami, otwieranie w Chrome / VS Code i przyciski kopiowania kodu; katalog konfigurowalny (domyślnie ~/.dsh/docs)',
pluginEgoBrowserDesc: 'Przeglądarka agenta dla DeepSeek Harness: 32 narzędzia ego_* sterują prawdziwym Chromium; natywna karta «ego browser» na pasku bocznym pokazuje na żywo każdą stronę odwiedzaną przez agenta — możesz klikać, przeciągać i pisać, aby przejąć kontrolę. Karta rejestruje się automatycznie, gdy better-sidebar jest zainstalowany; w przeciwnym razie pływający dymek',
pluginBilingualReaderDesc: 'Czytaj PDF-y w panelu bocznym DSH: natywny podgląd PDF, zaznacz tekst, aby przetłumaczyć go LLM-em, z kontekstem i całkowicie izolowany od głównej rozmowy',
changesRedactOn: "Redakcja włączona: tajne dane pokazywane jako [REDACTED]; kliknij, aby wyłączyć (na własne ryzyko)",
changesRedactOff: "Redakcja wyłączona: treść pokazywana bez zmian; kliknij, aby włączyć",
changesRedactOnLabel: "Redakcja",
changesRedactOffLabel: "Bez redakcji",
changesRedactBanner: "Zredagowano",
pluginSentinelName: 'dsh-sentinel System wybudzania',
pluginEgoBrowserName: 'ego-browser Przeglądarka agenta',
pluginBetterOverleafName: 'dsh-better-overleaf Karta Overleaf',
pluginDocsPanelName: 'dsh-docs-panel Dokumenty globalne',
pluginFlowglassName: 'dsh-flowglass Flowglass',
pluginGitForgeName: 'dsh-git-forge Dane uwierzytelniające Git',
pluginGitRemotesName: 'dsh-git-remotes Zdalne repozytoria Git',
pluginGithubWorkbenchName: 'dsh-github-workbench Warsztat GitHub',
pluginSidebarQaName: 'dsh-sidebar-qa Zaznacz i zapytaj',
pluginSidenoteName: 'dsh-sidenote Czat boczny',
pluginServerDeckName: 'dsh-server-deck Panel serwerów',
pluginSuhuangScrollName: 'dsh-suhuang-scroll Suhuang Scroll',
pluginSshTunnelName: 'dsh-ssh-tunnel Tunel SSH',
pluginTurnReviewName: 'dsh-turn-review Rewizja tury',
pluginBilingualReaderName: 'dsh-bilingual-reader Czytnik dwujęzyczny',
pluginOfficeName: 'Podgląd Office',
pluginMdExportName: 'Eksport Markdown',
pluginCodeNavName: 'Nawigator podglądu kodu',
pluginVideoPreviewName: 'Podgląd wideo',
presetDshDesktopDesc: 'Tryb zaawansowany Electron (bez ramki): macOS rezerwuje 20px u góry; Windows bez WCO rezerwuje 32px na pasek tytułu',
}