diff --git a/docs/Config.md b/docs/Config.md index 6998b229673..4e248678445 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -86,6 +86,7 @@ gui: border: 'rounded' # one of 'single' | 'double' | 'rounded' | 'hidden' animateExplosion: true # shows an explosion animation when nuking the working tree portraitMode: 'auto' # one of 'auto' | 'never' | 'always' + filterMode: 'substring' # one of 'substring' | 'fuzzy'; see 'Filtering' section below git: paging: colorArg: always @@ -374,6 +375,12 @@ That's the behavior when `gui.scrollOffBehavior` is set to "margin" (the default This setting applies both to all list views (e.g. commits and branches etc), and to the staging view. +## Filtering + +We have two ways to filter things, substring matching (the default) and fuzzy searching. With substring matching, the text you enter gets searched for verbatim (usually case-insensitive, except when your filter string contains uppercase letters, in which case we search case-sensitively). You can search for multiple non-contiguous substrings by separating them with spaces; for example, "int test" will match "integration-testing". All substrings have to match, but not necessarily in the given order. + +Fuzzy searching is smarter in that it allows every letter of the filter string to match anywhere in the text (only in order though), assigning a weight to the quality of the match and sorting by that order. This has the advantage that it allows typing "clt" to match "commit_loader_test" (letters at the beginning of subwords get more weight); but it has the disadvantage that it tends to return lots of irrelevant results, especially with short filter strings. + ## Color Attributes For color attributes you can choose an array of attributes (with max one color attribute) diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index 4c7ce2ce1e6..49a9802a38e 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -263,7 +263,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | Copy branch name to clipboard | | -| `` `` | Checkout | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | Checkout | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | New branch | | | `` M `` | Merge | Merge selected branch into currently checked out branch. | | `` r `` | Rebase | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_ja.md b/docs/keybindings/Keybindings_ja.md index 1e6a302c1eb..578e4fbd176 100644 --- a/docs/keybindings/Keybindings_ja.md +++ b/docs/keybindings/Keybindings_ja.md @@ -328,7 +328,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | ブランチ名をクリップボードにコピー | | -| `` `` | チェックアウト | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | チェックアウト | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | 新しいブランチを作成 | | | `` M `` | 現在のブランチにマージ | Merge selected branch into currently checked out branch. | | `` r `` | Rebase | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_ko.md b/docs/keybindings/Keybindings_ko.md index e4abae3917a..08ef52a3014 100644 --- a/docs/keybindings/Keybindings_ko.md +++ b/docs/keybindings/Keybindings_ko.md @@ -240,7 +240,7 @@ _Legend: `` means ctrl+b, `` means alt+b, `B` means shift+b_ | Key | Action | Info | |-----|--------|-------------| | `` `` | 브랜치명을 클립보드에 복사 | | -| `` `` | 체크아웃 | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | 체크아웃 | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | 새 브랜치 생성 | | | `` M `` | 현재 브랜치에 병합 | Merge selected branch into currently checked out branch. | | `` r `` | 체크아웃된 브랜치를 이 브랜치에 리베이스 | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index 8677b6ae8b3..f27d43ef0ce 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -241,7 +241,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | Kopieer branch name naar klembord | | -| `` `` | Uitchecken | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | Uitchecken | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | Nieuwe branch | | | `` M `` | Merge in met huidige checked out branch | Merge selected branch into currently checked out branch. | | `` r `` | Rebase branch | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index e385c48a952..62d5cc245bd 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -1,146 +1,142 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n directory and then run `go generate ./...` from the project root._ -# Lazygit Keybindings +# Lazygit Skróty klawiszowe -_Legend: `` means ctrl+b, `` means alt+b, `B` means shift+b_ +_Legenda: `` oznacza ctrl+b, `` oznacza alt+b, `B` oznacza shift+b_ -## Globalne +## Globalne skróty klawiszowe | Key | Action | Info | |-----|--------|-------------| -| `` `` | Switch to a recent repo | | -| `` (fn+up/shift+k) `` | Scroll up main window | | -| `` (fn+down/shift+j) `` | Scroll down main window | | -| `` @ `` | View command log options | View options for the command log e.g. show/hide the command log and focus the command log. | -| `` P `` | Push | Push the current branch to its upstream branch. If no upstream is configured, you will be prompted to configure an upstream branch. | -| `` p `` | Pull | Pull changes from the remote for the current branch. If no upstream is configured, you will be prompted to configure an upstream branch. | -| `` } `` | Increase diff context size | Increase the amount of the context shown around changes in the diff view. | -| `` { `` | Decrease diff context size | Decrease the amount of the context shown around changes in the diff view. | -| `` : `` | Wykonaj własną komendę | Bring up a prompt where you can enter a shell command to execute. Not to be confused with pre-configured custom commands. | -| `` `` | View custom patch options | | -| `` m `` | Widok scalenia/opcje zmiany bazy | View options to abort/continue/skip the current merge/rebase. | -| `` R `` | Odśwież | Refresh the git state (i.e. run `git status`, `git branch`, etc in background to update the contents of panels). This does not run `git fetch`. | -| `` + `` | Next screen mode (normal/half/fullscreen) | | -| `` _ `` | Prev screen mode | | -| `` ? `` | Open keybindings menu | | -| `` `` | View filter options | View options for filtering the commit log, so that only commits matching the filter are shown. | -| `` W `` | View diffing options | View options relating to diffing two refs e.g. diffing against selected ref, entering ref to diff against, and reversing the diff direction. | -| `` `` | View diffing options | View options relating to diffing two refs e.g. diffing against selected ref, entering ref to diff against, and reversing the diff direction. | -| `` q `` | Quit | | +| `` `` | Przełącz na ostatnie repozytorium | | +| `` (fn+up/shift+k) `` | Przewiń główne okno w górę | | +| `` (fn+down/shift+j) `` | Przewiń główne okno w dół | | +| `` @ `` | Pokaż opcje dziennika poleceń | Pokaż opcje dla dziennika poleceń, np. pokazywanie/ukrywanie dziennika poleceń i skupienie na dzienniku poleceń. | +| `` P `` | Wypchnij | Wypchnij bieżącą gałąź do jej gałęzi nadrzędnej. Jeśli nie skonfigurowano gałęzi nadrzędnej, zostaniesz poproszony o skonfigurowanie gałęzi nadrzędnej. | +| `` p `` | Pociągnij | Pociągnij zmiany z zdalnego dla bieżącej gałęzi. Jeśli nie skonfigurowano gałęzi nadrzędnej, zostaniesz poproszony o skonfigurowanie gałęzi nadrzędnej. | +| `` } `` | Zwiększ rozmiar kontekstu w widoku różnic | Zwiększ ilość kontekstu pokazywanego wokół zmian w widoku różnic. | +| `` { `` | Zmniejsz rozmiar kontekstu w widoku różnic | Zmniejsz ilość kontekstu pokazywanego wokół zmian w widoku różnic. | +| `` : `` | Wykonaj polecenie niestandardowe | Wyświetl monit, w którym możesz wprowadzić polecenie powłoki do wykonania. Nie należy mylić z wcześniej skonfigurowanymi poleceniami niestandardowymi. | +| `` `` | Wyświetl opcje niestandardowej łatki | | +| `` m `` | Pokaż opcje scalania/rebase | Pokaż opcje do przerwania/kontynuowania/pominięcia bieżącego scalania/rebase. | +| `` R `` | Odśwież | Odśwież stan git (tj. uruchom `git status`, `git branch`, itp. w tle, aby zaktualizować zawartość paneli). To nie uruchamia `git fetch`. | +| `` + `` | Następny tryb ekranu (normalny/półpełny/pełnoekranowy) | | +| `` _ `` | Poprzedni tryb ekranu | | +| `` ? `` | Otwórz menu przypisań klawiszy | | +| `` `` | Pokaż opcje filtrowania | Pokaż opcje filtrowania dziennika commitów, tak aby pokazywane były tylko commity pasujące do filtra. | +| `` W `` | Pokaż opcje różnicowania | Pokaż opcje dotyczące różnicowania dwóch refów, np. różnicowanie względem wybranego refa, wprowadzanie refa do różnicowania i odwracanie kierunku różnic. | +| `` `` | Pokaż opcje różnicowania | Pokaż opcje dotyczące różnicowania dwóch refów, np. różnicowanie względem wybranego refa, wprowadzanie refa do różnicowania i odwracanie kierunku różnic. | +| `` q `` | Wyjdź | | | `` `` | Anuluj | | -| `` `` | Toggle whitespace | Toggle whether or not whitespace changes are shown in the diff view. | -| `` z `` | Undo | The reflog will be used to determine what git command to run to undo the last git command. This does not include changes to the working tree; only commits are taken into consideration. | -| `` `` | Redo | The reflog will be used to determine what git command to run to redo the last git command. This does not include changes to the working tree; only commits are taken into consideration. | +| `` `` | Przełącz białe znaki | Przełącz czy zmiany białych znaków są pokazywane w widoku różnic. | +| `` z `` | Cofnij | Dziennik reflog zostanie użyty do określenia, jakie polecenie git należy uruchomić, aby cofnąć ostatnie polecenie git. Nie obejmuje to zmian w drzewie roboczym; brane są pod uwagę tylko commity. | +| `` `` | Ponów | Dziennik reflog zostanie użyty do określenia, jakie polecenie git należy uruchomić, aby ponowić ostatnie polecenie git. Nie obejmuje to zmian w drzewie roboczym; brane są pod uwagę tylko commity. | -## List panel navigation +## Nawigacja panelu listy | Key | Action | Info | |-----|--------|-------------| -| `` , `` | Previous page | | -| `` . `` | Next page | | -| `` < `` | Scroll to top | | -| `` > `` | Scroll to bottom | | -| `` v `` | Toggle range select | | -| `` `` | Range select down | | -| `` `` | Range select up | | -| `` / `` | Search the current view by text | | -| `` H `` | Scroll left | | -| `` L `` | Scroll right | | -| `` ] `` | Next tab | | -| `` [ `` | Previous tab | | - -## Commit summary - -| Key | Action | Info | -|-----|--------|-------------| -| `` `` | Potwierdź | | -| `` `` | Zamknij | | +| `` , `` | Poprzednia strona | | +| `` . `` | Następna strona | | +| `` < `` | Przewiń do góry | | +| `` > `` | Przewiń do dołu | | +| `` v `` | Przełącz zaznaczenie zakresu | | +| `` `` | Zaznacz zakres w dół | | +| `` `` | Zaznacz zakres w górę | | +| `` / `` | Szukaj w bieżącym widoku po tekście | | +| `` H `` | Przewiń w lewo | | +| `` L `` | Przewiń w prawo | | +| `` ] `` | Następna zakładka | | +| `` [ `` | Poprzednia zakładka | | ## Commity | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy commit SHA to clipboard | | -| `` `` | Reset copied (cherry-picked) commits selection | | -| `` b `` | View bisect options | | -| `` s `` | Spłaszcz | Squash the selected commit into the commit below it. The selected commit's message will be appended to the commit below it. | -| `` f `` | Napraw | Meld the selected commit into the commit below it. Similar to fixup, but the selected commit's message will be discarded. | -| `` r `` | Zmień nazwę commita | Reword the selected commit's message. | -| `` R `` | Zmień nazwę commita w edytorze | | -| `` d `` | Usuń commit | Drop the selected commit. This will remove the commit from the branch via a rebase. If the commit makes changes that later commits depend on, you may need to resolve merge conflicts. | -| `` e `` | Edit (start interactive rebase) | Edytuj commit | -| `` i `` | Start interactive rebase | Start an interactive rebase for the commits on your branch. This will include all commits from the HEAD commit down to the first merge commit or main branch commit. -If you would instead like to start an interactive rebase from the selected commit, press `e`. | -| `` p `` | Pick | Wybierz commit (podczas zmiany bazy) | -| `` F `` | Create fixup commit | Utwórz commit naprawczy dla tego commita | -| `` S `` | Apply fixup commits | Spłaszcz wszystkie commity naprawcze powyżej zaznaczonych commitów (autosquash) | -| `` `` | Przenieś commit 1 w dół | | -| `` `` | Przenieś commit 1 w górę | | -| `` V `` | Wklej commity (przebieranie) | | -| `` B `` | Mark as base commit for rebase | Select a base commit for the next rebase. When you rebase onto a branch, only commits above the base commit will be brought across. This uses the `git rebase --onto` command. | -| `` A `` | Amend | Popraw commit zmianami z poczekalni | -| `` a `` | Amend commit attribute | Set/Reset commit author or set co-author. | -| `` t `` | Revert | Create a revert commit for the selected commit, which applies the selected commit's changes in reverse. | -| `` T `` | Tag commit | Create a new tag pointing at the selected commit. You'll be prompted to enter a tag name and optional description. | -| `` `` | View log options | View options for commit log e.g. changing sort order, hiding the git graph, showing the whole git graph. | -| `` `` | Przełącz | Checkout the selected commit as a detached HEAD. | -| `` y `` | Copy commit attribute to clipboard | Copy commit attribute to clipboard (e.g. hash, URL, diff, message, author). | -| `` o `` | Open commit in browser | | -| `` n `` | Create new branch off of commit | | -| `` g `` | Wyświetl opcje resetu | View reset options (soft/mixed/hard) for resetting onto selected item. | -| `` C `` | Kopiuj commit (przebieranie) | Mark commit as copied. Then, within the local commits view, you can press `V` to paste (cherry-pick) the copied commit(s) into your checked out branch. At any time you can press `` to cancel the selection. | -| `` `` | Open external diff tool (git difftool) | | -| `` `` | Przeglądaj pliki commita | | -| `` w `` | View worktree options | | -| `` / `` | Search the current view by text | | - -## Confirmation panel +| `` `` | Kopiuj SHA commita do schowka | | +| `` `` | Resetuj wybrane (cherry-picked) commity | | +| `` b `` | Zobacz opcje bisect | | +| `` s `` | Scal | Scal wybrany commit z commitami poniżej. Wiadomość wybranego commita zostanie dołączona do commita poniżej. | +| `` f `` | Poprawka | Włącz wybrany commit do commita poniżej. Podobnie do fixup, ale wiadomość wybranego commita zostanie odrzucona. | +| `` r `` | Przeformułuj | Przeformułuj wiadomość wybranego commita. | +| `` R `` | Przeformułuj za pomocą edytora | | +| `` d `` | Usuń | Usuń wybrany commit. To usunie commit z gałęzi za pomocą rebazowania. Jeśli commit wprowadza zmiany, od których zależą późniejsze commity, być może będziesz musiał rozwiązać konflikty scalania. | +| `` e `` | Edytuj (rozpocznij interaktywne rebazowanie) | Edytuj wybrany commit. Użyj tego, aby rozpocząć interaktywne rebazowanie od wybranego commita. Podczas trwania rebazowania, to oznaczy wybrany commit do edycji, co oznacza, że po kontynuacji rebazowania, rebazowanie zostanie wstrzymane na wybranym commicie, aby umożliwić wprowadzenie zmian. | +| `` i `` | Rozpocznij interaktywny rebase | Rozpocznij interaktywny rebase dla commitów na twoim branchu. To będzie zawierać wszystkie commity od HEAD do pierwszego commita scalenia lub commita głównego brancha. +Jeśli chcesz zamiast tego rozpocząć interaktywny rebase od wybranego commita, naciśnij `e`. | +| `` p `` | Wybierz | Oznacz wybrany commit do wybrania (podczas rebazowania). Oznacza to, że commit zostanie zachowany po kontynuacji rebazowania. | +| `` F `` | Utwórz commit fixup | Utwórz commit 'fixup!' dla wybranego commita. Później możesz nacisnąć `S` na tym samym commicie, aby zastosować wszystkie powyższe commity fixup. | +| `` S `` | Zastosuj commity fixup | Scal wszystkie commity 'fixup!', albo powyżej wybranego commita, albo wszystkie w bieżącej gałęzi (autosquash). | +| `` `` | Przesuń commit w dół | | +| `` `` | Przesuń commit w górę | | +| `` V `` | Wklej (cherry-pick) | | +| `` B `` | Oznacz jako bazowy commit dla rebase | Wybierz bazowy commit dla następnego rebase. Kiedy robisz rebase na branch, tylko commity powyżej bazowego commita zostaną przeniesione. Używa to polecenia `git rebase --onto`. | +| `` A `` | Popraw | Popraw commit ze zmianami zatwierdzonymi. Jeśli wybrany commit jest commit HEAD, to wykona `git commit --amend`. W przeciwnym razie commit zostanie poprawiony za pomocą rebazowania. | +| `` a `` | Popraw atrybut commita | Ustaw/Resetuj autora commita lub ustaw współautora. | +| `` t `` | Cofnij | Utwórz commit cofający dla wybranego commita, który stosuje zmiany wybranego commita w odwrotnej kolejności. | +| `` T `` | Otaguj commit | Utwórz nowy tag wskazujący na wybrany commit. Zostaniesz poproszony o wprowadzenie nazwy tagu i opcjonalnego opisu. | +| `` `` | Zobacz opcje logów | Zobacz opcje dla logów commitów, np. zmiana kolejności sortowania, ukrywanie grafu gita, pokazywanie całego grafu gita. | +| `` `` | Przełącz | Przełącz wybrany commit jako odłączoną HEAD. | +| `` y `` | Kopiuj atrybut commita do schowka | Kopiuj atrybut commita do schowka (np. hash, URL, różnice, wiadomość, autor). | +| `` o `` | Otwórz commit w przeglądarce | | +| `` n `` | Utwórz nową gałąź z commita | | +| `` g `` | Reset | Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu. | +| `` C `` | Kopiuj (cherry-pick) | Oznacz commit jako skopiowany. Następnie, w widoku lokalnych commitów, możesz nacisnąć `V`, aby wkleić (cherry-pick) skopiowane commity do sprawdzonej gałęzi. W dowolnym momencie możesz nacisnąć ``, aby anulować zaznaczenie. | +| `` `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | | +| `` `` | Wyświetl pliki | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Szukaj w bieżącym widoku po tekście | | + +## Drzewa pracy | Key | Action | Info | |-----|--------|-------------| -| `` `` | Potwierdź | | -| `` `` | Zamknij | | +| `` n `` | Nowe drzewo pracy | | +| `` `` | Przełącz | Przełącz do wybranego drzewa pracy. | +| `` o `` | Otwórz w edytorze | | +| `` d `` | Usuń | Usuń wybrane drzewo pracy. To usunie zarówno katalog drzewa pracy, jak i metadane o drzewie pracy w katalogu .git. | +| `` / `` | Filtruj bieżący widok po tekście | | -## Local branches +## Główny panel (budowanie łatki) | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy branch name to clipboard | | -| `` i `` | Show git-flow options | | -| `` `` | Przełącz | Checkout selected item. | -| `` n `` | Nowa gałąź | | -| `` o `` | Utwórz żądanie pobrania | | -| `` O `` | Utwórz opcje żądania ściągnięcia | | -| `` `` | Skopiuj adres URL żądania pobrania do schowka | | -| `` c `` | Przełącz używając nazwy | Checkout by name. In the input box you can enter '-' to switch to the last branch. | -| `` F `` | Wymuś przełączenie | Force checkout selected branch. This will discard all local changes in your working directory before checking out the selected branch. | -| `` d `` | Delete | View delete options for local/remote branch. | -| `` r `` | Zmiana bazy gałęzi | Rebase the checked-out branch onto the selected branch. | -| `` M `` | Scal do obecnej gałęzi | Merge selected branch into currently checked out branch. | -| `` f `` | Fast-forward | Fast-forward selected branch from its upstream. | -| `` T `` | New tag | | -| `` s `` | Sort order | | -| `` g `` | Wyświetl opcje resetu | | -| `` R `` | Rename branch | | -| `` u `` | View upstream options | View options relating to the branch's upstream e.g. setting/unsetting the upstream and resetting to the upstream. | -| `` `` | View commits | | -| `` w `` | View worktree options | | -| `` / `` | Filter the current view by text | | - -## Main panel (patch building) +| `` `` | Idź do poprzedniego fragmentu | | +| `` `` | Idź do następnego fragmentu | | +| `` v `` | Przełącz zaznaczenie zakresu | | +| `` a `` | Zaznacz fragment | Przełącz tryb zaznaczania fragmentu. | +| `` `` | Kopiuj zaznaczony tekst do schowka | | +| `` o `` | Otwórz plik | Otwórz plik w domyślnej aplikacji. | +| `` e `` | Edytuj plik | Otwórz plik w zewnętrznym edytorze. | +| `` `` | Przełącz linie w łatce | | +| `` `` | Wyjdź z budowniczego niestandardowej łatki | | +| `` / `` | Szukaj w bieżącym widoku po tekście | | + +## Lokalne gałęzie | Key | Action | Info | |-----|--------|-------------| -| `` `` | Poprzedni kawałek | | -| `` `` | Następny kawałek | | -| `` v `` | Toggle range select | | -| `` a `` | Select hunk | Toggle hunk selection mode. | -| `` `` | Copy selected text to clipboard | | -| `` o `` | Otwórz plik | Open file in default application. | -| `` e `` | Edytuj plik | Open file in external editor. | -| `` `` | Toggle lines in patch | | -| `` `` | Wyście z trybu "linia po linii" | | -| `` / `` | Search the current view by text | | +| `` `` | Kopiuj nazwę gałęzi do schowka | | +| `` i `` | Pokaż opcje git-flow | | +| `` `` | Przełącz | Przełącz wybrany element. | +| `` n `` | Nowa gałąź | | +| `` o `` | Utwórz żądanie ściągnięcia | | +| `` O `` | Zobacz opcje tworzenia pull requesta | | +| `` `` | Kopiuj adres URL żądania ściągnięcia do schowka | | +| `` c `` | Przełącz według nazwy | Przełącz według nazwy. W polu wprowadzania możesz wpisać '-' aby przełączyć się na ostatnią gałąź. | +| `` F `` | Wymuś przełączenie | Wymuś przełączenie wybranej gałęzi. To spowoduje odrzucenie wszystkich lokalnych zmian w drzewie roboczym przed przełączeniem na wybraną gałąź. | +| `` d `` | Usuń | Wyświetl opcje usuwania lokalnej/odległej gałęzi. | +| `` r `` | Przebazuj | Przebazuj przełączoną gałąź na wybraną gałąź. | +| `` M `` | Scal | Scal wybraną gałąź z aktualnie sprawdzoną gałęzią. | +| `` f `` | Szybkie przewijanie | Szybkie przewijanie wybranej gałęzi z jej źródła. | +| `` T `` | Nowy tag | | +| `` s `` | Kolejność sortowania | | +| `` g `` | Reset | | +| `` R `` | Zmień nazwę gałęzi | | +| `` u `` | Pokaż opcje upstream | Pokaż opcje dotyczące upstream gałęzi, np. ustawianie/usuwanie upstream i resetowanie do upstream. | +| `` `` | Pokaż commity | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Filtruj bieżący widok po tekście | | ## Menu @@ -148,218 +144,223 @@ If you would instead like to start an interactive rebase from the selected commi |-----|--------|-------------| | `` `` | Wykonaj | | | `` `` | Zamknij | | -| `` / `` | Filter the current view by text | | +| `` / `` | Filtruj bieżący widok po tekście | | -## Pliki +## Panel główny (normalny) | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy path to clipboard | | -| `` `` | Przełącz stan poczekalni | Toggle staged for selected file. | -| `` `` | Filter files by status | | -| `` y `` | Copy to clipboard | | -| `` c `` | Zatwierdź zmiany | Commit staged changes. | -| `` w `` | Zatwierdź zmiany bez skryptu pre-commit | | -| `` A `` | Zmień ostatni commit | | -| `` C `` | Zatwierdź zmiany używając edytora | | -| `` `` | Find base commit for fixup | Find the commit that your current changes are building upon, for the sake of amending/fixing up the commit. This spares you from having to look through your branch's commits one-by-one to see which commit should be amended/fixed up. See docs: | -| `` e `` | Edit | Open file in external editor. | -| `` o `` | Otwórz plik | Open file in default application. | -| `` i `` | Ignore or exclude file | | -| `` r `` | Odśwież pliki | | -| `` s `` | Stash | Stash all changes. For other variations of stashing, use the view stash options keybinding. | -| `` S `` | Wyświetl opcje schowka | View stash options (e.g. stash all, stash staged, stash unstaged). | -| `` a `` | Przełącz stan poczekalni wszystkich | Toggle staged/unstaged for all files in working tree. | -| `` `` | Zatwierdź pojedyncze linie | If the selected item is a file, focus the staging view so you can stage individual hunks/lines. If the selected item is a directory, collapse/expand it. | -| `` d `` | Pokaż opcje porzucania zmian | View options for discarding changes to the selected file. | -| `` g `` | View upstream reset options | | -| `` D `` | Reset | View reset options for working tree (e.g. nuking the working tree). | -| `` ` `` | Toggle file tree view | Toggle file view between flat and tree layout. Flat layout shows all file paths in a single list, tree layout groups files by directory. | -| `` `` | Open external diff tool (git difftool) | | -| `` M `` | Open external merge tool | Run `git mergetool`. | -| `` f `` | Pobierz | Fetch changes from remote. | -| `` / `` | Search the current view by text | | +| `` mouse wheel down (fn+up) `` | Przewiń w dół | | +| `` mouse wheel up (fn+down) `` | Przewiń w górę | | -## Pliki commita +## Panel główny (scalanie) | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy path to clipboard | | -| `` c `` | Przełącz | Plik wybierania | -| `` d `` | Remove | Porzuć zmiany commita dla tego pliku | -| `` o `` | Otwórz plik | Open file in default application. | -| `` e `` | Edit | Open file in external editor. | -| `` `` | Open external diff tool (git difftool) | | -| `` `` | Toggle file included in patch | Toggle whether the file is included in the custom patch. See https://github.com/jesseduffield/lazygit#rebase-magic-custom-patches. | -| `` a `` | Toggle all files | Add/remove all commit's files to custom patch. See https://github.com/jesseduffield/lazygit#rebase-magic-custom-patches. | -| `` `` | Enter file / Toggle directory collapsed | If a file is selected, enter the file so that you can add/remove individual lines to the custom patch. If a directory is selected, toggle the directory. | -| `` ` `` | Toggle file tree view | Toggle file view between flat and tree layout. Flat layout shows all file paths in a single list, tree layout groups files by directory. | -| `` / `` | Search the current view by text | | - -## Poczekalnia +| `` `` | Wybierz fragment | | +| `` b `` | Wybierz wszystkie fragmenty | | +| `` `` | Poprzedni fragment | | +| `` `` | Następny fragment | | +| `` `` | Poprzedni konflikt | | +| `` `` | Następny konflikt | | +| `` z `` | Cofnij | Cofnij ostatnie rozwiązanie konfliktu scalania. | +| `` e `` | Edytuj plik | Otwórz plik w zewnętrznym edytorze. | +| `` o `` | Otwórz plik | Otwórz plik w domyślnej aplikacji. | +| `` M `` | Otwórz zewnętrzne narzędzie scalania | Uruchom `git mergetool`. | +| `` `` | Wróć do panelu plików | | + +## Panel główny (zatwierdzanie) | Key | Action | Info | |-----|--------|-------------| -| `` `` | Poprzedni kawałek | | -| `` `` | Następny kawałek | | -| `` v `` | Toggle range select | | -| `` a `` | Select hunk | Toggle hunk selection mode. | -| `` `` | Copy selected text to clipboard | | -| `` `` | Przełącz stan poczekalni | Toggle selection staged / unstaged. | -| `` d `` | Discard | When unstaged change is selected, discard the change using `git reset`. When staged change is selected, unstage the change. | -| `` o `` | Otwórz plik | Open file in default application. | -| `` e `` | Edytuj plik | Open file in external editor. | +| `` `` | Idź do poprzedniego fragmentu | | +| `` `` | Idź do następnego fragmentu | | +| `` v `` | Przełącz zaznaczenie zakresu | | +| `` a `` | Zaznacz fragment | Przełącz tryb zaznaczania fragmentu. | +| `` `` | Kopiuj zaznaczony tekst do schowka | | +| `` `` | Zatwierdź | Przełącz zaznaczenie zatwierdzone/niezatwierdzone. | +| `` d `` | Odrzuć | Gdy zaznaczona jest niezatwierdzona zmiana, odrzuć ją używając `git reset`. Gdy zaznaczona jest zatwierdzona zmiana, cofnij zatwierdzenie. | +| `` o `` | Otwórz plik | Otwórz plik w domyślnej aplikacji. | +| `` e `` | Edytuj plik | Otwórz plik w zewnętrznym edytorze. | | `` `` | Wróć do panelu plików | | -| `` `` | Switch view | Switch to other view (staged/unstaged changes). | -| `` E `` | Edit hunk | Edit selected hunk in external editor. | -| `` c `` | Zatwierdź zmiany | Commit staged changes. | -| `` w `` | Zatwierdź zmiany bez skryptu pre-commit | | -| `` C `` | Zatwierdź zmiany używając edytora | | -| `` `` | Find base commit for fixup | Find the commit that your current changes are building upon, for the sake of amending/fixing up the commit. This spares you from having to look through your branch's commits one-by-one to see which commit should be amended/fixed up. See docs: | -| `` / `` | Search the current view by text | | +| `` `` | Przełącz widok | Przełącz na inny widok (zatwierdzone/niezatwierdzone zmiany). | +| `` E `` | Edytuj fragment | Edytuj wybrany fragment w zewnętrznym edytorze. | +| `` c `` | Commit | Zatwierdź zmiany zatwierdzone. | +| `` w `` | Zatwierdź zmiany bez hooka pre-commit | | +| `` C `` | Zatwierdź zmiany używając edytora git | | +| `` `` | Znajdź bazowy commit do poprawki | Znajdź commit, na którym opierają się Twoje obecne zmiany, w celu poprawienia/zmiany commita. To pozwala Ci uniknąć przeglądania commitów w Twojej gałęzi jeden po drugim, aby zobaczyć, który commit powinien być poprawiony/zmieniony. Zobacz dokumentację: | +| `` / `` | Szukaj w bieżącym widoku po tekście | | -## Reflog +## Panel potwierdzenia | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy commit SHA to clipboard | | -| `` `` | Przełącz | Checkout the selected commit as a detached HEAD. | -| `` y `` | Copy commit attribute to clipboard | Copy commit attribute to clipboard (e.g. hash, URL, diff, message, author). | -| `` o `` | Open commit in browser | | -| `` n `` | Create new branch off of commit | | -| `` g `` | Wyświetl opcje resetu | View reset options (soft/mixed/hard) for resetting onto selected item. | -| `` C `` | Kopiuj commit (przebieranie) | Mark commit as copied. Then, within the local commits view, you can press `V` to paste (cherry-pick) the copied commit(s) into your checked out branch. At any time you can press `` to cancel the selection. | -| `` `` | Reset copied (cherry-picked) commits selection | | -| `` `` | Open external diff tool (git difftool) | | -| `` `` | View commits | | -| `` w `` | View worktree options | | -| `` / `` | Filter the current view by text | | - -## Remote branches +| `` `` | Potwierdź | | +| `` `` | Zamknij/Anuluj | | + +## Pliki | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy branch name to clipboard | | -| `` `` | Przełącz | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | -| `` n `` | Nowa gałąź | | -| `` M `` | Scal do obecnej gałęzi | Merge selected branch into currently checked out branch. | -| `` r `` | Zmiana bazy gałęzi | Rebase the checked-out branch onto the selected branch. | -| `` d `` | Delete | Delete the remote branch from the remote. | -| `` u `` | Set as upstream | Set the selected remote branch as the upstream of the checked-out branch. | -| `` s `` | Sort order | | -| `` g `` | Wyświetl opcje resetu | View reset options (soft/mixed/hard) for resetting onto selected item. | -| `` `` | View commits | | -| `` w `` | View worktree options | | -| `` / `` | Filter the current view by text | | +| `` `` | Kopiuj ścieżkę do schowka | | +| `` `` | Zatwierdź | Przełącz zatwierdzenie dla wybranego pliku. | +| `` `` | Filtruj pliki według statusu | | +| `` y `` | Kopiuj do schowka | | +| `` c `` | Commit | Zatwierdź zmiany zatwierdzone. | +| `` w `` | Zatwierdź zmiany bez hooka pre-commit | | +| `` A `` | Popraw ostatni commit | | +| `` C `` | Zatwierdź zmiany używając edytora git | | +| `` `` | Znajdź bazowy commit do poprawki | Znajdź commit, na którym opierają się Twoje obecne zmiany, w celu poprawienia/zmiany commita. To pozwala Ci uniknąć przeglądania commitów w Twojej gałęzi jeden po drugim, aby zobaczyć, który commit powinien być poprawiony/zmieniony. Zobacz dokumentację: | +| `` e `` | Edytuj | Otwórz plik w zewnętrznym edytorze. | +| `` o `` | Otwórz plik | Otwórz plik w domyślnej aplikacji. | +| `` i `` | Ignoruj lub wyklucz plik | | +| `` r `` | Odśwież pliki | | +| `` s `` | Schowaj | Schowaj wszystkie zmiany. Dla innych wariantów schowania, użyj klawisza wyświetlania opcji schowka. | +| `` S `` | Wyświetl opcje schowka | Wyświetl opcje schowka (np. schowaj wszystko, schowaj zatwierdzone, schowaj niezatwierdzone). | +| `` a `` | Zatwierdź wszystko | Przełącz zatwierdzenie/odznaczenie dla wszystkich plików w drzewie roboczym. | +| `` `` | Zatwierdź linie / Zwiń katalog | Jeśli wybrany element jest plikiem, skup się na widoku zatwierdzania, aby móc zatwierdzać poszczególne fragmenty/linie. Jeśli wybrany element jest katalogiem, zwiń/rozwiń go. | +| `` d `` | Odrzuć | Wyświetl opcje odrzucania zmian w wybranym pliku. | +| `` g `` | Pokaż opcje resetowania do upstream | | +| `` D `` | Reset | Wyświetl opcje resetu dla drzewa roboczego (np. zniszczenie drzewa roboczego). | +| `` ` `` | Przełącz widok drzewa plików | Przełącz widok plików między płaskim a drzewem. Płaski układ pokazuje wszystkie ścieżki plików na jednej liście, układ drzewa grupuje pliki według katalogów. | +| `` `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | | +| `` M `` | Otwórz zewnętrzne narzędzie scalania | Uruchom `git mergetool`. | +| `` f `` | Pobierz | Pobierz zmiany ze zdalnego serwera. | +| `` / `` | Szukaj w bieżącym widoku po tekście | | + +## Pliki commita -## Remotes +| Key | Action | Info | +|-----|--------|-------------| +| `` `` | Kopiuj ścieżkę do schowka | | +| `` c `` | Przełącz | Przełącz plik. Zastępuje plik w twoim drzewie roboczym wersją z wybranego commita. | +| `` d `` | Usuń | Odrzuć zmiany w tym pliku z tego commita. Uruchamia interaktywny rebase w tle, więc możesz otrzymać konflikt scalania, jeśli późniejszy commit również zmienia ten plik. | +| `` o `` | Otwórz plik | Otwórz plik w domyślnej aplikacji. | +| `` e `` | Edytuj | Otwórz plik w zewnętrznym edytorze. | +| `` `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | | +| `` `` | Przełącz plik włączony w łatkę | Przełącz, czy plik jest włączony w niestandardową łatkę. Zobacz https://github.com/jesseduffield/lazygit#rebase-magic-custom-patches. | +| `` a `` | Przełącz wszystkie pliki | Dodaj/usuń wszystkie pliki commita do niestandardowej łatki. Zobacz https://github.com/jesseduffield/lazygit#rebase-magic-custom-patches. | +| `` `` | Wejdź do pliku / Przełącz zwiń katalog | Jeśli plik jest wybrany, wejdź do pliku, aby móc dodawać/usuwać poszczególne linie do niestandardowej łatki. Jeśli wybrany jest katalog, przełącz katalog. | +| `` ` `` | Przełącz widok drzewa plików | Przełącz widok plików między płaskim a drzewem. Płaski układ pokazuje wszystkie ścieżki plików na jednej liście, układ drzewa grupuje pliki według katalogów. | +| `` / `` | Szukaj w bieżącym widoku po tekście | | + +## Podsumowanie commita | Key | Action | Info | |-----|--------|-------------| -| `` `` | View branches | | -| `` n `` | New remote | | -| `` d `` | Remove | Remove the selected remote. Any local branches tracking a remote branch from the remote will be unaffected. | -| `` e `` | Edit | Edit the selected remote's name or URL. | -| `` f `` | Pobierz | Fetch updates from the remote repository. This retrieves new commits and branches without merging them into your local branches. | -| `` / `` | Filter the current view by text | | +| `` `` | Potwierdź | | +| `` `` | Zamknij | | -## Scalanie +## Reflog | Key | Action | Info | |-----|--------|-------------| -| `` `` | Wybierz kawałek | | -| `` b `` | Wybierz oba kawałki | | -| `` `` | Wybierz poprzedni kawałek | | -| `` `` | Wybierz następny kawałek | | -| `` `` | Poprzedni konflikt | | -| `` `` | Następny konflikt | | -| `` z `` | Cofnij | Undo last merge conflict resolution. | -| `` e `` | Edytuj plik | Open file in external editor. | -| `` o `` | Otwórz plik | Open file in default application. | -| `` M `` | Open external merge tool | Run `git mergetool`. | -| `` `` | Wróć do panelu plików | | +| `` `` | Kopiuj SHA commita do schowka | | +| `` `` | Przełącz | Przełącz wybrany commit jako odłączoną HEAD. | +| `` y `` | Kopiuj atrybut commita do schowka | Kopiuj atrybut commita do schowka (np. hash, URL, różnice, wiadomość, autor). | +| `` o `` | Otwórz commit w przeglądarce | | +| `` n `` | Utwórz nową gałąź z commita | | +| `` g `` | Reset | Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu. | +| `` C `` | Kopiuj (cherry-pick) | Oznacz commit jako skopiowany. Następnie, w widoku lokalnych commitów, możesz nacisnąć `V`, aby wkleić (cherry-pick) skopiowane commity do sprawdzonej gałęzi. W dowolnym momencie możesz nacisnąć ``, aby anulować zaznaczenie. | +| `` `` | Resetuj wybrane (cherry-picked) commity | | +| `` `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | | +| `` `` | Pokaż commity | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Filtruj bieżący widok po tekście | | ## Schowek | Key | Action | Info | |-----|--------|-------------| -| `` `` | Zastosuj | Apply the stash entry to your working directory. | -| `` g `` | Wyciągnij | Apply the stash entry to your working directory and remove the stash entry. | -| `` d `` | Porzuć | Remove the stash entry from the stash list. | -| `` n `` | Nowa gałąź | Create a new branch from the selected stash entry. This works by git checking out the commit that the stash entry was created from, creating a new branch from that commit, then applying the stash entry to the new branch as an additional commit. | -| `` r `` | Rename stash | | -| `` `` | Przeglądaj pliki commita | | -| `` w `` | View worktree options | | -| `` / `` | Filter the current view by text | | +| `` `` | Zastosuj | Zastosuj wpis schowka do katalogu roboczego. | +| `` g `` | Wyciągnij | Zastosuj wpis schowka do katalogu roboczego i usuń wpis schowka. | +| `` d `` | Usuń | Usuń wpis schowka z listy schowka. | +| `` n `` | Nowa gałąź | Utwórz nową gałąź z wybranego wpisu schowka. Działa poprzez przełączenie git na commit, na którym wpis schowka został utworzony, tworzenie nowej gałęzi z tego commita, a następnie zastosowanie wpisu schowka do nowej gałęzi jako dodatkowego commita. | +| `` r `` | Zmień nazwę schowka | | +| `` `` | Wyświetl pliki | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Filtruj bieżący widok po tekście | | ## Status | Key | Action | Info | |-----|--------|-------------| -| `` o `` | Otwórz konfigurację | Open file in default application. | -| `` e `` | Edytuj konfigurację | Open file in external editor. | +| `` o `` | Otwórz plik konfiguracyjny | Otwórz plik w domyślnej aplikacji. | +| `` e `` | Edytuj plik konfiguracyjny | Otwórz plik w zewnętrznym edytorze. | | `` u `` | Sprawdź aktualizacje | | -| `` `` | Switch to a recent repo | | -| `` a `` | Pokaż wszystkie logi gałęzi | | +| `` `` | Przełącz na ostatnie repozytorium | | +| `` a `` | Pokaż wszystkie gałęzie w logach | | -## Sub-commits +## Sub-commity | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy commit SHA to clipboard | | -| `` `` | Przełącz | Checkout the selected commit as a detached HEAD. | -| `` y `` | Copy commit attribute to clipboard | Copy commit attribute to clipboard (e.g. hash, URL, diff, message, author). | -| `` o `` | Open commit in browser | | -| `` n `` | Create new branch off of commit | | -| `` g `` | Wyświetl opcje resetu | View reset options (soft/mixed/hard) for resetting onto selected item. | -| `` C `` | Kopiuj commit (przebieranie) | Mark commit as copied. Then, within the local commits view, you can press `V` to paste (cherry-pick) the copied commit(s) into your checked out branch. At any time you can press `` to cancel the selection. | -| `` `` | Reset copied (cherry-picked) commits selection | | -| `` `` | Open external diff tool (git difftool) | | -| `` `` | Przeglądaj pliki commita | | -| `` w `` | View worktree options | | -| `` / `` | Search the current view by text | | - -## Submodules +| `` `` | Kopiuj SHA commita do schowka | | +| `` `` | Przełącz | Przełącz wybrany commit jako odłączoną HEAD. | +| `` y `` | Kopiuj atrybut commita do schowka | Kopiuj atrybut commita do schowka (np. hash, URL, różnice, wiadomość, autor). | +| `` o `` | Otwórz commit w przeglądarce | | +| `` n `` | Utwórz nową gałąź z commita | | +| `` g `` | Reset | Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu. | +| `` C `` | Kopiuj (cherry-pick) | Oznacz commit jako skopiowany. Następnie, w widoku lokalnych commitów, możesz nacisnąć `V`, aby wkleić (cherry-pick) skopiowane commity do sprawdzonej gałęzi. W dowolnym momencie możesz nacisnąć ``, aby anulować zaznaczenie. | +| `` `` | Resetuj wybrane (cherry-picked) commity | | +| `` `` | Otwórz zewnętrzne narzędzie różnic (git difftool) | | +| `` `` | Wyświetl pliki | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Szukaj w bieżącym widoku po tekście | | + +## Submoduły | Key | Action | Info | |-----|--------|-------------| -| `` `` | Copy submodule name to clipboard | | -| `` `` | Enter | Enter submodule. After entering the submodule, you can press `` to escape back to the parent repo. | -| `` d `` | Remove | Remove the selected submodule and its corresponding directory. | -| `` u `` | Update | Update selected submodule. | -| `` n `` | New submodule | | -| `` e `` | Update submodule URL | | -| `` i `` | Initialize | Initialize the selected submodule to prepare for fetching. You probably want to follow this up by invoking the 'update' action to fetch the submodule. | -| `` b `` | View bulk submodule options | | -| `` / `` | Filter the current view by text | | - -## Tags +| `` `` | Kopiuj nazwę submodułu do schowka | | +| `` `` | Wejdź | Wejdź do submodułu. Po wejściu do submodułu możesz nacisnąć ``, aby wrócić do repozytorium nadrzędnego. | +| `` d `` | Usuń | Usuń wybrany submoduł i odpowiadający mu katalog. | +| `` u `` | Aktualizuj | Aktualizuj wybrany submoduł. | +| `` n `` | Nowy submoduł | | +| `` e `` | Zaktualizuj URL submodułu | | +| `` i `` | Zainicjuj | Zainicjuj wybrany submoduł, aby przygotować do pobrania. Prawdopodobnie chcesz to kontynuować, wywołując akcję 'update', aby pobrać submoduł. | +| `` b `` | Pokaż opcje masowych operacji na submodułach | | +| `` / `` | Filtruj bieżący widok po tekście | | + +## Tagi | Key | Action | Info | |-----|--------|-------------| -| `` `` | Przełącz | Checkout the selected tag tag as a detached HEAD. | -| `` n `` | New tag | Create new tag from current commit. You'll be prompted to enter a tag name and optional description. | -| `` d `` | Delete | View delete options for local/remote tag. | -| `` P `` | Push tag | Push the selected tag to a remote. You'll be prompted to select a remote. | -| `` g `` | Reset | View reset options (soft/mixed/hard) for resetting onto selected item. | + +| `` `` | Przełącz | Przełącz wybrany tag jako odłączoną głowę (detached HEAD). | +| `` n `` | Nowy tag | Utwórz nowy tag z bieżącego commita. Zostaniesz poproszony o wprowadzenie nazwy tagu i opcjonalnego opisu. | +| `` d `` | Usuń | Wyświetl opcje usuwania lokalnego/odległego tagu. | +| `` P `` | Wyślij tag | Wyślij wybrany tag do zdalnego. Zostaniesz poproszony o wybranie zdalnego. | +| `` g `` | Reset | Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu. | | `` M `` | Scal do obecnej gałęzi | Merge selected branch into currently checked out branch. | -| `` `` | View commits | | -| `` w `` | View worktree options | | -| `` / `` | Filter the current view by text | | +| `` `` | Pokaż commity | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Filtruj bieżący widok po tekście | | -## Worktrees +## Zdalne | Key | Action | Info | |-----|--------|-------------| -| `` n `` | New worktree | | -| `` `` | Switch | Switch to the selected worktree. | -| `` o `` | Open in editor | | -| `` d `` | Remove | Remove the selected worktree. This will both delete the worktree's directory, as well as metadata about the worktree in the .git directory. | -| `` / `` | Filter the current view by text | | +| `` `` | Wyświetl gałęzie | | +| `` n `` | Nowy zdalny | | +| `` d `` | Usuń | Usuń wybrany zdalny. Wszelkie lokalne gałęzie śledzące gałąź zdalną z tego zdalnego nie zostaną dotknięte. | +| `` e `` | Edytuj | Edytuj nazwę lub URL wybranego zdalnego. | +| `` f `` | Pobierz | Pobierz aktualizacje z zdalnego repozytorium. Pobiera nowe commity i gałęzie bez scalania ich z lokalnymi gałęziami. | +| `` / `` | Filtruj bieżący widok po tekście | | -## Zwykłe +## Zdalne gałęzie | Key | Action | Info | |-----|--------|-------------| -| `` mouse wheel down (fn+up) `` | Przewiń w dół | | -| `` mouse wheel up (fn+down) `` | Przewiń w górę | | +| `` `` | Kopiuj nazwę gałęzi do schowka | | +| `` `` | Przełącz | Przełącz na nową lokalną gałąź na podstawie wybranej gałęzi zdalnej. Nowa gałąź będzie śledzić gałąź zdalną. | +| `` n `` | Nowa gałąź | | +| `` M `` | Scal | Scal wybraną gałąź z aktualnie sprawdzoną gałęzią. | +| `` r `` | Przebazuj | Przebazuj przełączoną gałąź na wybraną gałąź. | +| `` d `` | Usuń | Usuń gałąź zdalną ze zdalnego. | +| `` u `` | Ustaw jako upstream | Ustaw wybraną gałąź zdalną jako upstream sprawdzonej gałęzi. | +| `` s `` | Kolejność sortowania | | +| `` g `` | Reset | Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu. | +| `` `` | Pokaż commity | | +| `` w `` | Zobacz opcje drzewa pracy | | +| `` / `` | Filtruj bieżący widok po tekście | | diff --git a/docs/keybindings/Keybindings_ru.md b/docs/keybindings/Keybindings_ru.md index e64aae76239..cf5523b0fd8 100644 --- a/docs/keybindings/Keybindings_ru.md +++ b/docs/keybindings/Keybindings_ru.md @@ -298,7 +298,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | Скопировать название ветки в буфер обмена | | -| `` `` | Переключить | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | Переключить | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | Новая ветка | | | `` M `` | Слияние с текущей переключённой веткой | Merge selected branch into currently checked out branch. | | `` r `` | Перебазировать переключённую ветку на эту ветку | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_zh-CN.md b/docs/keybindings/Keybindings_zh-CN.md index 6991ffab427..8c7e8f1d721 100644 --- a/docs/keybindings/Keybindings_zh-CN.md +++ b/docs/keybindings/Keybindings_zh-CN.md @@ -341,7 +341,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | 将分支名称复制到剪贴板 | | -| `` `` | 检出 | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | 检出 | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | 新分支 | | | `` M `` | 合并到当前检出的分支 | Merge selected branch into currently checked out branch. | | `` r `` | 将已检出的分支变基到该分支 | Rebase the checked-out branch onto the selected branch. | diff --git a/docs/keybindings/Keybindings_zh-TW.md b/docs/keybindings/Keybindings_zh-TW.md index 2382e082c4b..5d2e0d859b5 100644 --- a/docs/keybindings/Keybindings_zh-TW.md +++ b/docs/keybindings/Keybindings_zh-TW.md @@ -352,7 +352,7 @@ If you would instead like to start an interactive rebase from the selected commi | Key | Action | Info | |-----|--------|-------------| | `` `` | 複製分支名稱到剪貼簿 | | -| `` `` | 檢出 | Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch. | +| `` `` | 檢出 | Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head. | | `` n `` | 新分支 | | | `` M `` | 合併到當前檢出的分支 | Merge selected branch into currently checked out branch. | | `` r `` | 將已檢出的分支變基至此分支 | Rebase the checked-out branch onto the selected branch. | diff --git a/pkg/commands/git_commands/branch.go b/pkg/commands/git_commands/branch.go index d05738ef3ca..6a347b8ac3c 100644 --- a/pkg/commands/git_commands/branch.go +++ b/pkg/commands/git_commands/branch.go @@ -28,6 +28,17 @@ func (self *BranchCommands) New(name string, base string) error { return self.cmd.New(cmdArgs).Run() } +// CreateWithUpstream creates a new branch with a given upstream, but without +// checking it out +func (self *BranchCommands) CreateWithUpstream(name string, upstream string) error { + cmdArgs := NewGitCmd("branch"). + Arg("--track"). + Arg(name, upstream). + ToArgv() + + return self.cmd.New(cmdArgs).Run() +} + // CurrentBranchInfo get the current branch information. func (self *BranchCommands) CurrentBranchInfo() (BranchInfo, error) { branchName, err := self.cmd.New( diff --git a/pkg/commands/git_commands/commit_loader.go b/pkg/commands/git_commands/commit_loader.go index 7cd7f38b01f..df22b91bfb5 100644 --- a/pkg/commands/git_commands/commit_loader.go +++ b/pkg/commands/git_commands/commit_loader.go @@ -348,7 +348,7 @@ func (self *CommitLoader) getRebasingCommits(rebaseMode enums.RebaseMode) []*mod for _, t := range todos { if t.Command == todo.UpdateRef { - t.Msg = strings.TrimPrefix(t.Ref, "refs/heads/") + t.Msg = t.Ref } else if t.Commit == "" { // Command does not have a commit associated, skip continue diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 0bcfa5f67dd..eeae661678a 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -272,6 +272,14 @@ func (self *RebaseCommands) AmendTo(commits []*models.Commit, commitIndex int) e }).Run() } +func todoFromCommit(commit *models.Commit) utils.Todo { + if commit.Action == todo.UpdateRef { + return utils.Todo{Ref: commit.Name, Action: commit.Action} + } else { + return utils.Todo{Sha: commit.Sha, Action: commit.Action} + } +} + // Sets the action for the given commits in the git-rebase-todo file func (self *RebaseCommands) EditRebaseTodo(commits []*models.Commit, action todo.TodoCommand) error { commitsWithAction := lo.Map(commits, func(commit *models.Commit, _ int) utils.TodoChange { @@ -289,13 +297,22 @@ func (self *RebaseCommands) EditRebaseTodo(commits []*models.Commit, action todo ) } +func (self *RebaseCommands) DeleteUpdateRefTodos(commits []*models.Commit) error { + todosToDelete := lo.Map(commits, func(commit *models.Commit, _ int) utils.Todo { + return todoFromCommit(commit) + }) + + return utils.DeleteTodos( + filepath.Join(self.repoPaths.WorktreeGitDirPath(), "rebase-merge/git-rebase-todo"), + todosToDelete, + self.config.GetCoreCommentChar(), + ) +} + func (self *RebaseCommands) MoveTodosDown(commits []*models.Commit) error { fileName := filepath.Join(self.repoPaths.WorktreeGitDirPath(), "rebase-merge/git-rebase-todo") todosToMove := lo.Map(commits, func(commit *models.Commit, _ int) utils.Todo { - return utils.Todo{ - Sha: commit.Sha, - Action: commit.Action, - } + return todoFromCommit(commit) }) return utils.MoveTodosDown(fileName, todosToMove, self.config.GetCoreCommentChar()) @@ -304,10 +321,7 @@ func (self *RebaseCommands) MoveTodosDown(commits []*models.Commit) error { func (self *RebaseCommands) MoveTodosUp(commits []*models.Commit) error { fileName := filepath.Join(self.repoPaths.WorktreeGitDirPath(), "rebase-merge/git-rebase-todo") todosToMove := lo.Map(commits, func(commit *models.Commit, _ int) utils.Todo { - return utils.Todo{ - Sha: commit.Sha, - Action: commit.Action, - } + return todoFromCommit(commit) }) return utils.MoveTodosUp(fileName, todosToMove, self.config.GetCoreCommentChar()) diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 2cbb15ce409..588fe26383d 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -142,6 +142,13 @@ type GuiConfig struct { // Whether to stack UI components on top of each other. // One of 'auto' (default) | 'always' | 'never' PortraitMode string `yaml:"portraitMode"` + // How things are filtered when typing '/'. + // One of 'substring' (default) | 'fuzzy' + FilterMode string `yaml:"filterMode" jsonschema:"enum=substring,enum=fuzzy"` +} + +func (c *GuiConfig) UseFuzzySearch() bool { + return c.FilterMode == "fuzzy" } type ThemeConfig struct { @@ -660,6 +667,7 @@ func GetDefaultConfig() *UserConfig { Border: "rounded", AnimateExplosion: true, PortraitMode: "auto", + FilterMode: "substring", }, Git: GitConfig{ Paging: PagingConfig{ diff --git a/pkg/gui/context/branches_context.go b/pkg/gui/context/branches_context.go index 6317a60b2e9..d2647ef843a 100644 --- a/pkg/gui/context/branches_context.go +++ b/pkg/gui/context/branches_context.go @@ -22,7 +22,6 @@ func NewBranchesContext(c *ContextCommon) *BranchesContext { func(branch *models.Branch) []string { return []string{branch.Name} }, - func() bool { return c.AppState.LocalBranchSortOrder != "alphabetical" }, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/filtered_list.go b/pkg/gui/context/filtered_list.go index 13b9c166a5a..0724ecb3b8d 100644 --- a/pkg/gui/context/filtered_list.go +++ b/pkg/gui/context/filtered_list.go @@ -1,7 +1,6 @@ package context import ( - "slices" "strings" "github.com/jesseduffield/lazygit/pkg/utils" @@ -17,21 +16,14 @@ type FilteredList[T any] struct { getFilterFields func(T) []string filter string - // Normally, filtered items are presented sorted by best match. If this - // function returns true, they retain their original sort order instead; - // this is useful for lists that show items sorted by date, for example. - // Leaving this nil is equivalent to returning false. - shouldRetainSortOrder func() bool - mutex *deadlock.Mutex } -func NewFilteredList[T any](getList func() []T, getFilterFields func(T) []string, shouldRetainSortOrder func() bool) *FilteredList[T] { +func NewFilteredList[T any](getList func() []T, getFilterFields func(T) []string) *FilteredList[T] { return &FilteredList[T]{ - getList: getList, - getFilterFields: getFilterFields, - shouldRetainSortOrder: shouldRetainSortOrder, - mutex: &deadlock.Mutex{}, + getList: getList, + getFilterFields: getFilterFields, + mutex: &deadlock.Mutex{}, } } @@ -39,18 +31,18 @@ func (self *FilteredList[T]) GetFilter() string { return self.filter } -func (self *FilteredList[T]) SetFilter(filter string) { +func (self *FilteredList[T]) SetFilter(filter string, useFuzzySearch bool) { self.filter = filter - self.applyFilter() + self.applyFilter(useFuzzySearch) } func (self *FilteredList[T]) ClearFilter() { - self.SetFilter("") + self.SetFilter("", false) } -func (self *FilteredList[T]) ReApplyFilter() { - self.applyFilter() +func (self *FilteredList[T]) ReApplyFilter(useFuzzySearch bool) { + self.applyFilter(useFuzzySearch) } func (self *FilteredList[T]) IsFiltering() bool { @@ -84,7 +76,7 @@ func (self *fuzzySource[T]) Len() int { return len(self.list) } -func (self *FilteredList[T]) applyFilter() { +func (self *FilteredList[T]) applyFilter(useFuzzySearch bool) { self.mutex.Lock() defer self.mutex.Unlock() @@ -96,13 +88,10 @@ func (self *FilteredList[T]) applyFilter() { getFilterFields: self.getFilterFields, } - matches := fuzzy.FindFrom(self.filter, source) + matches := utils.FindFrom(self.filter, source, useFuzzySearch) self.filteredIndices = lo.Map(matches, func(match fuzzy.Match, _ int) int { return match.Index }) - if self.shouldRetainSortOrder != nil && self.shouldRetainSortOrder() { - slices.Sort(self.filteredIndices) - } } } diff --git a/pkg/gui/context/filtered_list_view_model.go b/pkg/gui/context/filtered_list_view_model.go index b52fcbc0abb..2c284196409 100644 --- a/pkg/gui/context/filtered_list_view_model.go +++ b/pkg/gui/context/filtered_list_view_model.go @@ -6,8 +6,8 @@ type FilteredListViewModel[T HasID] struct { *SearchHistory } -func NewFilteredListViewModel[T HasID](getList func() []T, getFilterFields func(T) []string, shouldRetainSortOrder func() bool) *FilteredListViewModel[T] { - filteredList := NewFilteredList(getList, getFilterFields, shouldRetainSortOrder) +func NewFilteredListViewModel[T HasID](getList func() []T, getFilterFields func(T) []string) *FilteredListViewModel[T] { + filteredList := NewFilteredList(getList, getFilterFields) self := &FilteredListViewModel[T]{ FilteredList: filteredList, diff --git a/pkg/gui/context/menu_context.go b/pkg/gui/context/menu_context.go index 2158d5c7ac6..9db09b74fb0 100644 --- a/pkg/gui/context/menu_context.go +++ b/pkg/gui/context/menu_context.go @@ -61,10 +61,6 @@ func NewMenuViewModel(c *ContextCommon) *MenuViewModel { self.FilteredListViewModel = NewFilteredListViewModel( func() []*types.MenuItem { return self.menuItems }, func(item *types.MenuItem) []string { return item.LabelColumns }, - // The only menu that the user is likely to filter in is the keybindings - // menu; retain the sort order in that one because this allows us to - // keep the section headers while filtering: - func() bool { return true }, ) return self @@ -99,6 +95,13 @@ func (self *MenuViewModel) GetDisplayStrings(_ int, _ int) [][]string { } func (self *MenuViewModel) GetNonModelItems() []*NonModelItem { + // Don't display section headers when we are filtering, and the filter mode + // is fuzzy. The reason is that filtering changes the order of the items + // (they are sorted by best match), so all the sections would be messed up. + if self.FilteredListViewModel.IsFiltering() && self.c.UserConfig.Gui.UseFuzzySearch() { + return []*NonModelItem{} + } + result := []*NonModelItem{} menuItems := self.FilteredListViewModel.GetItems() var prevSection *types.MenuSection = nil diff --git a/pkg/gui/context/reflog_commits_context.go b/pkg/gui/context/reflog_commits_context.go index 6791932ba1b..65137d633d2 100644 --- a/pkg/gui/context/reflog_commits_context.go +++ b/pkg/gui/context/reflog_commits_context.go @@ -24,7 +24,6 @@ func NewReflogCommitsContext(c *ContextCommon) *ReflogCommitsContext { func(commit *models.Commit) []string { return []string{commit.ShortSha(), commit.Name} }, - func() bool { return true }, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/remote_branches_context.go b/pkg/gui/context/remote_branches_context.go index 9de792f279e..884d3debbf1 100644 --- a/pkg/gui/context/remote_branches_context.go +++ b/pkg/gui/context/remote_branches_context.go @@ -26,7 +26,6 @@ func NewRemoteBranchesContext( func(remoteBranch *models.RemoteBranch) []string { return []string{remoteBranch.Name} }, - func() bool { return c.AppState.RemoteBranchSortOrder != "alphabetical" }, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/remotes_context.go b/pkg/gui/context/remotes_context.go index 51fc1c03607..73ea428aaa9 100644 --- a/pkg/gui/context/remotes_context.go +++ b/pkg/gui/context/remotes_context.go @@ -22,7 +22,6 @@ func NewRemotesContext(c *ContextCommon) *RemotesContext { func(remote *models.Remote) []string { return []string{remote.Name} }, - nil, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/stash_context.go b/pkg/gui/context/stash_context.go index c832f85fffd..c8d48768807 100644 --- a/pkg/gui/context/stash_context.go +++ b/pkg/gui/context/stash_context.go @@ -24,7 +24,6 @@ func NewStashContext( func(stashEntry *models.StashEntry) []string { return []string{stashEntry.Name} }, - func() bool { return true }, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/submodules_context.go b/pkg/gui/context/submodules_context.go index dbd12077a27..5428da04491 100644 --- a/pkg/gui/context/submodules_context.go +++ b/pkg/gui/context/submodules_context.go @@ -19,7 +19,6 @@ func NewSubmodulesContext(c *ContextCommon) *SubmodulesContext { func(submodule *models.SubmoduleConfig) []string { return []string{submodule.FullName()} }, - nil, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/tags_context.go b/pkg/gui/context/tags_context.go index c5ae2ccd5cd..d827564dd56 100644 --- a/pkg/gui/context/tags_context.go +++ b/pkg/gui/context/tags_context.go @@ -24,7 +24,6 @@ func NewTagsContext( func(tag *models.Tag) []string { return []string{tag.Name, tag.Message} }, - nil, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/context/traits/list_cursor.go b/pkg/gui/context/traits/list_cursor.go index 3b4ab1c3dbe..31f3de7a40f 100644 --- a/pkg/gui/context/traits/list_cursor.go +++ b/pkg/gui/context/traits/list_cursor.go @@ -65,7 +65,11 @@ func (self *ListCursor) SetSelection(value int) { func (self *ListCursor) SetSelectionRangeAndMode(selectedIdx, rangeStartIdx int, mode RangeSelectMode) { self.selectedIdx = self.clampValue(selectedIdx) self.rangeStartIdx = self.clampValue(rangeStartIdx) - self.rangeSelectMode = mode + if mode == RangeSelectModeNonSticky && selectedIdx == rangeStartIdx { + self.rangeSelectMode = RangeSelectModeNone + } else { + self.rangeSelectMode = mode + } } // Returns the selectedIdx, the rangeStartIdx, and the mode of the current selection. diff --git a/pkg/gui/context/worktrees_context.go b/pkg/gui/context/worktrees_context.go index 55618de85d5..3e45f2d4581 100644 --- a/pkg/gui/context/worktrees_context.go +++ b/pkg/gui/context/worktrees_context.go @@ -19,7 +19,6 @@ func NewWorktreesContext(c *ContextCommon) *WorktreesContext { func(Worktree *models.Worktree) []string { return []string{Worktree.Name} }, - nil, ) getDisplayStrings := func(_ int, _ int) [][]string { diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index 068238ec73b..ff9473ab686 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -436,6 +436,10 @@ func (self *BranchesController) checkoutByName() error { FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), HandleConfirm: func(response string) error { self.c.LogAction("Checkout branch") + _, branchName, found := self.c.Helpers().Refs.ParseRemoteBranchName(response) + if found { + return self.c.Helpers().Refs.CheckoutRemoteBranch(response, branchName) + } return self.c.Helpers().Refs.CheckoutRef(response, types.CheckoutRefOptions{ OnRefNotFound: func(ref string) error { return self.c.Confirm(types.ConfirmOpts{ diff --git a/pkg/gui/controllers/custom_command_action.go b/pkg/gui/controllers/custom_command_action.go index bc595934dd1..f4de3218eb9 100644 --- a/pkg/gui/controllers/custom_command_action.go +++ b/pkg/gui/controllers/custom_command_action.go @@ -38,7 +38,7 @@ func (self *CustomCommandAction) Call() error { func (self *CustomCommandAction) GetCustomCommandsHistorySuggestionsFunc() func(string) []*types.Suggestion { history := self.c.GetAppState().CustomCommandsHistory - return helpers.FuzzySearchFunc(history) + return helpers.FilterFunc(history, self.c.UserConfig.Gui.UseFuzzySearch()) } // this mimics the shell functionality `ignorespace` diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index 8b066f447e5..6ddff118c5a 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -7,6 +7,7 @@ import ( "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands/git_commands" "github.com/jesseduffield/lazygit/pkg/commands/models" + "github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/style" "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/utils" @@ -53,7 +54,7 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions refreshOptions := types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true} - return self.c.WithWaitingStatus(waitingStatus, func(gocui.Task) error { + f := func(gocui.Task) error { if err := self.c.Git().Branch.Checkout(ref, cmdOptions); err != nil { // note, this will only work for english-language git commands. If we force git to use english, and the error isn't this one, then the user will receive an english command they may not understand. I'm not sure what the best solution to this is. Running the command once in english and a second time in the native language is one option @@ -93,6 +94,75 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions onSuccess() return self.c.Refresh(refreshOptions) + } + + localBranch, found := lo.Find(self.c.Model().Branches, func(branch *models.Branch) bool { + return branch.Name == ref + }) + if found { + return self.c.WithInlineStatus(localBranch, types.ItemOperationCheckingOut, context.LOCAL_BRANCHES_CONTEXT_KEY, f) + } else { + return self.c.WithWaitingStatus(waitingStatus, f) + } +} + +// Shows a prompt to choose between creating a new branch or checking out a detached head +func (self *RefsHelper) CheckoutRemoteBranch(fullBranchName string, localBranchName string) error { + checkout := func(branchName string) error { + // Switch to the branches context _before_ starting to check out the + // branch, so that we see the inline status + if self.c.CurrentContext() != self.c.Contexts().Branches { + if err := self.c.PushContext(self.c.Contexts().Branches); err != nil { + return err + } + } + return self.CheckoutRef(branchName, types.CheckoutRefOptions{}) + } + + // If a branch with this name already exists locally, just check it out. We + // don't bother checking whether it actually tracks this remote branch, since + // it's very unlikely that it doesn't. + if lo.ContainsBy(self.c.Model().Branches, func(branch *models.Branch) bool { + return branch.Name == localBranchName + }) { + return checkout(localBranchName) + } + + return self.c.Menu(types.CreateMenuOptions{ + Title: utils.ResolvePlaceholderString(self.c.Tr.RemoteBranchCheckoutTitle, map[string]string{ + "branchName": fullBranchName, + }), + Items: []*types.MenuItem{ + { + Label: self.c.Tr.CheckoutTypeNewBranch, + Tooltip: self.c.Tr.CheckoutTypeNewBranchTooltip, + OnPress: func() error { + // First create the local branch with the upstream set, and + // then check it out. We could do that in one step using + // "git checkout -b", but we want to benefit from all the + // nice features of the CheckoutRef function. + if err := self.c.Git().Branch.CreateWithUpstream(localBranchName, fullBranchName); err != nil { + return self.c.Error(err) + } + // Do a sync refresh to make sure the new branch is visible, + // so that we see an inline status when checking it out + if err := self.c.Refresh(types.RefreshOptions{ + Mode: types.SYNC, + Scope: []types.RefreshableView{types.BRANCHES}, + }); err != nil { + return err + } + return checkout(localBranchName) + }, + }, + { + Label: self.c.Tr.CheckoutTypeDetachedHead, + Tooltip: self.c.Tr.CheckoutTypeDetachedHeadTooltip, + OnPress: func() error { + return checkout(fullBranchName) + }, + }, + }, }) } @@ -232,3 +302,21 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest func SanitizedBranchName(input string) string { return strings.Replace(input, " ", "-", -1) } + +// Checks if the given branch name is a remote branch, and returns the name of +// the remote and the bare branch name if it is. +func (self *RefsHelper) ParseRemoteBranchName(fullBranchName string) (string, string, bool) { + remoteName, branchName, found := strings.Cut(fullBranchName, "/") + if !found { + return "", "", false + } + + // See if the part before the first slash is actually one of our remotes + if !lo.ContainsBy(self.c.Model().Remotes, func(remote *models.Remote) bool { + return remote.Name == remoteName + }) { + return "", "", false + } + + return remoteName, branchName, true +} diff --git a/pkg/gui/controllers/helpers/search_helper.go b/pkg/gui/controllers/helpers/search_helper.go index 9ceea2f90c3..c317209499c 100644 --- a/pkg/gui/controllers/helpers/search_helper.go +++ b/pkg/gui/controllers/helpers/search_helper.go @@ -218,7 +218,7 @@ func (self *SearchHelper) OnPromptContentChanged(searchString string) { case types.IFilterableContext: context.SetSelection(0) _ = context.GetView().SetOriginY(0) - context.SetFilter(searchString) + context.SetFilter(searchString, self.c.UserConfig.Gui.UseFuzzySearch()) _ = self.c.PostRefreshUpdate(context) case types.ISearchableContext: // do nothing @@ -234,7 +234,7 @@ func (self *SearchHelper) ReApplyFilter(context types.Context) { if ok { filterableContext.SetSelection(0) _ = filterableContext.GetView().SetOriginY(0) - filterableContext.ReApplyFilter() + filterableContext.ReApplyFilter(self.c.UserConfig.Gui.UseFuzzySearch()) } } } diff --git a/pkg/gui/controllers/helpers/suggestions_helper.go b/pkg/gui/controllers/helpers/suggestions_helper.go index 2ae9d21586c..ff8aeea71de 100644 --- a/pkg/gui/controllers/helpers/suggestions_helper.go +++ b/pkg/gui/controllers/helpers/suggestions_helper.go @@ -3,6 +3,7 @@ package helpers import ( "fmt" "os" + "strings" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands/models" @@ -65,7 +66,7 @@ func matchesToSuggestions(matches []string) []*types.Suggestion { func (self *SuggestionsHelper) GetRemoteSuggestionsFunc() func(string) []*types.Suggestion { remoteNames := self.getRemoteNames() - return FuzzySearchFunc(remoteNames) + return FilterFunc(remoteNames, self.c.UserConfig.Gui.UseFuzzySearch()) } func (self *SuggestionsHelper) getBranchNames() []string { @@ -82,7 +83,7 @@ func (self *SuggestionsHelper) GetBranchNameSuggestionsFunc() func(string) []*ty if input == "" { matchingBranchNames = branchNames } else { - matchingBranchNames = utils.FuzzySearch(input, branchNames) + matchingBranchNames = utils.FilterStrings(input, branchNames, self.c.UserConfig.Gui.UseFuzzySearch()) } return lo.Map(matchingBranchNames, func(branchName string, _ int) *types.Suggestion { @@ -128,13 +129,26 @@ func (self *SuggestionsHelper) GetFilePathSuggestionsFunc() func(string) []*type return func(input string) []*types.Suggestion { matchingNames := []string{} - _ = self.c.Model().FilesTrie.VisitFuzzy(patricia.Prefix(input), true, func(prefix patricia.Prefix, item patricia.Item, skipped int) error { - matchingNames = append(matchingNames, item.(string)) - return nil - }) + if self.c.UserConfig.Gui.UseFuzzySearch() { + _ = self.c.Model().FilesTrie.VisitFuzzy(patricia.Prefix(input), true, func(prefix patricia.Prefix, item patricia.Item, skipped int) error { + matchingNames = append(matchingNames, item.(string)) + return nil + }) - // doing another fuzzy search for good measure - matchingNames = utils.FuzzySearch(input, matchingNames) + // doing another fuzzy search for good measure + matchingNames = utils.FilterStrings(input, matchingNames, true) + } else { + substrings := strings.Fields(input) + _ = self.c.Model().FilesTrie.Visit(func(prefix patricia.Prefix, item patricia.Item) error { + for _, sub := range substrings { + if !utils.CaseAwareContains(item.(string), sub) { + return nil + } + } + matchingNames = append(matchingNames, item.(string)) + return nil + }) + } return matchesToSuggestions(matchingNames) } @@ -149,7 +163,7 @@ func (self *SuggestionsHelper) getRemoteBranchNames(separator string) []string { } func (self *SuggestionsHelper) GetRemoteBranchesSuggestionsFunc(separator string) func(string) []*types.Suggestion { - return FuzzySearchFunc(self.getRemoteBranchNames(separator)) + return FilterFunc(self.getRemoteBranchNames(separator), self.c.UserConfig.Gui.UseFuzzySearch()) } func (self *SuggestionsHelper) getTagNames() []string { @@ -161,7 +175,7 @@ func (self *SuggestionsHelper) getTagNames() []string { func (self *SuggestionsHelper) GetTagsSuggestionsFunc() func(string) []*types.Suggestion { tagNames := self.getTagNames() - return FuzzySearchFunc(tagNames) + return FilterFunc(tagNames, self.c.UserConfig.Gui.UseFuzzySearch()) } func (self *SuggestionsHelper) GetRefsSuggestionsFunc() func(string) []*types.Suggestion { @@ -172,7 +186,7 @@ func (self *SuggestionsHelper) GetRefsSuggestionsFunc() func(string) []*types.Su refNames := append(append(append(remoteBranchNames, localBranchNames...), tagNames...), additionalRefNames...) - return FuzzySearchFunc(refNames) + return FilterFunc(refNames, self.c.UserConfig.Gui.UseFuzzySearch()) } func (self *SuggestionsHelper) GetAuthorsSuggestionsFunc() func(string) []*types.Suggestion { @@ -182,16 +196,16 @@ func (self *SuggestionsHelper) GetAuthorsSuggestionsFunc() func(string) []*types slices.Sort(authors) - return FuzzySearchFunc(authors) + return FilterFunc(authors, self.c.UserConfig.Gui.UseFuzzySearch()) } -func FuzzySearchFunc(options []string) func(string) []*types.Suggestion { +func FilterFunc(options []string, useFuzzySearch bool) func(string) []*types.Suggestion { return func(input string) []*types.Suggestion { var matches []string if input == "" { matches = options } else { - matches = utils.FuzzySearch(input, options) + matches = utils.FilterStrings(input, options, useFuzzySearch) } return matchesToSuggestions(matches) diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 0855046620b..fe15a37d34c 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -106,7 +106,7 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ Handler: self.withItemsRange(self.drop), GetDisabledReason: self.require( self.itemRangeSelected( - self.midRebaseCommandEnabled, + self.canDropCommits, ), ), Description: self.c.Tr.DropCommit, @@ -179,7 +179,7 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ Key: opts.GetKey(opts.Config.Commits.MoveDownCommit), Handler: self.withItemsRange(self.moveDown), GetDisabledReason: self.require(self.itemRangeSelected( - self.midRebaseCommandEnabled, + self.midRebaseMoveCommandEnabled, self.canMoveDown, )), Description: self.c.Tr.MoveDownCommit, @@ -188,7 +188,7 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ Key: opts.GetKey(opts.Config.Commits.MoveUpCommit), Handler: self.withItemsRange(self.moveUp), GetDisabledReason: self.require(self.itemRangeSelected( - self.midRebaseCommandEnabled, + self.midRebaseMoveCommandEnabled, self.canMoveUp, )), Description: self.c.Tr.MoveUpCommit, @@ -282,7 +282,7 @@ func (self *LocalCommitsController) GetOnRenderToMain() func() error { utils.ResolvePlaceholderString( self.c.Tr.UpdateRefHere, map[string]string{ - "ref": commit.Name, + "ref": strings.TrimPrefix(commit.Name, "refs/heads/"), })) } else { cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath()) @@ -439,6 +439,36 @@ func (self *LocalCommitsController) rewordEditor(commit *models.Commit) error { func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, startIdx int, endIdx int) error { if self.isRebasing() { + groupedTodos := lo.GroupBy(selectedCommits, func(c *models.Commit) bool { + return c.Action == todo.UpdateRef + }) + updateRefTodos := groupedTodos[true] + nonUpdateRefTodos := groupedTodos[false] + + if len(updateRefTodos) > 0 { + return self.c.Confirm(types.ConfirmOpts{ + Title: self.c.Tr.DropCommitTitle, + Prompt: self.c.Tr.DropUpdateRefPrompt, + HandleConfirm: func() error { + selectedIdx, rangeStartIdx, rangeSelectMode := self.context().GetSelectionRangeAndMode() + + if err := self.c.Git().Rebase.DeleteUpdateRefTodos(updateRefTodos); err != nil { + return err + } + + if selectedIdx > rangeStartIdx { + selectedIdx = utils.Max(selectedIdx-len(updateRefTodos), rangeStartIdx) + } else { + rangeStartIdx = utils.Max(rangeStartIdx-len(updateRefTodos), selectedIdx) + } + + self.context().SetSelectionRangeAndMode(selectedIdx, rangeStartIdx, rangeSelectMode) + + return self.updateTodos(todo.Drop, nonUpdateRefTodos) + }, + }) + } + return self.updateTodos(todo.Drop, selectedCommits) } @@ -1192,6 +1222,49 @@ func (self *LocalCommitsController) midRebaseCommandEnabled(selectedCommits []*m return nil } +// Ensures that if we are mid-rebase, we're only selecting commits that can be moved +func (self *LocalCommitsController) midRebaseMoveCommandEnabled(selectedCommits []*models.Commit, startIdx int, endIdx int) *types.DisabledReason { + if !self.isRebasing() { + return nil + } + + for _, commit := range selectedCommits { + if !commit.IsTODO() { + return &types.DisabledReason{Text: self.c.Tr.MustSelectTodoCommits} + } + + // All todo types that can be edited are allowed to be moved, plus + // update-ref todos + if !isChangeOfRebaseTodoAllowed(commit.Action) && commit.Action != todo.UpdateRef { + return &types.DisabledReason{Text: self.c.Tr.ChangingThisActionIsNotAllowed} + } + } + + return nil +} + +func (self *LocalCommitsController) canDropCommits(selectedCommits []*models.Commit, startIdx int, endIdx int) *types.DisabledReason { + if !self.isRebasing() { + return nil + } + + nonUpdateRefTodos := lo.Filter(selectedCommits, func(c *models.Commit, _ int) bool { + return c.Action != todo.UpdateRef + }) + + for _, commit := range nonUpdateRefTodos { + if !commit.IsTODO() { + return &types.DisabledReason{Text: self.c.Tr.MustSelectTodoCommits} + } + + if !isChangeOfRebaseTodoAllowed(commit.Action) { + return &types.DisabledReason{Text: self.c.Tr.ChangingThisActionIsNotAllowed} + } + } + + return nil +} + // These actions represent standard things you might want to do with a commit, // as opposed to TODO actions like 'merge', 'update-ref', etc. var standardActions = []todo.TodoCommand{ diff --git a/pkg/gui/controllers/remote_branches_controller.go b/pkg/gui/controllers/remote_branches_controller.go index 0cfdfbcd5ba..b46b5dbb1eb 100644 --- a/pkg/gui/controllers/remote_branches_controller.go +++ b/pkg/gui/controllers/remote_branches_controller.go @@ -35,9 +35,8 @@ func NewRemoteBranchesController( func (self *RemoteBranchesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { return []*types.Binding{ { - Key: opts.GetKey(opts.Config.Universal.Select), - // gonna use the exact same handler as the 'n' keybinding because everybody wants this to happen when they checkout a remote branch - Handler: self.withItem(self.newLocalBranch), + Key: opts.GetKey(opts.Config.Universal.Select), + Handler: self.withItem(self.checkoutBranch), GetDisabledReason: self.require(self.singleItemSelected()), Description: self.c.Tr.Checkout, Tooltip: self.c.Tr.RemoteBranchCheckoutTooltip, @@ -184,3 +183,7 @@ func (self *RemoteBranchesController) newLocalBranch(selectedBranch *models.Remo return self.c.Helpers().Refs.NewBranch(selectedBranch.RefName(), selectedBranch.RefName(), nameSuggestion) } + +func (self *RemoteBranchesController) checkoutBranch(selectedBranch *models.RemoteBranch) error { + return self.c.Helpers().Refs.CheckoutRemoteBranch(selectedBranch.FullName(), selectedBranch.Name) +} diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go index bb648cdeb15..67fa7eac250 100644 --- a/pkg/gui/controllers/sync_controller.go +++ b/pkg/gui/controllers/sync_controller.go @@ -196,23 +196,8 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) SetUpstream: opts.setUpstream, }) if err != nil { - if !opts.force && strings.Contains(err.Error(), "Updates were rejected") { - forcePushDisabled := self.c.UserConfig.Git.DisableForcePushing - if forcePushDisabled { - _ = self.c.ErrorMsg(self.c.Tr.UpdatesRejectedAndForcePushDisabled) - return nil - } - _ = self.c.Confirm(types.ConfirmOpts{ - Title: self.c.Tr.ForcePush, - Prompt: self.forcePushPrompt(), - HandleConfirm: func() error { - newOpts := opts - newOpts.force = true - - return self.pushAux(currentBranch, newOpts) - }, - }) - return nil + if strings.Contains(err.Error(), "Updates were rejected") { + return self.c.ErrorMsg(self.c.Tr.UpdatesRejected) } return err } diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index bd4057e41cc..611fdde8c3d 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -342,6 +342,9 @@ func displayCommit( } name := commit.Name + if commit.Action == todo.UpdateRef { + name = strings.TrimPrefix(name, "refs/heads/") + } if parseEmoji { name = emoji.Sprint(name) } diff --git a/pkg/gui/presentation/item_operations.go b/pkg/gui/presentation/item_operations.go index 13415483bc4..b3ebaf8df5f 100644 --- a/pkg/gui/presentation/item_operations.go +++ b/pkg/gui/presentation/item_operations.go @@ -19,6 +19,8 @@ func ItemOperationToString(itemOperation types.ItemOperation, tr *i18n.Translati return tr.DeletingStatus case types.ItemOperationFetching: return tr.FetchingStatus + case types.ItemOperationCheckingOut: + return tr.CheckingOutStatus } return "" diff --git a/pkg/gui/types/common.go b/pkg/gui/types/common.go index 91aec491307..e53260b34fe 100644 --- a/pkg/gui/types/common.go +++ b/pkg/gui/types/common.go @@ -309,6 +309,7 @@ const ( ItemOperationFastForwarding ItemOperationDeleting ItemOperationFetching + ItemOperationCheckingOut ) type HasUrn interface { diff --git a/pkg/gui/types/context.go b/pkg/gui/types/context.go index 92b07a729f2..bb57375f9ee 100644 --- a/pkg/gui/types/context.go +++ b/pkg/gui/types/context.go @@ -102,10 +102,10 @@ type IFilterableContext interface { IListPanelState ISearchHistoryContext - SetFilter(string) + SetFilter(string, bool) GetFilter() string ClearFilter() - ReApplyFilter() + ReApplyFilter(bool) IsFiltering() bool IsFilterableContext() } diff --git a/pkg/i18n/chinese.go b/pkg/i18n/chinese.go index 90d53995d56..3d3c14021af 100644 --- a/pkg/i18n/chinese.go +++ b/pkg/i18n/chinese.go @@ -35,325 +35,324 @@ const chineseIntroPopupMessage = ` // exporting this so we can use it in tests func chineseTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "没有足够的空间来渲染面板", - DiffTitle: "差异", - FilesTitle: "文件", - BranchesTitle: "分支", - CommitsTitle: "提交", - StashTitle: "贮藏", - UnstagedChanges: `未暂存更改`, - StagedChanges: `已暂存更改`, - MainTitle: "主要", - StagingTitle: "正在暂存", - MergingTitle: "正在合并", - NormalTitle: "正常", - CommitSummary: "提交信息", - CredentialsUsername: "用户名", - CredentialsPassword: "密码", - CredentialsPassphrase: "输入 SSH 密钥的密码", - PassUnameWrong: "密码 和/或 用户名错误", - Commit: "提交更改", - AmendLastCommit: "修补最后一次提交", - AmendLastCommitTitle: "修补最后一次提交", - SureToAmend: "您确定要修补上一次提交吗?之后您可以从提交面板更改提交消息。", - NoCommitToAmend: "没有需要提交的修补。", - CommitChangesWithEditor: "提交更改(使用编辑器编辑提交信息)", - StatusTitle: "状态", - Menu: "菜单", - Execute: "执行", - Stage: "切换暂存状态", - ToggleStagedAll: "切换所有文件的暂存状态", - ToggleTreeView: "切换文件树视图", - OpenMergeTool: "打开外部合并工具 (git mergetool)", - Refresh: "刷新", - Push: "推送", - Pull: "拉取", - Scroll: "滚动", - MergeConflictsTitle: "合并冲突", - Checkout: "检出", - NoChangedFiles: "没有更改过文件", - SoftReset: "软重置", - AlreadyCheckedOutBranch: "您已经检出至此分支", - SureForceCheckout: "您确定要强制检出吗?您将丢失所有本地更改", - ForceCheckoutBranch: "强制检出分支", - BranchName: "分支名称", - NewBranchNameBranchOff: "新分支名称(基于 {{.branchName}})", - CantDeleteCheckOutBranch: "您不能删除已检出的分支!", - ForceDeleteBranchMessage: "{{.selectedBranchName}} 还没有被完全合并。您确定要删除它吗?", - RebaseBranch: "将已检出的分支变基到该分支", - CantRebaseOntoSelf: "您不能将分支变基到其自身", - CantMergeBranchIntoItself: "您不能将分支合并到其自身", - ForceCheckout: "强制检出", - CheckoutByName: "按名称检出", - NewBranch: "新分支", - NoBranchesThisRepo: "此仓库中没有分支", - CommitWithoutMessageErr: "您必须编写提交消息才能进行提交", - CloseCancel: "关闭", - Confirm: "确认", - Close: "关闭", - Quit: "退出", - NoCommitsThisBranch: "该分支没有提交", - CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", - Fixup: "修正(fixup)", - SureFixupThisCommit: "您确定要“修正”此提交吗?它将合并到下面的提交中", - SureSquashThisCommit: "您确定要将这个提交压缩到下面的提交中吗?", - Squash: "压缩", - PickCommitTooltip: "选择提交(变基过程中)", - RevertCommit: "还原提交", - Reword: "改写提交", - DropCommit: "删除提交", - MoveDownCommit: "下移提交", - MoveUpCommit: "上移提交", - EditCommitTooltip: "编辑提交", - AmendCommitTooltip: "用已暂存的更改来修补提交", - RewordCommitEditor: "使用编辑器重命名提交", - Error: "错误", - PickHunk: "选中区块", - PickAllHunks: "选中所有区块", - Undo: "撤销", - UndoReflog: "(通过 reflog)撤销「实验功能」", - RedoReflog: "(通过 reflog)重做「实验功能」", - Pop: "应用并删除", - Drop: "删除", - Apply: "应用", - NoStashEntries: "没有贮藏条目", - StashDrop: "删除贮藏", - SureDropStashEntry: "您确定要删除此贮藏条目吗?", - StashPop: "应用并删除贮藏", - SurePopStashEntry: "您确定要应用并删除此贮藏条目吗?", - StashApply: "应用贮藏", - SureApplyStashEntry: "您确定要应用此贮藏条目?", - NoTrackedStagedFilesStash: "没有可以贮藏的已跟踪/暂存文件", - StashChanges: "贮藏更改", - RenameStash: "Rename stash", - RenameStashPrompt: "Rename stash: {{.stashName}}", - OpenConfig: "打开配置文件", - EditConfig: "编辑配置文件", - ForcePush: "强制推送", - ForcePushPrompt: "您的分支已与远程分支不同。按‘esc’取消,或‘enter’强制推送.", - ForcePushDisabled: "您的分支已与远程分支不同, 并且您已经禁用了强行推送", - UpdatesRejectedAndForcePushDisabled: "更新被拒绝,您已禁用强制推送", - CheckForUpdate: "检查更新", - CheckingForUpdates: "正在检查更新…", - OnLatestVersionErr: "已是最新版本", - MajorVersionErr: "新版本 ({{.newVersion}}) 与当前版本 ({{.currentVersion}}) 相比,具有非向后兼容的更改", - CouldNotFindBinaryErr: "在 {{.url}} 处找不到任何二进制文件", - MergeToolTitle: "合并工具", - MergeToolPrompt: "确定要打开 `git mergetool` 吗?", - IntroPopupMessage: chineseIntroPopupMessage, - GitconfigParseErr: `由于存在未加引号的'\'字符,因此 Gogit 无法解析您的 gitconfig 文件。删除它们应该可以解决问题。`, - EditFile: `编辑文件`, - OpenFile: `打开文件`, - IgnoreFile: `添加到 .gitignore`, - RefreshFiles: `刷新文件`, - Merge: `合并到当前检出的分支`, - ConfirmQuit: `您确定要退出吗?`, - SwitchRepo: `切换到最近的仓库`, - AllBranchesLogGraph: `显示所有分支的日志`, - UnsupportedGitService: `不支持的 git 服务`, - CreatePullRequest: `创建抓取请求`, - CopyPullRequestURL: `将抓取请求 URL 复制到剪贴板`, - NoBranchOnRemote: `该分支在远程上不存在. 您需要先将其推送到远程.`, - Fetch: `抓取`, - NoAutomaticGitFetchTitle: `无法自动进行 "git fetch"`, - NoAutomaticGitFetchBody: `Lazygit 不能在私人仓库中使用 "git fetch"; 请在文件面板中使用 'f' 手动运行 "git fetch"`, - FileEnter: `暂存单个 块/行 用于文件, 或 折叠/展开 目录`, - FileStagingRequirements: `只能暂存跟踪文件的单独行`, - StageSelectionTooltip: `切换行暂存状态`, - DiscardSelection: `取消变更 (git reset)`, - ToggleRangeSelect: `切换拖动选择`, - ToggleSelectHunk: `切换选择区块`, - ToggleSelectionForPatch: `添加/移除 行到补丁`, - ToggleStagingView: `切换到其他面板`, - ReturnToFilesPanel: `返回文件面板`, - FastForward: `从上游快进此分支`, - FastForwarding: "抓取并快进", - FoundConflictsTitle: "自动合并失败", - ViewMergeRebaseOptions: "查看 合并/变基 选项", - NotMergingOrRebasing: "您目前既不进行变基也不进行合并", - RecentRepos: "最近的仓库", - MergeOptionsTitle: "合并选项", - RebaseOptionsTitle: "变基选项", - CommitSummaryTitle: "提交讯息", - LocalBranchesTitle: "分支页面", - SearchTitle: "搜索", - TagsTitle: "标签页面", - MenuTitle: "菜单", - RemotesTitle: "远程页面", - RemoteBranchesTitle: "远程分支", - PatchBuildingTitle: "构建补丁中", - InformationTitle: "信息", - SecondaryTitle: "次要", - ReflogCommitsTitle: "Reflog 页面", - GlobalTitle: "全局键绑定", - ConflictsResolved: "已解决所有冲突。是否继续?", - ConfirmMerge: "您确定要将分支 {{.selectedBranch}} 合并到 {{.checkedOutBranch}} 吗?", - FwdNoUpstream: "此分支没有上游,无法快进", - FwdNoLocalUpstream: "此分支的远程未在本地注册,无法快进", - FwdCommitsToPush: "此分支带有尚未推送的提交,无法快进", - ErrorOccurred: "发生错误!请在以下位置创建 issue", - NoRoom: "空间不足", - YouAreHere: "您在这里", - RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交", - CherryPickCopy: "复制提交(拣选)", - PasteCommits: "粘贴提交(拣选)", - SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?", - CherryPick: "拣选 (Cherry-Pick)", - Donate: "捐助", - AskQuestion: "提问咨询", - PrevLine: "选择上一行", - NextLine: "选择下一行", - PrevHunk: "选择上一个区块", - NextHunk: "选择下一个区块", - PrevConflict: "选择上一个冲突", - NextConflict: "选择下一个冲突", - SelectPrevHunk: "选择顶部块", - SelectNextHunk: "选择底部块", - ScrollDown: "向下滚动", - ScrollUp: "向上滚动", - ScrollUpMainWindow: "向上滚动主面板", - ScrollDownMainWindow: "向下滚动主面板", - AmendCommitTitle: "修改提交", - AmendCommitPrompt: "您确定要使用暂存文件来修改此提交吗?", - DropCommitTitle: "删除提交", - DropCommitPrompt: "您确定要删除此提交吗?", - PullingStatus: "正在拉取", - PushingStatus: "正在推送", - FetchingStatus: "正在抓取", - SquashingStatus: "正在压缩", - FixingStatus: "正在修正", - DeletingStatus: "正在删除", - MovingStatus: "正在移动", - RebasingStatus: "正在变基", - AmendingStatus: "正在修改", - CherryPickingStatus: "正在拣选", - UndoingStatus: "正在撤销", - RedoingStatus: "正在重做", - CheckingOutStatus: "长子检出", - CommittingStatus: "正在提交", - CommitFiles: "提交文件", - ViewItemFiles: "查看提交的文件", - CommitFilesTitle: "提交文件", - CheckoutCommitFileTooltip: "检出文件", - DiscardOldFileChangeTooltip: "放弃对此文件的提交更改", - DiscardFileChangesTitle: "放弃文件更改", - DiscardFileChangesPrompt: "您确定要舍弃此提交对该文件的更改吗?如果此文件是在此提交中创建的,它将被删除", - DisabledForGPG: "该功能不适用于使用 GPG 的用户", - CreateRepo: "当前目录不在 git 仓库中。是否在此目录创建一个新的 git 仓库?(y/n): ", - AutoStashTitle: "自动存储?", - AutoStashPrompt: "您必须隐藏并弹出更改以使更改生效。自动执行?(enter/esc)", - StashPrefix: "自动隐藏更改 ", - Discard: "查看'放弃更改'选项", - Cancel: "取消", - DiscardAllChanges: "放弃所有更改", - DiscardUnstagedChanges: "放弃未暂存的变更", - DiscardAllChangesToAllFiles: "清空工作区", - DiscardAnyUnstagedChanges: "丢弃未暂存的变更", - DiscardUntrackedFiles: "丢弃未跟踪的文件", - HardReset: "硬重置", - ViewResetOptions: `查看重置选项`, - CreateFixupCommit: `为此提交创建修正`, - SquashAboveCommitsTooltip: `压缩在所选提交之上的所有“fixup!”提交(自动压缩)`, - CreateFixupCommitTooltip: `创建修正提交`, - SureCreateFixupCommit: `您确定要对 {{.commit}} 创建修正提交吗?`, - ExecuteCustomCommand: "执行自定义命令", - CustomCommand: "自定义命令:", - CommitChangesWithoutHook: "提交更改而无需预先提交钩子", - SkipHookPrefixNotConfigured: "您尚未配置用于跳过钩子的提交消息前缀。请在您的配置中设置 `git.skipHookPrefix ='WIP'`", - ResetTo: `重置为`, - PressEnterToReturn: "按下 Enter 键返回 lazygit", - ViewStashOptions: "查看贮藏选项", - StashAllChanges: "将所有更改加入贮藏", - StashAllChangesKeepIndex: "将已暂存的更改加入贮藏", - StashOptions: "贮藏选项", - NotARepository: "错误:必须在 git 仓库中运行", - Jump: "跳到面板", - ScrollLeftRight: "左右滚动", - ScrollLeft: "向左滚动", - ScrollRight: "向右滚动", - DiscardPatch: "丢弃补丁", - DiscardPatchConfirm: "您一次只能通过一个提交或贮藏条目构建补丁。需要放弃当前补丁吗?", - CantPatchWhileRebasingError: "处于合并或变基状态时,您无法构建修补程序或运行修补程序命令", - ToggleAddToPatch: "补丁中包含的切换文件", - ViewPatchOptions: "查看自定义补丁选项", - PatchOptionsTitle: "补丁选项", - NoPatchError: "尚未创建补丁。你可以在提交中的文件上按下“空格”或使用“回车”添加其中的特定行以开始构建补丁", - EnterCommitFile: "输入文件以将所选行添加到补丁中(或切换目录折叠)", - ExitCustomPatchBuilder: `退出逐行模式`, - EnterUpstream: `以这种格式输入上游:'<远程仓库> <分支名称>'`, - InvalidUpstream: "上游格式无效,格式应当为:' '", - ReturnToRemotesList: `返回远程仓库列表`, - NewRemote: `添加新的远程仓库`, - NewRemoteName: `新远程仓库名称:`, - NewRemoteUrl: `新远程仓库 URL:`, - EditRemoteName: `输入远程仓库 {{.remoteName}} 的新名称:`, - EditRemoteUrl: `输入远程仓库 {{.remoteName}} 的新 URL:`, - RemoveRemote: `删除远程`, - RemoveRemotePrompt: "您确定要删除远程仓库吗?", - DeleteRemoteBranch: "删除远程分支", - DeleteRemoteBranchMessage: "您确定要删除远程分支吗?", - SetUpstream: "设置为检出分支的上游", - SetAsUpstreamTooltip: "设置为检出分支的上游", - SetUpstreamTitle: "设置上游分支", - SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?", - EditRemoteTooltip: "编辑远程仓库", - TagCommit: "标签提交", - TagMenuTitle: "创建标签", - TagNameTitle: "标签名称", - TagMessageTitle: "标签消息", - AnnotatedTag: "附注标签", - LightweightTag: "轻量标签", - PushTagTitle: "将 {{.tagName}} 推送到远程仓库:", - PushTag: "推送标签", - NewTag: "创建标签", - FetchRemoteTooltip: "抓取远程仓库", - FetchingRemoteStatus: "抓取远程仓库中", - CheckoutCommit: "检出提交", - SureCheckoutThisCommit: "您确定要检出此提交吗?", - GitFlowOptions: "显示 git-flow 选项", - NotAGitFlowBranch: "这似乎不是 git flow 分支", - NewGitFlowBranchPrompt: "新的 {{.branchType}} 名称:", - IgnoreTracked: "忽略跟踪文件", - IgnoreTrackedPrompt: "您确定要忽略已跟踪的文件吗?", - ViewResetToUpstreamOptions: "查看上游重置选项", - NextScreenMode: "下一屏模式(正常/半屏/全屏)", - PrevScreenMode: "上一屏模式", - StartSearch: "开始搜索", - Panel: "面板", - Keybindings: "按键绑定", - RenameBranch: "重命名分支", - NewBranchNamePrompt: "输入分支的新名称", - RenameBranchWarning: "该分支正在跟踪远程仓库。此操作将仅会重命名本地分支名称,而不会重命名远程分支的名称。确定继续?", - OpenKeybindingsMenu: "打开菜单", - ResetCherryPick: "重置已拣选(复制)的提交", - NextTab: "下一个标签", - PrevTab: "上一个标签", - CantUndoWhileRebasing: "进行基础调整时无法撤消", - CantRedoWhileRebasing: "变基时无法重做", - MustStashWarning: "将补丁拉出到索引中需要存储和取消存储所做的更改。如果出现问题,您将可以从存储中访问文件。继续?", - MustStashTitle: "必须保存进度", - ConfirmationTitle: "确认面板", - PrevPage: "上一页", - NextPage: "下一页", - GotoTop: "滚动到顶部", - GotoBottom: "滚动到底部", - FilteringBy: "过滤依据", - ResetInParentheses: "(重置)", - OpenFilteringMenu: "查看按路径过滤选项", - FilterBy: "过滤", - ExitFilterMode: "停止按路径过滤", - FilterPathOption: "输入要过滤的路径", - EnterFileName: "输入路径:", - FilteringMenuTitle: "正在过滤", - MustExitFilterModeTitle: "命令不可用", - MustExitFilterModePrompt: "命令在过滤模式下不可用。退出过滤模式?", - Diff: "差异", - EnterRefToDiff: "输入 ref 以 diff", - EnterRefName: "输入 ref:", - ExitDiffMode: "退出差异模式", - DiffingMenuTitle: "正在 diff", - SwapDiff: "反向 diff", - ViewDiffingOptions: "打开 diff 菜单", + NotEnoughSpace: "没有足够的空间来渲染面板", + DiffTitle: "差异", + FilesTitle: "文件", + BranchesTitle: "分支", + CommitsTitle: "提交", + StashTitle: "贮藏", + UnstagedChanges: `未暂存更改`, + StagedChanges: `已暂存更改`, + MainTitle: "主要", + StagingTitle: "正在暂存", + MergingTitle: "正在合并", + NormalTitle: "正常", + CommitSummary: "提交信息", + CredentialsUsername: "用户名", + CredentialsPassword: "密码", + CredentialsPassphrase: "输入 SSH 密钥的密码", + PassUnameWrong: "密码 和/或 用户名错误", + Commit: "提交更改", + AmendLastCommit: "修补最后一次提交", + AmendLastCommitTitle: "修补最后一次提交", + SureToAmend: "您确定要修补上一次提交吗?之后您可以从提交面板更改提交消息。", + NoCommitToAmend: "没有需要提交的修补。", + CommitChangesWithEditor: "提交更改(使用编辑器编辑提交信息)", + StatusTitle: "状态", + Menu: "菜单", + Execute: "执行", + Stage: "切换暂存状态", + ToggleStagedAll: "切换所有文件的暂存状态", + ToggleTreeView: "切换文件树视图", + OpenMergeTool: "打开外部合并工具 (git mergetool)", + Refresh: "刷新", + Push: "推送", + Pull: "拉取", + Scroll: "滚动", + MergeConflictsTitle: "合并冲突", + Checkout: "检出", + NoChangedFiles: "没有更改过文件", + SoftReset: "软重置", + AlreadyCheckedOutBranch: "您已经检出至此分支", + SureForceCheckout: "您确定要强制检出吗?您将丢失所有本地更改", + ForceCheckoutBranch: "强制检出分支", + BranchName: "分支名称", + NewBranchNameBranchOff: "新分支名称(基于 {{.branchName}})", + CantDeleteCheckOutBranch: "您不能删除已检出的分支!", + ForceDeleteBranchMessage: "{{.selectedBranchName}} 还没有被完全合并。您确定要删除它吗?", + RebaseBranch: "将已检出的分支变基到该分支", + CantRebaseOntoSelf: "您不能将分支变基到其自身", + CantMergeBranchIntoItself: "您不能将分支合并到其自身", + ForceCheckout: "强制检出", + CheckoutByName: "按名称检出", + NewBranch: "新分支", + NoBranchesThisRepo: "此仓库中没有分支", + CommitWithoutMessageErr: "您必须编写提交消息才能进行提交", + CloseCancel: "关闭", + Confirm: "确认", + Close: "关闭", + Quit: "退出", + NoCommitsThisBranch: "该分支没有提交", + CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", + Fixup: "修正(fixup)", + SureFixupThisCommit: "您确定要“修正”此提交吗?它将合并到下面的提交中", + SureSquashThisCommit: "您确定要将这个提交压缩到下面的提交中吗?", + Squash: "压缩", + PickCommitTooltip: "选择提交(变基过程中)", + RevertCommit: "还原提交", + Reword: "改写提交", + DropCommit: "删除提交", + MoveDownCommit: "下移提交", + MoveUpCommit: "上移提交", + EditCommitTooltip: "编辑提交", + AmendCommitTooltip: "用已暂存的更改来修补提交", + RewordCommitEditor: "使用编辑器重命名提交", + Error: "错误", + PickHunk: "选中区块", + PickAllHunks: "选中所有区块", + Undo: "撤销", + UndoReflog: "(通过 reflog)撤销「实验功能」", + RedoReflog: "(通过 reflog)重做「实验功能」", + Pop: "应用并删除", + Drop: "删除", + Apply: "应用", + NoStashEntries: "没有贮藏条目", + StashDrop: "删除贮藏", + SureDropStashEntry: "您确定要删除此贮藏条目吗?", + StashPop: "应用并删除贮藏", + SurePopStashEntry: "您确定要应用并删除此贮藏条目吗?", + StashApply: "应用贮藏", + SureApplyStashEntry: "您确定要应用此贮藏条目?", + NoTrackedStagedFilesStash: "没有可以贮藏的已跟踪/暂存文件", + StashChanges: "贮藏更改", + RenameStash: "Rename stash", + RenameStashPrompt: "Rename stash: {{.stashName}}", + OpenConfig: "打开配置文件", + EditConfig: "编辑配置文件", + ForcePush: "强制推送", + ForcePushPrompt: "您的分支已与远程分支不同。按‘esc’取消,或‘enter’强制推送.", + ForcePushDisabled: "您的分支已与远程分支不同, 并且您已经禁用了强行推送", + CheckForUpdate: "检查更新", + CheckingForUpdates: "正在检查更新…", + OnLatestVersionErr: "已是最新版本", + MajorVersionErr: "新版本 ({{.newVersion}}) 与当前版本 ({{.currentVersion}}) 相比,具有非向后兼容的更改", + CouldNotFindBinaryErr: "在 {{.url}} 处找不到任何二进制文件", + MergeToolTitle: "合并工具", + MergeToolPrompt: "确定要打开 `git mergetool` 吗?", + IntroPopupMessage: chineseIntroPopupMessage, + GitconfigParseErr: `由于存在未加引号的'\'字符,因此 Gogit 无法解析您的 gitconfig 文件。删除它们应该可以解决问题。`, + EditFile: `编辑文件`, + OpenFile: `打开文件`, + IgnoreFile: `添加到 .gitignore`, + RefreshFiles: `刷新文件`, + Merge: `合并到当前检出的分支`, + ConfirmQuit: `您确定要退出吗?`, + SwitchRepo: `切换到最近的仓库`, + AllBranchesLogGraph: `显示所有分支的日志`, + UnsupportedGitService: `不支持的 git 服务`, + CreatePullRequest: `创建抓取请求`, + CopyPullRequestURL: `将抓取请求 URL 复制到剪贴板`, + NoBranchOnRemote: `该分支在远程上不存在. 您需要先将其推送到远程.`, + Fetch: `抓取`, + NoAutomaticGitFetchTitle: `无法自动进行 "git fetch"`, + NoAutomaticGitFetchBody: `Lazygit 不能在私人仓库中使用 "git fetch"; 请在文件面板中使用 'f' 手动运行 "git fetch"`, + FileEnter: `暂存单个 块/行 用于文件, 或 折叠/展开 目录`, + FileStagingRequirements: `只能暂存跟踪文件的单独行`, + StageSelectionTooltip: `切换行暂存状态`, + DiscardSelection: `取消变更 (git reset)`, + ToggleRangeSelect: `切换拖动选择`, + ToggleSelectHunk: `切换选择区块`, + ToggleSelectionForPatch: `添加/移除 行到补丁`, + ToggleStagingView: `切换到其他面板`, + ReturnToFilesPanel: `返回文件面板`, + FastForward: `从上游快进此分支`, + FastForwarding: "抓取并快进", + FoundConflictsTitle: "自动合并失败", + ViewMergeRebaseOptions: "查看 合并/变基 选项", + NotMergingOrRebasing: "您目前既不进行变基也不进行合并", + RecentRepos: "最近的仓库", + MergeOptionsTitle: "合并选项", + RebaseOptionsTitle: "变基选项", + CommitSummaryTitle: "提交讯息", + LocalBranchesTitle: "分支页面", + SearchTitle: "搜索", + TagsTitle: "标签页面", + MenuTitle: "菜单", + RemotesTitle: "远程页面", + RemoteBranchesTitle: "远程分支", + PatchBuildingTitle: "构建补丁中", + InformationTitle: "信息", + SecondaryTitle: "次要", + ReflogCommitsTitle: "Reflog 页面", + GlobalTitle: "全局键绑定", + ConflictsResolved: "已解决所有冲突。是否继续?", + ConfirmMerge: "您确定要将分支 {{.selectedBranch}} 合并到 {{.checkedOutBranch}} 吗?", + FwdNoUpstream: "此分支没有上游,无法快进", + FwdNoLocalUpstream: "此分支的远程未在本地注册,无法快进", + FwdCommitsToPush: "此分支带有尚未推送的提交,无法快进", + ErrorOccurred: "发生错误!请在以下位置创建 issue", + NoRoom: "空间不足", + YouAreHere: "您在这里", + RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交", + CherryPickCopy: "复制提交(拣选)", + PasteCommits: "粘贴提交(拣选)", + SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?", + CherryPick: "拣选 (Cherry-Pick)", + Donate: "捐助", + AskQuestion: "提问咨询", + PrevLine: "选择上一行", + NextLine: "选择下一行", + PrevHunk: "选择上一个区块", + NextHunk: "选择下一个区块", + PrevConflict: "选择上一个冲突", + NextConflict: "选择下一个冲突", + SelectPrevHunk: "选择顶部块", + SelectNextHunk: "选择底部块", + ScrollDown: "向下滚动", + ScrollUp: "向上滚动", + ScrollUpMainWindow: "向上滚动主面板", + ScrollDownMainWindow: "向下滚动主面板", + AmendCommitTitle: "修改提交", + AmendCommitPrompt: "您确定要使用暂存文件来修改此提交吗?", + DropCommitTitle: "删除提交", + DropCommitPrompt: "您确定要删除此提交吗?", + PullingStatus: "正在拉取", + PushingStatus: "正在推送", + FetchingStatus: "正在抓取", + SquashingStatus: "正在压缩", + FixingStatus: "正在修正", + DeletingStatus: "正在删除", + MovingStatus: "正在移动", + RebasingStatus: "正在变基", + AmendingStatus: "正在修改", + CherryPickingStatus: "正在拣选", + UndoingStatus: "正在撤销", + RedoingStatus: "正在重做", + CheckingOutStatus: "长子检出", + CommittingStatus: "正在提交", + CommitFiles: "提交文件", + ViewItemFiles: "查看提交的文件", + CommitFilesTitle: "提交文件", + CheckoutCommitFileTooltip: "检出文件", + DiscardOldFileChangeTooltip: "放弃对此文件的提交更改", + DiscardFileChangesTitle: "放弃文件更改", + DiscardFileChangesPrompt: "您确定要舍弃此提交对该文件的更改吗?如果此文件是在此提交中创建的,它将被删除", + DisabledForGPG: "该功能不适用于使用 GPG 的用户", + CreateRepo: "当前目录不在 git 仓库中。是否在此目录创建一个新的 git 仓库?(y/n): ", + AutoStashTitle: "自动存储?", + AutoStashPrompt: "您必须隐藏并弹出更改以使更改生效。自动执行?(enter/esc)", + StashPrefix: "自动隐藏更改 ", + Discard: "查看'放弃更改'选项", + Cancel: "取消", + DiscardAllChanges: "放弃所有更改", + DiscardUnstagedChanges: "放弃未暂存的变更", + DiscardAllChangesToAllFiles: "清空工作区", + DiscardAnyUnstagedChanges: "丢弃未暂存的变更", + DiscardUntrackedFiles: "丢弃未跟踪的文件", + HardReset: "硬重置", + ViewResetOptions: `查看重置选项`, + CreateFixupCommit: `为此提交创建修正`, + SquashAboveCommitsTooltip: `压缩在所选提交之上的所有“fixup!”提交(自动压缩)`, + CreateFixupCommitTooltip: `创建修正提交`, + SureCreateFixupCommit: `您确定要对 {{.commit}} 创建修正提交吗?`, + ExecuteCustomCommand: "执行自定义命令", + CustomCommand: "自定义命令:", + CommitChangesWithoutHook: "提交更改而无需预先提交钩子", + SkipHookPrefixNotConfigured: "您尚未配置用于跳过钩子的提交消息前缀。请在您的配置中设置 `git.skipHookPrefix ='WIP'`", + ResetTo: `重置为`, + PressEnterToReturn: "按下 Enter 键返回 lazygit", + ViewStashOptions: "查看贮藏选项", + StashAllChanges: "将所有更改加入贮藏", + StashAllChangesKeepIndex: "将已暂存的更改加入贮藏", + StashOptions: "贮藏选项", + NotARepository: "错误:必须在 git 仓库中运行", + Jump: "跳到面板", + ScrollLeftRight: "左右滚动", + ScrollLeft: "向左滚动", + ScrollRight: "向右滚动", + DiscardPatch: "丢弃补丁", + DiscardPatchConfirm: "您一次只能通过一个提交或贮藏条目构建补丁。需要放弃当前补丁吗?", + CantPatchWhileRebasingError: "处于合并或变基状态时,您无法构建修补程序或运行修补程序命令", + ToggleAddToPatch: "补丁中包含的切换文件", + ViewPatchOptions: "查看自定义补丁选项", + PatchOptionsTitle: "补丁选项", + NoPatchError: "尚未创建补丁。你可以在提交中的文件上按下“空格”或使用“回车”添加其中的特定行以开始构建补丁", + EnterCommitFile: "输入文件以将所选行添加到补丁中(或切换目录折叠)", + ExitCustomPatchBuilder: `退出逐行模式`, + EnterUpstream: `以这种格式输入上游:'<远程仓库> <分支名称>'`, + InvalidUpstream: "上游格式无效,格式应当为:' '", + ReturnToRemotesList: `返回远程仓库列表`, + NewRemote: `添加新的远程仓库`, + NewRemoteName: `新远程仓库名称:`, + NewRemoteUrl: `新远程仓库 URL:`, + EditRemoteName: `输入远程仓库 {{.remoteName}} 的新名称:`, + EditRemoteUrl: `输入远程仓库 {{.remoteName}} 的新 URL:`, + RemoveRemote: `删除远程`, + RemoveRemotePrompt: "您确定要删除远程仓库吗?", + DeleteRemoteBranch: "删除远程分支", + DeleteRemoteBranchMessage: "您确定要删除远程分支吗?", + SetUpstream: "设置为检出分支的上游", + SetAsUpstreamTooltip: "设置为检出分支的上游", + SetUpstreamTitle: "设置上游分支", + SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?", + EditRemoteTooltip: "编辑远程仓库", + TagCommit: "标签提交", + TagMenuTitle: "创建标签", + TagNameTitle: "标签名称", + TagMessageTitle: "标签消息", + AnnotatedTag: "附注标签", + LightweightTag: "轻量标签", + PushTagTitle: "将 {{.tagName}} 推送到远程仓库:", + PushTag: "推送标签", + NewTag: "创建标签", + FetchRemoteTooltip: "抓取远程仓库", + FetchingRemoteStatus: "抓取远程仓库中", + CheckoutCommit: "检出提交", + SureCheckoutThisCommit: "您确定要检出此提交吗?", + GitFlowOptions: "显示 git-flow 选项", + NotAGitFlowBranch: "这似乎不是 git flow 分支", + NewGitFlowBranchPrompt: "新的 {{.branchType}} 名称:", + IgnoreTracked: "忽略跟踪文件", + IgnoreTrackedPrompt: "您确定要忽略已跟踪的文件吗?", + ViewResetToUpstreamOptions: "查看上游重置选项", + NextScreenMode: "下一屏模式(正常/半屏/全屏)", + PrevScreenMode: "上一屏模式", + StartSearch: "开始搜索", + Panel: "面板", + Keybindings: "按键绑定", + RenameBranch: "重命名分支", + NewBranchNamePrompt: "输入分支的新名称", + RenameBranchWarning: "该分支正在跟踪远程仓库。此操作将仅会重命名本地分支名称,而不会重命名远程分支的名称。确定继续?", + OpenKeybindingsMenu: "打开菜单", + ResetCherryPick: "重置已拣选(复制)的提交", + NextTab: "下一个标签", + PrevTab: "上一个标签", + CantUndoWhileRebasing: "进行基础调整时无法撤消", + CantRedoWhileRebasing: "变基时无法重做", + MustStashWarning: "将补丁拉出到索引中需要存储和取消存储所做的更改。如果出现问题,您将可以从存储中访问文件。继续?", + MustStashTitle: "必须保存进度", + ConfirmationTitle: "确认面板", + PrevPage: "上一页", + NextPage: "下一页", + GotoTop: "滚动到顶部", + GotoBottom: "滚动到底部", + FilteringBy: "过滤依据", + ResetInParentheses: "(重置)", + OpenFilteringMenu: "查看按路径过滤选项", + FilterBy: "过滤", + ExitFilterMode: "停止按路径过滤", + FilterPathOption: "输入要过滤的路径", + EnterFileName: "输入路径:", + FilteringMenuTitle: "正在过滤", + MustExitFilterModeTitle: "命令不可用", + MustExitFilterModePrompt: "命令在过滤模式下不可用。退出过滤模式?", + Diff: "差异", + EnterRefToDiff: "输入 ref 以 diff", + EnterRefName: "输入 ref:", + ExitDiffMode: "退出差异模式", + DiffingMenuTitle: "正在 diff", + SwapDiff: "反向 diff", + ViewDiffingOptions: "打开 diff 菜单", // 实际视图 (actual view) 是附加视图 (extras view),未来,我打算为附加视图提供更多选项卡,但现在,上面的文本只需要提及“命令日志”这个部分 OpenCommandLogMenu: "打开命令日志菜单", ShowingGitDiff: "显示输出:", diff --git a/pkg/i18n/dutch.go b/pkg/i18n/dutch.go index 7e8a89707ca..b785dddee85 100644 --- a/pkg/i18n/dutch.go +++ b/pkg/i18n/dutch.go @@ -2,336 +2,335 @@ package i18n func dutchTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "Niet genoeg ruimte om de panelen te renderen", - DiffTitle: "Diff", - FilesTitle: "Bestanden", - BranchesTitle: "Branches", - CommitsTitle: "Commits", - StashTitle: "Stash", - UnstagedChanges: "Unstaged wijzigingen", - StagedChanges: "Staged wijzigingen", - MainTitle: "Hoofd", - StagingTitle: "Staging", - NormalTitle: "Normaal", - CommitSummary: "Commitbericht", - CredentialsUsername: "Gebruikersnaam", - CredentialsPassword: "Wachtwoord", - CredentialsPassphrase: "Voer een wachtwoordzin in voor de SSH-sleutel", - PassUnameWrong: "Wachtwoord en/of gebruikersnaam verkeerd", - Commit: "Commit veranderingen", - AmendLastCommit: "Wijzig laatste commit", - AmendLastCommitTitle: "Wijzig laatste commit", - SureToAmend: "Weet je zeker dat je de laatste commit wilt wijzigen? U kunt het commit-bericht wijzigen vanuit het commits-paneel.", - NoCommitToAmend: "Er is geen commits om te wijzigen.", - CommitChangesWithEditor: "Commit veranderingen met de git editor", - StatusTitle: "Status", - Menu: "Menu", - Execute: "Uitvoeren", - Stage: "Toggle staged", - ToggleStagedAll: "Toggle staged alle", - Refresh: "Verversen", - Push: "Push", - Pull: "Pull", - Scroll: "Scroll", - FilterStagedFiles: "Show only staged files", - FilterUnstagedFiles: "Show only unstaged files", - ResetFilter: "Reset commit file state filter", - MergeConflictsTitle: "Merge conflicten", - Checkout: "Uitchecken", - SoftReset: "Zacht reset", - AlreadyCheckedOutBranch: "Je hebt deze branch al uitgecheckt", - SureForceCheckout: "Weet je zeker dat je het uitchecken wil forceren? Al je lokale verandering zullen worden verwijdert", - ForceCheckoutBranch: "Forceer uitchecken op deze branch", - BranchName: "Branch naam", - NewBranchNameBranchOff: "Nieuw branch naam (Branch is afgeleid van '{{.branchName}}')", - CantDeleteCheckOutBranch: "Je kan een uitgecheckte branch niet verwijderen!", - ForceDeleteBranchMessage: "Weet je zeker dat je branch '{{.selectedBranchName}}' geforceerd wil verwijderen?", - RebaseBranch: "Rebase branch", - CantRebaseOntoSelf: "Je kan niet een branch rebasen op zichzelf", - CantMergeBranchIntoItself: "Je kan niet een branch in zichzelf mergen", - ForceCheckout: "Forceer checkout", - CheckoutByName: "Uitchecken bij naam", - NewBranch: "Nieuwe branch", - NoBranchesThisRepo: "Geen branches voor deze repo", - CommitWithoutMessageErr: "Je kan geen commit maken zonder commit bericht", - CloseCancel: "Sluiten", - Confirm: "Bevestig", - Close: "Sluiten", - Quit: "Quit", - CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", - Fixup: "Fixup", - SureFixupThisCommit: "Weet je zeker dat je fixup wil uitvoeren op deze commit? De commit hieronder zol worden squashed in deze", - SureSquashThisCommit: "Weet je zeker dat je deze commit wil samenvoegen met de commit hieronder?", - Squash: "Squash", - PickCommitTooltip: "Kies commit (wanneer midden in rebase)", - RevertCommit: "Commit ongedaan maken", - Reword: "Hernoem commit", - DropCommit: "Verwijder commit", - MoveDownCommit: "Verplaats commit 1 naar beneden", - MoveUpCommit: "Verplaats commit 1 naar boven", - EditCommitTooltip: "Wijzig commit", - AmendCommitTooltip: "Wijzig commit met staged veranderingen", - RewordCommitEditor: "Hernoem commit met editor", - NoCommitsThisBranch: "Geen commits in deze branch", - Error: "Foutmelding", - PickHunk: "Kies stuk", - PickAllHunks: "Kies beide stukken", - Undo: "Ongedaan maken", - UndoReflog: "Ongedaan maken (via reflog) (experimenteel)", - RedoReflog: "Redo (via reflog) (experimenteel)", - Pop: "Pop", - Drop: "Laten vallen", - Apply: "Toepassen", - NoStashEntries: "Geen stash items", - StashDrop: "Stash laten vallen", - SureDropStashEntry: "Weet je het zeker dat je deze stash entry wil laten vallen?", - StashPop: "Stash pop", - SurePopStashEntry: "Weet je zeker dat je deze stash entry wil poppen?", - StashApply: "Stash toepassen", - SureApplyStashEntry: "Weet je zeker dat je deze stash entry wil toepassen?", - NoTrackedStagedFilesStash: "Je hebt geen tracked/staged bestanden om te laten stashen", - StashChanges: "Stash veranderingen", - RenameStash: "Rename stash", - RenameStashPrompt: "Rename stash: {{.stashName}}", - NoChangedFiles: "Geen veranderde bestanden", - OpenConfig: "Open config bestand", - EditConfig: "Verander config bestand", - ForcePush: "Forceer push", - ForcePushPrompt: "Jouw branch is afgeweken van de remote branch. Druk 'esc' om te annuleren, of 'enter' om geforceert te pushen.", - ForcePushDisabled: "Your branch has diverged from the remote branch and you've disabled force pushing", - UpdatesRejectedAndForcePushDisabled: "Updates were rejected and you have disabled force pushing", - CheckForUpdate: "Check voor updates", - CheckingForUpdates: "Zoeken naar updates...", - OnLatestVersionErr: "Je hebt al de laatste versie", - MajorVersionErr: "Nieuwe versie ({{.newVersion}}) is niet backwards compatibele vergeleken met de huidige versie ({{.currentVersion}})", - CouldNotFindBinaryErr: "Kon geen binary vinden op {{.url}}", - IntroPopupMessage: "Bedankt voor het gebruik maken van lazygit! 2 dingen die je moet weten:\n\n1) Als je meer van lazygit zijn features wilt leren bekijk dan deze video:\n https://youtu.be/CPLdltN7wgE\n\n2) Als je git gebruikt, ben je een programmeur! Met jouw hulp kunnen we lazygit verbeteren, dus overweeg om een ​​donateur te worden en mee te doen aan het plezier op\n https://github.com/jesseduffield/lazygit", - GitconfigParseErr: `Gogit kon je gitconfig bestand niet goed parsen door de aanwezigheid van losstaande '\' tekens. Het weghalen van deze tekens zou het probleem moeten oplossen. `, - EditFile: `Verander bestand`, - OpenFile: `Open bestand`, - IgnoreFile: `Voeg toe aan .gitignore`, - RefreshFiles: `Refresh bestanden`, - Merge: `Merge in met huidige checked out branch`, - ConfirmQuit: `Weet je zeker dat je dit programma wil sluiten?`, - SwitchRepo: "Wissel naar een recente repo", - AllBranchesLogGraph: `Alle logs van de branch laten zien`, - UnsupportedGitService: `Niet-ondersteunde git-service`, - CreatePullRequest: `Maak een pull-request`, - CopyPullRequestURL: `Kopieer de URL van het pull-verzoek naar het klembord`, - NoBranchOnRemote: `Deze branch bestaat niet op de remote. U moet het eerst naar de remote pushen.`, - Fetch: `Fetch`, - NoAutomaticGitFetchTitle: `Geen automatische git fetch`, - NoAutomaticGitFetchBody: `Lazygit kan niet "git fetch" uitvoeren in een privé repository, gebruik f in het branches paneel om "git fetch" manueel uit te voeren`, - FileEnter: `Stage individuele hunks/lijnen`, - FileStagingRequirements: `Kan alleen individuele lijnen stagen van getrackte bestanden met onstaged veranderingen`, - StageSelectionTooltip: `Toggle lijnen staged / unstaged`, - DiscardSelection: `Verwijdert change (git reset)`, - ToggleRangeSelect: `Toggle drag selecteer`, - ToggleSelectHunk: `Toggle selecteer hunk`, - ToggleSelectionForPatch: `Voeg toe/verwijder lijn(en) in patch`, - ToggleStagingView: `Ga naar een ander paneel`, - ReturnToFilesPanel: `Ga terug naar het bestanden paneel`, - FastForward: `Fast-forward deze branch vanaf zijn upstream`, - FastForwarding: "Fast-forwarding", - FoundConflictsTitle: "Conflicten!", - ViewMergeRebaseOptions: "Bekijk merge/rebase opties", - NotMergingOrRebasing: "Je bent momenteel niet aan het rebasen of mergen", - RecentRepos: "Recente repositories", - MergeOptionsTitle: "Merge opties", - RebaseOptionsTitle: "Rebase opties", - CommitSummaryTitle: "Commit bericht", - LocalBranchesTitle: "Branches", - SearchTitle: "Zoek", - TagsTitle: "Tags", - MenuTitle: "Menu", - RemotesTitle: "Remotes", - RemoteBranchesTitle: "Remote branches", - PatchBuildingTitle: "Patch bouwen", - InformationTitle: "Informatie", - SecondaryTitle: "Secondary", - ReflogCommitsTitle: "Reflog", - GlobalTitle: "Globale sneltoetsen", - ConflictsResolved: "Alle merge conflicten zijn opgelost. Wilt je verder gaan?", - MergingTitle: "Mergen", - ConfirmMerge: "Weet je zeker dat je '{{.selectedBranch}}' in '{{.checkedOutBranch}}' wil mergen?", - FwdNoUpstream: "Kan niet de branch vooruitspoelen zonder upstream", - FwdCommitsToPush: "Je kan niet vooruitspoelen als de branch geen nieuwe commits heeft", - ErrorOccurred: "Er is iets fout gegaan! Zou je hier een issue aan willen maken", - NoRoom: "Niet genoeg ruimte", - YouAreHere: "JE BENT HIER", - RewordNotSupported: "Herformatteren van commits in interactief rebasen is nog niet ondersteund", - CherryPickCopy: "Kopieer commit (cherry-pick)", - PasteCommits: "Plak commits (cherry-pick)", - SureCherryPick: "Weet je zeker dat je de gekopieerde commits naar deze branch wil cherry-picken?", - CherryPick: "Cherry-Pick", - Donate: "Doneer", - PrevLine: "Selecteer de vorige lijn", - NextLine: "Selecteer de volgende lijn", - PrevHunk: "Selecteer de vorige hunk", - NextHunk: "Selecteer de volgende hunk", - PrevConflict: "Selecteer voorgaand conflict", - NextConflict: "Selecteer volgende conflict", - SelectPrevHunk: "Selecteer bovenste hunk", - SelectNextHunk: "Selecteer onderste hunk", - ScrollDown: "Scroll omlaag", - ScrollUp: "Scroll omhoog", - ScrollUpMainWindow: "Scroll naar beneden vanaf hoofdpaneel", - ScrollDownMainWindow: "Scroll naar beneden vanaf hoofdpaneel", - AmendCommitTitle: "Commit wijzigen", - AmendCommitPrompt: "Weet je zeker dat je deze commit wil wijzigen met de vorige staged bestanden?", - DropCommitTitle: "Verwijder commit", - DropCommitPrompt: "Weet je zeker dat je deze commit wil verwijderen?", - PullingStatus: "Pullen", - PushingStatus: "Pushen", - FetchingStatus: "Fetchen", - SquashingStatus: "Squashen", - FixingStatus: "Fixing up", - DeletingStatus: "Verwijderen", - MovingStatus: "Verplaatsen", - RebasingStatus: "Rebasen", - AmendingStatus: "Wijzigen", - CherryPickingStatus: "Cherry-picken", - UndoingStatus: "Ongedaan maken", - RedoingStatus: "Redoing", - CheckingOutStatus: "Uitchecken", - CommitFiles: "Commit bestanden", - ViewItemFiles: "Bekijk gecommite bestanden", - CommitFilesTitle: "Commit bestanden", - CheckoutCommitFileTooltip: "Bestand uitchecken", - DiscardOldFileChangeTooltip: "Uitsluit deze commit zijn veranderingen aan dit bestand", - DiscardFileChangesTitle: "Uitsluit bestand zijn veranderingen", - DiscardFileChangesPrompt: "Weet je zeker dat je de wijzigingen van deze commit in dit bestand wilt weggooien? Als dit bestand is gecreëerd in deze commit dan zal dit bestand worden verwijdert", - DisabledForGPG: "Onderdelen niet beschikbaar voor gebruikers die GPG gebruiken", - CreateRepo: "Niet in een git repository. Creëer een nieuwe git repository? (y/n): ", - AutoStashTitle: "Autostash?", - AutoStashPrompt: "Je moet je veranderingen stashen en poppen om ze over te brengen. Dit automatisch doen? (enter/esc)", - StashPrefix: "Auto-stashing veranderingen voor ", - Discard: "Bekijk 'veranderingen ongedaan maken' opties", - Cancel: "Annuleren", - DiscardAllChanges: "Negeer alle wijzigingen", - DiscardUnstagedChanges: "Negeer unstaged wijzigingen", - DiscardAllChangesToAllFiles: "Verwijder werkende tree", - DiscardAnyUnstagedChanges: "Gooi unstaged wijzigingen weg", - DiscardUntrackedFiles: "Negeer niet-gevonden bestanden", - ViewResetOptions: `Bekijk reset opties`, - HardReset: "Harde reset", - CreateFixupCommit: `Creëer fixup commit voor deze commit`, - SquashAboveCommitsTooltip: `Squash bovenstaande commits`, - CreateFixupCommitTooltip: `Creëer fixup commit`, - SureCreateFixupCommit: `Weet je zeker dat je een fixup wil maken! commit voor commit {{.commit}}?`, - ExecuteCustomCommand: "Voer aangepaste commando uit", - CustomCommand: "Aangepaste commando:", - CommitChangesWithoutHook: "Commit veranderingen zonder pre-commit hook", - SkipHookPrefixNotConfigured: "Je hebt nog niet een commit bericht voorvoegsel ingesteld voor het overslaan van hooks. Set `git.skipHookPrefix = 'WIP'` in je config", - ResetTo: `Reset naar`, - PressEnterToReturn: "Press om terug te gaan naar lazygit", - ViewStashOptions: "Bekijk stash opties", - StashAllChanges: "Stash-bestanden", - StashAllChangesKeepIndex: "Stash staged wijzigingen", - StashOptions: "Stash opties", - NotARepository: "Fout: moet in een git repository uitgevoerd worden", - Jump: "Ga naar paneel", - DiscardPatch: "Patch weg gooien", - DiscardPatchConfirm: "Je kan alleen maar een patch bouwen van 1 commit. Huidige patch weggooien?", - CantPatchWhileRebasingError: "Je kan geen patch bouwen of patch commando uitvoeren wanneer je in een merging of rebasing state zit", - ToggleAddToPatch: "Toggle bestand inbegrepen in patch", - ViewPatchOptions: "Bekijk aangepaste patch opties", - PatchOptionsTitle: "Patch opties", - NoPatchError: "Nog geen patch gecreëerd. Om een patch te bouwen gebruik 'space' op een commit bestand of 'enter' om een spesiefieke lijnen toe te voegen", - EnterCommitFile: "Enter bestand om geselecteerde regels toe te voegen aan de patch", - ExitCustomPatchBuilder: `Sluit lijn-bij-lijn modus`, - EnterUpstream: `Enter upstream als ' '`, - ReturnToRemotesList: `Ga terug naar remotes lijst`, - NewRemote: `Voeg een nieuwe remote toe`, - NewRemoteName: `Nieuwe remote name:`, - NewRemoteUrl: `Nieuwe remote url:`, - EditRemoteName: `Enter updated remote naam voor {{.remoteName}}:`, - EditRemoteUrl: `Enter updated remote url voor {{.remoteName}}:`, - RemoveRemote: `Verwijder remote`, - RemoveRemotePrompt: "Weet je zeker dat je deze remote wilt verwijderen", - DeleteRemoteBranch: "Verwijder remote branch", - DeleteRemoteBranchMessage: "Weet je zeker dat je deze remote branch wilt verwijderen", - SetUpstream: "Stel in als upstream van uitgecheckte branch", - SetAsUpstreamTooltip: "Stel in als upstream van uitgecheckte branch", - SetUpstreamTitle: "Stel in als upstream branch", - SetUpstreamMessage: "Weet je zeker dat je de upstream branch van '{{.checkedOut}}' naar '{{.selected}}' wilt zetten", - EditRemoteTooltip: "Wijzig remote", - TagCommit: "Tag commit", - TagNameTitle: "Tag naam:", - PushTagTitle: "Remote om tag '{{.tagName}}' te pushen naar:", - PushTag: "Push tag", - NewTag: "Creëer tag", - FetchRemoteTooltip: "Fetch remote", - FetchingRemoteStatus: "Remote fetchen", - CheckoutCommit: "Checkout commit", - SureCheckoutThisCommit: "Weet je zeker dat je deze commit wil uitchecken?", - GitFlowOptions: "Laat git-flow opties zien", - NotAGitFlowBranch: "Dit lijkt geen git flow branch te zijn", - NewGitFlowBranchPrompt: "Nieuwe '{{.branchType}}' naam:", - IgnoreTracked: "Negeer tracked bestand", - IgnoreTrackedPrompt: "Weet je zeker dat je een getracked bestand wil negeren?", - ViewResetToUpstreamOptions: "Bekijk upstream reset opties", - NextScreenMode: "Volgende scherm modus (normaal/half/groot)", - PrevScreenMode: "Vorige scherm modus", - StartSearch: "Start met zoeken", - Panel: "Paneel", - Keybindings: "Sneltoetsen", - RenameBranch: "Hernoem branch", - NewBranchNamePrompt: "Noem een nieuwe branch naam", - RenameBranchWarning: "Deze branch volgt een remote. Deze actie zal alleen de locale branch name wijzigen niet de naam van de remote branch. Verder gaan?", - OpenKeybindingsMenu: "Open menu", - ResetCherryPick: "Reset cherry-picked (gekopieerde) commits selectie", - NextTab: "Volgende tabblad", - PrevTab: "Vorige tabblad", - CantUndoWhileRebasing: "Kan niet ongedaan maken terwijl je aan het rebasen bent", - CantRedoWhileRebasing: "Kan niet opnieuw doen (redo) terwijl je aan het rebasen bent", - MustStashWarning: "Een patch in de index stoppen vereist stashen en onstashen van je wijzigingen. Als er iets verkeert gaat kan je je bestanden terug vinden in de stash. Verder gaan?", - MustStashTitle: "Moet stashen", - ConfirmationTitle: "Bevestigingspaneel", - PrevPage: "Vorige pagina", - NextPage: "Volgende pagina", - GotoTop: "Scroll naar boven", - GotoBottom: "Scroll naar beneden", - FilteringBy: "Filteren bij", - ResetInParentheses: "(reset)", - OpenFilteringMenu: "Bekijk scoping opties", - FilterBy: "Filter bij", - ExitFilterMode: "Stop met filteren bij pad", - FilterPathOption: "Vulin pad om op te filteren", - EnterFileName: "Vulin path:", - FilteringMenuTitle: "Filteren", - MustExitFilterModeTitle: "Command niet beschikbaar", - MustExitFilterModePrompt: "Command niet beschikbaar in filter modus. Sluit filter modus?", - Diff: "Diff", - EnterRefToDiff: "Vul in ref naar diff", - EnterRefName: "Vul in ref:", - ExitDiffMode: "Sluit diff mode", - DiffingMenuTitle: "Diffen", - SwapDiff: "Keer diff richting om", - ViewDiffingOptions: "Open diff menu", - ShowingGitDiff: "Laat output zien voor:", - CopyCommitShaToClipboard: "Kopieer commit SHA naar klembord", - CopyCommitMessageToClipboard: "Kopieer commit bericht naar klembord", - CopyBranchNameToClipboard: "Kopieer branch name naar klembord", - CopyPathToClipboard: "Kopieer de bestandsnaam naar het klembord", - CommitPrefixPatternError: "Fout in commitPrefix patroon", - NoFilesStagedTitle: "Geen bestanden gestaged", - NoFilesStagedPrompt: "Je hebt geen bestanden gestaged. Commit alle bestanden?", - BranchNotFoundTitle: "Branch niet gevonden", - BranchNotFoundPrompt: "Branch niet gevonden. Creëer een nieuwe branch genaamd", - PullRequestURLCopiedToClipboard: "Pull-aanvraag-URL gekopieerd naar klembord", - CommitMessageCopiedToClipboard: "Commit message gekopieerd naar klembord", - CopiedToClipboard: "Gekopieerd naar klembord", - NavigationTitle: "Lijstpaneel navigatie", - ViewCommits: "Bekijk commits", - ToggleTreeView: "Toggle bestandsboom weergave", - CreateNewBranchFromCommit: "Creëer nieuwe branch van commit", - CopySubmoduleNameToClipboard: "Kopieer submodule naam naar klembord", - EnterSubmoduleTooltip: "Enter submodule", - NewSubmodule: "Voeg nieuwe submodule toe", - InitSubmoduleTooltip: "Initialiseer submodule", - ViewBulkSubmoduleOptions: "Bekijk bulk submodule opties", - CreatePullRequestOptions: "Bekijk opties voor pull-aanvraag", - ConfirmRevertCommit: "Weet u zeker dat u {{.selectedCommit}} ongedaan wilt maken?", + NotEnoughSpace: "Niet genoeg ruimte om de panelen te renderen", + DiffTitle: "Diff", + FilesTitle: "Bestanden", + BranchesTitle: "Branches", + CommitsTitle: "Commits", + StashTitle: "Stash", + UnstagedChanges: "Unstaged wijzigingen", + StagedChanges: "Staged wijzigingen", + MainTitle: "Hoofd", + StagingTitle: "Staging", + NormalTitle: "Normaal", + CommitSummary: "Commitbericht", + CredentialsUsername: "Gebruikersnaam", + CredentialsPassword: "Wachtwoord", + CredentialsPassphrase: "Voer een wachtwoordzin in voor de SSH-sleutel", + PassUnameWrong: "Wachtwoord en/of gebruikersnaam verkeerd", + Commit: "Commit veranderingen", + AmendLastCommit: "Wijzig laatste commit", + AmendLastCommitTitle: "Wijzig laatste commit", + SureToAmend: "Weet je zeker dat je de laatste commit wilt wijzigen? U kunt het commit-bericht wijzigen vanuit het commits-paneel.", + NoCommitToAmend: "Er is geen commits om te wijzigen.", + CommitChangesWithEditor: "Commit veranderingen met de git editor", + StatusTitle: "Status", + Menu: "Menu", + Execute: "Uitvoeren", + Stage: "Toggle staged", + ToggleStagedAll: "Toggle staged alle", + Refresh: "Verversen", + Push: "Push", + Pull: "Pull", + Scroll: "Scroll", + FilterStagedFiles: "Show only staged files", + FilterUnstagedFiles: "Show only unstaged files", + ResetFilter: "Reset commit file state filter", + MergeConflictsTitle: "Merge conflicten", + Checkout: "Uitchecken", + SoftReset: "Zacht reset", + AlreadyCheckedOutBranch: "Je hebt deze branch al uitgecheckt", + SureForceCheckout: "Weet je zeker dat je het uitchecken wil forceren? Al je lokale verandering zullen worden verwijdert", + ForceCheckoutBranch: "Forceer uitchecken op deze branch", + BranchName: "Branch naam", + NewBranchNameBranchOff: "Nieuw branch naam (Branch is afgeleid van '{{.branchName}}')", + CantDeleteCheckOutBranch: "Je kan een uitgecheckte branch niet verwijderen!", + ForceDeleteBranchMessage: "Weet je zeker dat je branch '{{.selectedBranchName}}' geforceerd wil verwijderen?", + RebaseBranch: "Rebase branch", + CantRebaseOntoSelf: "Je kan niet een branch rebasen op zichzelf", + CantMergeBranchIntoItself: "Je kan niet een branch in zichzelf mergen", + ForceCheckout: "Forceer checkout", + CheckoutByName: "Uitchecken bij naam", + NewBranch: "Nieuwe branch", + NoBranchesThisRepo: "Geen branches voor deze repo", + CommitWithoutMessageErr: "Je kan geen commit maken zonder commit bericht", + CloseCancel: "Sluiten", + Confirm: "Bevestig", + Close: "Sluiten", + Quit: "Quit", + CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", + Fixup: "Fixup", + SureFixupThisCommit: "Weet je zeker dat je fixup wil uitvoeren op deze commit? De commit hieronder zol worden squashed in deze", + SureSquashThisCommit: "Weet je zeker dat je deze commit wil samenvoegen met de commit hieronder?", + Squash: "Squash", + PickCommitTooltip: "Kies commit (wanneer midden in rebase)", + RevertCommit: "Commit ongedaan maken", + Reword: "Hernoem commit", + DropCommit: "Verwijder commit", + MoveDownCommit: "Verplaats commit 1 naar beneden", + MoveUpCommit: "Verplaats commit 1 naar boven", + EditCommitTooltip: "Wijzig commit", + AmendCommitTooltip: "Wijzig commit met staged veranderingen", + RewordCommitEditor: "Hernoem commit met editor", + NoCommitsThisBranch: "Geen commits in deze branch", + Error: "Foutmelding", + PickHunk: "Kies stuk", + PickAllHunks: "Kies beide stukken", + Undo: "Ongedaan maken", + UndoReflog: "Ongedaan maken (via reflog) (experimenteel)", + RedoReflog: "Redo (via reflog) (experimenteel)", + Pop: "Pop", + Drop: "Laten vallen", + Apply: "Toepassen", + NoStashEntries: "Geen stash items", + StashDrop: "Stash laten vallen", + SureDropStashEntry: "Weet je het zeker dat je deze stash entry wil laten vallen?", + StashPop: "Stash pop", + SurePopStashEntry: "Weet je zeker dat je deze stash entry wil poppen?", + StashApply: "Stash toepassen", + SureApplyStashEntry: "Weet je zeker dat je deze stash entry wil toepassen?", + NoTrackedStagedFilesStash: "Je hebt geen tracked/staged bestanden om te laten stashen", + StashChanges: "Stash veranderingen", + RenameStash: "Rename stash", + RenameStashPrompt: "Rename stash: {{.stashName}}", + NoChangedFiles: "Geen veranderde bestanden", + OpenConfig: "Open config bestand", + EditConfig: "Verander config bestand", + ForcePush: "Forceer push", + ForcePushPrompt: "Jouw branch is afgeweken van de remote branch. Druk 'esc' om te annuleren, of 'enter' om geforceert te pushen.", + ForcePushDisabled: "Your branch has diverged from the remote branch and you've disabled force pushing", + CheckForUpdate: "Check voor updates", + CheckingForUpdates: "Zoeken naar updates...", + OnLatestVersionErr: "Je hebt al de laatste versie", + MajorVersionErr: "Nieuwe versie ({{.newVersion}}) is niet backwards compatibele vergeleken met de huidige versie ({{.currentVersion}})", + CouldNotFindBinaryErr: "Kon geen binary vinden op {{.url}}", + IntroPopupMessage: "Bedankt voor het gebruik maken van lazygit! 2 dingen die je moet weten:\n\n1) Als je meer van lazygit zijn features wilt leren bekijk dan deze video:\n https://youtu.be/CPLdltN7wgE\n\n2) Als je git gebruikt, ben je een programmeur! Met jouw hulp kunnen we lazygit verbeteren, dus overweeg om een ​​donateur te worden en mee te doen aan het plezier op\n https://github.com/jesseduffield/lazygit", + GitconfigParseErr: `Gogit kon je gitconfig bestand niet goed parsen door de aanwezigheid van losstaande '\' tekens. Het weghalen van deze tekens zou het probleem moeten oplossen. `, + EditFile: `Verander bestand`, + OpenFile: `Open bestand`, + IgnoreFile: `Voeg toe aan .gitignore`, + RefreshFiles: `Refresh bestanden`, + Merge: `Merge in met huidige checked out branch`, + ConfirmQuit: `Weet je zeker dat je dit programma wil sluiten?`, + SwitchRepo: "Wissel naar een recente repo", + AllBranchesLogGraph: `Alle logs van de branch laten zien`, + UnsupportedGitService: `Niet-ondersteunde git-service`, + CreatePullRequest: `Maak een pull-request`, + CopyPullRequestURL: `Kopieer de URL van het pull-verzoek naar het klembord`, + NoBranchOnRemote: `Deze branch bestaat niet op de remote. U moet het eerst naar de remote pushen.`, + Fetch: `Fetch`, + NoAutomaticGitFetchTitle: `Geen automatische git fetch`, + NoAutomaticGitFetchBody: `Lazygit kan niet "git fetch" uitvoeren in een privé repository, gebruik f in het branches paneel om "git fetch" manueel uit te voeren`, + FileEnter: `Stage individuele hunks/lijnen`, + FileStagingRequirements: `Kan alleen individuele lijnen stagen van getrackte bestanden met onstaged veranderingen`, + StageSelectionTooltip: `Toggle lijnen staged / unstaged`, + DiscardSelection: `Verwijdert change (git reset)`, + ToggleRangeSelect: `Toggle drag selecteer`, + ToggleSelectHunk: `Toggle selecteer hunk`, + ToggleSelectionForPatch: `Voeg toe/verwijder lijn(en) in patch`, + ToggleStagingView: `Ga naar een ander paneel`, + ReturnToFilesPanel: `Ga terug naar het bestanden paneel`, + FastForward: `Fast-forward deze branch vanaf zijn upstream`, + FastForwarding: "Fast-forwarding", + FoundConflictsTitle: "Conflicten!", + ViewMergeRebaseOptions: "Bekijk merge/rebase opties", + NotMergingOrRebasing: "Je bent momenteel niet aan het rebasen of mergen", + RecentRepos: "Recente repositories", + MergeOptionsTitle: "Merge opties", + RebaseOptionsTitle: "Rebase opties", + CommitSummaryTitle: "Commit bericht", + LocalBranchesTitle: "Branches", + SearchTitle: "Zoek", + TagsTitle: "Tags", + MenuTitle: "Menu", + RemotesTitle: "Remotes", + RemoteBranchesTitle: "Remote branches", + PatchBuildingTitle: "Patch bouwen", + InformationTitle: "Informatie", + SecondaryTitle: "Secondary", + ReflogCommitsTitle: "Reflog", + GlobalTitle: "Globale sneltoetsen", + ConflictsResolved: "Alle merge conflicten zijn opgelost. Wilt je verder gaan?", + MergingTitle: "Mergen", + ConfirmMerge: "Weet je zeker dat je '{{.selectedBranch}}' in '{{.checkedOutBranch}}' wil mergen?", + FwdNoUpstream: "Kan niet de branch vooruitspoelen zonder upstream", + FwdCommitsToPush: "Je kan niet vooruitspoelen als de branch geen nieuwe commits heeft", + ErrorOccurred: "Er is iets fout gegaan! Zou je hier een issue aan willen maken", + NoRoom: "Niet genoeg ruimte", + YouAreHere: "JE BENT HIER", + RewordNotSupported: "Herformatteren van commits in interactief rebasen is nog niet ondersteund", + CherryPickCopy: "Kopieer commit (cherry-pick)", + PasteCommits: "Plak commits (cherry-pick)", + SureCherryPick: "Weet je zeker dat je de gekopieerde commits naar deze branch wil cherry-picken?", + CherryPick: "Cherry-Pick", + Donate: "Doneer", + PrevLine: "Selecteer de vorige lijn", + NextLine: "Selecteer de volgende lijn", + PrevHunk: "Selecteer de vorige hunk", + NextHunk: "Selecteer de volgende hunk", + PrevConflict: "Selecteer voorgaand conflict", + NextConflict: "Selecteer volgende conflict", + SelectPrevHunk: "Selecteer bovenste hunk", + SelectNextHunk: "Selecteer onderste hunk", + ScrollDown: "Scroll omlaag", + ScrollUp: "Scroll omhoog", + ScrollUpMainWindow: "Scroll naar beneden vanaf hoofdpaneel", + ScrollDownMainWindow: "Scroll naar beneden vanaf hoofdpaneel", + AmendCommitTitle: "Commit wijzigen", + AmendCommitPrompt: "Weet je zeker dat je deze commit wil wijzigen met de vorige staged bestanden?", + DropCommitTitle: "Verwijder commit", + DropCommitPrompt: "Weet je zeker dat je deze commit wil verwijderen?", + PullingStatus: "Pullen", + PushingStatus: "Pushen", + FetchingStatus: "Fetchen", + SquashingStatus: "Squashen", + FixingStatus: "Fixing up", + DeletingStatus: "Verwijderen", + MovingStatus: "Verplaatsen", + RebasingStatus: "Rebasen", + AmendingStatus: "Wijzigen", + CherryPickingStatus: "Cherry-picken", + UndoingStatus: "Ongedaan maken", + RedoingStatus: "Redoing", + CheckingOutStatus: "Uitchecken", + CommitFiles: "Commit bestanden", + ViewItemFiles: "Bekijk gecommite bestanden", + CommitFilesTitle: "Commit bestanden", + CheckoutCommitFileTooltip: "Bestand uitchecken", + DiscardOldFileChangeTooltip: "Uitsluit deze commit zijn veranderingen aan dit bestand", + DiscardFileChangesTitle: "Uitsluit bestand zijn veranderingen", + DiscardFileChangesPrompt: "Weet je zeker dat je de wijzigingen van deze commit in dit bestand wilt weggooien? Als dit bestand is gecreëerd in deze commit dan zal dit bestand worden verwijdert", + DisabledForGPG: "Onderdelen niet beschikbaar voor gebruikers die GPG gebruiken", + CreateRepo: "Niet in een git repository. Creëer een nieuwe git repository? (y/n): ", + AutoStashTitle: "Autostash?", + AutoStashPrompt: "Je moet je veranderingen stashen en poppen om ze over te brengen. Dit automatisch doen? (enter/esc)", + StashPrefix: "Auto-stashing veranderingen voor ", + Discard: "Bekijk 'veranderingen ongedaan maken' opties", + Cancel: "Annuleren", + DiscardAllChanges: "Negeer alle wijzigingen", + DiscardUnstagedChanges: "Negeer unstaged wijzigingen", + DiscardAllChangesToAllFiles: "Verwijder werkende tree", + DiscardAnyUnstagedChanges: "Gooi unstaged wijzigingen weg", + DiscardUntrackedFiles: "Negeer niet-gevonden bestanden", + ViewResetOptions: `Bekijk reset opties`, + HardReset: "Harde reset", + CreateFixupCommit: `Creëer fixup commit voor deze commit`, + SquashAboveCommitsTooltip: `Squash bovenstaande commits`, + CreateFixupCommitTooltip: `Creëer fixup commit`, + SureCreateFixupCommit: `Weet je zeker dat je een fixup wil maken! commit voor commit {{.commit}}?`, + ExecuteCustomCommand: "Voer aangepaste commando uit", + CustomCommand: "Aangepaste commando:", + CommitChangesWithoutHook: "Commit veranderingen zonder pre-commit hook", + SkipHookPrefixNotConfigured: "Je hebt nog niet een commit bericht voorvoegsel ingesteld voor het overslaan van hooks. Set `git.skipHookPrefix = 'WIP'` in je config", + ResetTo: `Reset naar`, + PressEnterToReturn: "Press om terug te gaan naar lazygit", + ViewStashOptions: "Bekijk stash opties", + StashAllChanges: "Stash-bestanden", + StashAllChangesKeepIndex: "Stash staged wijzigingen", + StashOptions: "Stash opties", + NotARepository: "Fout: moet in een git repository uitgevoerd worden", + Jump: "Ga naar paneel", + DiscardPatch: "Patch weg gooien", + DiscardPatchConfirm: "Je kan alleen maar een patch bouwen van 1 commit. Huidige patch weggooien?", + CantPatchWhileRebasingError: "Je kan geen patch bouwen of patch commando uitvoeren wanneer je in een merging of rebasing state zit", + ToggleAddToPatch: "Toggle bestand inbegrepen in patch", + ViewPatchOptions: "Bekijk aangepaste patch opties", + PatchOptionsTitle: "Patch opties", + NoPatchError: "Nog geen patch gecreëerd. Om een patch te bouwen gebruik 'space' op een commit bestand of 'enter' om een spesiefieke lijnen toe te voegen", + EnterCommitFile: "Enter bestand om geselecteerde regels toe te voegen aan de patch", + ExitCustomPatchBuilder: `Sluit lijn-bij-lijn modus`, + EnterUpstream: `Enter upstream als ' '`, + ReturnToRemotesList: `Ga terug naar remotes lijst`, + NewRemote: `Voeg een nieuwe remote toe`, + NewRemoteName: `Nieuwe remote name:`, + NewRemoteUrl: `Nieuwe remote url:`, + EditRemoteName: `Enter updated remote naam voor {{.remoteName}}:`, + EditRemoteUrl: `Enter updated remote url voor {{.remoteName}}:`, + RemoveRemote: `Verwijder remote`, + RemoveRemotePrompt: "Weet je zeker dat je deze remote wilt verwijderen", + DeleteRemoteBranch: "Verwijder remote branch", + DeleteRemoteBranchMessage: "Weet je zeker dat je deze remote branch wilt verwijderen", + SetUpstream: "Stel in als upstream van uitgecheckte branch", + SetAsUpstreamTooltip: "Stel in als upstream van uitgecheckte branch", + SetUpstreamTitle: "Stel in als upstream branch", + SetUpstreamMessage: "Weet je zeker dat je de upstream branch van '{{.checkedOut}}' naar '{{.selected}}' wilt zetten", + EditRemoteTooltip: "Wijzig remote", + TagCommit: "Tag commit", + TagNameTitle: "Tag naam:", + PushTagTitle: "Remote om tag '{{.tagName}}' te pushen naar:", + PushTag: "Push tag", + NewTag: "Creëer tag", + FetchRemoteTooltip: "Fetch remote", + FetchingRemoteStatus: "Remote fetchen", + CheckoutCommit: "Checkout commit", + SureCheckoutThisCommit: "Weet je zeker dat je deze commit wil uitchecken?", + GitFlowOptions: "Laat git-flow opties zien", + NotAGitFlowBranch: "Dit lijkt geen git flow branch te zijn", + NewGitFlowBranchPrompt: "Nieuwe '{{.branchType}}' naam:", + IgnoreTracked: "Negeer tracked bestand", + IgnoreTrackedPrompt: "Weet je zeker dat je een getracked bestand wil negeren?", + ViewResetToUpstreamOptions: "Bekijk upstream reset opties", + NextScreenMode: "Volgende scherm modus (normaal/half/groot)", + PrevScreenMode: "Vorige scherm modus", + StartSearch: "Start met zoeken", + Panel: "Paneel", + Keybindings: "Sneltoetsen", + RenameBranch: "Hernoem branch", + NewBranchNamePrompt: "Noem een nieuwe branch naam", + RenameBranchWarning: "Deze branch volgt een remote. Deze actie zal alleen de locale branch name wijzigen niet de naam van de remote branch. Verder gaan?", + OpenKeybindingsMenu: "Open menu", + ResetCherryPick: "Reset cherry-picked (gekopieerde) commits selectie", + NextTab: "Volgende tabblad", + PrevTab: "Vorige tabblad", + CantUndoWhileRebasing: "Kan niet ongedaan maken terwijl je aan het rebasen bent", + CantRedoWhileRebasing: "Kan niet opnieuw doen (redo) terwijl je aan het rebasen bent", + MustStashWarning: "Een patch in de index stoppen vereist stashen en onstashen van je wijzigingen. Als er iets verkeert gaat kan je je bestanden terug vinden in de stash. Verder gaan?", + MustStashTitle: "Moet stashen", + ConfirmationTitle: "Bevestigingspaneel", + PrevPage: "Vorige pagina", + NextPage: "Volgende pagina", + GotoTop: "Scroll naar boven", + GotoBottom: "Scroll naar beneden", + FilteringBy: "Filteren bij", + ResetInParentheses: "(reset)", + OpenFilteringMenu: "Bekijk scoping opties", + FilterBy: "Filter bij", + ExitFilterMode: "Stop met filteren bij pad", + FilterPathOption: "Vulin pad om op te filteren", + EnterFileName: "Vulin path:", + FilteringMenuTitle: "Filteren", + MustExitFilterModeTitle: "Command niet beschikbaar", + MustExitFilterModePrompt: "Command niet beschikbaar in filter modus. Sluit filter modus?", + Diff: "Diff", + EnterRefToDiff: "Vul in ref naar diff", + EnterRefName: "Vul in ref:", + ExitDiffMode: "Sluit diff mode", + DiffingMenuTitle: "Diffen", + SwapDiff: "Keer diff richting om", + ViewDiffingOptions: "Open diff menu", + ShowingGitDiff: "Laat output zien voor:", + CopyCommitShaToClipboard: "Kopieer commit SHA naar klembord", + CopyCommitMessageToClipboard: "Kopieer commit bericht naar klembord", + CopyBranchNameToClipboard: "Kopieer branch name naar klembord", + CopyPathToClipboard: "Kopieer de bestandsnaam naar het klembord", + CommitPrefixPatternError: "Fout in commitPrefix patroon", + NoFilesStagedTitle: "Geen bestanden gestaged", + NoFilesStagedPrompt: "Je hebt geen bestanden gestaged. Commit alle bestanden?", + BranchNotFoundTitle: "Branch niet gevonden", + BranchNotFoundPrompt: "Branch niet gevonden. Creëer een nieuwe branch genaamd", + PullRequestURLCopiedToClipboard: "Pull-aanvraag-URL gekopieerd naar klembord", + CommitMessageCopiedToClipboard: "Commit message gekopieerd naar klembord", + CopiedToClipboard: "Gekopieerd naar klembord", + NavigationTitle: "Lijstpaneel navigatie", + ViewCommits: "Bekijk commits", + ToggleTreeView: "Toggle bestandsboom weergave", + CreateNewBranchFromCommit: "Creëer nieuwe branch van commit", + CopySubmoduleNameToClipboard: "Kopieer submodule naam naar klembord", + EnterSubmoduleTooltip: "Enter submodule", + NewSubmodule: "Voeg nieuwe submodule toe", + InitSubmoduleTooltip: "Initialiseer submodule", + ViewBulkSubmoduleOptions: "Bekijk bulk submodule opties", + CreatePullRequestOptions: "Bekijk opties voor pull-aanvraag", + ConfirmRevertCommit: "Weet u zeker dat u {{.selectedCommit}} ongedaan wilt maken?", } } diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 1ec3af2c1b4..29b78f601d7 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -113,6 +113,11 @@ type TranslationSet struct { ForceCheckoutTooltip string CheckoutByName string CheckoutByNameTooltip string + RemoteBranchCheckoutTitle string + CheckoutTypeNewBranch string + CheckoutTypeNewBranchTooltip string + CheckoutTypeDetachedHead string + CheckoutTypeDetachedHeadTooltip string NewBranch string NewBranchFromStashTooltip string NoBranchesThisRepo string @@ -192,7 +197,7 @@ type TranslationSet struct { ForcePush string ForcePushPrompt string ForcePushDisabled string - UpdatesRejectedAndForcePushDisabled string + UpdatesRejected string CheckForUpdate string CheckingForUpdates string UpdateAvailableTitle string @@ -325,6 +330,7 @@ type TranslationSet struct { AmendCommitPrompt string DropCommitTitle string DropCommitPrompt string + DropUpdateRefPrompt string PullingStatus string PushingStatus string FetchingStatus string @@ -1025,7 +1031,7 @@ func EnglishTranslationSet() TranslationSet { CheckoutTooltip: "Checkout selected item.", CantCheckoutBranchWhilePulling: "You cannot checkout another branch while pulling the current branch", TagCheckoutTooltip: "Checkout the selected tag tag as a detached HEAD.", - RemoteBranchCheckoutTooltip: "Checkout a new local branch based on the selected remote branch. The new branch will track the remote branch.", + RemoteBranchCheckoutTooltip: "Checkout a new local branch based on the selected remote branch, or the remote branch as a detached head.", CantPullOrPushSameBranchTwice: "You cannot push or pull a branch while it is already being pushed or pulled", FileFilter: "Filter files by status", CopyToClipboardMenu: "Copy to clipboard", @@ -1064,6 +1070,11 @@ func EnglishTranslationSet() TranslationSet { ForceCheckoutTooltip: "Force checkout selected branch. This will discard all local changes in your working directory before checking out the selected branch.", CheckoutByName: "Checkout by name", CheckoutByNameTooltip: "Checkout by name. In the input box you can enter '-' to switch to the last branch.", + RemoteBranchCheckoutTitle: "Checkout {{.branchName}}", + CheckoutTypeNewBranch: "New local branch", + CheckoutTypeNewBranchTooltip: "Checkout the remote branch as a local branch, tracking the remote branch.", + CheckoutTypeDetachedHead: "Detached head", + CheckoutTypeDetachedHeadTooltip: "Checkout the remote branch as a detached head, which can be useful if you just want to test the branch but not work on it yourself. You can still create a local branch from it later.", NewBranch: "New branch", NewBranchFromStashTooltip: "Create a new branch from the selected stash entry. This works by git checking out the commit that the stash entry was created from, creating a new branch from that commit, then applying the stash entry to the new branch as an additional commit.", NoBranchesThisRepo: "No branches for this repo", @@ -1144,7 +1155,7 @@ func EnglishTranslationSet() TranslationSet { ForcePush: "Force push", ForcePushPrompt: "Your branch has diverged from the remote branch. Press {{.cancelKey}} to cancel, or {{.confirmKey}} to force push.", ForcePushDisabled: "Your branch has diverged from the remote branch and you've disabled force pushing", - UpdatesRejectedAndForcePushDisabled: "Updates were rejected and you have disabled force pushing", + UpdatesRejected: "Updates were rejected. Please fetch and examine the remote changes before pushing again.", CheckForUpdate: "Check for update", CheckingForUpdates: "Checking for updates...", UpdateAvailableTitle: "Update available!", @@ -1280,6 +1291,7 @@ func EnglishTranslationSet() TranslationSet { AmendCommitPrompt: "Are you sure you want to amend this commit with your staged files?", DropCommitTitle: "Drop commit", DropCommitPrompt: "Are you sure you want to drop the selected commit(s)?", + DropUpdateRefPrompt: "Are you sure you want to delete the selected update-ref todo(s)? This is irreversible except by aborting the rebase.", PullingStatus: "Pulling", PushingStatus: "Pushing", FetchingStatus: "Fetching", @@ -1893,6 +1905,11 @@ keybinding: - Squashing fixups using 'shift-S' now brings up a menu, with the default option being to squash all fixup commits in the branch. The original behaviour of only squashing fixup commits above the selected commit is still available as the second option in that menu. - Push/pull/fetch loading statuses are now shown against the branch rather than in a popup. This allows you to e.g. fetch multiple branches in parallel and see the status for each branch. - The git log graph in the commits view is now always shown by default (previously it was only shown when the view was maximised). If you find this too noisy, you can change it back via ctrl+L -> 'Show git graph' -> 'when maximised' +- Pressing space on a remote branch used to show a prompt for entering a name for a new local branch to check out from the remote branch. Now it just checks out the remote branch directly, letting you choose between a new local branch with the same name, or a detached head. The old behavior is still available via the 'n' keybinding. +- Filtering (e.g. when pressing '/') is less fuzzy by default; it only matches substrings now. Multiple substrings can be matched by separating them with spaces. If you want to revert to the old behavior, set the following in your config: + +gui: + filterMode: 'fuzzy' `, }, } diff --git a/pkg/i18n/korean.go b/pkg/i18n/korean.go index fdfb96c0add..751c64ff2b8 100644 --- a/pkg/i18n/korean.go +++ b/pkg/i18n/korean.go @@ -19,272 +19,271 @@ lazygit!를 이용해주셔서 감사합니다. Seriously you rock. Three things // exporting this so we can use it in tests func koreanTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "패널을 렌더링 할 공간이 부족합니다.", - DiffTitle: "Diff", - FilesTitle: "파일", - BranchesTitle: "브랜치", - CommitsTitle: "커밋", - StashTitle: "Stash", - UnstagedChanges: `Staged되지 않은 변경 내용`, - StagedChanges: `Staged된 변경 내용`, - MainTitle: "메인", - MergeConfirmTitle: "병합", - StagingTitle: "메인 패널 (Staging)", - MergingTitle: "메인 패널 (Merging)", - NormalTitle: "메인 패널 (Normal)", - LogTitle: "로그", - CommitSummary: "커밋 메시지", - CredentialsUsername: "사용자 이름", - CredentialsPassword: "패스워드", - CredentialsPassphrase: "SSH키의 passphrase 입력", - PassUnameWrong: "패스워드, passphrase 또는 사용자 이름이 잘못되었습니다.", - Commit: "커밋 변경내용", - AmendLastCommit: "마지맛 커밋 수정", - AmendLastCommitTitle: "마지막 커밋 수정", - SureToAmend: "마지막 커밋을 수정하시겠습니까? 그런 다음 커밋 패널에서 커밋 메시지를 변경할 수 있습니다.", - NoCommitToAmend: "Amend 가능한 커밋이 없습니다.", - CommitChangesWithEditor: "Git 편집기를 사용하여 변경 내용을 커밋합니다.", - StatusTitle: "상태", - Menu: "메뉴", - Execute: "실행", - Stage: "Staged 전환", - ToggleStagedAll: "모든 변경을 Staged/unstaged으로 전환", - ToggleTreeView: "파일 트리뷰로 전환", - OpenMergeTool: "Git mergetool를 열기", - Refresh: "새로고침", - Push: "푸시", - Pull: "업데이트", - Scroll: "스크롤", - MergeConflictsTitle: "병합 충돌 내용", - Checkout: "체크아웃", - FileFilter: "파일을 필터하기 (Staged/unstaged)", - FilterStagedFiles: "Staged된 파일만 표시", - FilterUnstagedFiles: "Stage되지 않은 파일만 표시", - ResetFilter: "필터 리셋", - NoChangedFiles: "변경된 파일이 없습니다.", - SoftReset: "소프트 리셋", - AlreadyCheckedOutBranch: "브랜치가 이미 체크아웃 되었습니다", - SureForceCheckout: "강제로 체크아웃하시겠습니까? 모든 로컬 변경 사항을 잃게 됩니다.", - ForceCheckoutBranch: "브랜치 강제 체크아웃", - BranchName: "브랜치 이름", - NewBranchNameBranchOff: "새 브랜치 이름 (branch is off of '{{.branchName}}')", - CantDeleteCheckOutBranch: "체크아웃하는 브랜치는 삭제할 수 없습니다!", - ForceDeleteBranchMessage: "'{{.selectedBranchName}}'는 완전히 병합되지 않았습니다. 정말 삭제하시겠습니까?", - RebaseBranch: "체크아웃된 브랜치를 이 브랜치에 리베이스", - CantRebaseOntoSelf: "브랜치를 자기 자신에게 리베이스할 수는 없습니다.", - CantMergeBranchIntoItself: "브랜치를 자기 자신에게 병합할 수는 없습니다.", - ForceCheckout: "강제 체크아웃", - CheckoutByName: "이름으로 체크아웃", - NewBranch: "새 브랜치 생성", - NoBranchesThisRepo: "저장소에 브랜치가 존재하지 않습니다.", - CommitWithoutMessageErr: "커밋 메시지를 입력하세요.", - CloseCancel: "닫기/취소", - Confirm: "확인", - Close: "닫기", - Quit: "종료", - NoCommitsThisBranch: "이 브랜치에 커밋이 없습니다.", - CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", - Fixup: "Fixup", - SureFixupThisCommit: "Are you sure you want to 'fixup' this commit? It will be merged into the commit below", - SureSquashThisCommit: "Are you sure you want to squash this commit into the commit below?", - Squash: "Squash", - PickCommitTooltip: "Pick commit (when mid-rebase)", - RevertCommit: "커밋 되돌리기", - Reword: "커밋메시지 변경", - DropCommit: "커밋 삭제", - MoveDownCommit: "커밋을 1개 아래로 이동", - MoveUpCommit: "커밋을 1개 위로 이동", - EditCommitTooltip: "커밋을 편집", - AmendCommitTooltip: "Amend commit with staged changes", - ResetAuthor: "Reset commit author", - SureResetCommitAuthor: "The author field of this commit will be updated to match the configured user. This also renews the author timestamp. Continue?", - RewordCommitEditor: "에디터에서 커밋메시지 수정", - Error: "오류", - PickHunk: "Pick hunk", - PickAllHunks: "Pick all hunks", - Undo: "되돌리기", - UndoReflog: "되돌리기 (reflog) (실험적)", - RedoReflog: "다시 실행 (reflog) (실험적)", - Pop: "Pop", - Drop: "Drop", - Apply: "적용", - NoStashEntries: "Stash가 존재하지 않습니다.", - StashDrop: "Stash를 삭제", - SureDropStashEntry: "정말로 Stash를 삭제하시겠습니까?", - StashPop: "Stash를 pop", - SurePopStashEntry: "정말로 Stash를 pop하시겠습니까?", - StashApply: "Stash 적용", - SureApplyStashEntry: "정말로 Stash를 적용하시겠습니까?", - NoTrackedStagedFilesStash: "You have no tracked/staged files to stash", - StashChanges: "변경을 Stash", - RenameStash: "Rename stash", - RenameStashPrompt: "Rename stash: {{.stashName}}", - OpenConfig: "설정 파일 열기", - EditConfig: "설정 파일 수정", - ForcePush: "강제 푸시", - ForcePushPrompt: "브랜치가 원격 브랜치에서 분기하고 있습니다. 'esc'를 눌러 취소하거나, 'enter'를 눌러 강제로 푸시하세요.", - ForcePushDisabled: "브랜치가 원격 브랜치에서 분기하고 있습니다. force push가 비활성화 되었습니다.", - UpdatesRejectedAndForcePushDisabled: "업데이트가 거부되었으며 강제 푸시를 비활성화했습니다.", - CheckForUpdate: "업데이트 확인", - CheckingForUpdates: "업데이트 확인 중...", - UpdateAvailableTitle: "새로운 업데이트 사용가능!", - UpdateAvailable: "버전 {{.newVersion}} 을(를) 설치하시겠습니까?", - UpdateInProgressWaitingStatus: "업데이트 중", - UpdateCompletedTitle: "업데이트 완료!", - UpdateCompleted: "업데이트 설치에 성공했습니다. lazygit를 재시작해주세요.", - FailedToRetrieveLatestVersionErr: "버전 정보를 받아오는데 실패했습니다.", - OnLatestVersionErr: "이미 최신 버전을 사용하고 있습니다.", - MajorVersionErr: "새 버전 ({{.newVersion}}) 에 현재 버전({{.currentVersion}}) 과 비교할 때 호환되지 않는 변경 사항이 있습니다.", - CouldNotFindBinaryErr: "{{.url}} 에서 바이너리를 찾을 수 없습니다.", - UpdateFailedErr: "업데이트 실패: {{.errMessage}}", - ConfirmQuitDuringUpdateTitle: "현재 업데이트 중입니다.", - ConfirmQuitDuringUpdate: "현재 업데이트를 진행 중입니다.종료하시겠습니까?", - MergeToolTitle: "병합 도구", - MergeToolPrompt: "정말로 `git mergetool`을 여시겠습니까?", - IntroPopupMessage: koreanIntroPopupMessage, - GitconfigParseErr: `따옴표로 묶이지 않은 '\' 문자가 있어서 Gogit이 gitconfig 파일을 분석하지 못했습니다. 이를 제거하면 문제가 해결됩니다.`, - EditFile: `파일 편집`, - OpenFile: `파일 닫기`, - IgnoreFile: `.gitignore에 추가`, - RefreshFiles: `파일 새로고침`, - Merge: `현재 브랜치에 병합`, - ConfirmQuit: `정말로 종료하시겠습니까?`, - SwitchRepo: `최근에 사용한 저장소로 전환`, - AllBranchesLogGraph: `모든 브랜치 로그 표시`, - UnsupportedGitService: `지원되지 않는 Git 서비스입니다.`, - CreatePullRequest: `풀 리퀘스트 생성`, - CopyPullRequestURL: `풀 리퀘스트 URL을 클립보드에 복사`, - NoBranchOnRemote: `브랜치가 원격에 없습니다. 원격에 먼저 푸시해야합니다.`, - Fetch: `Fetch`, - NoAutomaticGitFetchTitle: `자동 git 업데이트) 없음`, - NoAutomaticGitFetchBody: `Lazygit은 private 저장소에서 "git fetch"를 사용할 수 없습니다. 파일 패널에서 'f'를 사용하여 "git fetch"를 수동으로 실행하세요.`, - FileEnter: `Stage individual hunks/lines for file, or collapse/expand for directory`, - FileStagingRequirements: `추적된 파일에 대해 개별 라인만 stage할 수 있습니다.`, - StageSelectionTooltip: `선택한 행을 staged / unstaged`, - DiscardSelection: `변경을 삭제 (git reset)`, - ToggleRangeSelect: `드래그 선택 전환`, - ToggleSelectHunk: `Toggle select hunk`, - ToggleSelectionForPatch: `Line(s)을 패치에 추가/삭제`, - ToggleStagingView: `패널 전환`, - ReturnToFilesPanel: `파일 목록으로 돌아가기`, - FastForward: `Fast-forward this branch from its upstream`, - FastForwarding: "Fast-forwarding", - FoundConflictsTitle: "Auto-merge failed", - ViewMergeRebaseOptions: "View merge/rebase options", - NotMergingOrRebasing: "You are currently neither rebasing nor merging", - RecentRepos: "최근에 사용한 저장소", - MergeOptionsTitle: "Merge options", - RebaseOptionsTitle: "Rebase options", - CommitSummaryTitle: "커밋메시지", - LocalBranchesTitle: "브랜치", - SearchTitle: "검색", - TagsTitle: "태그", - MenuTitle: "메뉴", - RemotesTitle: "원격", - RemoteBranchesTitle: "원격 브랜치", - PatchBuildingTitle: "메인 패널 (Patch Building)", - InformationTitle: "정보", - SecondaryTitle: "Secondary", - ReflogCommitsTitle: "Reflog", - GlobalTitle: "글로벌 키 바인딩", - ConflictsResolved: "모든 병합 충돌이 해결되었습니다. 계속 할까요?", - ConfirmMerge: "정말로 '{{.selectedBranch}}' 을(를) '{{.checkedOutBranch}}'에 병합하시겠습니까?", - FwdNoUpstream: "Cannot fast-forward a branch with no upstream", - FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally", - FwdCommitsToPush: "Cannot fast-forward a branch with commits to push", - ErrorOccurred: "오류가 발생했습니다! issue를 작성해 주세요: ", - NoRoom: "Not enough room", - YouAreHere: "현재 위치", - RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported", - CherryPickCopy: "커밋을 복사 (cherry-pick)", - PasteCommits: "커밋을 붙여넣기 (cherry-pick)", - SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?", - CherryPick: "체리픽", - Donate: "후원", - AskQuestion: "질문하기", - PrevLine: "이전 줄 선택", - NextLine: "다음 줄 선택", - PrevHunk: "이전 hunk를 선택", - NextHunk: "다음 hunk를 선택", - PrevConflict: "이전 충돌을 선택", - NextConflict: "다음 충돌을 선택", - SelectPrevHunk: "이전 hunk를 선택", - SelectNextHunk: "다음 hunk를 선택", - ScrollDown: "아래로 스크롤", - ScrollUp: "위로 스크롤", - ScrollUpMainWindow: "메인 패널을 위로 스크롤", - ScrollDownMainWindow: "메인 패널을 아래로로 스크롤", - AmendCommitTitle: "Amend commit", - AmendCommitPrompt: "Are you sure you want to amend this commit with your staged files?", - DropCommitTitle: "커밋 삭제", - DropCommitPrompt: "정말로 선택한 커밋을 삭제하시겠습니까?", - PullingStatus: "업데이트 중", - PushingStatus: "푸시 중", - FetchingStatus: "패치 중", - SquashingStatus: "Squashing", - FixingStatus: "Fixing up", - DeletingStatus: "Deleting", - MovingStatus: "Moving", - RebasingStatus: "Rebasing", - AmendingStatus: "Amending", - CherryPickingStatus: "Cherry-picking", - UndoingStatus: "Undoing", - RedoingStatus: "Redoing", - CheckingOutStatus: "Checking out", - CommittingStatus: "Committing", - CommitFiles: "Commit files", - SubCommitsDynamicTitle: "커밋 (%s)", - CommitFilesDynamicTitle: "Diff files (%s)", - RemoteBranchesDynamicTitle: "원격브랜치 (%s)", - ViewItemFiles: "View selected item's files", - CommitFilesTitle: "커밋 파일", - CheckoutCommitFileTooltip: "Checkout file", - DiscardOldFileChangeTooltip: "Discard this commit's changes to this file", - DiscardFileChangesTitle: "파일 변경 사항 버리기", - DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? If this file was created in this commit, it will be deleted", - DisabledForGPG: "Feature not available for users using GPG", - CreateRepo: "Git 저장소가 아닙니다. 저장소를 생성하시겠습니까? (y/n): ", - AutoStashTitle: "Autostash?", - AutoStashPrompt: "You must stash and pop your changes to bring them across. Do this automatically? (enter/esc)", - StashPrefix: "Auto-stashing changes for ", - Discard: "View 'discard changes' options", - Cancel: "취소", - DiscardAllChanges: "모든 변경사항 버리기", - DiscardUnstagedChanges: "Discard unstaged changes", - DiscardAllChangesToAllFiles: "Nuke working tree", - DiscardAnyUnstagedChanges: "Discard unstaged changes", - DiscardUntrackedFiles: "Discard untracked files", - HardReset: "Hard reset", - ViewResetOptions: `View reset options`, - CreateFixupCommitTooltip: `Create fixup commit for this commit`, - SquashAboveCommitsTooltip: `Squash all 'fixup!' commits above selected commit (autosquash)`, - CreateFixupCommit: `Create fixup commit`, - SureCreateFixupCommit: `Are you sure you want to create a fixup! commit for commit {{.commit}}?`, - ExecuteCustomCommand: "Execute custom command", - CustomCommand: "Custom command:", - CommitChangesWithoutHook: "Commit changes without pre-commit hook", - SkipHookPrefixNotConfigured: "You have not configured a commit message prefix for skipping hooks. Set `git.skipHookPrefix = 'WIP'` in your config", - ResetTo: `Reset to`, - PressEnterToReturn: "엔터를 눌러 lazygit으로 돌아갑니다.", - ViewStashOptions: "Stash 옵션 보기", - StashAllChanges: "변경사항을 Stash", - StashStagedChanges: "Stash staged changes", - StashOptions: "Stash 옵션", - NotARepository: "Error: must be run inside a git repository", - Jump: "패널로 이동", - ScrollLeftRight: "좌우로 스크롤", - ScrollLeft: "우 스크롤", - ScrollRight: "좌 스크롤", - DiscardPatch: "Patch 버리기", - DiscardPatchConfirm: "You can only build a patch from one commit/stash-entry at a time. Discard current patch?", - CantPatchWhileRebasingError: "You cannot build a patch or run patch commands while in a merging or rebasing state", - ToggleAddToPatch: "Toggle file included in patch", - ToggleAllInPatch: "Toggle all files included in patch", - UpdatingPatch: "Updating patch", - ViewPatchOptions: "커스텀 Patch 옵션 보기", - PatchOptionsTitle: "Patch 옵션", - NoPatchError: "No patch created yet. To start building a patch, use 'space' on a commit file or enter to add specific lines", - EnterCommitFile: "Enter file to add selected lines to the patch (or toggle directory collapsed)", + NotEnoughSpace: "패널을 렌더링 할 공간이 부족합니다.", + DiffTitle: "Diff", + FilesTitle: "파일", + BranchesTitle: "브랜치", + CommitsTitle: "커밋", + StashTitle: "Stash", + UnstagedChanges: `Staged되지 않은 변경 내용`, + StagedChanges: `Staged된 변경 내용`, + MainTitle: "메인", + MergeConfirmTitle: "병합", + StagingTitle: "메인 패널 (Staging)", + MergingTitle: "메인 패널 (Merging)", + NormalTitle: "메인 패널 (Normal)", + LogTitle: "로그", + CommitSummary: "커밋 메시지", + CredentialsUsername: "사용자 이름", + CredentialsPassword: "패스워드", + CredentialsPassphrase: "SSH키의 passphrase 입력", + PassUnameWrong: "패스워드, passphrase 또는 사용자 이름이 잘못되었습니다.", + Commit: "커밋 변경내용", + AmendLastCommit: "마지맛 커밋 수정", + AmendLastCommitTitle: "마지막 커밋 수정", + SureToAmend: "마지막 커밋을 수정하시겠습니까? 그런 다음 커밋 패널에서 커밋 메시지를 변경할 수 있습니다.", + NoCommitToAmend: "Amend 가능한 커밋이 없습니다.", + CommitChangesWithEditor: "Git 편집기를 사용하여 변경 내용을 커밋합니다.", + StatusTitle: "상태", + Menu: "메뉴", + Execute: "실행", + Stage: "Staged 전환", + ToggleStagedAll: "모든 변경을 Staged/unstaged으로 전환", + ToggleTreeView: "파일 트리뷰로 전환", + OpenMergeTool: "Git mergetool를 열기", + Refresh: "새로고침", + Push: "푸시", + Pull: "업데이트", + Scroll: "스크롤", + MergeConflictsTitle: "병합 충돌 내용", + Checkout: "체크아웃", + FileFilter: "파일을 필터하기 (Staged/unstaged)", + FilterStagedFiles: "Staged된 파일만 표시", + FilterUnstagedFiles: "Stage되지 않은 파일만 표시", + ResetFilter: "필터 리셋", + NoChangedFiles: "변경된 파일이 없습니다.", + SoftReset: "소프트 리셋", + AlreadyCheckedOutBranch: "브랜치가 이미 체크아웃 되었습니다", + SureForceCheckout: "강제로 체크아웃하시겠습니까? 모든 로컬 변경 사항을 잃게 됩니다.", + ForceCheckoutBranch: "브랜치 강제 체크아웃", + BranchName: "브랜치 이름", + NewBranchNameBranchOff: "새 브랜치 이름 (branch is off of '{{.branchName}}')", + CantDeleteCheckOutBranch: "체크아웃하는 브랜치는 삭제할 수 없습니다!", + ForceDeleteBranchMessage: "'{{.selectedBranchName}}'는 완전히 병합되지 않았습니다. 정말 삭제하시겠습니까?", + RebaseBranch: "체크아웃된 브랜치를 이 브랜치에 리베이스", + CantRebaseOntoSelf: "브랜치를 자기 자신에게 리베이스할 수는 없습니다.", + CantMergeBranchIntoItself: "브랜치를 자기 자신에게 병합할 수는 없습니다.", + ForceCheckout: "강제 체크아웃", + CheckoutByName: "이름으로 체크아웃", + NewBranch: "새 브랜치 생성", + NoBranchesThisRepo: "저장소에 브랜치가 존재하지 않습니다.", + CommitWithoutMessageErr: "커밋 메시지를 입력하세요.", + CloseCancel: "닫기/취소", + Confirm: "확인", + Close: "닫기", + Quit: "종료", + NoCommitsThisBranch: "이 브랜치에 커밋이 없습니다.", + CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", + Fixup: "Fixup", + SureFixupThisCommit: "Are you sure you want to 'fixup' this commit? It will be merged into the commit below", + SureSquashThisCommit: "Are you sure you want to squash this commit into the commit below?", + Squash: "Squash", + PickCommitTooltip: "Pick commit (when mid-rebase)", + RevertCommit: "커밋 되돌리기", + Reword: "커밋메시지 변경", + DropCommit: "커밋 삭제", + MoveDownCommit: "커밋을 1개 아래로 이동", + MoveUpCommit: "커밋을 1개 위로 이동", + EditCommitTooltip: "커밋을 편집", + AmendCommitTooltip: "Amend commit with staged changes", + ResetAuthor: "Reset commit author", + SureResetCommitAuthor: "The author field of this commit will be updated to match the configured user. This also renews the author timestamp. Continue?", + RewordCommitEditor: "에디터에서 커밋메시지 수정", + Error: "오류", + PickHunk: "Pick hunk", + PickAllHunks: "Pick all hunks", + Undo: "되돌리기", + UndoReflog: "되돌리기 (reflog) (실험적)", + RedoReflog: "다시 실행 (reflog) (실험적)", + Pop: "Pop", + Drop: "Drop", + Apply: "적용", + NoStashEntries: "Stash가 존재하지 않습니다.", + StashDrop: "Stash를 삭제", + SureDropStashEntry: "정말로 Stash를 삭제하시겠습니까?", + StashPop: "Stash를 pop", + SurePopStashEntry: "정말로 Stash를 pop하시겠습니까?", + StashApply: "Stash 적용", + SureApplyStashEntry: "정말로 Stash를 적용하시겠습니까?", + NoTrackedStagedFilesStash: "You have no tracked/staged files to stash", + StashChanges: "변경을 Stash", + RenameStash: "Rename stash", + RenameStashPrompt: "Rename stash: {{.stashName}}", + OpenConfig: "설정 파일 열기", + EditConfig: "설정 파일 수정", + ForcePush: "강제 푸시", + ForcePushPrompt: "브랜치가 원격 브랜치에서 분기하고 있습니다. 'esc'를 눌러 취소하거나, 'enter'를 눌러 강제로 푸시하세요.", + ForcePushDisabled: "브랜치가 원격 브랜치에서 분기하고 있습니다. force push가 비활성화 되었습니다.", + CheckForUpdate: "업데이트 확인", + CheckingForUpdates: "업데이트 확인 중...", + UpdateAvailableTitle: "새로운 업데이트 사용가능!", + UpdateAvailable: "버전 {{.newVersion}} 을(를) 설치하시겠습니까?", + UpdateInProgressWaitingStatus: "업데이트 중", + UpdateCompletedTitle: "업데이트 완료!", + UpdateCompleted: "업데이트 설치에 성공했습니다. lazygit를 재시작해주세요.", + FailedToRetrieveLatestVersionErr: "버전 정보를 받아오는데 실패했습니다.", + OnLatestVersionErr: "이미 최신 버전을 사용하고 있습니다.", + MajorVersionErr: "새 버전 ({{.newVersion}}) 에 현재 버전({{.currentVersion}}) 과 비교할 때 호환되지 않는 변경 사항이 있습니다.", + CouldNotFindBinaryErr: "{{.url}} 에서 바이너리를 찾을 수 없습니다.", + UpdateFailedErr: "업데이트 실패: {{.errMessage}}", + ConfirmQuitDuringUpdateTitle: "현재 업데이트 중입니다.", + ConfirmQuitDuringUpdate: "현재 업데이트를 진행 중입니다.종료하시겠습니까?", + MergeToolTitle: "병합 도구", + MergeToolPrompt: "정말로 `git mergetool`을 여시겠습니까?", + IntroPopupMessage: koreanIntroPopupMessage, + GitconfigParseErr: `따옴표로 묶이지 않은 '\' 문자가 있어서 Gogit이 gitconfig 파일을 분석하지 못했습니다. 이를 제거하면 문제가 해결됩니다.`, + EditFile: `파일 편집`, + OpenFile: `파일 닫기`, + IgnoreFile: `.gitignore에 추가`, + RefreshFiles: `파일 새로고침`, + Merge: `현재 브랜치에 병합`, + ConfirmQuit: `정말로 종료하시겠습니까?`, + SwitchRepo: `최근에 사용한 저장소로 전환`, + AllBranchesLogGraph: `모든 브랜치 로그 표시`, + UnsupportedGitService: `지원되지 않는 Git 서비스입니다.`, + CreatePullRequest: `풀 리퀘스트 생성`, + CopyPullRequestURL: `풀 리퀘스트 URL을 클립보드에 복사`, + NoBranchOnRemote: `브랜치가 원격에 없습니다. 원격에 먼저 푸시해야합니다.`, + Fetch: `Fetch`, + NoAutomaticGitFetchTitle: `자동 git 업데이트) 없음`, + NoAutomaticGitFetchBody: `Lazygit은 private 저장소에서 "git fetch"를 사용할 수 없습니다. 파일 패널에서 'f'를 사용하여 "git fetch"를 수동으로 실행하세요.`, + FileEnter: `Stage individual hunks/lines for file, or collapse/expand for directory`, + FileStagingRequirements: `추적된 파일에 대해 개별 라인만 stage할 수 있습니다.`, + StageSelectionTooltip: `선택한 행을 staged / unstaged`, + DiscardSelection: `변경을 삭제 (git reset)`, + ToggleRangeSelect: `드래그 선택 전환`, + ToggleSelectHunk: `Toggle select hunk`, + ToggleSelectionForPatch: `Line(s)을 패치에 추가/삭제`, + ToggleStagingView: `패널 전환`, + ReturnToFilesPanel: `파일 목록으로 돌아가기`, + FastForward: `Fast-forward this branch from its upstream`, + FastForwarding: "Fast-forwarding", + FoundConflictsTitle: "Auto-merge failed", + ViewMergeRebaseOptions: "View merge/rebase options", + NotMergingOrRebasing: "You are currently neither rebasing nor merging", + RecentRepos: "최근에 사용한 저장소", + MergeOptionsTitle: "Merge options", + RebaseOptionsTitle: "Rebase options", + CommitSummaryTitle: "커밋메시지", + LocalBranchesTitle: "브랜치", + SearchTitle: "검색", + TagsTitle: "태그", + MenuTitle: "메뉴", + RemotesTitle: "원격", + RemoteBranchesTitle: "원격 브랜치", + PatchBuildingTitle: "메인 패널 (Patch Building)", + InformationTitle: "정보", + SecondaryTitle: "Secondary", + ReflogCommitsTitle: "Reflog", + GlobalTitle: "글로벌 키 바인딩", + ConflictsResolved: "모든 병합 충돌이 해결되었습니다. 계속 할까요?", + ConfirmMerge: "정말로 '{{.selectedBranch}}' 을(를) '{{.checkedOutBranch}}'에 병합하시겠습니까?", + FwdNoUpstream: "Cannot fast-forward a branch with no upstream", + FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally", + FwdCommitsToPush: "Cannot fast-forward a branch with commits to push", + ErrorOccurred: "오류가 발생했습니다! issue를 작성해 주세요: ", + NoRoom: "Not enough room", + YouAreHere: "현재 위치", + RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported", + CherryPickCopy: "커밋을 복사 (cherry-pick)", + PasteCommits: "커밋을 붙여넣기 (cherry-pick)", + SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?", + CherryPick: "체리픽", + Donate: "후원", + AskQuestion: "질문하기", + PrevLine: "이전 줄 선택", + NextLine: "다음 줄 선택", + PrevHunk: "이전 hunk를 선택", + NextHunk: "다음 hunk를 선택", + PrevConflict: "이전 충돌을 선택", + NextConflict: "다음 충돌을 선택", + SelectPrevHunk: "이전 hunk를 선택", + SelectNextHunk: "다음 hunk를 선택", + ScrollDown: "아래로 스크롤", + ScrollUp: "위로 스크롤", + ScrollUpMainWindow: "메인 패널을 위로 스크롤", + ScrollDownMainWindow: "메인 패널을 아래로로 스크롤", + AmendCommitTitle: "Amend commit", + AmendCommitPrompt: "Are you sure you want to amend this commit with your staged files?", + DropCommitTitle: "커밋 삭제", + DropCommitPrompt: "정말로 선택한 커밋을 삭제하시겠습니까?", + PullingStatus: "업데이트 중", + PushingStatus: "푸시 중", + FetchingStatus: "패치 중", + SquashingStatus: "Squashing", + FixingStatus: "Fixing up", + DeletingStatus: "Deleting", + MovingStatus: "Moving", + RebasingStatus: "Rebasing", + AmendingStatus: "Amending", + CherryPickingStatus: "Cherry-picking", + UndoingStatus: "Undoing", + RedoingStatus: "Redoing", + CheckingOutStatus: "Checking out", + CommittingStatus: "Committing", + CommitFiles: "Commit files", + SubCommitsDynamicTitle: "커밋 (%s)", + CommitFilesDynamicTitle: "Diff files (%s)", + RemoteBranchesDynamicTitle: "원격브랜치 (%s)", + ViewItemFiles: "View selected item's files", + CommitFilesTitle: "커밋 파일", + CheckoutCommitFileTooltip: "Checkout file", + DiscardOldFileChangeTooltip: "Discard this commit's changes to this file", + DiscardFileChangesTitle: "파일 변경 사항 버리기", + DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? If this file was created in this commit, it will be deleted", + DisabledForGPG: "Feature not available for users using GPG", + CreateRepo: "Git 저장소가 아닙니다. 저장소를 생성하시겠습니까? (y/n): ", + AutoStashTitle: "Autostash?", + AutoStashPrompt: "You must stash and pop your changes to bring them across. Do this automatically? (enter/esc)", + StashPrefix: "Auto-stashing changes for ", + Discard: "View 'discard changes' options", + Cancel: "취소", + DiscardAllChanges: "모든 변경사항 버리기", + DiscardUnstagedChanges: "Discard unstaged changes", + DiscardAllChangesToAllFiles: "Nuke working tree", + DiscardAnyUnstagedChanges: "Discard unstaged changes", + DiscardUntrackedFiles: "Discard untracked files", + HardReset: "Hard reset", + ViewResetOptions: `View reset options`, + CreateFixupCommitTooltip: `Create fixup commit for this commit`, + SquashAboveCommitsTooltip: `Squash all 'fixup!' commits above selected commit (autosquash)`, + CreateFixupCommit: `Create fixup commit`, + SureCreateFixupCommit: `Are you sure you want to create a fixup! commit for commit {{.commit}}?`, + ExecuteCustomCommand: "Execute custom command", + CustomCommand: "Custom command:", + CommitChangesWithoutHook: "Commit changes without pre-commit hook", + SkipHookPrefixNotConfigured: "You have not configured a commit message prefix for skipping hooks. Set `git.skipHookPrefix = 'WIP'` in your config", + ResetTo: `Reset to`, + PressEnterToReturn: "엔터를 눌러 lazygit으로 돌아갑니다.", + ViewStashOptions: "Stash 옵션 보기", + StashAllChanges: "변경사항을 Stash", + StashStagedChanges: "Stash staged changes", + StashOptions: "Stash 옵션", + NotARepository: "Error: must be run inside a git repository", + Jump: "패널로 이동", + ScrollLeftRight: "좌우로 스크롤", + ScrollLeft: "우 스크롤", + ScrollRight: "좌 스크롤", + DiscardPatch: "Patch 버리기", + DiscardPatchConfirm: "You can only build a patch from one commit/stash-entry at a time. Discard current patch?", + CantPatchWhileRebasingError: "You cannot build a patch or run patch commands while in a merging or rebasing state", + ToggleAddToPatch: "Toggle file included in patch", + ToggleAllInPatch: "Toggle all files included in patch", + UpdatingPatch: "Updating patch", + ViewPatchOptions: "커스텀 Patch 옵션 보기", + PatchOptionsTitle: "Patch 옵션", + NoPatchError: "No patch created yet. To start building a patch, use 'space' on a commit file or enter to add specific lines", + EnterCommitFile: "Enter file to add selected lines to the patch (or toggle directory collapsed)", // ExitCustomPatchBuilder: ``, EnterUpstream: `' '와 같은 형식으로 입력하세요.`, InvalidUpstream: "Upstream의 형식이 잘못되었습니다.' ' 와 같은 형식으로 입력하세요.", diff --git a/pkg/i18n/polish.go b/pkg/i18n/polish.go index fdde08a9cf4..d864af52913 100644 --- a/pkg/i18n/polish.go +++ b/pkg/i18n/polish.go @@ -2,212 +2,933 @@ package i18n func polishTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "Za mało miejsca do wyświetlenia paneli", + NotEnoughSpace: "Za mało miejsca na wyświetlenie paneli", DiffTitle: "Różnice", FilesTitle: "Pliki", BranchesTitle: "Gałęzie", CommitsTitle: "Commity", StashTitle: "Schowek", - UnstagedChanges: "Zmiany poza poczekalnią", - StagedChanges: "Zmiany w poczekalni", - CommitSummary: "Komunikat commita", - CredentialsUsername: "Użytkownik", + SnakeTitle: "Snake", + EasterEgg: "Jajko wielkanocne", + UnstagedChanges: "Zmiany niezatwierdzone", + StagedChanges: "Zmiany zatwierdzone", + MainTitle: "Główny", + MergeConfirmTitle: "Scalanie", + StagingTitle: "Panel główny (zatwierdzanie)", + MergingTitle: "Panel główny (scalanie)", + NormalTitle: "Panel główny (normalny)", + LogTitle: "Dziennik", + CommitSummary: "Podsumowanie commita", + CredentialsUsername: "Nazwa użytkownika", CredentialsPassword: "Hasło", - CredentialsPassphrase: "Fraza", + CredentialsPassphrase: "Wprowadź hasło do klucza SSH", + CredentialsPIN: "Wprowadź PIN do klucza SSH", PassUnameWrong: "Niewłaściwe hasło, fraza lub nazwa użytkownika", - Commit: "Zatwierdź zmiany", - AmendLastCommit: "Zmień ostatni commit", - AmendLastCommitTitle: "Zmień ostatni commit", - SureToAmend: "Czy na pewno chcesz zmienić ostatni commit? Możesz zmienić komunikat commitu z panelu commitów.", - NoCommitToAmend: "Brak commitów do zmiany.", - CommitChangesWithEditor: "Zatwierdź zmiany używając edytora", + Commit: "Commit", + CommitTooltip: "Zatwierdź zmiany zatwierdzone.", + AmendLastCommit: "Popraw ostatni commit", + AmendLastCommitTitle: "Popraw ostatni commit", + SureToAmend: "Czy na pewno chcesz poprawić ostatni commit? Następnie możesz zmienić wiadomość commita z panelu commitów.", + NoCommitToAmend: "Brak commita do poprawienia.", + CommitChangesWithEditor: "Zatwierdź zmiany używając edytora git", + FindBaseCommitForFixup: "Znajdź bazowy commit do poprawki", + FindBaseCommitForFixupTooltip: "Znajdź commit, na którym opierają się Twoje obecne zmiany, w celu poprawienia/zmiany commita. To pozwala Ci uniknąć przeglądania commitów w Twojej gałęzi jeden po drugim, aby zobaczyć, który commit powinien być poprawiony/zmieniony. Zobacz dokumentację: ", + NoDeletedLinesInDiff: "Brak usuniętych linii w różnicach", + NoBaseCommitsFound: "Nie znaleziono bazowych commitów", + MultipleBaseCommitsFoundStaged: "Znaleziono wiele bazowych commitów. (Spróbuj zatwierdzić mniej zmian naraz)", + MultipleBaseCommitsFoundUnstaged: "Znaleziono wiele bazowych commitów. (Spróbuj zatwierdzić część zmian)", + BaseCommitIsAlreadyOnMainBranch: "Bazowy commit dla tej zmiany jest już na gałęzi głównej", + BaseCommitIsNotInCurrentView: "Bazowy commit nie jest w bieżącym widoku", + HunksWithOnlyAddedLinesWarning: "Istnieją zakresy tylko z dodanymi liniami w różnicach; uważaj, aby sprawdzić, czy te należą do znalezionego bazowego commita.\n\nKontynuować?", StatusTitle: "Status", - GlobalTitle: "Globalne", Menu: "Menu", Execute: "Wykonaj", - Stage: "Przełącz stan poczekalni", - ToggleStagedAll: "Przełącz stan poczekalni wszystkich", + Stage: "Zatwierdź", + StageTooltip: "Przełącz zatwierdzenie dla wybranego pliku.", + ToggleStagedAll: "Zatwierdź wszystko", + ToggleStagedAllTooltip: "Przełącz zatwierdzenie/odznaczenie dla wszystkich plików w drzewie roboczym.", + ToggleTreeView: "Przełącz widok drzewa plików", + ToggleTreeViewTooltip: "Przełącz widok plików między płaskim a drzewem. Płaski układ pokazuje wszystkie ścieżki plików na jednej liście, układ drzewa grupuje pliki według katalogów.", + OpenDiffTool: "Otwórz zewnętrzne narzędzie różnic (git difftool)", + OpenMergeTool: "Otwórz zewnętrzne narzędzie scalania", + OpenMergeToolTooltip: "Uruchom `git mergetool`.", Refresh: "Odśwież", + RefreshTooltip: "Odśwież stan git (tj. uruchom `git status`, `git branch`, itp. w tle, aby zaktualizować zawartość paneli). To nie uruchamia `git fetch`.", + Push: "Wypchnij", + PushTooltip: "Wypchnij bieżącą gałąź do jej gałęzi nadrzędnej. Jeśli nie skonfigurowano gałęzi nadrzędnej, zostaniesz poproszony o skonfigurowanie gałęzi nadrzędnej.", + Pull: "Pociągnij", + PullTooltip: "Pociągnij zmiany z zdalnego dla bieżącej gałęzi. Jeśli nie skonfigurowano gałęzi nadrzędnej, zostaniesz poproszony o skonfigurowanie gałęzi nadrzędnej.", Scroll: "Przewiń", - FilterStagedFiles: "Pokaż tylko pliki w poczekalni", - FilterUnstagedFiles: "Pokaż tylko pliki poza poczekalnią", - ResetFilter: "Resetuj filtr commitów", + MergeConflictsTitle: "Konflikty scalania", Checkout: "Przełącz", + CheckoutTooltip: "Przełącz wybrany element.", + CantCheckoutBranchWhilePulling: "Nie możesz przełączyć na inną gałąź podczas pobierania bieżącej gałęzi", + TagCheckoutTooltip: "Przełącz wybrany tag jako odłączoną głowę (detached HEAD).", + RemoteBranchCheckoutTooltip: "Przełącz na nową lokalną gałąź na podstawie wybranej gałęzi zdalnej. Nowa gałąź będzie śledzić gałąź zdalną.", + CantPullOrPushSameBranchTwice: "Nie możesz wypchnąć lub pociągnąć gałęzi, podczas gdy jest już wypychana lub pociągana", + FileFilter: "Filtruj pliki według statusu", + CopyToClipboardMenu: "Kopiuj do schowka", + CopyFileName: "Nazwa pliku", + CopyFilePath: "Ścieżka", + CopyFileDiffTooltip: "Jeśli istnieją zatwierdzone elementy, ta komenda bierze pod uwagę tylko je. W przeciwnym razie bierze pod uwagę wszystkie niezatwierdzone.", + CopySelectedDiff: "Różnice wybranego pliku", + CopyAllFilesDiff: "Różnice wszystkich plików", + NoContentToCopyError: "Nic do skopiowania", + FileNameCopiedToast: "Nazwa pliku skopiowana do schowka", + FilePathCopiedToast: "Ścieżka pliku skopiowana do schowka", + FileDiffCopiedToast: "Różnice pliku skopiowane do schowka", + AllFilesDiffCopiedToast: "Różnice wszystkich plików skopiowane do schowka", + FilterStagedFiles: "Pokaż tylko zatwierdzone pliki", + FilterUnstagedFiles: "Pokaż tylko niezatwierdzone pliki", + ResetFilter: "Resetuj filtr", NoChangedFiles: "Brak zmienionych plików", - AlreadyCheckedOutBranch: "Już przęłączono na tą gałąź", - SureForceCheckout: "Jesteś pewny, że chcesz wymusić przełączenie? Stracisz wszystkie lokalne zmiany", + SoftReset: "Miękki reset", + AlreadyCheckedOutBranch: "Już przełączono na tę gałąź", + SureForceCheckout: "Czy na pewno chcesz wymusić przełączenie? Stracisz wszystkie lokalne zmiany", ForceCheckoutBranch: "Wymuś przełączenie gałęzi", BranchName: "Nazwa gałęzi", - NewBranchNameBranchOff: "Nazwa nowej gałęzi (gałąź na bazie '{{.branchName}}')", - CantDeleteCheckOutBranch: "Nie możesz usunąć obecnie przełączonej gałęzi!", - ForceDeleteBranchMessage: "Na pewno wymusić usunięcie gałęzi '{{.selectedBranchName}}'?", - RebaseBranch: "Zmiana bazy gałęzi", - CantRebaseOntoSelf: "Nie możesz zmienić bazy gałęzi na nią samą", - CantMergeBranchIntoItself: "Nie możesz scalić gałęzi do samej siebie", + NewBranchNameBranchOff: "Nowa nazwa gałęzi (gałąź oparta na '{{.branchName}}')", + CantDeleteCheckOutBranch: "Nie możesz usunąć przełączonej gałęzi!", + DeleteBranchTitle: "Usuń gałąź '{{.selectedBranchName}}'?", + DeleteLocalBranch: "Usuń lokalną gałąź", + DeleteRemoteBranchOption: "Usuń gałąź zdalną", + DeleteRemoteBranchPrompt: "Czy na pewno chcesz usunąć gałąź zdalną '{{.selectedBranchName}}' z '{{.upstream}}'?", + ForceDeleteBranchTitle: "Wymuś usunięcie gałęzi", + ForceDeleteBranchMessage: "'{{.selectedBranchName}}' nie jest w pełni scalona. Czy na pewno chcesz ją usunąć?", + RebaseBranch: "Przebazuj", + RebaseBranchTooltip: "Przebazuj przełączoną gałąź na wybraną gałąź.", + CantRebaseOntoSelf: "Nie możesz przebazować gałęzi na siebie", + CantMergeBranchIntoItself: "Nie możesz scalić gałęzi do siebie", ForceCheckout: "Wymuś przełączenie", - CheckoutByName: "Przełącz używając nazwy", + ForceCheckoutTooltip: "Wymuś przełączenie wybranej gałęzi. To spowoduje odrzucenie wszystkich lokalnych zmian w drzewie roboczym przed przełączeniem na wybraną gałąź.", + CheckoutByName: "Przełącz według nazwy", + CheckoutByNameTooltip: "Przełącz według nazwy. W polu wprowadzania możesz wpisać '-' aby przełączyć się na ostatnią gałąź.", NewBranch: "Nowa gałąź", + NewBranchFromStashTooltip: "Utwórz nową gałąź z wybranego wpisu schowka. Działa poprzez przełączenie git na commit, na którym wpis schowka został utworzony, tworzenie nowej gałęzi z tego commita, a następnie zastosowanie wpisu schowka do nowej gałęzi jako dodatkowego commita.", NoBranchesThisRepo: "Brak gałęzi dla tego repozytorium", - CommitWithoutMessageErr: "Nie możesz commitować bez komunikatu", - CloseCancel: "Zamknij", - Confirm: "Potwierdź", + CommitWithoutMessageErr: "Nie możesz commitować bez wiadomości commita", Close: "Zamknij", + CloseCancel: "Zamknij/Anuluj", + Confirm: "Potwierdź", + Quit: "Wyjdź", + SquashTooltip: "Scal wybrany commit z commitami poniżej. Wiadomość wybranego commita zostanie dołączona do commita poniżej.", NoCommitsThisBranch: "Brak commitów dla tej gałęzi", - CannotSquashOrFixupFirstCommit: "There's no commit below to squash into", - Fixup: "Napraw", - SureFixupThisCommit: "Jesteś pewny, ze chcesz naprawić ten commit? Commit poniżej zostanie spłaszczony w górę wraz z tym", - Reword: "Zmień nazwę commita", - RewordCommitEditor: "Zmień nazwę commita w edytorze", + UpdateRefHere: "Zaktualizuj gałąź '{{.ref}}' tutaj", + CannotSquashOrFixupFirstCommit: "Nie ma commita poniżej do scalenia", + Fixup: "Poprawka", + SureFixupThisCommit: "Czy na pewno chcesz 'poprawić' wybrane commit(y) do commita poniżej?", + SureSquashThisCommit: "Czy na pewno chcesz scalić wybrane commit(y) do commita poniżej?", + Squash: "Scal", + PickCommitTooltip: "Oznacz wybrany commit do wybrania (podczas rebazowania). Oznacza to, że commit zostanie zachowany po kontynuacji rebazowania.", + Pick: "Wybierz", + CantPickDisabledReason: "Nie możesz wybrać commita podczas rebazowania", + Edit: "Edytuj", + RevertCommit: "Cofnij commit", + Revert: "Cofnij", + RevertCommitTooltip: "Utwórz commit cofający dla wybranego commita, który stosuje zmiany wybranego commita w odwrotnej kolejności.", + Reword: "Przeformułuj", + CommitRewordTooltip: "Przeformułuj wiadomość wybranego commita.", + DropCommit: "Usuń", + DropCommitTooltip: "Usuń wybrany commit. To usunie commit z gałęzi za pomocą rebazowania. Jeśli commit wprowadza zmiany, od których zależą późniejsze commity, być może będziesz musiał rozwiązać konflikty scalania.", + MoveDownCommit: "Przesuń commit w dół", + MoveUpCommit: "Przesuń commit w górę", + CannotMoveAnyFurther: "Nie można przesunąć dalej", + EditCommit: "Edytuj (rozpocznij interaktywne rebazowanie)", + EditCommitTooltip: "Edytuj wybrany commit. Użyj tego, aby rozpocząć interaktywne rebazowanie od wybranego commita. Podczas trwania rebazowania, to oznaczy wybrany commit do edycji, co oznacza, że po kontynuacji rebazowania, rebazowanie zostanie wstrzymane na wybranym commicie, aby umożliwić wprowadzenie zmian.", + AmendCommitTooltip: "Popraw commit ze zmianami zatwierdzonymi. Jeśli wybrany commit jest commit HEAD, to wykona `git commit --amend`. W przeciwnym razie commit zostanie poprawiony za pomocą rebazowania.", + Amend: "Popraw", + ResetAuthor: "Resetuj autora", + ResetAuthorTooltip: "Resetuj autora commita do aktualnie skonfigurowanego użytkownika. To również odświeży znacznik czasu autora", + SetAuthor: "Ustaw autora", + SetAuthorTooltip: "Ustaw autora na podstawie monitu", + AddCoAuthor: "Dodaj współautora", + AmendCommitAttribute: "Popraw atrybut commita", + AmendCommitAttributeTooltip: "Ustaw/Resetuj autora commita lub ustaw współautora.", + SetAuthorPromptTitle: "Ustaw autora (musi wyglądać jak 'Imię ')", + AddCoAuthorPromptTitle: "Dodaj współautora (musi wyglądać jak 'Imię ')", + AddCoAuthorTooltip: "Dodaj współautora używając metadanych Github/Gitlab Co-authored-by.", + SureResetCommitAuthor: "Pole autora tego commita zostanie zaktualizowane, aby pasowało do skonfigurowanego użytkownika. To również odświeży znacznik czasu autora. Kontynuować?", + RewordCommitEditor: "Przeformułuj za pomocą edytora", Error: "Błąd", - PickHunk: "Wybierz kawałek", - PickAllHunks: "Wybierz oba kawałki", + PickHunk: "Wybierz fragment", + PickAllHunks: "Wybierz wszystkie fragmenty", Undo: "Cofnij", + UndoReflog: "Cofnij", + RedoReflog: "Ponów", + UndoTooltip: "Dziennik reflog zostanie użyty do określenia, jakie polecenie git należy uruchomić, aby cofnąć ostatnie polecenie git. Nie obejmuje to zmian w drzewie roboczym; brane są pod uwagę tylko commity.", + RedoTooltip: "Dziennik reflog zostanie użyty do określenia, jakie polecenie git należy uruchomić, aby ponowić ostatnie polecenie git. Nie obejmuje to zmian w drzewie roboczym; brane są pod uwagę tylko commity.", + UndoMergeResolveTooltip: "Cofnij ostatnie rozwiązanie konfliktu scalania.", + DiscardAllTooltip: "Odrzuć wszystkie zmiany (zarówno zatwierdzone jak i niezatwierdzone) w '{{.path}}'.", + DiscardUnstagedTooltip: "Odrzuć niezatwierdzone zmiany w '{{.path}}'.", Pop: "Wyciągnij", - Drop: "Porzuć", + StashPopTooltip: "Zastosuj wpis schowka do katalogu roboczego i usuń wpis schowka.", + Drop: "Usuń", + StashDropTooltip: "Usuń wpis schowka z listy schowka.", Apply: "Zastosuj", - NoStashEntries: "Brak pozycji w schowku", - StashDrop: "Porzuć schowek", - SureDropStashEntry: "Jesteś pewny, że chcesz porzucić tę pozycję w schowku?", - NoTrackedStagedFilesStash: "Nie masz śledzonych/zatwierdzonych plików do przechowania", - StashChanges: "Przechowaj zmiany", - RenameStash: "Rename stash", - RenameStashPrompt: "Rename stash: {{.stashName}}", - OpenConfig: "Otwórz konfigurację", - EditConfig: "Edytuj konfigurację", + StashApplyTooltip: "Zastosuj wpis schowka do katalogu roboczego.", + NoStashEntries: "Brak wpisów schowka", + StashDrop: "Usuń schowek", + SureDropStashEntry: "Czy na pewno chcesz usunąć ten wpis schowka?", + StashPop: "Wyciągnij schowek", + SurePopStashEntry: "Czy na pewno chcesz wyciągnąć ten wpis schowka?", + StashApply: "Zastosuj schowek", + SureApplyStashEntry: "Czy na pewno chcesz zastosować ten wpis schowka?", + NoTrackedStagedFilesStash: "Nie masz śledzonych/zatwierdzonych plików do schowania", + NoFilesToStash: "Nie masz plików do schowania", + StashChanges: "Schowaj zmiany", + RenameStash: "Zmień nazwę schowka", + RenameStashPrompt: "Zmień nazwę schowka: {{.stashName}}", + OpenConfig: "Otwórz plik konfiguracyjny", + EditConfig: "Edytuj plik konfiguracyjny", ForcePush: "Wymuś wysłanie", - ForcePushPrompt: "Twoja gałąź rozeszła się z gałęzią zdalną. Wciśnij 'esc' aby anulować lub 'enter' aby wymusić wysłanie.", - ForcePushDisabled: "Twoja gałąź rozeszła się z gałęzią zdalną i wyłączyłeś wymuszenie wysłania", - UpdatesRejectedAndForcePushDisabled: "Aktualizacje zostały odrzucone i wyłączyłeś wymuszenie wysłania", + ForcePushPrompt: "Twoja gałąź rozbiegła się z gałęzią zdalną. Naciśnij {{.cancelKey}}, aby anulować, lub {{.confirmKey}}, aby wymusić wysłanie.", + ForcePushDisabled: "Twoja gałąź rozbiegła się z gałęzią zdalną i masz wyłączone wymuszanie wysyłania", CheckForUpdate: "Sprawdź aktualizacje", CheckingForUpdates: "Sprawdzanie aktualizacji...", - OnLatestVersionErr: "Już posiadasz najnowszą wersję", - MajorVersionErr: "Nowa wersja ({{.newVersion}}) posiada niekompatybilne zmiany w porównaniu do obecnej wersji ({{.currentVersion}})", - CouldNotFindBinaryErr: "Nie można znaleźć pliku binarnego w {{.url}}", - EditFile: "Edytuj plik", - OpenFile: "Otwórz plik", - IgnoreFile: "Dodaj do .gitignore", - RefreshFiles: "Odśwież pliki", - Merge: "Scal do obecnej gałęzi", - ConfirmQuit: "Na pewno chcesz wyjść z programu?", - AllBranchesLogGraph: "Pokaż wszystkie logi gałęzi", - UnsupportedGitService: "Nieobsługiwana usługa git", - CreatePullRequest: "Utwórz żądanie pobrania", - CopyPullRequestURL: "Skopiuj adres URL żądania pobrania do schowka", - NoBranchOnRemote: "Ta gałąź nie istnieje w zdalnym repo. Najpierw musisz ją wysłać.", - Fetch: "Pobierz", - NoAutomaticGitFetchTitle: `Brak automatycznego "git fetch"`, - NoAutomaticGitFetchBody: `Lazygit nie może użyć "git fetch" w prywatnym repo, użyj f w panelu gałęzi żeby uruchomić "git fetch" ręcznie`, - FileEnter: "Zatwierdź pojedyncze linie", - FileStagingRequirements: "Można tylko zatwierdzić pojedyncze linie dla śledzonych plików z niezatwierdzonymi zmianami", - StagingTitle: "Poczekalnia", - ReturnToFilesPanel: "Wróć do panelu plików", - MergingTitle: "Scalanie", - ConfirmMerge: "Czy na pewno chcesz scalić '{{.selectedBranch}}' do '{{.checkedOutBranch}}'?", - FwdNoUpstream: "Nie można przewinąć gałęzi bez gałęzi nadrzędnej", - FwdCommitsToPush: "Nie można przewinąć gałęzi z commitami do wysłania", - ErrorOccurred: "Wystąpił błąd! Zgłoś problem na", - MainTitle: "Główne", - NormalTitle: "Zwykłe", - SoftReset: "Miękki reset", - SureSquashThisCommit: "Czy na pewno spłaszczyć ten commit do commita niżej?", - Squash: "Spłaszcz", - PickCommitTooltip: "Wybierz commit (podczas zmiany bazy)", - RevertCommit: "Odwróć commit", - DropCommit: "Usuń commit", - MoveDownCommit: "Przenieś commit 1 w dół", - MoveUpCommit: "Przenieś commit 1 w górę", - EditCommitTooltip: "Edytuj commit", - AmendCommitTooltip: "Popraw commit zmianami z poczekalni", + UpdateAvailableTitle: "Dostępna aktualizacja!", + UpdateAvailable: "Pobrać i zainstalować wersję {{.newVersion}}?", + UpdateInProgressWaitingStatus: "Aktualizacja", + UpdateCompletedTitle: "Aktualizacja zakończona!", + UpdateCompleted: "Aktualizacja została pomyślnie zainstalowana. Uruchom ponownie lazygit, aby zaczęła działać.", + FailedToRetrieveLatestVersionErr: "Nie udało się pobrać informacji o wersji", + OnLatestVersionErr: "Masz już najnowszą wersję", + MajorVersionErr: "Nowa wersja ({{.newVersion}}) zawiera zmiany niekompatybilne wstecznie w porównaniu z bieżącą wersją ({{.currentVersion}})", + CouldNotFindBinaryErr: "Nie można znaleźć żadnego pliku binarnego pod adresem {{.url}}", + UpdateFailedErr: "Aktualizacja nie powiodła się: {{.errMessage}}", + ConfirmQuitDuringUpdateTitle: "Aktualizacja w toku", + ConfirmQuitDuringUpdate: "Aktualizacja jest w toku. Czy na pewno chcesz wyjść?", + MergeToolTitle: "Narzędzie scalania", + MergeToolPrompt: "Czy na pewno chcesz otworzyć `git mergetool`?", + IntroPopupMessage: englishIntroPopupMessage, + DeprecatedEditConfigWarning: englishDeprecatedEditConfigWarning, + GitconfigParseErr: `Gogit nie mógł przetworzyć pliku gitconfig z powodu obecności niezacytowanych znaków '\'. Usunięcie ich powinno rozwiązać problem.`, + EditFile: `Edytuj plik`, + EditFileTooltip: "Otwórz plik w zewnętrznym edytorze.", + OpenFile: `Otwórz plik`, + OpenFileTooltip: "Otwórz plik w domyślnej aplikacji.", + OpenInEditor: "Otwórz w edytorze", + IgnoreFile: `Dodaj do .gitignore`, + ExcludeFile: `Dodaj do .git/info/exclude`, + RefreshFiles: `Odśwież pliki`, + Merge: `Scal`, + MergeBranchTooltip: "Scal wybraną gałąź z aktualnie sprawdzoną gałęzią.", + ConfirmQuit: `Czy na pewno chcesz wyjść?`, + SwitchRepo: `Przełącz na ostatnie repozytorium`, + AllBranchesLogGraph: `Pokaż wszystkie gałęzie w logach`, + UnsupportedGitService: `Nieobsługiwana usługa git`, + CreatePullRequest: `Utwórz żądanie ściągnięcia`, + CopyPullRequestURL: `Kopiuj adres URL żądania ściągnięcia do schowka`, + NoBranchOnRemote: `Ta gałąź nie istnieje na zdalnym serwerze. Musisz ją najpierw wysłać na zdalny serwer.`, + Fetch: `Pobierz`, + FetchTooltip: "Pobierz zmiany ze zdalnego serwera.", + NoAutomaticGitFetchTitle: `Brak automatycznego pobierania git`, + NoAutomaticGitFetchBody: `Lazygit nie może używać "git fetch" w prywatnym repozytorium; użyj 'f' w panelu plików, aby ręcznie uruchomić "git fetch"`, + FileEnter: `Zatwierdź linie / Zwiń katalog`, + FileEnterTooltip: "Jeśli wybrany element jest plikiem, skup się na widoku zatwierdzania, aby móc zatwierdzać poszczególne fragmenty/linie. Jeśli wybrany element jest katalogiem, zwiń/rozwiń go.", + FileStagingRequirements: `Można zatwierdzać poszczególne linie tylko dla śledzonych plików`, + StageSelectionTooltip: `Przełącz zaznaczenie zatwierdzone/niezatwierdzone.`, + DiscardSelection: `Odrzuć`, + DiscardSelectionTooltip: "Gdy zaznaczona jest niezatwierdzona zmiana, odrzuć ją używając `git reset`. Gdy zaznaczona jest zatwierdzona zmiana, cofnij zatwierdzenie.", + ToggleRangeSelect: "Przełącz zaznaczenie zakresu", + ToggleSelectHunk: "Zaznacz fragment", + ToggleSelectHunkTooltip: "Przełącz tryb zaznaczania fragmentu.", + ToggleSelectionForPatch: `Przełącz linie w łatce`, + EditHunk: `Edytuj fragment`, + EditHunkTooltip: "Edytuj wybrany fragment w zewnętrznym edytorze.", + ToggleStagingView: "Przełącz widok", + ToggleStagingViewTooltip: "Przełącz na inny widok (zatwierdzone/niezatwierdzone zmiany).", + ReturnToFilesPanel: `Wróć do panelu plików`, + FastForward: `Szybkie przewijanie`, + FastForwardTooltip: "Szybkie przewijanie wybranej gałęzi z jej źródła.", + FastForwarding: "Szybkie przewijanie", FoundConflictsTitle: "Konflikty!", - ViewMergeRebaseOptions: "Widok scalenia/opcje zmiany bazy", - NotMergingOrRebasing: "W tej chwili nie scalasz ani nie zmieniasz bazy", + ViewConflictsMenuItem: "Pokaż konflikty", + AbortMenuItem: "Przerwij %s", + ViewMergeRebaseOptions: "Pokaż opcje scalania/rebase", + ViewMergeRebaseOptionsTooltip: "Pokaż opcje do przerwania/kontynuowania/pominięcia bieżącego scalania/rebase.", + ViewMergeOptions: "Pokaż opcje scalania", + ViewRebaseOptions: "Pokaż opcje rebase", + NotMergingOrRebasing: "Aktualnie nie wykonujesz ani scalania, ani rebase", + AlreadyRebasing: "Nie można wykonać tej akcji podczas rebase", RecentRepos: "Ostatnie repozytoria", MergeOptionsTitle: "Opcje scalania", - RebaseOptionsTitle: "Opcje zmiany bazy", + RebaseOptionsTitle: "Opcje rebase", + CommitSummaryTitle: "Podsumowanie commita", + CommitDescriptionTitle: "Opis commita", + CommitDescriptionSubTitle: "Naciśnij {{.togglePanelKeyBinding}}, aby przełączyć fokus, {{.commitMenuKeybinding}}, aby otworzyć menu", + CommitDescriptionSubTitleNoSwitch: "Naciśnij {{.togglePanelKeyBinding}}, aby przełączyć fokus", + LocalBranchesTitle: "Lokalne gałęzie", + SearchTitle: "Szukaj", + TagsTitle: "Tagi", + MenuTitle: "Menu", + CommitMenuTitle: "Menu commita", + RemotesTitle: "Zdalne", + RemoteBranchesTitle: "Zdalne gałęzie", + PatchBuildingTitle: "Główny panel (budowanie łatki)", + InformationTitle: "Informacje", + SecondaryTitle: "Dodatkowy", + ReflogCommitsTitle: "Reflog", + GlobalTitle: "Globalne skróty klawiszowe", ConflictsResolved: "Wszystkie konflikty scalania rozwiązane. Kontynuować?", - NoRoom: "Brak miejsca", - YouAreHere: "JESTEŚ TU", - RewordNotSupported: "Przeredagowanie commitów podczas interaktywnej zmiany bazy nie jest obecnie wspierane", - CherryPickCopy: "Kopiuj commit (przebieranie)", - PasteCommits: "Wklej commity (przebieranie)", - SureCherryPick: "Czy na pewno chcesz przebierać w skopiowanych commitach na tej gałęzi?", - CherryPick: "Przebieranie", + Continue: "Kontynuuj", + Keybindings: "Skróty klawiszowe", + KeybindingsMenuSectionLocal: "Lokalne", + KeybindingsMenuSectionGlobal: "Globalne", + KeybindingsMenuSectionNavigation: "Nawigacja", + RebasingTitle: "Rebase '{{.checkedOutBranch}}' na '{{.ref}}'", + RebasingFromBaseCommitTitle: "Rebase '{{.checkedOutBranch}}' od oznaczonego commita bazowego na '{{.ref}}'", + SimpleRebase: "Prosty rebase", + InteractiveRebase: "Interaktywny rebase", + InteractiveRebaseTooltip: "Rozpocznij interaktywny rebase z przerwaniem na początku, abyś mógł zaktualizować commity TODO przed kontynuacją.", + MustSelectTodoCommits: "Podczas rebase ta akcja działa tylko na zaznaczonych commitach TODO.", + ConfirmMerge: "Czy na pewno chcesz scalić '{{.selectedBranch}}' z '{{.checkedOutBranch}}'?", + FwdNoUpstream: "Nie można szybko przewinąć gałęzi bez źródła", + FwdNoLocalUpstream: "Nie można szybko przewinąć gałęzi, której zdalne źródło nie jest zarejestrowane lokalnie", + FwdCommitsToPush: "Nie można szybko przewinąć gałęzi z commitami do wysłania", + PullRequestNoUpstream: "Nie można otworzyć żądania ściągnięcia dla gałęzi bez źródła", + ErrorOccurred: "Wystąpił błąd! Proszę utworzyć zgłoszenie na", + NoRoom: "Za mało miejsca", + YouAreHere: "JESTEŚ TUTAJ", + YouDied: "ZGINĄŁEŚ!", + RewordNotSupported: "Zmiana słów commitów podczas interaktywnego rebase nie jest obecnie obsługiwana", + ChangingThisActionIsNotAllowed: "Zmiana tego rodzaju wpisu rebase TODO nie jest dozwolona", + CherryPickCopy: "Kopiuj (cherry-pick)", + CherryPickCopyTooltip: "Oznacz commit jako skopiowany. Następnie, w widoku lokalnych commitów, możesz nacisnąć `{{.paste}}`, aby wkleić (cherry-pick) skopiowane commity do sprawdzonej gałęzi. W dowolnym momencie możesz nacisnąć `{{.escape}}`, aby anulować zaznaczenie.", + CherryPickCopyRangeTooltip: "Oznacz commity jako skopiowane od ostatniego skopiowanego commita do wybranego commita.", + PasteCommits: "Wklej (cherry-pick)", + SureCherryPick: "Czy na pewno chcesz cherry-pick skopiowane commity na tę gałąź?", + CherryPick: "Cherry-pick", + CannotCherryPickNonCommit: "Nie można cherry-pick tego rodzaju wpisu TODO", + CannotCherryPickMergeCommit: "Cherry-pick commitów scalających nie jest obsługiwane", Donate: "Wesprzyj", - PrevLine: "Poprzednia linia", - NextLine: "Następna linia", - PrevHunk: "Poprzedni kawałek", - NextHunk: "Następny kawałek", + AskQuestion: "Zadaj pytanie", + PrevLine: "Wybierz poprzednią linię", + NextLine: "Wybierz następną linię", + PrevHunk: "Idź do poprzedniego fragmentu", + NextHunk: "Idź do następnego fragmentu", PrevConflict: "Poprzedni konflikt", NextConflict: "Następny konflikt", - SelectPrevHunk: "Wybierz poprzedni kawałek", - SelectNextHunk: "Wybierz następny kawałek", + SelectPrevHunk: "Poprzedni fragment", + SelectNextHunk: "Następny fragment", ScrollDown: "Przewiń w dół", ScrollUp: "Przewiń w górę", + ScrollUpMainWindow: "Przewiń główne okno w górę", + ScrollDownMainWindow: "Przewiń główne okno w dół", AmendCommitTitle: "Popraw commit", - AmendCommitPrompt: "Czy na pewno chcesz poprawić ten commit plikami z poczekalni?", + AmendCommitPrompt: "Czy na pewno chcesz poprawić ten commit swoimi zatwierdzonymi plikami?", DropCommitTitle: "Usuń commit", - DropCommitPrompt: "Czy na pewno usunąć ten commit?", - PullingStatus: "Pobieranie zmian", - PushingStatus: "Wysyłanie zmian", - FetchingStatus: "Pobieram", - SquashingStatus: "Spłaszczanie", + DropCommitPrompt: "Czy na pewno chcesz usunąć wybrane commity?", + PullingStatus: "Ściąganie", + PushingStatus: "Wysyłanie", + FetchingStatus: "Pobieranie", + SquashingStatus: "Sciskanie", FixingStatus: "Naprawianie", DeletingStatus: "Usuwanie", - MovingStatus: "Przenoszenie", - RebasingStatus: "Zmiana bazy", + DroppingStatus: "Upuszczanie", + MovingStatus: "Przesuwanie", + RebasingStatus: "Rebase", + MergingStatus: "Scalanie", + LowercaseRebasingStatus: "rebase", // małe litery, ponieważ pojawia się w nawiasach + LowercaseMergingStatus: "scalanie", // małe litery, ponieważ pojawia się w nawiasach AmendingStatus: "Poprawianie", - CherryPickingStatus: "Przebieranie", - CommitFiles: "Pliki commita", - ViewItemFiles: "Przeglądaj pliki commita", + CherryPickingStatus: "Cherry-picking", + UndoingStatus: "Cofanie", + RedoingStatus: "Ponawianie", + CheckingOutStatus: "Sprawdzanie", + CommittingStatus: "Commitowanie", + RevertingStatus: "Przywracanie", + CreatingFixupCommitStatus: "Tworzenie commita poprawiającego", + CommitFiles: "Zatwierdź pliki", + SubCommitsDynamicTitle: "Commity (%s)", + CommitFilesDynamicTitle: "Pliki różnic (%s)", + RemoteBranchesDynamicTitle: "Zdalne gałęzie (%s)", + ViewItemFiles: "Wyświetl pliki", + ViewItemFilesTooltip: "Wyświetl pliki zmodyfikowane przez wybrany element.", CommitFilesTitle: "Pliki commita", - CheckoutCommitFileTooltip: "Plik wybierania", - DiscardOldFileChangeTooltip: "Porzuć zmiany commita dla tego pliku", - DiscardFileChangesTitle: "Porzuć zmiany w pliku", - DiscardFileChangesPrompt: "Czy na pewno porzucić zmiany w tym pliku? Jeśli ten plik był utworzony w tym commicie, zostanie usunięty", - DisabledForGPG: "Funkcja niedostępna dla użytkowników GPG", - CreateRepo: "Nie jesteś w repozytorium. Utworzyć nowe repozytorium Gita? (y/n): ", - AutoStashTitle: "Automatyczny schowek", - AutoStashPrompt: "Musisz schować i wyciągnąć zmiany żeby je przenosić. Robić to automatycznie? (enter/esc)", - StashPrefix: "Automatyczne dodawanie zmian do schowka dla ", - Discard: "Pokaż opcje porzucania zmian", + CheckoutCommitFileTooltip: "Przełącz plik. Zastępuje plik w twoim drzewie roboczym wersją z wybranego commita.", + CanOnlyDiscardFromLocalCommits: "Można odrzucić tylko zmiany z lokalnych commitów", + Remove: "Usuń", + DiscardOldFileChangeTooltip: "Odrzuć zmiany w tym pliku z tego commita. Uruchamia interaktywny rebase w tle, więc możesz otrzymać konflikt scalania, jeśli późniejszy commit również zmienia ten plik.", + DiscardFileChangesTitle: "Odrzuć zmiany w pliku", + DiscardFileChangesPrompt: "Czy na pewno chcesz usunąć zmiany w wybranym pliku/ach z tego commita?\n\nTa akcja uruchomi rebase, cofając te zmiany w pliku. Pamiętaj, że jeśli późniejsze commity zależą od tych zmian, możesz potrzebować rozwiązać konflikty.\nUwaga: Spowoduje to również zresetowanie wszelkich aktywnych niestandardowych łatek.", + DisabledForGPG: "Funkcja niedostępna dla użytkowników używających GPG", + CreateRepo: "Nie w repozytorium git. Utworzyć nowe repozytorium git? (t/n): ", + BareRepo: "Próbujesz otworzyć Lazygit w gołym repozytorium, ale Lazygit jeszcze nie obsługuje gołych repozytoriów. Otworzyć najnowsze repozytorium? (t/n) ", + InitialBranch: "Nazwa gałęzi? (pozostaw puste dla domyślnej gita): ", + NoRecentRepositories: "Musisz otworzyć lazygit w repozytorium git. Brak ważnych ostatnich repozytoriów. Wyjście.", + IncorrectNotARepository: "Wartość 'notARepository' jest nieprawidłowa. Powinna być jedną z 'prompt', 'create', 'skip', lub 'quit'.", + AutoStashTitle: "Autostash?", + AutoStashPrompt: "Musisz schować i wyciągnąć swoje zmiany, aby je przenieść. Zrobić to automatycznie? (enter/esc)", + StashPrefix: "Automatyczne chowanie zmian dla ", + Discard: "Odrzuć", + DiscardFileChangesTooltip: "Wyświetl opcje odrzucania zmian w wybranym pliku.", + DiscardChangesTitle: "Odrzuć zmiany", Cancel: "Anuluj", - DiscardAllChanges: "Porzuć wszystkie zmiany", - DiscardUnstagedChanges: "Porzuć zmiany poza poczekalnią", - DiscardAllChangesToAllFiles: "Wytnij drzewo robocze", - DiscardAnyUnstagedChanges: "Porzuć zmiany poza poczekalnią", - DiscardUntrackedFiles: "Porzuć pliki nieśledzone", + DiscardAllChanges: "Odrzuć wszystkie zmiany", + DiscardUnstagedChanges: "Odrzuć niezatwierdzone zmiany", + DiscardAllChangesToAllFiles: "Zniszcz drzewo robocze", + DiscardAnyUnstagedChanges: "Odrzuć niezatwierdzone zmiany", + DiscardUntrackedFiles: "Odrzuć nieśledzone pliki", + DiscardStagedChanges: "Odrzuć zatwierdzone zmiany", HardReset: "Twardy reset", - ViewResetOptions: "Wyświetl opcje resetu", - CreateFixupCommitTooltip: "Utwórz commit naprawczy dla tego commita", - SquashAboveCommitsTooltip: `Spłaszcz wszystkie commity naprawcze powyżej zaznaczonych commitów (autosquash)`, - CreateFixupCommit: `Utwóż commit naprawczy`, - SureCreateFixupCommit: `Na pewno utworzyć commit naprawczy dla commita {{.commit}}?`, - ExecuteCustomCommand: "Wykonaj własną komendę", - CustomCommand: "Własna komenda:", - CommitChangesWithoutHook: "Zatwierdź zmiany bez skryptu pre-commit", - SkipHookPrefixNotConfigured: "Nie masz skonfigurowanego prefixa komunikatu commita dla pomijania skryptów. Ustaw `git.skipHookPrefix = 'WIP'` w konfiguracji", - ResetTo: "Zresetuj do", - PressEnterToReturn: "Wciśnij enter żeby wrócić do lazygit", + BranchDeleteTooltip: "Wyświetl opcje usuwania lokalnej/odległej gałęzi.", + TagDeleteTooltip: "Wyświetl opcje usuwania lokalnego/odległego tagu.", + Delete: "Usuń", + Reset: "Reset", + ResetTooltip: "Wyświetl opcje resetu (miękki/mieszany/twardy) do wybranego elementu.", + ResetSoftTooltip: "Resetuj HEAD do wybranego commita, zachowując zmiany między bieżącym a wybranym commit jako zmiany zatwierdzone.", + ResetMixedTooltip: "Resetuj HEAD do wybranego commita, zachowując zmiany między bieżącym a wybranym commit jako zmiany niezatwierdzone.", + ResetHardTooltip: "Resetuj HEAD do wybranego commita, odrzucając wszystkie zmiany między bieżącym a wybranym commit, jak również wszystkie bieżące modyfikacje w drzewie roboczym.", + ViewResetOptions: `Reset`, + FileResetOptionsTooltip: "Wyświetl opcje resetu dla drzewa roboczego (np. zniszczenie drzewa roboczego).", + FixupTooltip: "Włącz wybrany commit do commita poniżej. Podobnie do fixup, ale wiadomość wybranego commita zostanie odrzucona.", + CreateFixupCommitDescription: `Utwórz commit fixup`, + CreateFixupCommitTooltip: "Utwórz commit 'fixup!' dla wybranego commita. Później możesz nacisnąć `{{.squashAbove}}` na tym samym commicie, aby zastosować wszystkie powyższe commity fixup.", + SquashAboveCommits: "Zastosuj commity fixup", + SquashAboveCommitsTooltip: `Scal wszystkie commity 'fixup!', albo powyżej wybranego commita, albo wszystkie w bieżącej gałęzi (autosquash).`, + SquashCommitsAboveSelectedTooltip: `Scal wszystkie commity 'fixup!' powyżej wybranego commita (autosquash).`, + SquashCommitsInCurrentBranchTooltip: `Scal wszystkie commity 'fixup!' w bieżącej gałęzi (autosquash).`, + SquashCommitsInCurrentBranch: "W bieżącej gałęzi", + SquashCommitsAboveSelectedCommit: "Powyżej wybranego commita", + CannotSquashCommitsInCurrentBranch: "Nie można scalić commitów w bieżącej gałęzi: commit HEAD jest commit merge lub jest obecny na głównej gałęzi.", + CreateFixupCommit: `Utwórz commit fixup`, + SureCreateFixupCommit: `Czy na pewno chcesz utworzyć commit fixup! dla commita {{.commit}}?`, + ExecuteCustomCommand: "Wykonaj polecenie niestandardowe", + ExecuteCustomCommandTooltip: "Wyświetl monit, w którym możesz wprowadzić polecenie powłoki do wykonania. Nie należy mylić z wcześniej skonfigurowanymi poleceniami niestandardowymi.", + CustomCommand: "Polecenie niestandardowe:", + CommitChangesWithoutHook: "Zatwierdź zmiany bez hooka pre-commit", + SkipHookPrefixNotConfigured: "Nie skonfigurowano prefiksu wiadomości commita do pomijania hooków. Ustaw `git.skipHookPrefix = 'WIP'` w swojej konfiguracji", + ResetTo: `Resetuj do`, + PressEnterToReturn: "Naciśnij enter, aby wrócić do lazygit", ViewStashOptions: "Wyświetl opcje schowka", - StashAllChanges: "Przechowaj zmiany", - StashAllChangesKeepIndex: "Przechowaj zmiany z poczekalni", + ViewStashOptionsTooltip: "Wyświetl opcje schowka (np. schowaj wszystko, schowaj zatwierdzone, schowaj niezatwierdzone).", + Stash: "Schowaj", + StashTooltip: "Schowaj wszystkie zmiany. Dla innych wariantów schowania, użyj klawisza wyświetlania opcji schowka.", + StashAllChanges: "Schowaj wszystkie zmiany", + StashStagedChanges: "Schowaj zatwierdzone zmiany", + StashAllChangesKeepIndex: "Schowaj wszystkie zmiany i zachowaj indeks", + StashUnstagedChanges: "Schowaj niezatwierdzone zmiany", + StashIncludeUntrackedChanges: "Schowaj wszystkie zmiany włącznie z nieśledzonymi plikami", StashOptions: "Opcje schowka", - NotARepository: "Błąd: nie jesteś w repozytorium", - Jump: "Przeskocz do panelu", - ExitCustomPatchBuilder: `Wyście z trybu "linia po linii"`, - EnterUpstream: `Podaj gałąź nadrzędną jako ' '`, - ReturnToRemotesList: `Wróć do listy repozytoriów zdalnych`, - IgnoreTracked: "Ignoruj plik śledzony", - IgnoreTrackedPrompt: "Na pewno ignorować plik śledzony?", - CommitPrefixPatternError: "Błąd we wzorcu prefixu commita", - NoFilesStagedTitle: "Brak plików w poczekalni", - NoFilesStagedPrompt: "Nie masz plików w poczekalni. Zatwierdzić wszystkie pliki?", - BranchNotFoundTitle: "Nie znaleziono gałęzi", - BranchNotFoundPrompt: "Nie znaleziono gałęzi. Utwórz nową gałąź ", - PullRequestURLCopiedToClipboard: "URL żądania ściągnięcia skopiowany do schowka", - CommitMessageCopiedToClipboard: "Komunikat commita skopiowany do schowka", - CopiedToClipboard: "Skopiowany do schowka", - CreatePullRequestOptions: "Utwórz opcje żądania ściągnięcia", - ConfirmRevertCommit: "Czy na pewno chcesz obrócić {{.selectedCommit}}?", + NotARepository: "Błąd: musi być uruchomione wewnątrz repozytorium git", + WorkingDirectoryDoesNotExist: "Błąd: bieżący katalog roboczy nie istnieje", + Jump: "Skocz do panelu", + ScrollLeftRight: "Przewiń w lewo/prawo", + ScrollLeft: "Przewiń w lewo", + ScrollRight: "Przewiń w prawo", + DiscardPatch: "Odrzuć łatkę", + DiscardPatchConfirm: "Możesz zbudować łatkę tylko z jednego commita/stanu schowka na raz. Odrzucić bieżącą łatkę?", + DiscardPatchSameCommitConfirm: "Masz obecnie zmiany dodane do łatki dla tego commita. Odrzucić bieżącą łatkę?", + CantPatchWhileRebasingError: "Nie można budować łatki ani uruchamiać poleceń łatki podczas scalania lub rebasowania", + ToggleAddToPatch: "Przełącz plik włączony w łatkę", + ToggleAddToPatchTooltip: "Przełącz, czy plik jest włączony w niestandardową łatkę. Zobacz {{.doc}}.", + ToggleAllInPatch: "Przełącz wszystkie pliki", + ToggleAllInPatchTooltip: "Dodaj/usuń wszystkie pliki commita do niestandardowej łatki. Zobacz {{.doc}}.", + UpdatingPatch: "Aktualizowanie łatki", + ViewPatchOptions: "Wyświetl opcje niestandardowej łatki", + PatchOptionsTitle: "Opcje łatki", + NoPatchError: "Brak utworzonej łatki. Aby zacząć budować łatkę, użyj 'spacji' na pliku commita lub enter, aby dodać określone linie", + EmptyPatchError: "Łatka jest nadal pusta. Najpierw dodaj kilka plików lub linii do łatki.", + EnterCommitFile: "Wejdź do pliku / Przełącz zwiń katalog", + EnterCommitFileTooltip: "Jeśli plik jest wybrany, wejdź do pliku, aby móc dodawać/usuwać poszczególne linie do niestandardowej łatki. Jeśli wybrany jest katalog, przełącz katalog.", + ExitCustomPatchBuilder: `Wyjdź z budowniczego niestandardowej łatki`, + EnterUpstream: `Wprowadź upstream jako ' '`, + InvalidUpstream: "Nieprawidłowy upstream. Musi być w formacie ' '", + ReturnToRemotesList: `Wróć do listy zdalnych`, + NewRemote: `Nowy zdalny`, + NewRemoteName: `Nowa nazwa zdalnego:`, + NewRemoteUrl: `Nowy URL zdalnego:`, + ViewBranches: "Wyświetl gałęzie", + EditRemoteName: `Wprowadź zaktualizowaną nazwę zdalnego dla {{.remoteName}}:`, + EditRemoteUrl: `Wprowadź zaktualizowany URL zdalnego dla {{.remoteName}}:`, + RemoveRemote: `Usuń zdalny`, + RemoveRemoteTooltip: `Usuń wybrany zdalny. Wszelkie lokalne gałęzie śledzące gałąź zdalną z tego zdalnego nie zostaną dotknięte.`, + RemoveRemotePrompt: "Czy na pewno chcesz usunąć zdalny", + DeleteRemoteBranch: "Usuń gałąź zdalną", + DeleteRemoteBranchMessage: "Czy na pewno chcesz usunąć gałąź zdalną", + DeleteRemoteBranchTooltip: "Usuń gałąź zdalną ze zdalnego.", + SetAsUpstream: "Ustaw jako upstream", + SetAsUpstreamTooltip: "Ustaw wybraną gałąź zdalną jako upstream sprawdzonej gałęzi.", + SetUpstream: "Ustaw upstream wybranej gałęzi", + UnsetUpstream: "Usuń upstream wybranej gałęzi", + ViewDivergenceFromUpstream: "Wyświetl rozbieżność od upstream", + DivergenceSectionHeaderLocal: "Lokalne", + DivergenceSectionHeaderRemote: "Zdalne", + ViewUpstreamResetOptions: "Resetuj sprawdzoną gałąź na {{.upstream}}", + ViewUpstreamResetOptionsTooltip: "Wyświetl opcje resetowania sprawdzonej gałęzi na {{upstream}}. Uwaga: to nie zresetuje wybranej gałęzi na upstream, zresetuje sprawdzoną gałąź na upstream.", + ViewUpstreamRebaseOptions: "Rebase sprawdzonej gałęzi na {{.upstream}}", + ViewUpstreamRebaseOptionsTooltip: "Wyświetl opcje rebasowania sprawdzonej gałęzi na {{upstream}}. Uwaga: to nie zrebase'uje wybranej gałęzi na upstream, zrebase'uje sprawdzoną gałąź na upstream.", + UpstreamGenericName: "upstream wybranej gałęzi", + SetUpstreamTitle: "Ustaw gałąź upstream", + SetUpstreamMessage: "Czy na pewno chcesz ustawić gałąź upstream '{{.checkedOut}}' na '{{.selected}}'", + EditRemoteTooltip: "Edytuj nazwę lub URL wybranego zdalnego.", + TagCommit: "Otaguj commit", + TagCommitTooltip: "Utwórz nowy tag wskazujący na wybrany commit. Zostaniesz poproszony o wprowadzenie nazwy tagu i opcjonalnego opisu.", + TagMenuTitle: "Utwórz tag", + TagNameTitle: "Nazwa tagu", + TagMessageTitle: "Opis tagu", + AnnotatedTag: "Tag z adnotacją", + LightweightTag: "Lekki tag", + DeleteTagTitle: "Usuń tag '{{.tagName}}'?", + DeleteLocalTag: "Usuń lokalny tag", + DeleteRemoteTag: "Usuń zdalny tag", + RemoteTagDeletedMessage: "Zdalny tag usunięty", + SelectRemoteTagUpstream: "Zdalny, z którego usunąć tag '{{.tagName}}':", + DeleteRemoteTagPrompt: "Czy na pewno chcesz usunąć zdalny tag '{{.tagName}}' z '{{.upstream}}'?", + PushTagTitle: "Zdalny, do którego wysłać tag '{{.tagName}}':", + PushTag: "Wyślij tag", + PushTagTooltip: "Wyślij wybrany tag do zdalnego. Zostaniesz poproszony o wybranie zdalnego.", + NewTag: "Nowy tag", + NewTagTooltip: "Utwórz nowy tag z bieżącego commita. Zostaniesz poproszony o wprowadzenie nazwy tagu i opcjonalnego opisu.", + CreatingTag: "Tworzenie tagu", + ForceTag: "Wymuś Tag", + ForceTagPrompt: "Tag '{{.tagName}}' już istnieje. Naciśnij {{.cancelKey}}, aby anulować, lub {{.confirmKey}}, aby nadpisać.", + FetchRemoteTooltip: "Pobierz aktualizacje z zdalnego repozytorium. Pobiera nowe commity i gałęzie bez scalania ich z lokalnymi gałęziami.", + FetchingRemoteStatus: "Pobieranie zdalnego", + CheckoutCommit: "Przełącz commit", + CheckoutCommitTooltip: "Przełącz wybrany commit jako odłączoną HEAD.", + SureCheckoutThisCommit: "Czy na pewno chcesz przełączyć ten commit?", + GitFlowOptions: "Pokaż opcje git-flow", + NotAGitFlowBranch: "To nie wygląda na gałąź git flow", + NewGitFlowBranchPrompt: "Nowa nazwa {{.branchType}}:", + + IgnoreTracked: "Ignoruj śledzony plik", + IgnoreTrackedPrompt: "Czy na pewno chcesz zignorować śledzony plik?", + ExcludeTracked: "Wyklucz śledzony plik", + ExcludeTrackedPrompt: "Czy na pewno chcesz wykluczyć śledzony plik?", + ViewResetToUpstreamOptions: "Pokaż opcje resetowania do upstream", + NextScreenMode: "Następny tryb ekranu (normalny/półpełny/pełnoekranowy)", + PrevScreenMode: "Poprzedni tryb ekranu", + StartSearch: "Szukaj w bieżącym widoku po tekście", + StartFilter: "Filtruj bieżący widok po tekście", + Panel: "Panel", + KeybindingsLegend: "Legenda: `` oznacza ctrl+b, `` oznacza alt+b, `B` oznacza shift+b", + RenameBranch: "Zmień nazwę gałęzi", + BranchUpstreamOptionsTitle: "Opcje upstream", + ViewBranchUpstreamOptions: "Pokaż opcje upstream", + ViewBranchUpstreamOptionsTooltip: "Pokaż opcje dotyczące upstream gałęzi, np. ustawianie/usuwanie upstream i resetowanie do upstream.", + UpstreamNotSetError: "Wybrana gałąź nie ma upstream (lub upstream nie jest przechowywany lokalnie)", + Upstream: "Upstream", + UpstreamTooltip: "Pokaż opcje upstream dla wybranej gałęzi, np. ustawianie/usuwanie upstream i resetowanie do upstream.", + NewBranchNamePrompt: "Wprowadź nową nazwę gałęzi dla gałęzi", + RenameBranchWarning: "Ta gałąź śledzi zdalną. Ta akcja zmieni tylko lokalną nazwę gałęzi, nie nazwę zdalnej gałęzi. Kontynuować?", + OpenKeybindingsMenu: "Otwórz menu przypisań klawiszy", + ResetCherryPick: "Resetuj wybrane (cherry-picked) commity", + NextTab: "Następna zakładka", + PrevTab: "Poprzednia zakładka", + CantUndoWhileRebasing: "Nie można cofnąć podczas rebasingu", + CantRedoWhileRebasing: "Nie można ponowić podczas rebasingu", + MustStashWarning: "Wyjęcie łatki do indeksu wymaga schowania i odschowania zmian. Jeśli coś pójdzie nie tak, będziesz mógł uzyskać dostęp do plików ze schowka. Kontynuować?", + MustStashTitle: "Musisz schować", + ConfirmationTitle: "Panel potwierdzenia", + PrevPage: "Poprzednia strona", + NextPage: "Następna strona", + GotoTop: "Przewiń do góry", + GotoBottom: "Przewiń do dołu", + FilteringBy: "Filtrowanie przez", + ResetInParentheses: "(Resetuj)", + OpenFilteringMenu: "Pokaż opcje filtrowania", + OpenFilteringMenuTooltip: "Pokaż opcje filtrowania dziennika commitów, tak aby pokazywane były tylko commity pasujące do filtra.", + FilterBy: "Filtruj przez", + ExitFilterMode: "Zatrzymaj filtrowanie", + FilterPathOption: "Wprowadź ścieżkę do filtrowania", + FilterAuthorOption: "Wprowadź autora do filtrowania", + EnterFileName: "Wprowadź ścieżkę:", + EnterAuthor: "Wprowadź autora:", + FilteringMenuTitle: "Filtrowanie", + WillCancelExistingFilterTooltip: "Uwaga: to anuluje istniejący filtr", + MustExitFilterModeTitle: "Polecenie niedostępne", + MustExitFilterModePrompt: "Polecenie niedostępne w trybie filtrowania po ścieżce. Wyjść z trybu filtrowania po ścieżce?", + Diff: "Różnice", + EnterRefToDiff: "Wprowadź ref do różnic", + EnterRefName: "Wprowadź ref:", + ExitDiffMode: "Wyjdź z trybu różnic", + DiffingMenuTitle: "Różnicowanie", + SwapDiff: "Odwróć kierunek różnic", + ViewDiffingOptions: "Pokaż opcje różnicowania", + ViewDiffingOptionsTooltip: "Pokaż opcje dotyczące różnicowania dwóch refów, np. różnicowanie względem wybranego refa, wprowadzanie refa do różnicowania i odwracanie kierunku różnic.", + OpenCommandLogMenu: "Pokaż opcje dziennika poleceń", + OpenCommandLogMenuTooltip: "Pokaż opcje dla dziennika poleceń, np. pokazywanie/ukrywanie dziennika poleceń i skupienie na dzienniku poleceń.", + ShowingGitDiff: "Pokazuje wynik dla:", + CommitDiff: "Różnice commita", + CopyCommitShaToClipboard: "Kopiuj SHA commita do schowka", + CommitSha: "SHA commita", + CommitURL: "URL commita", + CopyCommitMessageToClipboard: "Kopiuj wiadomość commita do schowka", + CommitMessage: "Wiadomość commita", + CommitSubject: "Temat commita", + CommitAuthor: "Autor commita", + CopyCommitAttributeToClipboard: "Kopiuj atrybut commita do schowka", + CopyCommitAttributeToClipboardTooltip: "Kopiuj atrybut commita do schowka (np. hash, URL, różnice, wiadomość, autor).", + CopyBranchNameToClipboard: "Kopiuj nazwę gałęzi do schowka", + CopyPathToClipboard: "Kopiuj ścieżkę do schowka", + CopySelectedTextToClipboard: "Kopiuj zaznaczony tekst do schowka", + CommitPrefixPatternError: "Błąd w wzorcu commitPrefix", + NoFilesStagedTitle: "Brak plików przygotowanych", + NoFilesStagedPrompt: "Nie przygotowałeś żadnych plików. Zatwierdzić wszystkie pliki?", + BranchNotFoundTitle: "Gałąź nie znaleziona", + BranchNotFoundPrompt: "Gałąź nie znaleziona. Utwórz nową gałąź o nazwie", + BranchUnknown: "Gałąź nieznana", + DiscardChangeTitle: "Odrzuć zmianę", + DiscardChangePrompt: "Czy na pewno chcesz odrzucić tę zmianę (git reset)? Jest to nieodwracalne.\nAby wyłączyć to okno dialogowe, ustaw klucz konfiguracyjny 'gui.skipDiscardChangeWarning' na true", + CreateNewBranchFromCommit: "Utwórz nową gałąź z commita", + BuildingPatch: "Tworzenie łatki", + ViewCommits: "Pokaż commity", + MinGitVersionError: "Wersja Gita musi być co najmniej 2.20 (tj. od 2018 roku). Proszę zaktualizować wersję Gita. Alternatywnie zgłoś problem na https://github.com/jesseduffield/lazygit/issues, aby lazygit był bardziej kompatybilny wstecz.", + RunningCustomCommandStatus: "Uruchamianie niestandardowego polecenia", + SubmoduleStashAndReset: "Schowaj niezatwierdzone zmiany submodułu i zaktualizuj", + AndResetSubmodules: "I zresetuj submoduły", + Enter: "Wejdź", + EnterSubmoduleTooltip: "Wejdź do submodułu. Po wejściu do submodułu możesz nacisnąć `{{.escape}}`, aby wrócić do repozytorium nadrzędnego.", + CopySubmoduleNameToClipboard: "Kopiuj nazwę submodułu do schowka", + RemoveSubmodule: "Usuń submoduł", + RemoveSubmodulePrompt: "Czy na pewno chcesz usunąć submoduł '%s' i odpowiadający mu katalog? Jest to nieodwracalne.", + RemoveSubmoduleTooltip: "Usuń wybrany submoduł i odpowiadający mu katalog.", + ResettingSubmoduleStatus: "Resetowanie submodułu", + NewSubmoduleName: "Nowa nazwa submodułu:", + NewSubmoduleUrl: "Nowy URL submodułu:", + NewSubmodulePath: "Nowa ścieżka submodułu:", + NewSubmodule: "Nowy submoduł", + AddingSubmoduleStatus: "Dodawanie submodułu", + UpdateSubmoduleUrl: "Zaktualizuj URL dla submodułu '%s'", + UpdatingSubmoduleUrlStatus: "Aktualizowanie URL", + EditSubmoduleUrl: "Zaktualizuj URL submodułu", + InitializingSubmoduleStatus: "Inicjalizowanie submodułu", + InitSubmoduleTooltip: "Zainicjuj wybrany submoduł, aby przygotować do pobrania. Prawdopodobnie chcesz to kontynuować, wywołując akcję 'update', aby pobrać submoduł.", + Update: "Aktualizuj", + Initialize: "Zainicjuj", + SubmoduleUpdateTooltip: "Aktualizuj wybrany submoduł.", + UpdatingSubmoduleStatus: "Aktualizowanie submodułu", + BulkInitSubmodules: "Masowe inicjowanie submodułów", + BulkUpdateSubmodules: "Masowa aktualizacja submodułów", + BulkDeinitSubmodules: "Masowe wyłączanie submodułów", + ViewBulkSubmoduleOptions: "Pokaż opcje masowych operacji na submodułach", + BulkSubmoduleOptions: "Opcje masowych operacji na submodułach", + RunningCommand: "Uruchamianie polecenia", + SubCommitsTitle: "Sub-commity", + SubmodulesTitle: "Submoduły", + NavigationTitle: "Nawigacja panelu listy", + SuggestionsCheatsheetTitle: "Podpowiedzi", + SuggestionsTitle: "Podpowiedzi (naciśnij %s, aby skupić)", + ExtrasTitle: "Dziennik poleceń", + PushingTagStatus: "Wysyłanie tagu", + PullRequestURLCopiedToClipboard: "URL żądania ściągnięcia skopiowany do schowka", + CommitDiffCopiedToClipboard: "Różnice commita skopiowane do schowka", + CommitSHACopiedToClipboard: "SHA commita skopiowany do schowka", + CommitURLCopiedToClipboard: "URL commita skopiowany do schowka", + CommitMessageCopiedToClipboard: "Wiadomość commita skopiowana do schowka", + CommitSubjectCopiedToClipboard: "Temat commita skopiowany do schowka", + CommitAuthorCopiedToClipboard: "Autor commita skopiowany do schowka", + PatchCopiedToClipboard: "Łatka skopiowana do schowka", + CopiedToClipboard: "Skopiowane do schowka", + ErrCannotEditDirectory: "Nie można edytować katalogu: można edytować tylko pojedyncze pliki", + ErrStageDirWithInlineMergeConflicts: "Nie można przygotować/odprzygotować katalogu zawierającego pliki z konfliktami scalania w linii. Proszę najpierw rozwiązać konflikty scalania", + ErrRepositoryMovedOrDeleted: "Nie można znaleźć repozytorium. Mogło zostać przeniesione lub usunięte ¯\\_(ツ)_/¯", + CommandLog: "Dziennik poleceń", + ErrWorktreeMovedOrRemoved: "Nie można znaleźć drzewa roboczego. Mogło zostać przeniesione lub usunięte ¯\\_(ツ)_/¯", + ToggleShowCommandLog: "Przełącz pokazywanie/ukrywanie dziennika poleceń", + FocusCommandLog: "Skup na dzienniku poleceń", + CommandLogHeader: "Możesz ukryć/skupić się na tym panelu naciskając '%s'\n", + RandomTip: "Losowa porada", + SelectParentCommitForMerge: "Wybierz nadrzędny commit do scalenia", + ToggleWhitespaceInDiffView: "Przełącz białe znaki", + ToggleWhitespaceInDiffViewTooltip: "Przełącz czy zmiany białych znaków są pokazywane w widoku różnic.", + IgnoreWhitespaceDiffViewSubTitle: "(ignorując białe znaki)", + IgnoreWhitespaceNotSupportedHere: "Ignorowanie białych znaków nie jest wspierane w tym widoku", + IncreaseContextInDiffView: "Zwiększ rozmiar kontekstu w widoku różnic", + IncreaseContextInDiffViewTooltip: "Zwiększ ilość kontekstu pokazywanego wokół zmian w widoku różnic.", + DecreaseContextInDiffView: "Zmniejsz rozmiar kontekstu w widoku różnic", + DecreaseContextInDiffViewTooltip: "Zmniejsz ilość kontekstu pokazywanego wokół zmian w widoku różnic.", + DiffContextSizeChanged: "Zmieniono rozmiar kontekstu różnic na %d", + CreatePullRequestOptions: "Zobacz opcje tworzenia pull requesta", + DefaultBranch: "Domyślny branch", + SelectBranch: "Wybierz branch", + SelectConfigFile: "Wybierz plik konfiguracyjny", + NoConfigFileFoundErr: "Nie znaleziono pliku konfiguracyjnego", + LoadingFileSuggestions: "Ładowanie sugestii plików", + LoadingCommits: "Ładowanie commitów", + MustSpecifyOriginError: "Musisz określić zdalne repozytorium jeśli określasz branch", + GitOutput: "Wyjście Gita:", + GitCommandFailed: "Polecenie Gita nie powiodło się. Sprawdź logi poleceń po szczegóły (otwórz za pomocą %s)", + AbortTitle: "Przerwij %s", + AbortPrompt: "Czy na pewno chcesz przerwać bieżące %s?", + OpenLogMenu: "Zobacz opcje logów", + OpenLogMenuTooltip: "Zobacz opcje dla logów commitów, np. zmiana kolejności sortowania, ukrywanie grafu gita, pokazywanie całego grafu gita.", + LogMenuTitle: "Opcje logów commitów", + ToggleShowGitGraphAll: "Przełącz pokazanie całego grafu gita (dodaj flagę `--all` do `git log`)", + ShowGitGraph: "Pokaż graf gita", + SortOrder: "Kolejność sortowania", + SortAlphabetical: "Alfabetycznie", + SortByDate: "Data", + SortByRecency: "Najnowsze", + SortBasedOnReflog: "(na podstawie reflog)", + SortCommits: "Kolejność sortowania commitów", + CantChangeContextSizeError: "Nie można zmienić rozmiaru kontekstu będąc w trybie budowania patcha, ponieważ byliśmy zbyt leniwi, aby to wspierać przy wydaniu funkcji. Jeśli naprawdę tego chcesz, daj nam znać!", + OpenCommitInBrowser: "Otwórz commit w przeglądarce", + ViewBisectOptions: "Zobacz opcje bisect", + ConfirmRevertCommit: "Czy na pewno chcesz cofnąć {{.selectedCommit}}?", + RewordInEditorTitle: "Przeformułuj w edytorze", + RewordInEditorPrompt: "Czy na pewno chcesz przeformułować ten commit w swoim edytorze?", + HardResetAutostashPrompt: "Czy na pewno chcesz zrobić twardy reset do '%s'? Auto-stash zostanie wykonany jeśli będzie potrzebny.", + CheckoutPrompt: "Czy na pewno chcesz przełączyć się na '%s'?", + UpstreamGone: "(upstream zniknął)", + NukeDescription: "Jeśli chcesz, aby wszystkie zmiany w drzewie pracy zniknęły, to jest sposób na to. Jeśli są brudne zmiany w submodule, to zostaną one zapisane w submodule(s).", + DiscardStagedChangesDescription: "To stworzy nowy wpis stash zawierający tylko pliki w stanie staged, a następnie go usunie, tak że drzewo pracy zostanie tylko ze zmianami niezatwierdzonymi", + EmptyOutput: "", + Patch: "Patch", + CustomPatch: "Niestandardowy patch", + CommitsCopied: "commitów skopiowanych", // lowercase because it's used in a sentence + CommitCopied: "commit skopiowany", // lowercase because it's used in a sentence + ResetPatch: "Resetuj patch", + ResetPatchTooltip: "Wyczyść bieżący patch.", + ApplyPatch: "Zastosuj patch", + ApplyPatchTooltip: "Zastosuj bieżący patch do drzewa pracy.", + ApplyPatchInReverse: "Zastosuj patch w odwrotności", + ApplyPatchInReverseTooltip: "Zastosuj bieżący patch w odwrotności do drzewa pracy.", + RemovePatchFromOriginalCommit: "Usuń patch z oryginalnego commita (%s)", + RemovePatchFromOriginalCommitTooltip: "Usuń bieżący patch z jego commita. Jest to osiągane przez rozpoczęcie interaktywnego rebase na commicie, zastosowanie patcha w odwrotności, a następnie kontynuowanie rebase. Jeśli późniejsze commity zależą od patcha, możesz musieć rozwiązać konflikty.", + MovePatchOutIntoIndex: "Przenieś patch do indeksu", + MovePatchOutIntoIndexTooltip: "Przenieś patch z jego commita do indeksu. Jest to osiągane przez rozpoczęcie interaktywnego rebase na commicie, zastosowanie patcha w odwrotności, kontynuowanie rebase do zakończenia, a następnie zastosowanie patcha do indeksu. Jeśli późniejsze commity zależą od patcha, możesz musieć rozwiązać konflikty.", + MovePatchIntoNewCommit: "Przenieś patch do nowego commita", + MovePatchIntoNewCommitTooltip: "Przenieś patch z jego commita do nowego commita na górze oryginalnego commita. Jest to osiągane przez rozpoczęcie interaktywnego rebase na oryginalnym commicie, zastosowanie patcha w odwrotności, następnie zastosowanie patcha do indeksu i zatwierdzenie go jako nowy commit, przed kontynuowaniem rebase do zakończenia. Jeśli późniejsze commity zależą od patcha, możesz musieć rozwiązać konflikty.", + MovePatchToSelectedCommit: "Przenieś patch do wybranego commita (%s)", + MovePatchToSelectedCommitTooltip: "Przenieś patch z jego oryginalnego commita do wybranego commita. Jest to osiągane przez rozpoczęcie interaktywnego rebase na oryginalnym commicie, zastosowanie patcha w odwrotności, następnie kontynuowanie rebase do wybranego commita, przed zastosowaniem patcha do przodu i zmodyfikowaniem wybranego commita. Rebase jest następnie kontynuowany do zakończenia. Jeśli commity między źródłem a miejscem docelowym zależą od patcha, możesz musieć rozwiązać konflikty.", + CopyPatchToClipboard: "Kopiuj patch do schowka", + NoMatchesFor: "Brak dopasowań dla '%s' %s", + ExitSearchMode: "%s: Wyjdź z trybu wyszukiwania", + ExitTextFilterMode: "%s: Wyjdź z trybu filtrowania", + MatchesFor: "dopasowania dla '%s' (%d z %d) %s", // lowercase because it's after other text + SearchKeybindings: "%s: Następne dopasowanie, %s: Poprzednie dopasowanie, %s: Wyjdź z trybu wyszukiwania", + SearchPrefix: "Szukaj: ", + FilterPrefix: "Filtruj: ", + WorktreesTitle: "Drzewa pracy", + WorktreeTitle: "Drzewo pracy", + Switch: "Przełącz", + SwitchToWorktree: "Przełącz do drzewa pracy", + SwitchToWorktreeTooltip: "Przełącz do wybranego drzewa pracy.", + AlreadyCheckedOutByWorktree: "Ten branch jest już używany przez drzewo pracy {{.worktreeName}}. Czy chcesz przełączyć się do tego drzewa pracy?", + BranchCheckedOutByWorktree: "Branch {{.branchName}} jest używany przez drzewo pracy {{.worktreeName}}", + DetachWorktreeTooltip: "To uruchomi `git checkout --detach` na drzewie pracy, tak że przestanie ono używać brancha, ale drzewo pracy drzewa pracy zostanie nietknięte.", + Switching: "Przełączanie", + RemoveWorktree: "Usuń drzewo pracy", + RemoveWorktreeTitle: "Usuń drzewo pracy", + RemoveWorktreePrompt: "Czy na pewno chcesz usunąć drzewo pracy '{{.worktreeName}}'?", + ForceRemoveWorktreePrompt: "'{{.worktreeName}}' zawiera zmodyfikowane lub nieśledzone pliki (szczerze mówiąc, może zawierać oba). Czy na pewno chcesz to usunąć?", + RemovingWorktree: "Usuwanie drzewa pracy", + DetachWorktree: "Odłącz drzewo pracy", + DetachingWorktree: "Odłączanie drzewa pracy", + AddingWorktree: "Dodawanie drzewa pracy", + CantDeleteCurrentWorktree: "Nie możesz usunąć bieżącego drzewa pracy!", + AlreadyInWorktree: "Jesteś już w wybranym drzewie pracy", + CantDeleteMainWorktree: "Nie możesz usunąć głównego drzewa pracy!", + NoWorktreesThisRepo: "Brak drzew pracy", + MissingWorktree: "(brakujące)", + MainWorktree: "(główne)", + NewWorktree: "Nowe drzewo pracy", + NewWorktreePath: "Nowa ścieżka drzewa pracy", + NewWorktreeBase: "Nowa bazowa ref drzewa pracy", + RemoveWorktreeTooltip: "Usuń wybrane drzewo pracy. To usunie zarówno katalog drzewa pracy, jak i metadane o drzewie pracy w katalogu .git.", + BranchNameCannotBeBlank: "Nazwa brancha nie może być pusta", + NewBranchName: "Nowa nazwa brancha", + NewBranchNameLeaveBlank: "Nowa nazwa brancha (pozostaw puste, aby przełączyć {{.default}})", + ViewWorktreeOptions: "Zobacz opcje drzewa pracy", + CreateWorktreeFrom: "Utwórz drzewo pracy z {{.ref}}", + CreateWorktreeFromDetached: "Utwórz drzewo pracy z {{.ref}} (odłączone)", + LcWorktree: "drzewo pracy", + ChangingDirectoryTo: "Zmiana katalogu na {{.path}}", + Name: "Nazwa", + Branch: "Branch", + Path: "Ścieżka", + MarkedBaseCommitStatus: "Oznaczono bazowy commit dla rebase", + MarkAsBaseCommit: "Oznacz jako bazowy commit dla rebase", + MarkAsBaseCommitTooltip: "Wybierz bazowy commit dla następnego rebase. Kiedy robisz rebase na branch, tylko commity powyżej bazowego commita zostaną przeniesione. Używa to polecenia `git rebase --onto`.", + MarkedCommitMarker: "↑↑↑ Rebase rozpocznie się stąd ↑↑↑", + PleaseGoToURL: "Proszę przejdź do {{.url}}", + DisabledMenuItemPrefix: "Wyłączone: ", + NoCopiedCommits: "Brak skopiowanych commitów", + QuickStartInteractiveRebase: "Rozpocznij interaktywny rebase", + QuickStartInteractiveRebaseTooltip: "Rozpocznij interaktywny rebase dla commitów na twoim branchu. To będzie zawierać wszystkie commity od HEAD do pierwszego commita scalenia lub commita głównego brancha.\nJeśli chcesz zamiast tego rozpocząć interaktywny rebase od wybranego commita, naciśnij `{{.editKey}}`.", + CannotQuickStartInteractiveRebase: "Nie można rozpocząć interaktywnego rebase: commit HEAD jest commit'em scalenia lub jest obecny na głównym branchu, więc nie ma odpowiedniego bazowego commita, od którego można by zacząć rebase. Możesz rozpocząć interaktywny rebase z konkretnego commita, wybierając commit i naciskając `{{.editKey}}`.", + RangeSelectUp: "Zaznacz zakres w górę", + RangeSelectDown: "Zaznacz zakres w dół", + RangeSelectNotSupported: "Akcja nie wspiera zaznaczania zakresu, proszę wybrać pojedynczy element", + NoItemSelected: "Nie wybrano elementu", + SelectedItemIsNotABranch: "Wybrany element nie jest branch'em", + SelectedItemDoesNotHaveFiles: "Wybrany element nie ma plików do wyświetlenia", + RangeSelectNotSupportedForSubmodules: "Zaznaczanie zakresu nie jest wspierane dla submodułów", + OldCherryPickKeyWarning: "Klawisz 'c' nie jest już domyślnym klawiszem do kopiowania commitów do cherry pick. Proszę użyj `{{.copy}}` zamiast tego (i `{{.paste}}` aby wkleić). Powodem tej zmiany jest to, że klawisz 'v' do wybierania zakresu linii podczas stagingu jest teraz używany również do wybierania zakresu linii w każdym widoku listy, co oznacza, że musieliśmy znaleźć nowy klawisz do wklejania commitów, i jeśli zamierzamy teraz używać `{{.paste}}` do wklejania commitów, możemy równie dobrze użyć `{{.copy}}` do ich kopiowania. Jeśli chcesz skonfigurować klawisze, aby uzyskać stare zachowanie, ustaw następujące w swojej konfiguracji:\n\nkeybinding:\n universal:\n toggleRangeSelect: \n commits:\n cherryPickCopy: 'c'\n pasteCommits: 'v'", + + Actions: Actions{ + CheckoutCommit: "Przełącz commit", + CheckoutTag: "Przełącz tag", + CheckoutBranch: "Przełącz gałąź", + ForceCheckoutBranch: "Wymuś przełączenie gałęzi", + DeleteLocalBranch: "Usuń lokalną gałąź", + DeleteBranch: "Usuń gałąź", + Merge: "Scal", + RebaseBranch: "Rebazuj gałąź", + RenameBranch: "Zmień nazwę gałęzi", + CreateBranch: "Utwórz gałąź", + CherryPick: "(Cherry-pick) wklej commity", + CheckoutFile: "Przełącz plik", + DiscardOldFileChange: "Odrzuć starą zmianę w pliku", + SquashCommitDown: "Scal commit w dół", + FixupCommit: "Popraw commit", + RewordCommit: "Zmień treść commita", + DropCommit: "Odrzuć commit", + EditCommit: "Edytuj commit", + AmendCommit: "Popraw commit", + ResetCommitAuthor: "Zresetuj autora commita", + SetCommitAuthor: "Ustaw autora commita", + RevertCommit: "Cofnij commit", + CreateFixupCommit: "Utwórz commit poprawkowy", + SquashAllAboveFixupCommits: "Scal wszystkie powyższe commity poprawkowe", + CreateLightweightTag: "Utwórz lekki tag", + CreateAnnotatedTag: "Utwórz opisowy tag", + CopyCommitMessageToClipboard: "Kopiuj wiadomość commita do schowka", + CopyCommitSubjectToClipboard: "Kopiuj temat commita do schowka", + CopyCommitDiffToClipboard: "Kopiuj różnice commita do schowka", + CopyCommitSHAToClipboard: "Kopiuj SHA commita do schowka", + CopyCommitURLToClipboard: "Kopiuj URL commita do schowka", + CopyCommitAuthorToClipboard: "Kopiuj autora commita do schowka", + CopyCommitAttributeToClipboard: "Kopiuj do schowka", + CopyPatchToClipboard: "Kopiuj łatkę do schowka", + MoveCommitUp: "Przenieś commit w górę", + MoveCommitDown: "Przenieś commit w dół", + CustomCommand: "Polecenie niestandardowe", + + // TODO: remove + DiscardAllChangesInDirectory: "Odrzuć wszystkie zmiany w katalogu", + DiscardUnstagedChangesInDirectory: "Odrzuć niezatwierdzone zmiany w katalogu", + + DiscardAllChangesInFile: "Odrzuć wszystkie zmiany w wybranych plikach", + DiscardAllUnstagedChangesInFile: "Odrzuć wszystkie niezatwierdzone zmiany w wybranych plikach", + StageFile: "Dodaj plik do indeksu", + StageResolvedFiles: "Dodaj pliki, których konflikty scalania zostały rozwiązane", + UnstageFile: "Usuń plik z indeksu", + UnstageAllFiles: "Usuń wszystkie pliki z indeksu", + StageAllFiles: "Dodaj wszystkie pliki do indeksu", + IgnoreExcludeFile: "Ignoruj lub wyklucz plik", + IgnoreFileErr: "Nie można zignorować .gitignore", + ExcludeFile: "Wyklucz plik", + ExcludeFileErr: "Nie można wykluczyć .git/info/exclude", + ExcludeGitIgnoreErr: "Nie można wykluczyć .gitignore", + Commit: "Commituj", + EditFile: "Edytuj plik", + Push: "Wypchnij", + Pull: "Pociągnij", + OpenFile: "Otwórz plik", + StashAllChanges: "Schowaj wszystkie zmiany", + StashAllChangesKeepIndex: "Schowaj wszystkie zmiany i zachowaj indeks", + StashStagedChanges: "Schowaj zatwierdzone zmiany", + StashUnstagedChanges: "Schowaj niezatwierdzone zmiany", + StashIncludeUntrackedChanges: "Schowaj wszystkie zmiany włącznie z nieśledzonymi plikami", + GitFlowFinish: "git flow zakończ", + GitFlowStart: "git flow rozpocznij", + CopyToClipboard: "Kopiuj do schowka", + CopySelectedTextToClipboard: "Kopiuj zaznaczony tekst do schowka", + RemovePatchFromCommit: "Usuń łatkę z commita", + MovePatchToSelectedCommit: "Przenieś łatkę do wybranego commita", + MovePatchIntoIndex: "Przenieś łatkę do indeksu", + MovePatchIntoNewCommit: "Przenieś łatkę do nowego commita", + DeleteRemoteBranch: "Usuń zdalną gałąź", + SetBranchUpstream: "Ustaw gałąź nadrzędną", + AddRemote: "Dodaj zdalne", + RemoveRemote: "Usuń zdalne", + UpdateRemote: "Aktualizuj zdalne", + ApplyPatch: "Zastosuj łatkę", + Stash: "Schowaj", + RenameStash: "Zmień nazwę schowka", + RemoveSubmodule: "Usuń podmoduł", + ResetSubmodule: "Resetuj podmoduł", + AddSubmodule: "Dodaj podmoduł", + UpdateSubmoduleUrl: "Aktualizuj URL podmodułu", + InitialiseSubmodule: "Zainicjuj podmoduł", + BulkInitialiseSubmodules: "Masowo zainicjuj podmoduły", + BulkUpdateSubmodules: "Masowo aktualizuj podmoduły", + BulkDeinitialiseSubmodules: "Masowo deinicjuj podmoduły", + UpdateSubmodule: "Aktualizuj podmoduł", + DeleteLocalTag: "Usuń lokalny tag", + DeleteRemoteTag: "Usuń zdalny tag", + PushTag: "Wypchnij tag", + NukeWorkingTree: "Zniszcz drzewo robocze", + DiscardUnstagedFileChanges: "Odrzuć niezatwierdzone zmiany w pliku", + RemoveUntrackedFiles: "Usuń nieśledzone pliki", + RemoveStagedFiles: "Usuń zatwierdzone pliki", + SoftReset: "Miękki reset", + MixedReset: "Mieszany reset", + HardReset: "Twardy reset", + FastForwardBranch: "Szybkie przewijanie gałęzi", + Undo: "Cofnij", + Redo: "Ponów", + CopyPullRequestURL: "Kopiuj URL żądania ściągnięcia", + OpenDiffTool: "Otwórz narzędzie różnic", + OpenMergeTool: "Otwórz narzędzie scalania", + OpenCommitInBrowser: "Otwórz commit w przeglądarce", + OpenPullRequest: "Otwórz żądanie ściągnięcia w przeglądarce", + StartBisect: "Rozpocznij bisect", + ResetBisect: "Resetuj bisect", + BisectSkip: "Pomiń bisect", + BisectMark: "Oznacz bisect", + RemoveWorktree: "Usuń drzewo robocze", + AddWorktree: "Dodaj drzewo robocze", + }, + Bisect: Bisect{ + Mark: "Oznacz bieżący commit (%s) jako %s", + MarkStart: "Oznacz %s jako %s (rozpocznij bisect)", + SkipCurrent: "Pomiń bieżący commit (%s)", + SkipSelected: "Pomiń wybrany commit (%s)", + ResetTitle: "Resetuj 'git bisect'", + ResetPrompt: "Czy na pewno chcesz zresetować 'git bisect'?", + ResetOption: "Resetuj bisect", + ChooseTerms: "Wybierz terminy bisect", + OldTermPrompt: "Termin dla starego/dobrego commita:", + NewTermPrompt: "Termin dla nowego/złego commita:", + BisectMenuTitle: "Bisect", + CompleteTitle: "Bisect zakończony", + CompletePrompt: "Bisect zakończony! Następujący commit wprowadził zmianę:\n\n%s\n\nCzy chcesz teraz zresetować 'git bisect'?", + CompletePromptIndeterminate: "Bisect zakończony! Niektóre commity zostały pominięte, więc którykolwiek z następujących commitów mógł wprowadzić zmianę:\n\n%s\n\nCzy chcesz teraz zresetować 'git bisect'?", + Bisecting: "Bisectowanie", + }, + Log: Log{ + EditRebase: "Rozpoczynanie interaktywnego rebazowania od '{{.ref}}'", + MoveCommitUp: "Przenoszenie TODO w dół: '{{.shortSha}}'", + MoveCommitDown: "Przenoszenie TODO w dół: '{{.shortSha}}'", + CherryPickCommits: "Cherry-picking commitów:\n'{{.commitLines}}'", + HandleUndo: "Cofanie ostatniego rozwiązania konfliktu", + HandleMidRebaseCommand: "Aktualizacja akcji rebazowania commita {{.shortSha}} na '{{.action}}'", + RemoveFile: "Usuwanie ścieżki '{{.path}}'", + CopyToClipboard: "Kopiowanie '{{.str}}' do schowka", + Remove: "Usuwanie '{{.filename}}'", + CreateFileWithContent: "Tworzenie pliku '{{.path}}'", + AppendingLineToFile: "Dodawanie '{{.line}}' do pliku '{{.filename}}'", + EditRebaseFromBaseCommit: "Rozpoczynanie interaktywnego rebazowania od '{{.baseCommit}}' na '{{.targetBranchName}}", + }, + BreakingChangesTitle: "Zmiany przełomowe", + BreakingChangesMessage: `Aktualizujesz do nowej wersji lazygit, która zawiera zmiany przełomowe. Proszę przejrzeć poniższe notatki i zaktualizować swoją konfigurację, jeśli jest to konieczne. +Aby uzyskać więcej informacji, zobacz pełne notatki do wydania na .`, + BreakingChangesByVersion: map[string]string{ + "0.41.0": `- Gdy naciśniesz 'g', aby wywołać menu resetu git, opcja 'mixed' jest teraz pierwsza i domyślna, a nie 'soft'. Jest to dlatego, że 'mixed' jest najczęściej używaną opcją. +- Panel wiadomości commita teraz domyślnie zawija tekst (tj. dodaje znaki nowej linii, gdy osiągniesz margines). Możesz dostosować konfigurację w następujący sposób: + +git: + commit: + autoWrapCommitMessage: true + autoWrapWidth: 72 + +- Klawisz 'v' był już używany w widoku staging do rozpoczęcia zaznaczania zakresu, ale teraz możesz go użyć do rozpoczęcia zaznaczania zakresu w dowolnym widoku. Niestety koliduje to z klawiszem 'v' dla wklejania commitów (cherry-pick), więc teraz wklejanie commitów odbywa się za pomocą 'shift+V', a dla spójności kopiowanie commitów odbywa się teraz za pomocą 'shift+C' zamiast 'c'. Zauważ, że klawisz 'v' to tylko jeden ze sposobów na rozpoczęcie zaznaczania zakresu: możesz zamiast tego użyć shift+góra/dół. Więc jeśli chcesz skonfigurować klawisze cherry-pick, aby uzyskać stare zachowanie, ustaw następujące w swojej konfiguracji: + +keybinding: + universal: + toggleRangeSelect: + commits: + cherryPickCopy: 'c' + pasteCommits: 'v' + +- Sciskanie fixupów za pomocą 'shift-S' teraz wywołuje menu, z domyślną opcją sciskania wszystkich commitów fixup w gałęzi. Oryginalne zachowanie sciskania tylko commitów fixup powyżej wybranego commita jest nadal dostępne jako druga opcja w tym menu. +- Statusy ładowania push/pull/fetch są teraz wyświetlane przy gałęzi, a nie w popupie. Pozwala to np. na równoczesne fetchowanie wielu gałęzi i widzenie statusu dla każdej gałęzi. +- Graf logu git w widoku commitów jest teraz zawsze wyświetlany domyślnie (wcześniej był wyświetlany tylko, gdy widok był maksymalizowany). Jeśli uznasz to za zbyt hałaśliwe, możesz to zmienić za pomocą ctrl+L -> 'Pokaż graf git' -> 'gdy maksymalizowany' + `, + }, } } diff --git a/pkg/i18n/russian.go b/pkg/i18n/russian.go index e27ebabff1b..d692ec9a962 100644 --- a/pkg/i18n/russian.go +++ b/pkg/i18n/russian.go @@ -35,391 +35,390 @@ const russianDeprecatedEditConfigWarning = ` // exporting this so we can use it in tests func RussianTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "Недостаточно места для отрисовки панелей", - DiffTitle: "Сравнения", - FilesTitle: "Файлы", - BranchesTitle: "Ветки", - CommitsTitle: "Коммиты", - StashTitle: "Хранилище", - SnakeTitle: "Змейка", - EasterEgg: "Пасхалка", - UnstagedChanges: `Непроиндексированные Изменения`, - StagedChanges: `Проиндексированные Изменения`, - MainTitle: "Главная", - MergeConfirmTitle: "Слияние", - StagingTitle: "Главная панель (Индексирование)", - MergingTitle: "Главная панель (Слияние)", - NormalTitle: "Главная панель (Обычный)", - LogTitle: "Журнал", - CommitSummary: "Сводка коммита", - CredentialsUsername: "Имя пользователя", - CredentialsPassword: "Пароль", - CredentialsPassphrase: "Введите пароль для SSH ключа", - CredentialsPIN: "Введите PIN-код для SSH ключа", - PassUnameWrong: "Неверный пароль, кодовая фраза и/или имя пользователя", - Commit: "Сохранить изменения", - AmendLastCommit: "Правка последнего коммита", - AmendLastCommitTitle: "Правка Последнего Коммита", - SureToAmend: "Вы уверены, что хотите править последний коммит? Впоследствии можно изменить сообщение коммита на панели коммитов.", - NoCommitToAmend: "Не найден коммит для внесения поправок.", - CommitChangesWithEditor: "Сохранить изменения с помощью редактора git", - StatusTitle: "Статус", - Menu: "Меню", - Execute: "Выполнить", - Stage: "Переключить индекс", - ToggleStagedAll: "Все проиндексированные/непроиндексированные", - ToggleTreeView: "Переключить вид дерева файлов", - OpenMergeTool: "Открыть внешний инструмент слияния (git mergetool)", - Refresh: "Обновить", - Push: "Отправить изменения", - Pull: "Получить и слить изменения", - Scroll: "Прокрутить", - MergeConflictsTitle: "Конфликты Слияния", - Checkout: "Переключить", - FileFilter: "Фильтровать файлы (проиндексированные/непроиндексированные)", - FilterStagedFiles: "Показывать только проиндексированные файлы", - FilterUnstagedFiles: "Показывать только непроиндексированные файлы", - ResetFilter: "Сбросить фильтр", - NoChangedFiles: "Нет изменённых файлов", - SoftReset: "Мягкий сброс", - AlreadyCheckedOutBranch: "Вы уже переключились в эту ветку", - SureForceCheckout: "Вы уверены, что хотите принудительная переключить? Вы потеряете все локальные изменения", - ForceCheckoutBranch: "Принудительное Переключение Ветки", - BranchName: "Название ветки", - NewBranchNameBranchOff: "Название новой ветки (Ветка с '{{.branchName}}')", - CantDeleteCheckOutBranch: "Невозможно удалить переключённую ветку!", - ForceDeleteBranchMessage: "'{{.selectedBranchName}}' не полностью слилась. Вы уверены, что хотите удалить его?", - RebaseBranch: "Перебазировать переключённую ветку на эту ветку", - CantRebaseOntoSelf: "Невозможно перебазировать ветку на себя", - CantMergeBranchIntoItself: "Невозможно объединить ветку в себя", - ForceCheckout: "Принудительное переключение", - CheckoutByName: "Переключить по названию", - NewBranch: "Новая ветка", - NoBranchesThisRepo: "Нет веток для этого репозитория", - CommitWithoutMessageErr: "Вы не можете сохранить изменения без сообщения коммита", - Close: "Закрыть", - CloseCancel: "Закрыть/отменить", - Confirm: "Подтвердить", - Quit: "Выйти", - NoCommitsThisBranch: "Нет коммитов для этой ветки", - UpdateRefHere: "Обновить ветку '{{.ref}}' здесь", - CannotSquashOrFixupFirstCommit: "Ниже нет коммита, который можно было бы объединить", - Fixup: "Объединить несколько коммитов в один отбросив сообщение коммита (Fixup) ", - SureFixupThisCommit: "Вы уверены, что хотите объединить несколько коммитов, отбросив сообщение коммита? Он будет объединён с коммитом ниже", - SureSquashThisCommit: "Вы уверены, что хотите объединить несколько коммитов в нижний коммит?", - Squash: "Объединить коммиты (Squash)", - PickCommitTooltip: "Выбрать коммит (в середине перебазирования)", - RevertCommit: "Отменить коммит", - Reword: "Перефразировать коммит", - DropCommit: "Удалить коммит", - MoveDownCommit: "Переместить коммит вниз на один", - MoveUpCommit: "Переместить коммит вверх на один", - EditCommitTooltip: "Изменить коммит", - AmendCommitTooltip: "Править последний коммит с проиндексированными изменениями", - ResetAuthor: "Сброс автора коммита", - SetAuthor: "Установить автора", - AmendCommitAttribute: "Установить/убрать автора коммита", - SetAuthorPromptTitle: "Установить автора (должно выглядеть как «Имя »)", - SureResetCommitAuthor: "Поле автора этого автора будет обновлено в соответствии с настроенным пользователем. Это также обновляет временную метку автора. Продолжить?", - RewordCommitEditor: "Переписать коммит с помощью редактора", - Error: "Ошибка", - PickHunk: "Выбрать эту часть", - PickAllHunks: "Выбрать все части", - Undo: "Отменить", - UndoReflog: "Отменить (через reflog) (экспериментальный)", - RedoReflog: "Повторить (через reflog) (экспериментальный)", - UndoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git запустить, чтобы отменить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.", - RedoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git нужно запустить, чтобы повторить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.", - DiscardAllTooltip: "Отменить проиндексированные и непроиндексированные изменения в '{{.path}}'.", - DiscardUnstagedTooltip: "Отменить непроиндексированные изменения в '{{.path}}'.", - Pop: "Применить припрятанные изменения и тут же удалить их из хранилища", - Drop: "Удалить припрятанные изменения из хранилища", - Apply: "Применить припрятанные изменения", - NoStashEntries: "Нет записей в хранилище", - StashDrop: "Сбросить хранилище", - SureDropStashEntry: "Вы уверены, что хотите удалить эту запись хранилища?", - StashPop: "Применить припрятанные изменения и тут же удалить их из хранилища", - SurePopStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения и тут же удалить их из хранилища?", - StashApply: "Применить припрятанные изменения", - SureApplyStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения?", - NoTrackedStagedFilesStash: "У вас нет отслеженных/проиндексированных файлов для хранения", - NoFilesToStash: "У вас нет файлов для хранения", - StashChanges: "Припрятать изменения", - RenameStash: "Переименовать хранилище", - RenameStashPrompt: "Переименовать хранилище: {{.stashName}}", - OpenConfig: "Открыть файл конфигурации", - EditConfig: "Редактировать файл конфигурации", - ForcePush: "Принудительная отправка изменении", - ForcePushPrompt: "Ветка отклонилась от удалённой ветки. Нажмите «esc», чтобы отменить, или «enter», чтобы начать принудительную отправку изменении.", - ForcePushDisabled: "Ветка отклонилась от удалённой ветки. Принудительная отправка изменении была отключена", - UpdatesRejectedAndForcePushDisabled: "Обновления были отклонены. Принудительная отправка изменении была отключена", - CheckForUpdate: "Проверить обновления", - CheckingForUpdates: "Проверка обновлений...", - UpdateAvailableTitle: "Доступно обновление!", - UpdateAvailable: "Скачать и установить версию {{.newVersion}}?", - UpdateInProgressWaitingStatus: "Обновление", - UpdateCompletedTitle: "Обновление завершено!", - UpdateCompleted: "Обновление успешно установлено. Перезапустите lazygit, чтобы обновление вступило в силу.", - FailedToRetrieveLatestVersionErr: "Не удалось получить информацию о версии", - OnLatestVersionErr: "Установлена последняя версия", - MajorVersionErr: "Новая версия ({{.newVersion}}) содержит несовместимые с предыдущими версии изменения по сравнению с текущей версией ({{.currentVersion}})", - CouldNotFindBinaryErr: "Не удалось найти бинарный файл на {{.url}}", - UpdateFailedErr: "Не удалось обновить: {{.errMessage}}", - ConfirmQuitDuringUpdateTitle: "Идёт Обновление", - ConfirmQuitDuringUpdate: "Выполняется обновление. Вы уверены, что хотите выйти?", - MergeToolTitle: "Инструмент слияния", - MergeToolPrompt: "Вы уверены, что хотите открыть `git mergetool`?", - IntroPopupMessage: russianIntroPopupMessage, - DeprecatedEditConfigWarning: russianDeprecatedEditConfigWarning, - GitconfigParseErr: `Gogit не удалось проанализировать ваш файл gitconfig из-за наличия символов «\» без кавычек. Их удаление должно решить проблему.`, - EditFile: `Редактировать файл`, - OpenFile: `Открыть файл`, - IgnoreFile: `Добавить в .gitignore`, - ExcludeFile: `Добавить в .git/info/exclude`, - RefreshFiles: `Обновить файлы`, - Merge: `Слияние с текущей переключённой веткой`, - ConfirmQuit: `Вы уверены, что хотите выйти?`, - SwitchRepo: `Переключиться на последний репозиторий`, - AllBranchesLogGraph: `Показать все логи ветки`, - UnsupportedGitService: `Неподдерживаемая служба git`, - CreatePullRequest: `Создать запрос на принятие изменений`, - CopyPullRequestURL: `Скопировать URL запроса на принятие изменений в буфер обмена`, - NoBranchOnRemote: `Этой ветки не существует в удалённом репозитории. Сначала вам нужно его отправить в удалённый репозитории.`, - Fetch: `Получить изменения`, - NoAutomaticGitFetchTitle: `Нет автоматического получения изменении`, - NoAutomaticGitFetchBody: `Lazygit не может использовать «git fetch» в приватном репозитории; используйте «f» на панели файлов, чтобы запустить «git fetch» вручную`, - FileEnter: `Проиндексировать отдельные части/строки для файла или свернуть/развернуть для каталога`, - FileStagingRequirements: `Можно проиндексировать только отдельные строки для отслеживаемых файлов`, - StageSelectionTooltip: `Переключить строку в проиндексированные / непроиндексированные`, - DiscardSelection: `Отменить изменение (git reset)`, - ToggleRangeSelect: `Переключить выборку перетаскивания`, - ToggleSelectHunk: `Переключить выборку частей`, - ToggleSelectionForPatch: `Добавить/удалить строку(и) для патча`, - EditHunk: `Изменить эту часть`, - ToggleStagingView: `Переключиться на другую панель (проиндексированные/непроиндексированные изменения)`, - ReturnToFilesPanel: `Вернуться к панели файлов`, - FastForward: `Перемотать эту ветку вперёд из её upstream-ветки`, - FastForwarding: "Получить изменения и перемотать вперёд", - FoundConflictsTitle: "Конфликты!", - ViewConflictsMenuItem: "Просмотр конфликтов", - AbortMenuItem: "Прервать %s", - ViewMergeRebaseOptions: "Просмотреть параметры слияния/перебазирования", - NotMergingOrRebasing: "В данный момент вы не выполняете ни перебазирования, ни слияние", - AlreadyRebasing: "Невозможно выполнить это действие во время перебазирования", - RecentRepos: "Последние репозитории", - MergeOptionsTitle: "Параметры слияния", - RebaseOptionsTitle: "Параметры перебазирования", - CommitSummaryTitle: "Сводка коммита", - CommitDescriptionTitle: "Описание коммита", - CommitDescriptionSubTitle: "Нажмите вкладку, чтобы переключить фокус", - LocalBranchesTitle: "Локальные Ветки", - SearchTitle: "Поиск", - TagsTitle: "Теги", - MenuTitle: "Меню", - RemotesTitle: "Удалённые репозитории", - RemoteBranchesTitle: "Удалённые ветки", - PatchBuildingTitle: "Главная панель (сборка патчей)", - InformationTitle: "Информация", - SecondaryTitle: "Вторичный", - ReflogCommitsTitle: "Журнал ссылок (Reflog)", - GlobalTitle: "Глобальные сочетания клавиш", - ConflictsResolved: "Все конфликты слияния разрешены. Продолжить?", - Continue: "Продолжить", - Keybindings: "Связки клавиш", - RebasingTitle: "Перебазировать '{{.checkedOutBranch}}' на '{{.ref}}'", - SimpleRebase: "Простая перебазировка", - InteractiveRebase: "Интерактивная перебазировка", - InteractiveRebaseTooltip: "Начать интерактивную перебазировку с перерыва в начале, чтобы можно было обновить TODO коммиты, прежде чем продолжить.", - ConfirmMerge: "Вы уверены, что хотите to merge '{{.selectedBranch}}' into '{{.checkedOutBranch}}'?", - FwdNoUpstream: "Невозможно перемотать ветку без upstream-ветки", - FwdNoLocalUpstream: "Невозможно перемотать ветку. Удалённый репозитории не зарегистрирован локально", - FwdCommitsToPush: "Невозможно перемотать ветку с коммитами для отправки", - ErrorOccurred: "Произошла ошибка! Пожалуйста, заявите о проблеме на", - NoRoom: "Недостаточно места", - YouAreHere: "ВЫ ЗДЕСЬ", - YouDied: "ТЫ УМЕР!", - RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается", - ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается", - CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)", - PasteCommits: "Вставить отобранные коммиты (cherry-pick)", - SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?", - CherryPick: "Выборочная отборка (Cherry-Pick)", - Donate: "Пожертвовать", - AskQuestion: "Задать вопрос", - PrevLine: "Выбрать предыдущую строку", - NextLine: "Выбрать следующую строку", - PrevHunk: "Выбрать предыдущую часть", - NextHunk: "Выбрать следующую часть", - PrevConflict: "Выбрать предыдущий конфликт", - NextConflict: "Выбрать следующий конфликт", - SelectPrevHunk: "Выбрать предыдущую часть", - SelectNextHunk: "Выбрать следующую часть", - ScrollDown: "Прокрутить вниз", - ScrollUp: "Прокрутить вверх", - ScrollUpMainWindow: "Прокрутить вверх главную панель", - ScrollDownMainWindow: "Прокрутить вниз главную панель", - AmendCommitTitle: "Править коммит (amend)", - AmendCommitPrompt: "Вы уверены, что хотите править этот коммит проиндексированными файлами?", - DropCommitTitle: "Удалить коммит", - DropCommitPrompt: "Вы уверены, что хотите удалить этот коммит?", - PullingStatus: "Получение и слияние изменении", - PushingStatus: "Отправка изменении", - FetchingStatus: "Получение изменении", - SquashingStatus: "Объединение коммитов", - FixingStatus: "Объединение коммитов, отбросив сообщение коммита", - DeletingStatus: "Удаление", - MovingStatus: "Перемещение", - RebasingStatus: "Перебазирование", - MergingStatus: "Слияние", - LowercaseRebasingStatus: "перебазировка", // lowercase because it shows up in parentheses - LowercaseMergingStatus: "слияние", // lowercase because it shows up in parentheses - AmendingStatus: "Правка коммита", - CherryPickingStatus: "Выборочная отборка (cherry-picking)", - UndoingStatus: "Отмена последней команды", - RedoingStatus: "Выполнение последней команды", - CheckingOutStatus: "Переключение", - CommittingStatus: "Сохранение изменении", - CommitFiles: "Сохранить изменения файлов", - SubCommitsDynamicTitle: "Коммиты (%s)", - CommitFilesDynamicTitle: "Различия файлов (%s)", - RemoteBranchesDynamicTitle: "Удалённые ветки (%s)", - ViewItemFiles: "Просмотреть файлы выбранного элемента", - CommitFilesTitle: "Сохранить Изменения Файлов", - CheckoutCommitFileTooltip: "Переключить файл", - CanOnlyDiscardFromLocalCommits: "Изменения можно отменить только из локальных коммитов.", - DiscardOldFileChangeTooltip: "Отменить изменения коммита в этом файле", - DiscardFileChangesTitle: "Отменить изменения файла", - DiscardFileChangesPrompt: "Вы уверены, что хотите удалить изменения в выбранных файлах из этого коммита?\n\nЭто действие запустит перебазирование и отменит изменения в этих файлах. Обратите внимание, что если последующие коммиты зависят от этих изменений, вам, возможно, придется разрешить конфликты.\nПримечание: это также сбросит все активные пользовательские патчи.", - DisabledForGPG: "Функция недоступна для пользователей, использующих GPG", - CreateRepo: "Не в git репозитории. Создать новый git репозиторий? (y/n):", - BareRepo: "Вы пытались открыть Lazygit в пустом репозитории, но Lazygit ещё не поддерживает пустые репозитории. Открыть последний репозиторий? (y/n)", - InitialBranch: "Название ветки? (оставьте пустым для git по умолчанию):", - NoRecentRepositories: "Необходимо открыть lazygit в git репозитории. Нет валидных последних репозиториев. Выход.", - IncorrectNotARepository: "Неверное значение 'notARepository'. Это должно быть одним из 'prompt', 'create', 'skip', или 'quit'.", - AutoStashTitle: "Автосохранить изменения?", - AutoStashPrompt: "Чтобы перенести изменения, их нужно сохранить и вынуть. Сделать это автоматически? (enter/esc)", - StashPrefix: "Автосохранение изменений для", - Discard: "Просмотреть параметры «отмены изменении»", - Cancel: "Отменить", - DiscardAllChanges: "Отменить все изменения", - DiscardUnstagedChanges: "Отменить непроиндексированные изменения", - DiscardAllChangesToAllFiles: "Разбомбить рабочее дерево?", - DiscardAnyUnstagedChanges: "Отменить непроиндексированные изменения", - DiscardUntrackedFiles: "Удалить неотслеживаемые файлы", - DiscardStagedChanges: "Отменить проиндексированные изменения", - HardReset: "Жёсткий сброс", - ViewResetOptions: `Просмотреть параметры сброса`, - CreateFixupCommitTooltip: `Создать fixup коммит для этого коммита`, - SquashAboveCommitsTooltip: `Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)`, - CreateFixupCommit: `Создать fixup коммит`, - SureCreateFixupCommit: `Вы уверены, что хотите создать fixup! коммит для коммита {{.commit}}?`, - ExecuteCustomCommand: "Выполнить пользовательскую команду", - CustomCommand: "Пользовательская Команда:", - CommitChangesWithoutHook: "Закоммитить изменения без предварительного хука коммита", - SkipHookPrefixNotConfigured: "Вы не настроили префикс сообщения коммита для пропуска хуков. Установите `git.skipHookPrefix = 'WIP'` в вашей конфигурации", - ResetTo: `Сбросить на`, - PressEnterToReturn: "Нажмите Enter, чтобы вернуться в lazygit", - ViewStashOptions: "Просмотреть параметры хранилища", - StashAllChanges: "Припрятать все изменения", - StashStagedChanges: "Припрятать проиндексированные изменения", - StashAllChangesKeepIndex: "Припрятать все изменения и сохранить индекс", - StashUnstagedChanges: "Припрятать непроиндексированные изменения", - StashIncludeUntrackedChanges: "Припрятать все изменения, включая неотслеживаемые файлы", - StashOptions: "Параметры хранилища", - NotARepository: "Ошибка: необходимо запустить внутри git репозитория", - Jump: "Перейти к панели", - ScrollLeftRight: "Прокрутить влево/вправо", - ScrollLeft: "Прокрутить влево", - ScrollRight: "Прокрутить вправо", - DiscardPatch: "Отменить патч", - DiscardPatchConfirm: "Вы можете собрать патч только из одной записи коммита/хранилища за раз. Отменить текущий патч?", - CantPatchWhileRebasingError: "Вы не можете создавать патчи или запускать команды патча, находясь в состоянии слияния или перемещения.", - ToggleAddToPatch: "Переключить файлы включённые в патч", - ToggleAllInPatch: "Переключить все файлы, включённые в патч", - UpdatingPatch: "Обновление патча", - ViewPatchOptions: "Просмотреть пользовательские параметры патча", - PatchOptionsTitle: "Параметры патча", - NoPatchError: "Патч ещё не создан. Чтобы начать сборку патча, используйте «пробел» в файле коммита или введите, чтобы добавить определённые строки.", - EnterCommitFile: "Введите файл, чтобы добавить выбранные строки в патч (или свернуть каталог переключения)", - ExitCustomPatchBuilder: `Выйти из сборщика пользовательских патчей`, - EnterUpstream: `Введите upstream как ' '`, - InvalidUpstream: "Недействительный upstream. Должен быть в формате ' '", - ReturnToRemotesList: `Вернуться к списку удалённых репозитории`, - NewRemote: `Добавить новую удалённую ветку`, - NewRemoteName: `Название новой удалённой ветки`, - NewRemoteUrl: `Ссылка новой удалённой ветки`, - EditRemoteName: `Введите новое название для удалённое ветки {{.remoteName}}:`, - EditRemoteUrl: `Введите новую ссылку для удалённое ветки {{.remoteName}}:`, - RemoveRemote: `Удалить удалённую ветку`, - RemoveRemotePrompt: "Вы уверены, что хотите удалить удалённую ветку?", - DeleteRemoteBranch: "Удалить Удалённую Ветку", - DeleteRemoteBranchMessage: "Вы уверены, что хотите удалить удалённую ветку", - SetAsUpstreamTooltip: "Установить как upstream-ветку переключённую ветку", - SetUpstream: "Установить upstream-ветку из выбранной ветки", - UnsetUpstream: "Убрать upstream-ветку из выбранной ветки", - SetUpstreamTitle: "Установить upstream-ветку", - SetUpstreamMessage: "Вы уверены, что хотите установить upstream-ветвь '{{.checkedOut}}' на '{{.selected}}'", - EditRemoteTooltip: "Редактировать удалённый репозитории", - TagCommit: "Пометить коммит тегом", - TagMenuTitle: "Создать тег", - TagNameTitle: "Название тега", - TagMessageTitle: "Сообщения тега", - AnnotatedTag: "Аннотированный тег", - LightweightTag: "Легковесный тег", - DeleteTagTitle: "Удалить тег", - PushTagTitle: "Удалённый репозитории для отправки тега '{{.tagName}}' в:", - PushTag: "Отправить тег", - NewTag: "Создать тег", - FetchRemoteTooltip: "Получение изменения из удалённого репозитория", - FetchingRemoteStatus: "Получение статуса удалённого репозитория", - CheckoutCommit: "Переключить коммит", - SureCheckoutThisCommit: "Вы уверены, что хотите переключить коммит?", - GitFlowOptions: "Показать параметры git-flow", - NotAGitFlowBranch: "Это не похоже на ветку git-flow", - NewGitFlowBranchPrompt: "Новое {{.branchType}} название:", - IgnoreTracked: "Игнорировать отслеживаемый файл", - IgnoreTrackedPrompt: "Вы уверены, что хотите игнорировать отслеживаемый файл?", - ExcludeTracked: "Исключить отслеживаемый файл", - ExcludeTrackedPrompt: "Вы уверены, что хотите исключить отслеживаемый файл?", - ViewResetToUpstreamOptions: "Просмотреть параметры сброса upstream-ветки", - NextScreenMode: "Следующий режим экрана (нормальный/полуэкранный/полноэкранный)", - PrevScreenMode: "Предыдущий режим экрана", - StartSearch: "Найти", - Panel: "Панель", - KeybindingsLegend: "Связки клавиш", - RenameBranch: "Переименовать ветку", - NewBranchNamePrompt: "Введите новое название ветки", - RenameBranchWarning: "Эта ветвь отслеживает удалённый репозитории. Это действие переименует только имя локальной ветки, а не имя удалённой ветки. Продолжать?", - OpenKeybindingsMenu: "Открыть меню", - ResetCherryPick: "Сбросить отобранную (скопированную | cherry-picked) выборку коммитов", - NextTab: "Следующая вкладка", - PrevTab: "Предыдущая вкладка", - CantUndoWhileRebasing: "Невозможно отменить во время перебазирования", - CantRedoWhileRebasing: "Невозможно повторить при перебазировании", - MustStashWarning: "Вытаскивание исправления в индекс требует сохранения и распаковки ваших изменений. Если что-то пойдёт не так, можно получить доступ к файлам из хранилища. Продолжить?", - MustStashTitle: "Необходимо припрятать", - ConfirmationTitle: "Панель Подтверждения", - PrevPage: "Предыдущая страница", - NextPage: "Следующая страница", - GotoTop: "Пролистать наверх", - GotoBottom: "Прокрутить вниз", - FilteringBy: "Фильтрация по", - ResetInParentheses: "(сбросить)", - OpenFilteringMenu: "Просмотреть параметры фильтрации по пути", - FilterBy: "Фильтровать по", - ExitFilterMode: "Прекратить фильтрацию по пути", - FilterPathOption: "Введите путь для фильтрации", - EnterFileName: "Введите путь:", - FilteringMenuTitle: "Фильтрация", - MustExitFilterModeTitle: "Команда недоступна", - MustExitFilterModePrompt: "Команда недоступна в режиме фильтрации. Выйти из режима фильтрации?", - Diff: "Разница", - EnterRefToDiff: "Введите ссылку для сравнения", - EnterRefName: "Введите ссылку:", - ExitDiffMode: "Выйти из режима сравнения", - DiffingMenuTitle: "Сравнение", - SwapDiff: "Обратное направление сравнении", - ViewDiffingOptions: "Открыть меню сравнении", + NotEnoughSpace: "Недостаточно места для отрисовки панелей", + DiffTitle: "Сравнения", + FilesTitle: "Файлы", + BranchesTitle: "Ветки", + CommitsTitle: "Коммиты", + StashTitle: "Хранилище", + SnakeTitle: "Змейка", + EasterEgg: "Пасхалка", + UnstagedChanges: `Непроиндексированные Изменения`, + StagedChanges: `Проиндексированные Изменения`, + MainTitle: "Главная", + MergeConfirmTitle: "Слияние", + StagingTitle: "Главная панель (Индексирование)", + MergingTitle: "Главная панель (Слияние)", + NormalTitle: "Главная панель (Обычный)", + LogTitle: "Журнал", + CommitSummary: "Сводка коммита", + CredentialsUsername: "Имя пользователя", + CredentialsPassword: "Пароль", + CredentialsPassphrase: "Введите пароль для SSH ключа", + CredentialsPIN: "Введите PIN-код для SSH ключа", + PassUnameWrong: "Неверный пароль, кодовая фраза и/или имя пользователя", + Commit: "Сохранить изменения", + AmendLastCommit: "Правка последнего коммита", + AmendLastCommitTitle: "Правка Последнего Коммита", + SureToAmend: "Вы уверены, что хотите править последний коммит? Впоследствии можно изменить сообщение коммита на панели коммитов.", + NoCommitToAmend: "Не найден коммит для внесения поправок.", + CommitChangesWithEditor: "Сохранить изменения с помощью редактора git", + StatusTitle: "Статус", + Menu: "Меню", + Execute: "Выполнить", + Stage: "Переключить индекс", + ToggleStagedAll: "Все проиндексированные/непроиндексированные", + ToggleTreeView: "Переключить вид дерева файлов", + OpenMergeTool: "Открыть внешний инструмент слияния (git mergetool)", + Refresh: "Обновить", + Push: "Отправить изменения", + Pull: "Получить и слить изменения", + Scroll: "Прокрутить", + MergeConflictsTitle: "Конфликты Слияния", + Checkout: "Переключить", + FileFilter: "Фильтровать файлы (проиндексированные/непроиндексированные)", + FilterStagedFiles: "Показывать только проиндексированные файлы", + FilterUnstagedFiles: "Показывать только непроиндексированные файлы", + ResetFilter: "Сбросить фильтр", + NoChangedFiles: "Нет изменённых файлов", + SoftReset: "Мягкий сброс", + AlreadyCheckedOutBranch: "Вы уже переключились в эту ветку", + SureForceCheckout: "Вы уверены, что хотите принудительная переключить? Вы потеряете все локальные изменения", + ForceCheckoutBranch: "Принудительное Переключение Ветки", + BranchName: "Название ветки", + NewBranchNameBranchOff: "Название новой ветки (Ветка с '{{.branchName}}')", + CantDeleteCheckOutBranch: "Невозможно удалить переключённую ветку!", + ForceDeleteBranchMessage: "'{{.selectedBranchName}}' не полностью слилась. Вы уверены, что хотите удалить его?", + RebaseBranch: "Перебазировать переключённую ветку на эту ветку", + CantRebaseOntoSelf: "Невозможно перебазировать ветку на себя", + CantMergeBranchIntoItself: "Невозможно объединить ветку в себя", + ForceCheckout: "Принудительное переключение", + CheckoutByName: "Переключить по названию", + NewBranch: "Новая ветка", + NoBranchesThisRepo: "Нет веток для этого репозитория", + CommitWithoutMessageErr: "Вы не можете сохранить изменения без сообщения коммита", + Close: "Закрыть", + CloseCancel: "Закрыть/отменить", + Confirm: "Подтвердить", + Quit: "Выйти", + NoCommitsThisBranch: "Нет коммитов для этой ветки", + UpdateRefHere: "Обновить ветку '{{.ref}}' здесь", + CannotSquashOrFixupFirstCommit: "Ниже нет коммита, который можно было бы объединить", + Fixup: "Объединить несколько коммитов в один отбросив сообщение коммита (Fixup) ", + SureFixupThisCommit: "Вы уверены, что хотите объединить несколько коммитов, отбросив сообщение коммита? Он будет объединён с коммитом ниже", + SureSquashThisCommit: "Вы уверены, что хотите объединить несколько коммитов в нижний коммит?", + Squash: "Объединить коммиты (Squash)", + PickCommitTooltip: "Выбрать коммит (в середине перебазирования)", + RevertCommit: "Отменить коммит", + Reword: "Перефразировать коммит", + DropCommit: "Удалить коммит", + MoveDownCommit: "Переместить коммит вниз на один", + MoveUpCommit: "Переместить коммит вверх на один", + EditCommitTooltip: "Изменить коммит", + AmendCommitTooltip: "Править последний коммит с проиндексированными изменениями", + ResetAuthor: "Сброс автора коммита", + SetAuthor: "Установить автора", + AmendCommitAttribute: "Установить/убрать автора коммита", + SetAuthorPromptTitle: "Установить автора (должно выглядеть как «Имя »)", + SureResetCommitAuthor: "Поле автора этого автора будет обновлено в соответствии с настроенным пользователем. Это также обновляет временную метку автора. Продолжить?", + RewordCommitEditor: "Переписать коммит с помощью редактора", + Error: "Ошибка", + PickHunk: "Выбрать эту часть", + PickAllHunks: "Выбрать все части", + Undo: "Отменить", + UndoReflog: "Отменить (через reflog) (экспериментальный)", + RedoReflog: "Повторить (через reflog) (экспериментальный)", + UndoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git запустить, чтобы отменить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.", + RedoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git нужно запустить, чтобы повторить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.", + DiscardAllTooltip: "Отменить проиндексированные и непроиндексированные изменения в '{{.path}}'.", + DiscardUnstagedTooltip: "Отменить непроиндексированные изменения в '{{.path}}'.", + Pop: "Применить припрятанные изменения и тут же удалить их из хранилища", + Drop: "Удалить припрятанные изменения из хранилища", + Apply: "Применить припрятанные изменения", + NoStashEntries: "Нет записей в хранилище", + StashDrop: "Сбросить хранилище", + SureDropStashEntry: "Вы уверены, что хотите удалить эту запись хранилища?", + StashPop: "Применить припрятанные изменения и тут же удалить их из хранилища", + SurePopStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения и тут же удалить их из хранилища?", + StashApply: "Применить припрятанные изменения", + SureApplyStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения?", + NoTrackedStagedFilesStash: "У вас нет отслеженных/проиндексированных файлов для хранения", + NoFilesToStash: "У вас нет файлов для хранения", + StashChanges: "Припрятать изменения", + RenameStash: "Переименовать хранилище", + RenameStashPrompt: "Переименовать хранилище: {{.stashName}}", + OpenConfig: "Открыть файл конфигурации", + EditConfig: "Редактировать файл конфигурации", + ForcePush: "Принудительная отправка изменении", + ForcePushPrompt: "Ветка отклонилась от удалённой ветки. Нажмите «esc», чтобы отменить, или «enter», чтобы начать принудительную отправку изменении.", + ForcePushDisabled: "Ветка отклонилась от удалённой ветки. Принудительная отправка изменении была отключена", + CheckForUpdate: "Проверить обновления", + CheckingForUpdates: "Проверка обновлений...", + UpdateAvailableTitle: "Доступно обновление!", + UpdateAvailable: "Скачать и установить версию {{.newVersion}}?", + UpdateInProgressWaitingStatus: "Обновление", + UpdateCompletedTitle: "Обновление завершено!", + UpdateCompleted: "Обновление успешно установлено. Перезапустите lazygit, чтобы обновление вступило в силу.", + FailedToRetrieveLatestVersionErr: "Не удалось получить информацию о версии", + OnLatestVersionErr: "Установлена последняя версия", + MajorVersionErr: "Новая версия ({{.newVersion}}) содержит несовместимые с предыдущими версии изменения по сравнению с текущей версией ({{.currentVersion}})", + CouldNotFindBinaryErr: "Не удалось найти бинарный файл на {{.url}}", + UpdateFailedErr: "Не удалось обновить: {{.errMessage}}", + ConfirmQuitDuringUpdateTitle: "Идёт Обновление", + ConfirmQuitDuringUpdate: "Выполняется обновление. Вы уверены, что хотите выйти?", + MergeToolTitle: "Инструмент слияния", + MergeToolPrompt: "Вы уверены, что хотите открыть `git mergetool`?", + IntroPopupMessage: russianIntroPopupMessage, + DeprecatedEditConfigWarning: russianDeprecatedEditConfigWarning, + GitconfigParseErr: `Gogit не удалось проанализировать ваш файл gitconfig из-за наличия символов «\» без кавычек. Их удаление должно решить проблему.`, + EditFile: `Редактировать файл`, + OpenFile: `Открыть файл`, + IgnoreFile: `Добавить в .gitignore`, + ExcludeFile: `Добавить в .git/info/exclude`, + RefreshFiles: `Обновить файлы`, + Merge: `Слияние с текущей переключённой веткой`, + ConfirmQuit: `Вы уверены, что хотите выйти?`, + SwitchRepo: `Переключиться на последний репозиторий`, + AllBranchesLogGraph: `Показать все логи ветки`, + UnsupportedGitService: `Неподдерживаемая служба git`, + CreatePullRequest: `Создать запрос на принятие изменений`, + CopyPullRequestURL: `Скопировать URL запроса на принятие изменений в буфер обмена`, + NoBranchOnRemote: `Этой ветки не существует в удалённом репозитории. Сначала вам нужно его отправить в удалённый репозитории.`, + Fetch: `Получить изменения`, + NoAutomaticGitFetchTitle: `Нет автоматического получения изменении`, + NoAutomaticGitFetchBody: `Lazygit не может использовать «git fetch» в приватном репозитории; используйте «f» на панели файлов, чтобы запустить «git fetch» вручную`, + FileEnter: `Проиндексировать отдельные части/строки для файла или свернуть/развернуть для каталога`, + FileStagingRequirements: `Можно проиндексировать только отдельные строки для отслеживаемых файлов`, + StageSelectionTooltip: `Переключить строку в проиндексированные / непроиндексированные`, + DiscardSelection: `Отменить изменение (git reset)`, + ToggleRangeSelect: `Переключить выборку перетаскивания`, + ToggleSelectHunk: `Переключить выборку частей`, + ToggleSelectionForPatch: `Добавить/удалить строку(и) для патча`, + EditHunk: `Изменить эту часть`, + ToggleStagingView: `Переключиться на другую панель (проиндексированные/непроиндексированные изменения)`, + ReturnToFilesPanel: `Вернуться к панели файлов`, + FastForward: `Перемотать эту ветку вперёд из её upstream-ветки`, + FastForwarding: "Получить изменения и перемотать вперёд", + FoundConflictsTitle: "Конфликты!", + ViewConflictsMenuItem: "Просмотр конфликтов", + AbortMenuItem: "Прервать %s", + ViewMergeRebaseOptions: "Просмотреть параметры слияния/перебазирования", + NotMergingOrRebasing: "В данный момент вы не выполняете ни перебазирования, ни слияние", + AlreadyRebasing: "Невозможно выполнить это действие во время перебазирования", + RecentRepos: "Последние репозитории", + MergeOptionsTitle: "Параметры слияния", + RebaseOptionsTitle: "Параметры перебазирования", + CommitSummaryTitle: "Сводка коммита", + CommitDescriptionTitle: "Описание коммита", + CommitDescriptionSubTitle: "Нажмите вкладку, чтобы переключить фокус", + LocalBranchesTitle: "Локальные Ветки", + SearchTitle: "Поиск", + TagsTitle: "Теги", + MenuTitle: "Меню", + RemotesTitle: "Удалённые репозитории", + RemoteBranchesTitle: "Удалённые ветки", + PatchBuildingTitle: "Главная панель (сборка патчей)", + InformationTitle: "Информация", + SecondaryTitle: "Вторичный", + ReflogCommitsTitle: "Журнал ссылок (Reflog)", + GlobalTitle: "Глобальные сочетания клавиш", + ConflictsResolved: "Все конфликты слияния разрешены. Продолжить?", + Continue: "Продолжить", + Keybindings: "Связки клавиш", + RebasingTitle: "Перебазировать '{{.checkedOutBranch}}' на '{{.ref}}'", + SimpleRebase: "Простая перебазировка", + InteractiveRebase: "Интерактивная перебазировка", + InteractiveRebaseTooltip: "Начать интерактивную перебазировку с перерыва в начале, чтобы можно было обновить TODO коммиты, прежде чем продолжить.", + ConfirmMerge: "Вы уверены, что хотите to merge '{{.selectedBranch}}' into '{{.checkedOutBranch}}'?", + FwdNoUpstream: "Невозможно перемотать ветку без upstream-ветки", + FwdNoLocalUpstream: "Невозможно перемотать ветку. Удалённый репозитории не зарегистрирован локально", + FwdCommitsToPush: "Невозможно перемотать ветку с коммитами для отправки", + ErrorOccurred: "Произошла ошибка! Пожалуйста, заявите о проблеме на", + NoRoom: "Недостаточно места", + YouAreHere: "ВЫ ЗДЕСЬ", + YouDied: "ТЫ УМЕР!", + RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается", + ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается", + CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)", + PasteCommits: "Вставить отобранные коммиты (cherry-pick)", + SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?", + CherryPick: "Выборочная отборка (Cherry-Pick)", + Donate: "Пожертвовать", + AskQuestion: "Задать вопрос", + PrevLine: "Выбрать предыдущую строку", + NextLine: "Выбрать следующую строку", + PrevHunk: "Выбрать предыдущую часть", + NextHunk: "Выбрать следующую часть", + PrevConflict: "Выбрать предыдущий конфликт", + NextConflict: "Выбрать следующий конфликт", + SelectPrevHunk: "Выбрать предыдущую часть", + SelectNextHunk: "Выбрать следующую часть", + ScrollDown: "Прокрутить вниз", + ScrollUp: "Прокрутить вверх", + ScrollUpMainWindow: "Прокрутить вверх главную панель", + ScrollDownMainWindow: "Прокрутить вниз главную панель", + AmendCommitTitle: "Править коммит (amend)", + AmendCommitPrompt: "Вы уверены, что хотите править этот коммит проиндексированными файлами?", + DropCommitTitle: "Удалить коммит", + DropCommitPrompt: "Вы уверены, что хотите удалить этот коммит?", + PullingStatus: "Получение и слияние изменении", + PushingStatus: "Отправка изменении", + FetchingStatus: "Получение изменении", + SquashingStatus: "Объединение коммитов", + FixingStatus: "Объединение коммитов, отбросив сообщение коммита", + DeletingStatus: "Удаление", + MovingStatus: "Перемещение", + RebasingStatus: "Перебазирование", + MergingStatus: "Слияние", + LowercaseRebasingStatus: "перебазировка", // lowercase because it shows up in parentheses + LowercaseMergingStatus: "слияние", // lowercase because it shows up in parentheses + AmendingStatus: "Правка коммита", + CherryPickingStatus: "Выборочная отборка (cherry-picking)", + UndoingStatus: "Отмена последней команды", + RedoingStatus: "Выполнение последней команды", + CheckingOutStatus: "Переключение", + CommittingStatus: "Сохранение изменении", + CommitFiles: "Сохранить изменения файлов", + SubCommitsDynamicTitle: "Коммиты (%s)", + CommitFilesDynamicTitle: "Различия файлов (%s)", + RemoteBranchesDynamicTitle: "Удалённые ветки (%s)", + ViewItemFiles: "Просмотреть файлы выбранного элемента", + CommitFilesTitle: "Сохранить Изменения Файлов", + CheckoutCommitFileTooltip: "Переключить файл", + CanOnlyDiscardFromLocalCommits: "Изменения можно отменить только из локальных коммитов.", + DiscardOldFileChangeTooltip: "Отменить изменения коммита в этом файле", + DiscardFileChangesTitle: "Отменить изменения файла", + DiscardFileChangesPrompt: "Вы уверены, что хотите удалить изменения в выбранных файлах из этого коммита?\n\nЭто действие запустит перебазирование и отменит изменения в этих файлах. Обратите внимание, что если последующие коммиты зависят от этих изменений, вам, возможно, придется разрешить конфликты.\nПримечание: это также сбросит все активные пользовательские патчи.", + DisabledForGPG: "Функция недоступна для пользователей, использующих GPG", + CreateRepo: "Не в git репозитории. Создать новый git репозиторий? (y/n):", + BareRepo: "Вы пытались открыть Lazygit в пустом репозитории, но Lazygit ещё не поддерживает пустые репозитории. Открыть последний репозиторий? (y/n)", + InitialBranch: "Название ветки? (оставьте пустым для git по умолчанию):", + NoRecentRepositories: "Необходимо открыть lazygit в git репозитории. Нет валидных последних репозиториев. Выход.", + IncorrectNotARepository: "Неверное значение 'notARepository'. Это должно быть одним из 'prompt', 'create', 'skip', или 'quit'.", + AutoStashTitle: "Автосохранить изменения?", + AutoStashPrompt: "Чтобы перенести изменения, их нужно сохранить и вынуть. Сделать это автоматически? (enter/esc)", + StashPrefix: "Автосохранение изменений для", + Discard: "Просмотреть параметры «отмены изменении»", + Cancel: "Отменить", + DiscardAllChanges: "Отменить все изменения", + DiscardUnstagedChanges: "Отменить непроиндексированные изменения", + DiscardAllChangesToAllFiles: "Разбомбить рабочее дерево?", + DiscardAnyUnstagedChanges: "Отменить непроиндексированные изменения", + DiscardUntrackedFiles: "Удалить неотслеживаемые файлы", + DiscardStagedChanges: "Отменить проиндексированные изменения", + HardReset: "Жёсткий сброс", + ViewResetOptions: `Просмотреть параметры сброса`, + CreateFixupCommitTooltip: `Создать fixup коммит для этого коммита`, + SquashAboveCommitsTooltip: `Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)`, + CreateFixupCommit: `Создать fixup коммит`, + SureCreateFixupCommit: `Вы уверены, что хотите создать fixup! коммит для коммита {{.commit}}?`, + ExecuteCustomCommand: "Выполнить пользовательскую команду", + CustomCommand: "Пользовательская Команда:", + CommitChangesWithoutHook: "Закоммитить изменения без предварительного хука коммита", + SkipHookPrefixNotConfigured: "Вы не настроили префикс сообщения коммита для пропуска хуков. Установите `git.skipHookPrefix = 'WIP'` в вашей конфигурации", + ResetTo: `Сбросить на`, + PressEnterToReturn: "Нажмите Enter, чтобы вернуться в lazygit", + ViewStashOptions: "Просмотреть параметры хранилища", + StashAllChanges: "Припрятать все изменения", + StashStagedChanges: "Припрятать проиндексированные изменения", + StashAllChangesKeepIndex: "Припрятать все изменения и сохранить индекс", + StashUnstagedChanges: "Припрятать непроиндексированные изменения", + StashIncludeUntrackedChanges: "Припрятать все изменения, включая неотслеживаемые файлы", + StashOptions: "Параметры хранилища", + NotARepository: "Ошибка: необходимо запустить внутри git репозитория", + Jump: "Перейти к панели", + ScrollLeftRight: "Прокрутить влево/вправо", + ScrollLeft: "Прокрутить влево", + ScrollRight: "Прокрутить вправо", + DiscardPatch: "Отменить патч", + DiscardPatchConfirm: "Вы можете собрать патч только из одной записи коммита/хранилища за раз. Отменить текущий патч?", + CantPatchWhileRebasingError: "Вы не можете создавать патчи или запускать команды патча, находясь в состоянии слияния или перемещения.", + ToggleAddToPatch: "Переключить файлы включённые в патч", + ToggleAllInPatch: "Переключить все файлы, включённые в патч", + UpdatingPatch: "Обновление патча", + ViewPatchOptions: "Просмотреть пользовательские параметры патча", + PatchOptionsTitle: "Параметры патча", + NoPatchError: "Патч ещё не создан. Чтобы начать сборку патча, используйте «пробел» в файле коммита или введите, чтобы добавить определённые строки.", + EnterCommitFile: "Введите файл, чтобы добавить выбранные строки в патч (или свернуть каталог переключения)", + ExitCustomPatchBuilder: `Выйти из сборщика пользовательских патчей`, + EnterUpstream: `Введите upstream как ' '`, + InvalidUpstream: "Недействительный upstream. Должен быть в формате ' '", + ReturnToRemotesList: `Вернуться к списку удалённых репозитории`, + NewRemote: `Добавить новую удалённую ветку`, + NewRemoteName: `Название новой удалённой ветки`, + NewRemoteUrl: `Ссылка новой удалённой ветки`, + EditRemoteName: `Введите новое название для удалённое ветки {{.remoteName}}:`, + EditRemoteUrl: `Введите новую ссылку для удалённое ветки {{.remoteName}}:`, + RemoveRemote: `Удалить удалённую ветку`, + RemoveRemotePrompt: "Вы уверены, что хотите удалить удалённую ветку?", + DeleteRemoteBranch: "Удалить Удалённую Ветку", + DeleteRemoteBranchMessage: "Вы уверены, что хотите удалить удалённую ветку", + SetAsUpstreamTooltip: "Установить как upstream-ветку переключённую ветку", + SetUpstream: "Установить upstream-ветку из выбранной ветки", + UnsetUpstream: "Убрать upstream-ветку из выбранной ветки", + SetUpstreamTitle: "Установить upstream-ветку", + SetUpstreamMessage: "Вы уверены, что хотите установить upstream-ветвь '{{.checkedOut}}' на '{{.selected}}'", + EditRemoteTooltip: "Редактировать удалённый репозитории", + TagCommit: "Пометить коммит тегом", + TagMenuTitle: "Создать тег", + TagNameTitle: "Название тега", + TagMessageTitle: "Сообщения тега", + AnnotatedTag: "Аннотированный тег", + LightweightTag: "Легковесный тег", + DeleteTagTitle: "Удалить тег", + PushTagTitle: "Удалённый репозитории для отправки тега '{{.tagName}}' в:", + PushTag: "Отправить тег", + NewTag: "Создать тег", + FetchRemoteTooltip: "Получение изменения из удалённого репозитория", + FetchingRemoteStatus: "Получение статуса удалённого репозитория", + CheckoutCommit: "Переключить коммит", + SureCheckoutThisCommit: "Вы уверены, что хотите переключить коммит?", + GitFlowOptions: "Показать параметры git-flow", + NotAGitFlowBranch: "Это не похоже на ветку git-flow", + NewGitFlowBranchPrompt: "Новое {{.branchType}} название:", + IgnoreTracked: "Игнорировать отслеживаемый файл", + IgnoreTrackedPrompt: "Вы уверены, что хотите игнорировать отслеживаемый файл?", + ExcludeTracked: "Исключить отслеживаемый файл", + ExcludeTrackedPrompt: "Вы уверены, что хотите исключить отслеживаемый файл?", + ViewResetToUpstreamOptions: "Просмотреть параметры сброса upstream-ветки", + NextScreenMode: "Следующий режим экрана (нормальный/полуэкранный/полноэкранный)", + PrevScreenMode: "Предыдущий режим экрана", + StartSearch: "Найти", + Panel: "Панель", + KeybindingsLegend: "Связки клавиш", + RenameBranch: "Переименовать ветку", + NewBranchNamePrompt: "Введите новое название ветки", + RenameBranchWarning: "Эта ветвь отслеживает удалённый репозитории. Это действие переименует только имя локальной ветки, а не имя удалённой ветки. Продолжать?", + OpenKeybindingsMenu: "Открыть меню", + ResetCherryPick: "Сбросить отобранную (скопированную | cherry-picked) выборку коммитов", + NextTab: "Следующая вкладка", + PrevTab: "Предыдущая вкладка", + CantUndoWhileRebasing: "Невозможно отменить во время перебазирования", + CantRedoWhileRebasing: "Невозможно повторить при перебазировании", + MustStashWarning: "Вытаскивание исправления в индекс требует сохранения и распаковки ваших изменений. Если что-то пойдёт не так, можно получить доступ к файлам из хранилища. Продолжить?", + MustStashTitle: "Необходимо припрятать", + ConfirmationTitle: "Панель Подтверждения", + PrevPage: "Предыдущая страница", + NextPage: "Следующая страница", + GotoTop: "Пролистать наверх", + GotoBottom: "Прокрутить вниз", + FilteringBy: "Фильтрация по", + ResetInParentheses: "(сбросить)", + OpenFilteringMenu: "Просмотреть параметры фильтрации по пути", + FilterBy: "Фильтровать по", + ExitFilterMode: "Прекратить фильтрацию по пути", + FilterPathOption: "Введите путь для фильтрации", + EnterFileName: "Введите путь:", + FilteringMenuTitle: "Фильтрация", + MustExitFilterModeTitle: "Команда недоступна", + MustExitFilterModePrompt: "Команда недоступна в режиме фильтрации. Выйти из режима фильтрации?", + Diff: "Разница", + EnterRefToDiff: "Введите ссылку для сравнения", + EnterRefName: "Введите ссылку:", + ExitDiffMode: "Выйти из режима сравнения", + DiffingMenuTitle: "Сравнение", + SwapDiff: "Обратное направление сравнении", + ViewDiffingOptions: "Открыть меню сравнении", // the actual view is the extras view which I intend to give more tabs in future but for now we'll only mention the command log part OpenCommandLogMenu: "Открыть меню журнала команд", ShowingGitDiff: "Показывает вывод для:", diff --git a/pkg/i18n/traditional_chinese.go b/pkg/i18n/traditional_chinese.go index 714c259af8a..62de82008ce 100644 --- a/pkg/i18n/traditional_chinese.go +++ b/pkg/i18n/traditional_chinese.go @@ -68,387 +68,386 @@ const traditionalChineseDeprecatedEditConfigWarning = ` // exporting this so we can use it in tests func traditionalChineseTranslationSet() TranslationSet { return TranslationSet{ - NotEnoughSpace: "沒有足夠空間可以繪製面板", - DiffTitle: "差異", - FilesTitle: "檔案", - BranchesTitle: "分支", - CommitsTitle: "提交", - StashTitle: "收藏 (Stash)", - SnakeTitle: "貪食蛇", - EasterEgg: "彩蛋", - UnstagedChanges: "未預存變更", - StagedChanges: "已預存變更", - MainTitle: "主視窗", - MergeConfirmTitle: "合併", - StagingTitle: "主視窗 (預存中)", - MergingTitle: "主視窗 (合併中)", - NormalTitle: "主視窗 (一般)", - LogTitle: "版本記錄", - CommitSummary: "提交摘要", - CredentialsUsername: "使用者名稱", - CredentialsPassword: "密碼", - CredentialsPassphrase: "輸入 SSH 金鑰的密碼", - CredentialsPIN: "輸入 SSH 金鑰的 PIN 碼", - PassUnameWrong: "密碼、密語或使用者名稱錯誤", - Commit: "提交變更", - AmendLastCommit: "修正上次提交", - AmendLastCommitTitle: "修正上次提交", - SureToAmend: "是否確定要修正上次提交?之後你可以從提交面板中再次更改此次提交的訊息。", - NoCommitToAmend: "沒有可以修正的提交。", - CommitChangesWithEditor: "使用 git 編輯器提交變更", - StatusTitle: "狀態", - Menu: "功能表", - Execute: "執行", - Stage: "切換預存", - ToggleStagedAll: "全部預存/取消預存", - ToggleTreeView: "切換檔案樹狀視圖", - OpenMergeTool: "開啟外部合併工具 (git mergetool)", - Refresh: "重新整理", - Push: "推送", - Pull: "拉取", - Scroll: "捲動", - MergeConflictsTitle: "合併衝突", - Checkout: "檢出", - FileFilter: "篩選檔案 (預存/未預存)", - FilterStagedFiles: "僅顯示預存的檔案", - FilterUnstagedFiles: "僅顯示未預存的檔案", - ResetFilter: "重設篩選", - NoChangedFiles: "沒有變更的檔案", - SoftReset: "軟重設", - AlreadyCheckedOutBranch: "你已經檢出這個分支了", - SureForceCheckout: "你確定要強制檢出嗎?這將會使你失去本地的所有更改", - ForceCheckoutBranch: "強制檢出分支", - BranchName: "分支名稱", - NewBranchNameBranchOff: "新的分支名稱 (根據 '{{.branchName}}' 分支創建)", - CantDeleteCheckOutBranch: "你不能刪除已檢出的分支!", - ForceDeleteBranchMessage: "'{{.selectedBranchName}}' 分支尚未完全合併。你確定要刪除嗎?", - RebaseBranch: "將已檢出的分支變基至此分支", - CantRebaseOntoSelf: "你不能將分支變基至自己", - CantMergeBranchIntoItself: "你不能將一個分支合併至自己", - ForceCheckout: "強制檢出", - CheckoutByName: "根據名稱檢出", - NewBranch: "新分支", - NoBranchesThisRepo: "這個版本庫中沒有分支", - CommitWithoutMessageErr: "沒有提交訊息,無法提交", - Close: "關閉", - CloseCancel: "關閉/取消", - Confirm: "確認", - Quit: "結束", - NoCommitsThisBranch: "這個分支沒有提交", - UpdateRefHere: "在這裡更新 '{{.ref}}' 分支", - CannotSquashOrFixupFirstCommit: "沒有可以壓縮的提交", - Fixup: "修復 (Fixup)", - SureFixupThisCommit: "你確定要對這個提交進行 '修復' 嗎? 它將被合併到下面的提交中", - SureSquashThisCommit: "你確定要把這個提交壓縮到下面的提交中嗎?", - Squash: "壓縮 (Squash)", - PickCommitTooltip: "挑選提交 (於變基過程中)", - RevertCommit: "還原提交", - Reword: "改寫提交", - DropCommit: "刪除提交", - MoveDownCommit: "向下移動提交", - MoveUpCommit: "向上移動提交", - EditCommitTooltip: "編輯提交", - AmendCommitTooltip: "使用已預存的更改修正提交", - ResetAuthor: "重設作者", - SetAuthor: "設置作者", - AmendCommitAttribute: "設置/重設提交作者", - SetAuthorPromptTitle: "設置作者 (格式如 '姓名 <電子郵件>')", - SureResetCommitAuthor: "此提交的作者欄位將被更新以符合已配置的使用者。它也會更新作者的時間戳。繼續嗎?", - RewordCommitEditor: "使用編輯器改寫提交", - Error: "錯誤", - PickHunk: "挑選程式碼片段", - PickAllHunks: "挑選所有程式碼片段", - Undo: "復原", - UndoReflog: "復原", - RedoReflog: "取消復原", - UndoTooltip: "將使用 reflog 確定要運行哪個 git 命令以復原上一個 git 命令。這不包括工作區的更改;只考慮提交。", - RedoTooltip: "將使用 reflog 確定要運行哪個 git 命令以重作上一個 git 命令。這不包括工作區的更改;只考慮提交。", - DiscardAllTooltip: "捨棄 '{{.path}}' 中的預存和未預存的更改。", - DiscardUnstagedTooltip: "捨棄 '{{.path}}' 中的未預存的更改。", - Pop: "還原", - Drop: "捨棄", - Apply: "套用", - NoStashEntries: "沒有收藏記錄", - StashDrop: "放棄收藏記錄", - SureDropStashEntry: "你確定要捨棄這條收藏記錄嗎?", - StashPop: "還原收藏記錄", - SurePopStashEntry: "你確定要從收藏中還原這個記錄嗎?", - StashApply: "套用收藏記錄", - SureApplyStashEntry: "你確定要套用這個收藏記錄嗎?", - NoTrackedStagedFilesStash: "你沒有被追蹤的、預存的檔案可進行收藏", - NoFilesToStash: "沒有檔案可以進行收藏", - StashChanges: "安置現有變更到收藏中", - RenameStash: "重新命名收藏", - RenameStashPrompt: "重新命名收藏:{{.stashName}}", - OpenConfig: "開啟設定檔案", - EditConfig: "編輯設定檔案", - ForcePush: "強制推送", - ForcePushPrompt: "你的分支與遠端分支分岔。按 'ESC' 取消,或按 'Enter' 強制推送。", - ForcePushDisabled: "你的分支與遠端分支分岔,你已禁用強制推送", - UpdatesRejectedAndForcePushDisabled: "更新被拒絕,你已禁用強制推送", - CheckForUpdate: "檢查更新", - CheckingForUpdates: "正在檢查更新...", - UpdateAvailableTitle: "有可用的更新!", - UpdateAvailable: "下載並安裝版本 {{.newVersion}}?", - UpdateInProgressWaitingStatus: "更新中", - UpdateCompletedTitle: "更新已完成!", - UpdateCompleted: "更新已成功安裝。為了使其生效,請重新啟動 lazygit。", - FailedToRetrieveLatestVersionErr: "無法獲取版本資訊", - OnLatestVersionErr: "你已經有最新版本", - MajorVersionErr: "新版本({{.newVersion}})與當前版本({{.currentVersion}})存在不向後兼容的更改", - CouldNotFindBinaryErr: "找不到 {{.url}} 路徑下的任何二進位檔", - UpdateFailedErr: "更新失敗:{{.errMessage}}", - ConfirmQuitDuringUpdateTitle: "正在更新中", - ConfirmQuitDuringUpdate: "正在進行更新,你確定要結束?", - MergeToolTitle: "合併工具", - MergeToolPrompt: "你要開啟 'git mergetool' 嗎?", - IntroPopupMessage: traditionalChineseIntroPopupMessage, - DeprecatedEditConfigWarning: traditionalChineseDeprecatedEditConfigWarning, - GitconfigParseErr: `Gogit 無法解析你的 gitconfig 檔案,因為存在未引用的 '\' 字符,刪除它們應該可以解決這個問題。`, - EditFile: `編輯檔案`, - OpenFile: `開啟檔案`, - IgnoreFile: `添加到 .gitignore`, - ExcludeFile: `添加到 .git/info/exclude`, - RefreshFiles: `重新整理檔案`, - Merge: `合併到當前檢出的分支`, - ConfirmQuit: `你確定要結束嗎?`, - SwitchRepo: `切換到最近使用的版本庫`, - AllBranchesLogGraph: `顯示所有分支日誌`, - UnsupportedGitService: `不支持的 Git 服務`, - CreatePullRequest: `建立拉取請求`, - CopyPullRequestURL: `複製拉取請求的 URL 到剪貼板`, - NoBranchOnRemote: `這個分支在遠端不存在。需要先將其推送至遠端。`, - Fetch: `擷取`, - NoAutomaticGitFetchTitle: `不自動 git 擷取`, - NoAutomaticGitFetchBody: `lazygit 無法在私有庫使用 "git 擷取";在檔案面板中使用 'f' 手動執行 "git 擷取"`, - FileEnter: `選擇檔案中的單個程式碼塊/行,或展開/折疊目錄`, - FileStagingRequirements: `只能選擇跟踪檔案中的單個行`, - StageSelectionTooltip: `切換現有行的狀態 (已預存/未預存)`, - DiscardSelection: `刪除變更 (git reset)`, - ToggleRangeSelect: `切換拖曳選擇`, - ToggleSelectHunk: `切換選擇程式碼塊`, - ToggleSelectionForPatch: `向 (或從) 補丁中添加/刪除行`, - EditHunk: `編輯程式碼塊`, - ToggleStagingView: `切換至另一個面板 (已預存/未預存更改)`, - ReturnToFilesPanel: `返回檔案面板`, - FastForward: `從上游快進此分支`, - FastForwarding: "的擷取和快進中", - FoundConflictsTitle: "自動合併失敗", - ViewMergeRebaseOptions: "查看合併/變基選項", - NotMergingOrRebasing: "你當前既不在變基也不在合併中", - AlreadyRebasing: "無法在變基期間執行此操作", - RecentRepos: "最近的版本庫", - MergeOptionsTitle: "合併選項", - RebaseOptionsTitle: "變基選項", - CommitSummaryTitle: "提交摘要", - CommitDescriptionTitle: "提交描述", - CommitDescriptionSubTitle: "按 tab 切換焦點", - LocalBranchesTitle: "本地分支", - SearchTitle: "搜尋", - TagsTitle: "標籤", - MenuTitle: "功能表", - RemotesTitle: "遠端", - RemoteBranchesTitle: "遠端分支", - PatchBuildingTitle: "主面板 (補丁生成)", - InformationTitle: "資訊", - SecondaryTitle: "次要", - ReflogCommitsTitle: "Reflog", - GlobalTitle: "全局快捷鍵", - ConflictsResolved: "所有合併衝突都已解決。繼續嗎?", - Continue: "繼續", - Keybindings: "鍵盤快捷鍵", - RebasingTitle: "將 '{{.checkedOutBranch}}' 變基至 '{{.ref}}'", - SimpleRebase: "簡單變基", - InteractiveRebase: "互動變基", - InteractiveRebaseTooltip: "開始一個互動變基,以中斷開始,這樣你可以在繼續之前更新TODO提交", - ConfirmMerge: "確定要將 '{{.selectedBranch}}' 合併至 '{{.checkedOutBranch}}' 嗎?", - FwdNoUpstream: "無法快進無上游分支", - FwdNoLocalUpstream: "無法快進尚未在本地註冊的遠端分支", - FwdCommitsToPush: "無法快進帶有尚未推送的提交的分支", - ErrorOccurred: "發生錯誤!請在以下建立議題:", - NoRoom: "沒有足夠的空間", - YouAreHere: "你在這裡", - YouDied: "你已經死了!", - RewordNotSupported: "在互動變基期間改寫提交目前不支持", - ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項", - CherryPickCopy: "複製提交 (揀選)", - PasteCommits: "貼上提交 (揀選)", - SureCherryPick: "你確定要將複製的提交揀選到此分支嗎?", - CherryPick: "揀選 (Cherry-pick)", - Donate: "贊助", - AskQuestion: "問問題", - PrevLine: "選擇上一行", - NextLine: "選擇下一行", - PrevHunk: "選擇上一段", - NextHunk: "選擇下一段", - PrevConflict: "選擇上一個衝突", - NextConflict: "選擇下一個衝突", - SelectPrevHunk: "選擇上一段", - SelectNextHunk: "選擇下一段", - ScrollDown: "向下捲動", - ScrollUp: "向上捲動", - ScrollUpMainWindow: "向上捲動主面板", - ScrollDownMainWindow: "向下捲動主面板", - AmendCommitTitle: "修正提交", - AmendCommitPrompt: "你確定要使用預存的檔案修正此提交嗎?", - DropCommitTitle: "刪除提交", - DropCommitPrompt: "你確定要刪除此提交嗎?", - PullingStatus: "拉取", - PushingStatus: "推送", - FetchingStatus: "擷取", - SquashingStatus: "壓縮中", - FixingStatus: "修復中", - DeletingStatus: "刪除中", - MovingStatus: "移動中", - RebasingStatus: "變基中", - MergingStatus: "合併中", - LowercaseRebasingStatus: "變基", // lowercase because it shows up in parentheses - LowercaseMergingStatus: "合併", // lowercase because it shows up in parentheses - AmendingStatus: "修正中", - CherryPickingStatus: "揀選中", - UndoingStatus: "復原中", - RedoingStatus: "取消復原中", - CheckingOutStatus: "檢出中", - CommittingStatus: "提交中", - CommitFiles: "提交檔案", - SubCommitsDynamicTitle: "提交 (共 %s項)", - CommitFilesDynamicTitle: "差異檔案 (共 %s項)", - RemoteBranchesDynamicTitle: "遠端分支 (共 %s項)", - ViewItemFiles: "檢視所選項目的檔案", - CommitFilesTitle: "提交檔案", - CheckoutCommitFileTooltip: "檢出檔案", - DiscardOldFileChangeTooltip: "捨棄此提交對此檔案的更改", - DiscardFileChangesTitle: "捨棄檔案更改", - DiscardFileChangesPrompt: "你確定要捨棄此提交對此檔案的更改嗎?如果這個檔案是在此提交中創建的,它將被刪除", - DisabledForGPG: "此功能不適用於使用GPG的使用者", - CreateRepo: "未在git版本庫中. 建立一個新的git版本庫? (y/n): ", - BareRepo: "你嘗試在裸版本庫中開啟Lazygit,但Lazygit尚未支持裸版本庫。是否開啟最近的版本庫? (y/n) ", - InitialBranch: "分支名稱?(留空使用git的默認值):", - NoRecentRepositories: "必須在git版本庫中開啟lazygit。沒有有效的最近版本庫。退出。", - IncorrectNotARepository: "“notARepository”的值不正確。它應該是“prompt”、“create”、“skip”或“quit”中的一個。", - AutoStashTitle: "自動儲存?", - AutoStashPrompt: "你必須儲存和彈出你的更改才能帶它們到其他地方。是否自動執行此操作?(enter/esc)", - StashPrefix: "正在自動儲存更改:", - Discard: "檢視“捨棄更改”的選項", - Cancel: "取消", - DiscardAllChanges: "捨棄所有更改", - DiscardUnstagedChanges: "捨棄未預存的更改", - DiscardAllChangesToAllFiles: "清空工作區", - DiscardAnyUnstagedChanges: "捨棄未預存的更改", - DiscardUntrackedFiles: "捨棄未追蹤的檔案", - DiscardStagedChanges: "捨棄已預存的更改", - HardReset: "硬重設", - ViewResetOptions: "檢視重設選項", - CreateFixupCommitTooltip: "為此提交建立修復提交", - SquashAboveCommitsTooltip: "壓縮上方所有的“fixup!”提交 (自動壓縮)", - CreateFixupCommit: "建立修復提交", - SureCreateFixupCommit: "你確定要為提交{{.commit}}建立fixup!提交嗎?", - ExecuteCustomCommand: "執行自訂命令", - CustomCommand: "自訂命令:", - CommitChangesWithoutHook: "沒有預提交 hook 就提交更改", - SkipHookPrefixNotConfigured: "你尚未配置略過 hook 的提交訊息前綴,請在設定中設置 `git.skipHookPrefix = 'WIP'`", - ResetTo: `重設至`, - PressEnterToReturn: "按 Enter 返回到 lazygit", - ViewStashOptions: "檢視收藏選項", - StashAllChanges: "收藏所有變更", - StashStagedChanges: "收藏已預存變更", - StashAllChangesKeepIndex: "收藏所有變更並保留預存區", - StashUnstagedChanges: "收藏未預存變更", - StashIncludeUntrackedChanges: "收藏所有變更,包括未追蹤檔案", - StashOptions: "收藏選項", - NotARepository: "錯誤:必須在 git 版本庫中執行", - Jump: "跳轉至面板", - ScrollLeftRight: "左右捲動", - ScrollLeft: "向左捲動", - ScrollRight: "向右捲動", - DiscardPatch: "捨棄補丁", - DiscardPatchConfirm: "你只能從單一提交或收藏項目建立一個補丁。是否捨棄當前補丁?", - CantPatchWhileRebasingError: "在合併或變基狀態下,你不能建立或運行補丁命令", - ToggleAddToPatch: "切換檔案是否包含在補丁中", - ToggleAllInPatch: "切換所有檔案是否包含在補丁中", - UpdatingPatch: "正在更新補丁", - ViewPatchOptions: "檢視自訂補丁選項", - PatchOptionsTitle: "補丁選項", - NoPatchError: "尚未建立補丁。要開始建立補丁,請在提交檔案上使用空格或輸入以添加特定行", - EnterCommitFile: "輸入檔案以將選定的行添加至補丁(或切換目錄折疊)", - ExitCustomPatchBuilder: `退出自訂補丁建立器`, - EnterUpstream: `輸入上游為 ' '`, - InvalidUpstream: "無效的上游。必須符合 ' ' 的格式", - ReturnToRemotesList: `返回遠端列表`, - NewRemote: `新增遠端`, - NewRemoteName: `新遠端名稱:`, - NewRemoteUrl: `新遠端 URL:`, - EditRemoteName: `輸入更新 {{.remoteName}} 遠端名稱:`, - EditRemoteUrl: `輸入更新 {{.remoteName}} 遠端 URL:`, - RemoveRemote: `移除遠端`, - RemoveRemotePrompt: "你確定要移除遠端嗎?", - DeleteRemoteBranch: "刪除遠端分支", - DeleteRemoteBranchMessage: "你確定要刪除遠端分支嗎?", - SetAsUpstreamTooltip: "將此分支設為當前分支之上游", - SetUpstream: "設定所選分支之上游", - UnsetUpstream: "取消設定選定分支之上游", - SetUpstreamTitle: "設定上游分支", - SetUpstreamMessage: "你確定要將 '{{. selected}}' 設為 '{{.checkedOut}}' 的上游分支嗎?", - EditRemoteTooltip: "編輯遠端", - TagCommit: "打標籤到提交", - TagMenuTitle: "建立標籤", - TagNameTitle: "標籤名稱", - TagMessageTitle: "標籤訊息", - AnnotatedTag: "附註標籤", - LightweightTag: "輕量標籤", - PushTagTitle: "推送標籤 '{{.tagName}}' 至遠端:", - PushTag: "推送標籤", - NewTag: "建立標籤", - FetchRemoteTooltip: "擷取遠端", - FetchingRemoteStatus: "正在擷取遠端", - CheckoutCommit: "檢出提交", - SureCheckoutThisCommit: "你確定要檢出這個提交嗎?", - GitFlowOptions: "顯示 git-flow 選項", - NotAGitFlowBranch: "這似乎不是一個 git flow 分支", - NewGitFlowBranchPrompt: "{{.branchType}} 名稱:", - IgnoreTracked: "忽略已追蹤檔案", - IgnoreTrackedPrompt: "你確定要忽略一個已追蹤的檔案嗎?", - ExcludeTracked: "排除已追蹤檔案", - ExcludeTrackedPrompt: "你確定要排除一個已追蹤的檔案嗎?", - ViewResetToUpstreamOptions: "檢視上游重設選項", - NextScreenMode: "下一個螢幕模式(常規/半螢幕/全螢幕)", - PrevScreenMode: "上一個螢幕模式", - StartSearch: "開始搜尋", - Panel: "面板", - KeybindingsLegend: "說明:`` 表示 Ctrl+B、`` 表示 Alt+B,`B`表示 Shift+B", - RenameBranch: "重新命名分支", - NewBranchNamePrompt: "為分支輸入新名稱", - RenameBranchWarning: "此分支正在追蹤遠端分支。此操作僅會重新命名本地分支名稱,而不是遠端分支的名稱。是否繼續?", - OpenKeybindingsMenu: "開啟選單", - ResetCherryPick: "重設選定的揀選 (複製) 提交", - NextTab: "下一個索引標籤", - PrevTab: "上一個索引標籤", - CantUndoWhileRebasing: "在變基時無法復原", - CantRedoWhileRebasing: "在變基時無法取消復原", - MustStashWarning: "將補丁提取到索引中需要收藏並取消收藏你的變更。如果出現問題,你可以從收藏中訪問你的檔案。是否繼續?", - MustStashTitle: "必須收藏", - ConfirmationTitle: "確認面板", - PrevPage: "上一頁", - NextPage: "下一頁", - GotoTop: "捲動到頂部", - GotoBottom: "捲動到底部", - FilteringBy: "篩選方式", - ResetInParentheses: "(已重設)", - OpenFilteringMenu: "檢視篩選路徑選項", - FilterBy: "篩選路徑", - ExitFilterMode: "停止按路徑篩選", - FilterPathOption: "輸入要依路徑篩選的路徑", - EnterFileName: "輸入路徑:", - FilteringMenuTitle: "篩選", - MustExitFilterModeTitle: "命令不可用", - MustExitFilterModePrompt: "在按路徑篩選的模式下,該命令不可用。是否退出按路徑篩選的模式?", - Diff: "差異", - EnterRefToDiff: "輸入要比較的 Ref", - EnterRefName: "輸入 Ref:", - ExitDiffMode: "退出差異模式", - DiffingMenuTitle: "差異比較", - SwapDiff: "反轉差異方向", - ViewDiffingOptions: "開啟差異比較選單", + NotEnoughSpace: "沒有足夠空間可以繪製面板", + DiffTitle: "差異", + FilesTitle: "檔案", + BranchesTitle: "分支", + CommitsTitle: "提交", + StashTitle: "收藏 (Stash)", + SnakeTitle: "貪食蛇", + EasterEgg: "彩蛋", + UnstagedChanges: "未預存變更", + StagedChanges: "已預存變更", + MainTitle: "主視窗", + MergeConfirmTitle: "合併", + StagingTitle: "主視窗 (預存中)", + MergingTitle: "主視窗 (合併中)", + NormalTitle: "主視窗 (一般)", + LogTitle: "版本記錄", + CommitSummary: "提交摘要", + CredentialsUsername: "使用者名稱", + CredentialsPassword: "密碼", + CredentialsPassphrase: "輸入 SSH 金鑰的密碼", + CredentialsPIN: "輸入 SSH 金鑰的 PIN 碼", + PassUnameWrong: "密碼、密語或使用者名稱錯誤", + Commit: "提交變更", + AmendLastCommit: "修正上次提交", + AmendLastCommitTitle: "修正上次提交", + SureToAmend: "是否確定要修正上次提交?之後你可以從提交面板中再次更改此次提交的訊息。", + NoCommitToAmend: "沒有可以修正的提交。", + CommitChangesWithEditor: "使用 git 編輯器提交變更", + StatusTitle: "狀態", + Menu: "功能表", + Execute: "執行", + Stage: "切換預存", + ToggleStagedAll: "全部預存/取消預存", + ToggleTreeView: "切換檔案樹狀視圖", + OpenMergeTool: "開啟外部合併工具 (git mergetool)", + Refresh: "重新整理", + Push: "推送", + Pull: "拉取", + Scroll: "捲動", + MergeConflictsTitle: "合併衝突", + Checkout: "檢出", + FileFilter: "篩選檔案 (預存/未預存)", + FilterStagedFiles: "僅顯示預存的檔案", + FilterUnstagedFiles: "僅顯示未預存的檔案", + ResetFilter: "重設篩選", + NoChangedFiles: "沒有變更的檔案", + SoftReset: "軟重設", + AlreadyCheckedOutBranch: "你已經檢出這個分支了", + SureForceCheckout: "你確定要強制檢出嗎?這將會使你失去本地的所有更改", + ForceCheckoutBranch: "強制檢出分支", + BranchName: "分支名稱", + NewBranchNameBranchOff: "新的分支名稱 (根據 '{{.branchName}}' 分支創建)", + CantDeleteCheckOutBranch: "你不能刪除已檢出的分支!", + ForceDeleteBranchMessage: "'{{.selectedBranchName}}' 分支尚未完全合併。你確定要刪除嗎?", + RebaseBranch: "將已檢出的分支變基至此分支", + CantRebaseOntoSelf: "你不能將分支變基至自己", + CantMergeBranchIntoItself: "你不能將一個分支合併至自己", + ForceCheckout: "強制檢出", + CheckoutByName: "根據名稱檢出", + NewBranch: "新分支", + NoBranchesThisRepo: "這個版本庫中沒有分支", + CommitWithoutMessageErr: "沒有提交訊息,無法提交", + Close: "關閉", + CloseCancel: "關閉/取消", + Confirm: "確認", + Quit: "結束", + NoCommitsThisBranch: "這個分支沒有提交", + UpdateRefHere: "在這裡更新 '{{.ref}}' 分支", + CannotSquashOrFixupFirstCommit: "沒有可以壓縮的提交", + Fixup: "修復 (Fixup)", + SureFixupThisCommit: "你確定要對這個提交進行 '修復' 嗎? 它將被合併到下面的提交中", + SureSquashThisCommit: "你確定要把這個提交壓縮到下面的提交中嗎?", + Squash: "壓縮 (Squash)", + PickCommitTooltip: "挑選提交 (於變基過程中)", + RevertCommit: "還原提交", + Reword: "改寫提交", + DropCommit: "刪除提交", + MoveDownCommit: "向下移動提交", + MoveUpCommit: "向上移動提交", + EditCommitTooltip: "編輯提交", + AmendCommitTooltip: "使用已預存的更改修正提交", + ResetAuthor: "重設作者", + SetAuthor: "設置作者", + AmendCommitAttribute: "設置/重設提交作者", + SetAuthorPromptTitle: "設置作者 (格式如 '姓名 <電子郵件>')", + SureResetCommitAuthor: "此提交的作者欄位將被更新以符合已配置的使用者。它也會更新作者的時間戳。繼續嗎?", + RewordCommitEditor: "使用編輯器改寫提交", + Error: "錯誤", + PickHunk: "挑選程式碼片段", + PickAllHunks: "挑選所有程式碼片段", + Undo: "復原", + UndoReflog: "復原", + RedoReflog: "取消復原", + UndoTooltip: "將使用 reflog 確定要運行哪個 git 命令以復原上一個 git 命令。這不包括工作區的更改;只考慮提交。", + RedoTooltip: "將使用 reflog 確定要運行哪個 git 命令以重作上一個 git 命令。這不包括工作區的更改;只考慮提交。", + DiscardAllTooltip: "捨棄 '{{.path}}' 中的預存和未預存的更改。", + DiscardUnstagedTooltip: "捨棄 '{{.path}}' 中的未預存的更改。", + Pop: "還原", + Drop: "捨棄", + Apply: "套用", + NoStashEntries: "沒有收藏記錄", + StashDrop: "放棄收藏記錄", + SureDropStashEntry: "你確定要捨棄這條收藏記錄嗎?", + StashPop: "還原收藏記錄", + SurePopStashEntry: "你確定要從收藏中還原這個記錄嗎?", + StashApply: "套用收藏記錄", + SureApplyStashEntry: "你確定要套用這個收藏記錄嗎?", + NoTrackedStagedFilesStash: "你沒有被追蹤的、預存的檔案可進行收藏", + NoFilesToStash: "沒有檔案可以進行收藏", + StashChanges: "安置現有變更到收藏中", + RenameStash: "重新命名收藏", + RenameStashPrompt: "重新命名收藏:{{.stashName}}", + OpenConfig: "開啟設定檔案", + EditConfig: "編輯設定檔案", + ForcePush: "強制推送", + ForcePushPrompt: "你的分支與遠端分支分岔。按 'ESC' 取消,或按 'Enter' 強制推送。", + ForcePushDisabled: "你的分支與遠端分支分岔,你已禁用強制推送", + CheckForUpdate: "檢查更新", + CheckingForUpdates: "正在檢查更新...", + UpdateAvailableTitle: "有可用的更新!", + UpdateAvailable: "下載並安裝版本 {{.newVersion}}?", + UpdateInProgressWaitingStatus: "更新中", + UpdateCompletedTitle: "更新已完成!", + UpdateCompleted: "更新已成功安裝。為了使其生效,請重新啟動 lazygit。", + FailedToRetrieveLatestVersionErr: "無法獲取版本資訊", + OnLatestVersionErr: "你已經有最新版本", + MajorVersionErr: "新版本({{.newVersion}})與當前版本({{.currentVersion}})存在不向後兼容的更改", + CouldNotFindBinaryErr: "找不到 {{.url}} 路徑下的任何二進位檔", + UpdateFailedErr: "更新失敗:{{.errMessage}}", + ConfirmQuitDuringUpdateTitle: "正在更新中", + ConfirmQuitDuringUpdate: "正在進行更新,你確定要結束?", + MergeToolTitle: "合併工具", + MergeToolPrompt: "你要開啟 'git mergetool' 嗎?", + IntroPopupMessage: traditionalChineseIntroPopupMessage, + DeprecatedEditConfigWarning: traditionalChineseDeprecatedEditConfigWarning, + GitconfigParseErr: `Gogit 無法解析你的 gitconfig 檔案,因為存在未引用的 '\' 字符,刪除它們應該可以解決這個問題。`, + EditFile: `編輯檔案`, + OpenFile: `開啟檔案`, + IgnoreFile: `添加到 .gitignore`, + ExcludeFile: `添加到 .git/info/exclude`, + RefreshFiles: `重新整理檔案`, + Merge: `合併到當前檢出的分支`, + ConfirmQuit: `你確定要結束嗎?`, + SwitchRepo: `切換到最近使用的版本庫`, + AllBranchesLogGraph: `顯示所有分支日誌`, + UnsupportedGitService: `不支持的 Git 服務`, + CreatePullRequest: `建立拉取請求`, + CopyPullRequestURL: `複製拉取請求的 URL 到剪貼板`, + NoBranchOnRemote: `這個分支在遠端不存在。需要先將其推送至遠端。`, + Fetch: `擷取`, + NoAutomaticGitFetchTitle: `不自動 git 擷取`, + NoAutomaticGitFetchBody: `lazygit 無法在私有庫使用 "git 擷取";在檔案面板中使用 'f' 手動執行 "git 擷取"`, + FileEnter: `選擇檔案中的單個程式碼塊/行,或展開/折疊目錄`, + FileStagingRequirements: `只能選擇跟踪檔案中的單個行`, + StageSelectionTooltip: `切換現有行的狀態 (已預存/未預存)`, + DiscardSelection: `刪除變更 (git reset)`, + ToggleRangeSelect: `切換拖曳選擇`, + ToggleSelectHunk: `切換選擇程式碼塊`, + ToggleSelectionForPatch: `向 (或從) 補丁中添加/刪除行`, + EditHunk: `編輯程式碼塊`, + ToggleStagingView: `切換至另一個面板 (已預存/未預存更改)`, + ReturnToFilesPanel: `返回檔案面板`, + FastForward: `從上游快進此分支`, + FastForwarding: "的擷取和快進中", + FoundConflictsTitle: "自動合併失敗", + ViewMergeRebaseOptions: "查看合併/變基選項", + NotMergingOrRebasing: "你當前既不在變基也不在合併中", + AlreadyRebasing: "無法在變基期間執行此操作", + RecentRepos: "最近的版本庫", + MergeOptionsTitle: "合併選項", + RebaseOptionsTitle: "變基選項", + CommitSummaryTitle: "提交摘要", + CommitDescriptionTitle: "提交描述", + CommitDescriptionSubTitle: "按 tab 切換焦點", + LocalBranchesTitle: "本地分支", + SearchTitle: "搜尋", + TagsTitle: "標籤", + MenuTitle: "功能表", + RemotesTitle: "遠端", + RemoteBranchesTitle: "遠端分支", + PatchBuildingTitle: "主面板 (補丁生成)", + InformationTitle: "資訊", + SecondaryTitle: "次要", + ReflogCommitsTitle: "Reflog", + GlobalTitle: "全局快捷鍵", + ConflictsResolved: "所有合併衝突都已解決。繼續嗎?", + Continue: "繼續", + Keybindings: "鍵盤快捷鍵", + RebasingTitle: "將 '{{.checkedOutBranch}}' 變基至 '{{.ref}}'", + SimpleRebase: "簡單變基", + InteractiveRebase: "互動變基", + InteractiveRebaseTooltip: "開始一個互動變基,以中斷開始,這樣你可以在繼續之前更新TODO提交", + ConfirmMerge: "確定要將 '{{.selectedBranch}}' 合併至 '{{.checkedOutBranch}}' 嗎?", + FwdNoUpstream: "無法快進無上游分支", + FwdNoLocalUpstream: "無法快進尚未在本地註冊的遠端分支", + FwdCommitsToPush: "無法快進帶有尚未推送的提交的分支", + ErrorOccurred: "發生錯誤!請在以下建立議題:", + NoRoom: "沒有足夠的空間", + YouAreHere: "你在這裡", + YouDied: "你已經死了!", + RewordNotSupported: "在互動變基期間改寫提交目前不支持", + ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項", + CherryPickCopy: "複製提交 (揀選)", + PasteCommits: "貼上提交 (揀選)", + SureCherryPick: "你確定要將複製的提交揀選到此分支嗎?", + CherryPick: "揀選 (Cherry-pick)", + Donate: "贊助", + AskQuestion: "問問題", + PrevLine: "選擇上一行", + NextLine: "選擇下一行", + PrevHunk: "選擇上一段", + NextHunk: "選擇下一段", + PrevConflict: "選擇上一個衝突", + NextConflict: "選擇下一個衝突", + SelectPrevHunk: "選擇上一段", + SelectNextHunk: "選擇下一段", + ScrollDown: "向下捲動", + ScrollUp: "向上捲動", + ScrollUpMainWindow: "向上捲動主面板", + ScrollDownMainWindow: "向下捲動主面板", + AmendCommitTitle: "修正提交", + AmendCommitPrompt: "你確定要使用預存的檔案修正此提交嗎?", + DropCommitTitle: "刪除提交", + DropCommitPrompt: "你確定要刪除此提交嗎?", + PullingStatus: "拉取", + PushingStatus: "推送", + FetchingStatus: "擷取", + SquashingStatus: "壓縮中", + FixingStatus: "修復中", + DeletingStatus: "刪除中", + MovingStatus: "移動中", + RebasingStatus: "變基中", + MergingStatus: "合併中", + LowercaseRebasingStatus: "變基", // lowercase because it shows up in parentheses + LowercaseMergingStatus: "合併", // lowercase because it shows up in parentheses + AmendingStatus: "修正中", + CherryPickingStatus: "揀選中", + UndoingStatus: "復原中", + RedoingStatus: "取消復原中", + CheckingOutStatus: "檢出中", + CommittingStatus: "提交中", + CommitFiles: "提交檔案", + SubCommitsDynamicTitle: "提交 (共 %s項)", + CommitFilesDynamicTitle: "差異檔案 (共 %s項)", + RemoteBranchesDynamicTitle: "遠端分支 (共 %s項)", + ViewItemFiles: "檢視所選項目的檔案", + CommitFilesTitle: "提交檔案", + CheckoutCommitFileTooltip: "檢出檔案", + DiscardOldFileChangeTooltip: "捨棄此提交對此檔案的更改", + DiscardFileChangesTitle: "捨棄檔案更改", + DiscardFileChangesPrompt: "你確定要捨棄此提交對此檔案的更改嗎?如果這個檔案是在此提交中創建的,它將被刪除", + DisabledForGPG: "此功能不適用於使用GPG的使用者", + CreateRepo: "未在git版本庫中. 建立一個新的git版本庫? (y/n): ", + BareRepo: "你嘗試在裸版本庫中開啟Lazygit,但Lazygit尚未支持裸版本庫。是否開啟最近的版本庫? (y/n) ", + InitialBranch: "分支名稱?(留空使用git的默認值):", + NoRecentRepositories: "必須在git版本庫中開啟lazygit。沒有有效的最近版本庫。退出。", + IncorrectNotARepository: "“notARepository”的值不正確。它應該是“prompt”、“create”、“skip”或“quit”中的一個。", + AutoStashTitle: "自動儲存?", + AutoStashPrompt: "你必須儲存和彈出你的更改才能帶它們到其他地方。是否自動執行此操作?(enter/esc)", + StashPrefix: "正在自動儲存更改:", + Discard: "檢視“捨棄更改”的選項", + Cancel: "取消", + DiscardAllChanges: "捨棄所有更改", + DiscardUnstagedChanges: "捨棄未預存的更改", + DiscardAllChangesToAllFiles: "清空工作區", + DiscardAnyUnstagedChanges: "捨棄未預存的更改", + DiscardUntrackedFiles: "捨棄未追蹤的檔案", + DiscardStagedChanges: "捨棄已預存的更改", + HardReset: "硬重設", + ViewResetOptions: "檢視重設選項", + CreateFixupCommitTooltip: "為此提交建立修復提交", + SquashAboveCommitsTooltip: "壓縮上方所有的“fixup!”提交 (自動壓縮)", + CreateFixupCommit: "建立修復提交", + SureCreateFixupCommit: "你確定要為提交{{.commit}}建立fixup!提交嗎?", + ExecuteCustomCommand: "執行自訂命令", + CustomCommand: "自訂命令:", + CommitChangesWithoutHook: "沒有預提交 hook 就提交更改", + SkipHookPrefixNotConfigured: "你尚未配置略過 hook 的提交訊息前綴,請在設定中設置 `git.skipHookPrefix = 'WIP'`", + ResetTo: `重設至`, + PressEnterToReturn: "按 Enter 返回到 lazygit", + ViewStashOptions: "檢視收藏選項", + StashAllChanges: "收藏所有變更", + StashStagedChanges: "收藏已預存變更", + StashAllChangesKeepIndex: "收藏所有變更並保留預存區", + StashUnstagedChanges: "收藏未預存變更", + StashIncludeUntrackedChanges: "收藏所有變更,包括未追蹤檔案", + StashOptions: "收藏選項", + NotARepository: "錯誤:必須在 git 版本庫中執行", + Jump: "跳轉至面板", + ScrollLeftRight: "左右捲動", + ScrollLeft: "向左捲動", + ScrollRight: "向右捲動", + DiscardPatch: "捨棄補丁", + DiscardPatchConfirm: "你只能從單一提交或收藏項目建立一個補丁。是否捨棄當前補丁?", + CantPatchWhileRebasingError: "在合併或變基狀態下,你不能建立或運行補丁命令", + ToggleAddToPatch: "切換檔案是否包含在補丁中", + ToggleAllInPatch: "切換所有檔案是否包含在補丁中", + UpdatingPatch: "正在更新補丁", + ViewPatchOptions: "檢視自訂補丁選項", + PatchOptionsTitle: "補丁選項", + NoPatchError: "尚未建立補丁。要開始建立補丁,請在提交檔案上使用空格或輸入以添加特定行", + EnterCommitFile: "輸入檔案以將選定的行添加至補丁(或切換目錄折疊)", + ExitCustomPatchBuilder: `退出自訂補丁建立器`, + EnterUpstream: `輸入上游為 ' '`, + InvalidUpstream: "無效的上游。必須符合 ' ' 的格式", + ReturnToRemotesList: `返回遠端列表`, + NewRemote: `新增遠端`, + NewRemoteName: `新遠端名稱:`, + NewRemoteUrl: `新遠端 URL:`, + EditRemoteName: `輸入更新 {{.remoteName}} 遠端名稱:`, + EditRemoteUrl: `輸入更新 {{.remoteName}} 遠端 URL:`, + RemoveRemote: `移除遠端`, + RemoveRemotePrompt: "你確定要移除遠端嗎?", + DeleteRemoteBranch: "刪除遠端分支", + DeleteRemoteBranchMessage: "你確定要刪除遠端分支嗎?", + SetAsUpstreamTooltip: "將此分支設為當前分支之上游", + SetUpstream: "設定所選分支之上游", + UnsetUpstream: "取消設定選定分支之上游", + SetUpstreamTitle: "設定上游分支", + SetUpstreamMessage: "你確定要將 '{{. selected}}' 設為 '{{.checkedOut}}' 的上游分支嗎?", + EditRemoteTooltip: "編輯遠端", + TagCommit: "打標籤到提交", + TagMenuTitle: "建立標籤", + TagNameTitle: "標籤名稱", + TagMessageTitle: "標籤訊息", + AnnotatedTag: "附註標籤", + LightweightTag: "輕量標籤", + PushTagTitle: "推送標籤 '{{.tagName}}' 至遠端:", + PushTag: "推送標籤", + NewTag: "建立標籤", + FetchRemoteTooltip: "擷取遠端", + FetchingRemoteStatus: "正在擷取遠端", + CheckoutCommit: "檢出提交", + SureCheckoutThisCommit: "你確定要檢出這個提交嗎?", + GitFlowOptions: "顯示 git-flow 選項", + NotAGitFlowBranch: "這似乎不是一個 git flow 分支", + NewGitFlowBranchPrompt: "{{.branchType}} 名稱:", + IgnoreTracked: "忽略已追蹤檔案", + IgnoreTrackedPrompt: "你確定要忽略一個已追蹤的檔案嗎?", + ExcludeTracked: "排除已追蹤檔案", + ExcludeTrackedPrompt: "你確定要排除一個已追蹤的檔案嗎?", + ViewResetToUpstreamOptions: "檢視上游重設選項", + NextScreenMode: "下一個螢幕模式(常規/半螢幕/全螢幕)", + PrevScreenMode: "上一個螢幕模式", + StartSearch: "開始搜尋", + Panel: "面板", + KeybindingsLegend: "說明:`` 表示 Ctrl+B、`` 表示 Alt+B,`B`表示 Shift+B", + RenameBranch: "重新命名分支", + NewBranchNamePrompt: "為分支輸入新名稱", + RenameBranchWarning: "此分支正在追蹤遠端分支。此操作僅會重新命名本地分支名稱,而不是遠端分支的名稱。是否繼續?", + OpenKeybindingsMenu: "開啟選單", + ResetCherryPick: "重設選定的揀選 (複製) 提交", + NextTab: "下一個索引標籤", + PrevTab: "上一個索引標籤", + CantUndoWhileRebasing: "在變基時無法復原", + CantRedoWhileRebasing: "在變基時無法取消復原", + MustStashWarning: "將補丁提取到索引中需要收藏並取消收藏你的變更。如果出現問題,你可以從收藏中訪問你的檔案。是否繼續?", + MustStashTitle: "必須收藏", + ConfirmationTitle: "確認面板", + PrevPage: "上一頁", + NextPage: "下一頁", + GotoTop: "捲動到頂部", + GotoBottom: "捲動到底部", + FilteringBy: "篩選方式", + ResetInParentheses: "(已重設)", + OpenFilteringMenu: "檢視篩選路徑選項", + FilterBy: "篩選路徑", + ExitFilterMode: "停止按路徑篩選", + FilterPathOption: "輸入要依路徑篩選的路徑", + EnterFileName: "輸入路徑:", + FilteringMenuTitle: "篩選", + MustExitFilterModeTitle: "命令不可用", + MustExitFilterModePrompt: "在按路徑篩選的模式下,該命令不可用。是否退出按路徑篩選的模式?", + Diff: "差異", + EnterRefToDiff: "輸入要比較的 Ref", + EnterRefName: "輸入 Ref:", + ExitDiffMode: "退出差異模式", + DiffingMenuTitle: "差異比較", + SwapDiff: "反轉差異方向", + ViewDiffingOptions: "開啟差異比較選單", // the actual view is the extras view which I intend to give more tabs in future but for now we'll only mention the command log part OpenCommandLogMenu: "開啟命令記錄選單", ShowingGitDiff: "顯示輸出:", diff --git a/pkg/integration/tests/filter_and_search/filter_fuzzy.go b/pkg/integration/tests/filter_and_search/filter_fuzzy.go index 198020afada..63df903d8da 100644 --- a/pkg/integration/tests/filter_and_search/filter_fuzzy.go +++ b/pkg/integration/tests/filter_and_search/filter_fuzzy.go @@ -9,7 +9,9 @@ var FilterFuzzy = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Verify that fuzzy filtering works (not just exact matches)", ExtraCmdArgs: []string{}, Skip: false, - SetupConfig: func(config *config.AppConfig) {}, + SetupConfig: func(config *config.AppConfig) { + config.UserConfig.Gui.FilterMode = "fuzzy" + }, SetupRepo: func(shell *Shell) { shell.NewBranch("this-is-my-branch") shell.EmptyCommit("first commit") diff --git a/pkg/integration/tests/interactive_rebase/delete_update_ref_todo.go b/pkg/integration/tests/interactive_rebase/delete_update_ref_todo.go new file mode 100644 index 00000000000..d08f518ecf9 --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/delete_update_ref_todo.go @@ -0,0 +1,65 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var DeleteUpdateRefTodo = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Delete an update-ref item from the rebase todo list", + ExtraCmdArgs: []string{}, + Skip: false, + GitVersion: AtLeast("2.38.0"), + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + NewBranch("branch1"). + CreateNCommits(3). + NewBranch("branch2"). + CreateNCommitsStartingAt(3, 4) + + shell.SetConfig("rebase.updateRefs", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Focus(). + NavigateToLine(Contains("commit 01")). + Press(keys.Universal.Edit). + Lines( + Contains("pick").Contains("CI commit 06"), + Contains("pick").Contains("CI commit 05"), + Contains("pick").Contains("CI commit 04"), + Contains("update-ref").Contains("branch1"), + Contains("pick").Contains("CI commit 03"), + Contains("pick").Contains("CI commit 02"), + Contains("CI ◯ <-- YOU ARE HERE --- commit 01"), + ). + NavigateToLine(Contains("update-ref")). + Press(keys.Universal.Remove). + Tap(func() { + t.ExpectPopup().Confirmation(). + Title(Equals("Drop commit")). + Content(Contains("Are you sure you want to delete the selected update-ref todo(s)?")). + Confirm() + }). + Lines( + Contains("pick").Contains("CI commit 06"), + Contains("pick").Contains("CI commit 05"), + Contains("pick").Contains("CI commit 04"), + Contains("pick").Contains("CI commit 03").IsSelected(), + Contains("pick").Contains("CI commit 02"), + Contains("CI ◯ <-- YOU ARE HERE --- commit 01"), + ). + Tap(func() { + t.Common().ContinueRebase() + }). + Lines( + Contains("CI ◯ commit 06"), + Contains("CI ◯ commit 05"), + Contains("CI ◯ commit 04"), + Contains("CI ◯ commit 03"), // No start on this commit, so there's no branch head here + Contains("CI ◯ commit 02"), + Contains("CI ◯ commit 01"), + ) + }, +}) diff --git a/pkg/integration/tests/interactive_rebase/move_update_ref_todo.go b/pkg/integration/tests/interactive_rebase/move_update_ref_todo.go new file mode 100644 index 00000000000..3dbfcd9cb90 --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/move_update_ref_todo.go @@ -0,0 +1,61 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var MoveUpdateRefTodo = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Move an update-ref item in the rebase todo list", + ExtraCmdArgs: []string{}, + Skip: false, + GitVersion: AtLeast("2.38.0"), + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + NewBranch("branch1"). + CreateNCommits(3). + NewBranch("branch2"). + CreateNCommitsStartingAt(3, 4) + + shell.SetConfig("rebase.updateRefs", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Focus(). + NavigateToLine(Contains("commit 01")). + Press(keys.Universal.Edit). + Lines( + Contains("pick").Contains("CI commit 06"), + Contains("pick").Contains("CI commit 05"), + Contains("pick").Contains("CI commit 04"), + Contains("update-ref").Contains("branch1"), + Contains("pick").Contains("CI commit 03"), + Contains("pick").Contains("CI commit 02"), + Contains("CI ◯ <-- YOU ARE HERE --- commit 01"), + ). + NavigateToLine(Contains("update-ref")). + Press(keys.Commits.MoveUpCommit). + Press(keys.Commits.MoveUpCommit). + Lines( + Contains("pick").Contains("CI commit 06"), + Contains("update-ref").Contains("branch1"), + Contains("pick").Contains("CI commit 05"), + Contains("pick").Contains("CI commit 04"), + Contains("pick").Contains("CI commit 03"), + Contains("pick").Contains("CI commit 02"), + Contains("CI ◯ <-- YOU ARE HERE --- commit 01"), + ). + Tap(func() { + t.Common().ContinueRebase() + }). + Lines( + Contains("CI ◯ commit 06"), + Contains("CI ◯ * commit 05"), + Contains("CI ◯ commit 04"), + Contains("CI ◯ commit 03"), + Contains("CI ◯ commit 02"), + Contains("CI ◯ commit 01"), + ) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index e5a540e8b68..0a78d01936f 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -164,6 +164,7 @@ var tests = []*components.IntegrationTest{ interactive_rebase.AmendHeadCommitDuringRebase, interactive_rebase.AmendMerge, interactive_rebase.AmendNonHeadCommitDuringRebase, + interactive_rebase.DeleteUpdateRefTodo, interactive_rebase.DontShowBranchHeadsForTodoItems, interactive_rebase.DropTodoCommitWithUpdateRef, interactive_rebase.DropWithCustomCommentChar, @@ -176,6 +177,7 @@ var tests = []*components.IntegrationTest{ interactive_rebase.MidRebaseRangeSelect, interactive_rebase.Move, interactive_rebase.MoveInRebase, + interactive_rebase.MoveUpdateRefTodo, interactive_rebase.MoveWithCustomCommentChar, interactive_rebase.OutsideRebaseRangeSelect, interactive_rebase.PickRescheduled, diff --git a/pkg/utils/rebase_todo.go b/pkg/utils/rebase_todo.go index e4bfe25d04d..3403eef9700 100644 --- a/pkg/utils/rebase_todo.go +++ b/pkg/utils/rebase_todo.go @@ -10,7 +10,8 @@ import ( ) type Todo struct { - Sha string + Sha string // for todos that have one, e.g. pick, drop, fixup, etc. + Ref string // for update-ref todos Action todo.TodoCommand } @@ -55,6 +56,19 @@ func equalShas(a, b string) bool { return strings.HasPrefix(a, b) || strings.HasPrefix(b, a) } +func findTodo(todos []todo.Todo, todoToFind Todo) (int, bool) { + _, idx, ok := lo.FindIndexOf(todos, func(t todo.Todo) bool { + // Comparing just the sha is not enough; we need to compare both the + // action and the sha, as the sha could appear multiple times (e.g. in a + // pick and later in a merge). For update-ref todos we also must compare + // the Ref. + return t.Command == todoToFind.Action && + equalShas(t.Commit, todoToFind.Sha) && + t.Ref == todoToFind.Ref + }) + return idx, ok +} + func ReadRebaseTodoFile(fileName string, commentChar byte) ([]todo.Todo, error) { f, err := os.Open(fileName) if err != nil { @@ -92,6 +106,33 @@ func PrependStrToTodoFile(filePath string, linesToPrepend []byte) error { return os.WriteFile(filePath, linesToPrepend, 0o644) } +func DeleteTodos(fileName string, todosToDelete []Todo, commentChar byte) error { + todos, err := ReadRebaseTodoFile(fileName, commentChar) + if err != nil { + return err + } + rearrangedTodos, err := deleteTodos(todos, todosToDelete) + if err != nil { + return err + } + return WriteRebaseTodoFile(fileName, rearrangedTodos, commentChar) +} + +func deleteTodos(todos []todo.Todo, todosToDelete []Todo) ([]todo.Todo, error) { + for _, todoToDelete := range todosToDelete { + idx, ok := findTodo(todos, todoToDelete) + + if !ok { + // Should never happen + return []todo.Todo{}, fmt.Errorf("Todo %s not found in git-rebase-todo", todoToDelete.Sha) + } + + todos = Remove(todos, idx) + } + + return todos, nil +} + func MoveTodosDown(fileName string, todosToMove []Todo, commentChar byte) error { todos, err := ReadRebaseTodoFile(fileName, commentChar) if err != nil { @@ -116,8 +157,8 @@ func MoveTodosUp(fileName string, todosToMove []Todo, commentChar byte) error { return WriteRebaseTodoFile(fileName, rearrangedTodos, commentChar) } -func moveTodoDown(todos []todo.Todo, sha string, action todo.TodoCommand) ([]todo.Todo, error) { - rearrangedTodos, err := moveTodoUp(lo.Reverse(todos), sha, action) +func moveTodoDown(todos []todo.Todo, todoToMove Todo) ([]todo.Todo, error) { + rearrangedTodos, err := moveTodoUp(lo.Reverse(todos), todoToMove) return lo.Reverse(rearrangedTodos), err } @@ -126,17 +167,12 @@ func moveTodosDown(todos []todo.Todo, todosToMove []Todo) ([]todo.Todo, error) { return lo.Reverse(rearrangedTodos), err } -func moveTodoUp(todos []todo.Todo, sha string, action todo.TodoCommand) ([]todo.Todo, error) { - _, sourceIdx, ok := lo.FindIndexOf(todos, func(t todo.Todo) bool { - // Comparing just the sha is not enough; we need to compare both the - // action and the sha, as the sha could appear multiple times (e.g. in a - // pick and later in a merge) - return t.Command == action && equalShas(t.Commit, sha) - }) +func moveTodoUp(todos []todo.Todo, todoToMove Todo) ([]todo.Todo, error) { + sourceIdx, ok := findTodo(todos, todoToMove) if !ok { // Should never happen - return []todo.Todo{}, fmt.Errorf("Todo %s not found in git-rebase-todo", sha) + return []todo.Todo{}, fmt.Errorf("Todo %s not found in git-rebase-todo", todoToMove.Sha) } // The todos are ordered backwards compared to our model commits, so @@ -161,7 +197,7 @@ func moveTodoUp(todos []todo.Todo, sha string, action todo.TodoCommand) ([]todo. func moveTodosUp(todos []todo.Todo, todosToMove []Todo) ([]todo.Todo, error) { for _, todoToMove := range todosToMove { var newTodos []todo.Todo - newTodos, err := moveTodoUp(todos, todoToMove.Sha, todoToMove.Action) + newTodos, err := moveTodoUp(todos, todoToMove) if err != nil { return nil, err } diff --git a/pkg/utils/rebase_todo_test.go b/pkg/utils/rebase_todo_test.go index 40f44a3cb9e..fd87d7c7ca9 100644 --- a/pkg/utils/rebase_todo_test.go +++ b/pkg/utils/rebase_todo_test.go @@ -10,11 +10,11 @@ import ( func TestRebaseCommands_moveTodoDown(t *testing.T) { type scenario struct { - testName string - todos []todo.Todo - shaToMoveDown string - expectedErr string - expectedTodos []todo.Todo + testName string + todos []todo.Todo + todoToMoveDown Todo + expectedErr string + expectedTodos []todo.Todo } scenarios := []scenario{ @@ -25,8 +25,8 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "5678", - expectedErr: "", + todoToMoveDown: Todo{Sha: "5678", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "1234"}, @@ -40,14 +40,29 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "abcd", - expectedErr: "", + todoToMoveDown: Todo{Sha: "abcd", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "1234"}, {Command: todo.Pick, Commit: "abcd"}, {Command: todo.Pick, Commit: "5678"}, }, }, + { + testName: "move update-ref todo", + todos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.Pick, Commit: "5678"}, + {Command: todo.UpdateRef, Ref: "refs/heads/some_branch"}, + }, + todoToMoveDown: Todo{Ref: "refs/heads/some_branch", Action: todo.UpdateRef}, + expectedErr: "", + expectedTodos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.UpdateRef, Ref: "refs/heads/some_branch"}, + {Command: todo.Pick, Commit: "5678"}, + }, + }, { testName: "skip an invisible todo", todos: []todo.Todo{ @@ -57,8 +72,8 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "def0"}, }, - shaToMoveDown: "5678", - expectedErr: "", + todoToMoveDown: Todo{Sha: "5678", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "1234"}, {Command: todo.Pick, Commit: "5678"}, @@ -76,9 +91,9 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "def0", - expectedErr: "Todo def0 not found in git-rebase-todo", - expectedTodos: []todo.Todo{}, + todoToMoveDown: Todo{Sha: "def0", Action: todo.Pick}, + expectedErr: "Todo def0 not found in git-rebase-todo", + expectedTodos: []todo.Todo{}, }, { testName: "trying to move first commit down", @@ -87,9 +102,9 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "1234", - expectedErr: "Destination position for moving todo is out of range", - expectedTodos: []todo.Todo{}, + todoToMoveDown: Todo{Sha: "1234", Action: todo.Pick}, + expectedErr: "Destination position for moving todo is out of range", + expectedTodos: []todo.Todo{}, }, { testName: "trying to move commit down when all commits before are invisible", @@ -99,15 +114,15 @@ func TestRebaseCommands_moveTodoDown(t *testing.T) { {Command: todo.Pick, Commit: "1234"}, {Command: todo.Pick, Commit: "5678"}, }, - shaToMoveDown: "1234", - expectedErr: "Destination position for moving todo is out of range", - expectedTodos: []todo.Todo{}, + todoToMoveDown: Todo{Sha: "1234", Action: todo.Pick}, + expectedErr: "Destination position for moving todo is out of range", + expectedTodos: []todo.Todo{}, }, } for _, s := range scenarios { t.Run(s.testName, func(t *testing.T) { - rearrangedTodos, err := moveTodoDown(s.todos, s.shaToMoveDown, todo.Pick) + rearrangedTodos, err := moveTodoDown(s.todos, s.todoToMoveDown) if s.expectedErr == "" { assert.NoError(t, err) } else { @@ -123,7 +138,7 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { type scenario struct { testName string todos []todo.Todo - shaToMoveDown string + todoToMoveUp Todo expectedErr string expectedTodos []todo.Todo } @@ -136,8 +151,8 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "5678", - expectedErr: "", + todoToMoveUp: Todo{Sha: "5678", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "1234"}, {Command: todo.Pick, Commit: "abcd"}, @@ -151,14 +166,29 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "1234", - expectedErr: "", + todoToMoveUp: Todo{Sha: "1234", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "1234"}, {Command: todo.Pick, Commit: "abcd"}, }, }, + { + testName: "move update-ref todo", + todos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.UpdateRef, Ref: "refs/heads/some_branch"}, + {Command: todo.Pick, Commit: "5678"}, + }, + todoToMoveUp: Todo{Ref: "refs/heads/some_branch", Action: todo.UpdateRef}, + expectedErr: "", + expectedTodos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.Pick, Commit: "5678"}, + {Command: todo.UpdateRef, Ref: "refs/heads/some_branch"}, + }, + }, { testName: "skip an invisible todo", todos: []todo.Todo{ @@ -168,8 +198,8 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "def0"}, }, - shaToMoveDown: "abcd", - expectedErr: "", + todoToMoveUp: Todo{Sha: "abcd", Action: todo.Pick}, + expectedErr: "", expectedTodos: []todo.Todo{ {Command: todo.Pick, Commit: "1234"}, {Command: todo.Label, Label: "myLabel"}, @@ -187,7 +217,7 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "def0", + todoToMoveUp: Todo{Sha: "def0", Action: todo.Pick}, expectedErr: "Todo def0 not found in git-rebase-todo", expectedTodos: []todo.Todo{}, }, @@ -198,7 +228,7 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Pick, Commit: "5678"}, {Command: todo.Pick, Commit: "abcd"}, }, - shaToMoveDown: "abcd", + todoToMoveUp: Todo{Sha: "abcd", Action: todo.Pick}, expectedErr: "Destination position for moving todo is out of range", expectedTodos: []todo.Todo{}, }, @@ -210,7 +240,7 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { {Command: todo.Label, Label: "myLabel"}, {Command: todo.Reset, Label: "otherlabel"}, }, - shaToMoveDown: "5678", + todoToMoveUp: Todo{Sha: "5678", Action: todo.Pick}, expectedErr: "Destination position for moving todo is out of range", expectedTodos: []todo.Todo{}, }, @@ -218,7 +248,7 @@ func TestRebaseCommands_moveTodoUp(t *testing.T) { for _, s := range scenarios { t.Run(s.testName, func(t *testing.T) { - rearrangedTodos, err := moveTodoUp(s.todos, s.shaToMoveDown, todo.Pick) + rearrangedTodos, err := moveTodoUp(s.todos, s.todoToMoveUp) if s.expectedErr == "" { assert.NoError(t, err) } else { @@ -330,3 +360,58 @@ func TestRebaseCommands_moveFixupCommitDown(t *testing.T) { }) } } + +func TestRebaseCommands_deleteTodos(t *testing.T) { + scenarios := []struct { + name string + todos []todo.Todo + todosToDelete []Todo + expectedTodos []todo.Todo + expectedErr error + }{ + { + name: "success", + todos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.UpdateRef, Ref: "refs/heads/some_branch"}, + {Command: todo.Pick, Commit: "5678"}, + {Command: todo.Pick, Commit: "abcd"}, + }, + todosToDelete: []Todo{ + {Ref: "refs/heads/some_branch", Action: todo.UpdateRef}, + {Sha: "abcd", Action: todo.Pick}, + }, + expectedTodos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.Pick, Commit: "5678"}, + }, + expectedErr: nil, + }, + { + name: "failure", + todos: []todo.Todo{ + {Command: todo.Pick, Commit: "1234"}, + {Command: todo.Pick, Commit: "5678"}, + }, + todosToDelete: []Todo{ + {Sha: "abcd", Action: todo.Pick}, + }, + expectedTodos: []todo.Todo{}, + expectedErr: errors.New("Todo abcd not found in git-rebase-todo"), + }, + } + + for _, scenario := range scenarios { + t.Run(scenario.name, func(t *testing.T) { + actualTodos, actualErr := deleteTodos(scenario.todos, scenario.todosToDelete) + + if scenario.expectedErr == nil { + assert.NoError(t, actualErr) + } else { + assert.EqualError(t, actualErr, scenario.expectedErr.Error()) + } + + assert.EqualValues(t, scenario.expectedTodos, actualTodos) + }) + } +} diff --git a/pkg/utils/search.go b/pkg/utils/search.go index c204506f0f4..4ec26bc2272 100644 --- a/pkg/utils/search.go +++ b/pkg/utils/search.go @@ -1,26 +1,73 @@ package utils import ( - "sort" "strings" "github.com/sahilm/fuzzy" "github.com/samber/lo" ) -func FuzzySearch(needle string, haystack []string) []string { +func FilterStrings(needle string, haystack []string, useFuzzySearch bool) []string { if needle == "" { return []string{} } - matches := fuzzy.Find(needle, haystack) - sort.Sort(matches) + matches := Find(needle, haystack, useFuzzySearch) return lo.Map(matches, func(match fuzzy.Match, _ int) string { return match.Str }) } +// Duplicated from the fuzzy package because it's private there +type stringSource []string + +func (ss stringSource) String(i int) string { + return ss[i] +} + +func (ss stringSource) Len() int { return len(ss) } + +// Drop-in replacement for fuzzy.Find (except that it doesn't fill out +// MatchedIndexes or Score, but we are not using these) +func FindSubstrings(pattern string, data []string) fuzzy.Matches { + return FindSubstringsFrom(pattern, stringSource(data)) +} + +// Drop-in replacement for fuzzy.FindFrom (except that it doesn't fill out +// MatchedIndexes or Score, but we are not using these) +func FindSubstringsFrom(pattern string, data fuzzy.Source) fuzzy.Matches { + substrings := strings.Fields(pattern) + result := fuzzy.Matches{} + +outer: + for i := 0; i < data.Len(); i++ { + s := data.String(i) + for _, sub := range substrings { + if !CaseAwareContains(s, sub) { + continue outer + } + } + result = append(result, fuzzy.Match{Str: s, Index: i}) + } + + return result +} + +func Find(pattern string, data []string, useFuzzySearch bool) fuzzy.Matches { + if useFuzzySearch { + return fuzzy.Find(pattern, data) + } + return FindSubstrings(pattern, data) +} + +func FindFrom(pattern string, data fuzzy.Source, useFuzzySearch bool) fuzzy.Matches { + if useFuzzySearch { + return fuzzy.FindFrom(pattern, data) + } + return FindSubstringsFrom(pattern, data) +} + func CaseAwareContains(haystack, needle string) bool { // if needle contains an uppercase letter, we'll do a case sensitive search if ContainsUppercase(needle) { diff --git a/pkg/utils/search_test.go b/pkg/utils/search_test.go index 79668c0f57b..ad5dd12253d 100644 --- a/pkg/utils/search_test.go +++ b/pkg/utils/search_test.go @@ -7,49 +7,67 @@ import ( "github.com/stretchr/testify/assert" ) -// TestFuzzySearch is a function. -func TestFuzzySearch(t *testing.T) { +func TestFilterStrings(t *testing.T) { type scenario struct { - needle string - haystack []string - expected []string + needle string + haystack []string + useFuzzySearch bool + expected []string } scenarios := []scenario{ { - needle: "", - haystack: []string{"test"}, - expected: []string{}, + needle: "", + haystack: []string{"test"}, + useFuzzySearch: true, + expected: []string{}, + }, + { + needle: "test", + haystack: []string{"test"}, + useFuzzySearch: true, + expected: []string{"test"}, + }, + { + needle: "o", + haystack: []string{"a", "o", "e"}, + useFuzzySearch: true, + expected: []string{"o"}, }, { - needle: "test", - haystack: []string{"test"}, - expected: []string{"test"}, + needle: "mybranch", + haystack: []string{"my_branch", "mybranch", "branch", "this is my branch"}, + useFuzzySearch: true, + expected: []string{"mybranch", "my_branch", "this is my branch"}, }, { - needle: "o", - haystack: []string{"a", "o", "e"}, - expected: []string{"o"}, + needle: "test", + haystack: []string{"not a good match", "this 'test' is a good match", "test"}, + useFuzzySearch: true, + expected: []string{"test", "this 'test' is a good match"}, }, { - needle: "mybranch", - haystack: []string{"my_branch", "mybranch", "branch", "this is my branch"}, - expected: []string{"mybranch", "my_branch", "this is my branch"}, + needle: "test", + haystack: []string{"Test"}, + useFuzzySearch: true, + expected: []string{"Test"}, }, { - needle: "test", - haystack: []string{"not a good match", "this 'test' is a good match", "test"}, - expected: []string{"test", "this 'test' is a good match"}, + needle: "test", + haystack: []string{"integration-testing", "t_e_s_t"}, + useFuzzySearch: false, + expected: []string{"integration-testing"}, }, { - needle: "test", - haystack: []string{"Test"}, - expected: []string{"Test"}, + needle: "integr test", + haystack: []string{"integration-testing", "testing-integration"}, + useFuzzySearch: false, + expected: []string{"integration-testing", "testing-integration"}, }, } for _, s := range scenarios { - assert.EqualValues(t, s.expected, FuzzySearch(s.needle, s.haystack)) + assert.EqualValues(t, s.expected, FilterStrings(s.needle, s.haystack, s.useFuzzySearch)) } } diff --git a/schema/config.json b/schema/config.json index 3816dcea6c1..65383cd9ffb 100644 --- a/schema/config.json +++ b/schema/config.json @@ -357,6 +357,15 @@ "type": "string", "description": "Whether to stack UI components on top of each other.\nOne of 'auto' (default) | 'always' | 'never'", "default": "auto" + }, + "filterMode": { + "type": "string", + "enum": [ + "substring", + "fuzzy" + ], + "description": "How things are filtered when typing '/'.\nOne of 'substring' (default) | 'fuzzy'", + "default": "substring" } }, "additionalProperties": false,