Repository: jesseduffield/lazygit (language: go)

Issue:
Can no longer push to pull request branches

https://github.com/jesseduffield/lazygit/assets/191335/f5e89ef6-8ac5-43e2-84e9-6d5713b0a5ec

Note that `git push` works (end of video) but lazygit reports diverged remote / stale info and fails to (unnecessarily) force push.

This is for a branch created using `gh pr checkout` on a remote which is not present locally.

In the repo's git config, it looks something like this:

```
[branch "daily-challenge"]
	remote = https://github.com/bdach/osu-server-spectator.git
	pushRemote = https://github.com/bdach/osu-server-spectator.git
	merge = refs/heads/daily-challenge
```

```
❯ lazygit --version
commit=, build date=, build source=homebrew, version=HEAD-0fbed71, os=darwin, arch=arm64, git version=2.45.1
```


Discussion / hints:

Fix patch:
diff --git a/pkg/commands/git_commands/sync.go b/pkg/commands/git_commands/sync.go
index 4ab1f336bf0..1c93fc26074 100644
--- a/pkg/commands/git_commands/sync.go
+++ b/pkg/commands/git_commands/sync.go
@@ -19,6 +19,7 @@ func NewSyncCommands(gitCommon *GitCommon) *SyncCommands {
 // Push pushes to a branch
 type PushOpts struct {
 	Force          bool
+	ForceWithLease bool
 	UpstreamRemote string
 	UpstreamBranch string
 	SetUpstream    bool
@@ -30,7 +31,8 @@ func (self *SyncCommands) PushCmdObj(task gocui.Task, opts PushOpts) (oscommands
 	}
 
 	cmdArgs := NewGitCmd("push").
-		ArgIf(opts.Force, "--force-with-lease").
+		ArgIf(opts.Force, "--force").
+		ArgIf(opts.ForceWithLease, "--force-with-lease").
 		ArgIf(opts.SetUpstream, "--set-upstream").
 		ArgIf(opts.UpstreamRemote != "", opts.UpstreamRemote).
 		ArgIf(opts.UpstreamBranch != "", opts.UpstreamBranch).
diff --git a/pkg/commands/models/branch.go b/pkg/commands/models/branch.go
index 25d806fca0e..5a34ba5e8fe 100644
--- a/pkg/commands/models/branch.go
+++ b/pkg/commands/models/branch.go
@@ -104,7 +104,7 @@ func (b *Branch) IsBehindForPull() bool {
 }
 
 func (b *Branch) IsBehindForPush() bool {
-	return b.BehindForPush != "" && b.BehindForPush != "0"
+	return b.RemoteBranchStoredLocally() && b.BehindForPush != "0"
 }
 
 // for when we're in a detached head state
diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go
index 7d7ca9eed7d..8c733403127 100644
--- a/pkg/gui/controllers/sync_controller.go
+++ b/pkg/gui/controllers/sync_controller.go
@@ -89,7 +89,7 @@ func (self *SyncController) branchCheckedOut(f func(*models.Branch) error) func(
 func (self *SyncController) push(currentBranch *models.Branch) error {
 	// if we are behind our upstream branch we'll ask if the user wants to force push
 	if currentBranch.IsTrackingRemote() {
-		opts := pushOpts{}
+		opts := pushOpts{remoteBranchStoredLocally: currentBranch.RemoteBranchStoredLocally()}
 		if currentBranch.IsBehindForPush() {
 			return self.requestToForcePush(currentBranch, opts)
 		} else {
@@ -180,9 +180,16 @@ func (self *SyncController) pullWithLock(task gocui.Task, opts PullFilesOptions)
 
 type pushOpts struct {
 	force          bool
+	forceWithLease bool
 	upstreamRemote string
 	upstreamBranch string
 	setUpstream    bool
+
+	// If this is false, we can't tell ahead of time whether a force-push will
+	// be necessary, so we start with a normal push and offer to force-push if
+	// the server rejected. If this is true, we don't offer to force-push if the
+	// server rejected, but rather ask the user to fetch.
+	remoteBranchStoredLocally bool
 }
 
 func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) error {
@@ -192,13 +199,32 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts)
 			task,
 			git_commands.PushOpts{
 				Force:          opts.force,
+				ForceWithLease: opts.forceWithLease,
 				UpstreamRemote: opts.upstreamRemote,
 				UpstreamBranch: opts.upstreamBranch,
 				SetUpstream:    opts.setUpstream,
 			})
 		if err != nil {
-			if strings.Contains(err.Error(), "Updates were rejected") {
-				return errors.New(self.c.Tr.UpdatesRejected)
+			if !opts.force && !opts.forceWithLease && strings.Contains(err.Error(), "Updates were rejected") {
+				if opts.remoteBranchStoredLocally {
+					return errors.New(self.c.Tr.UpdatesRejected)
+				}
+
+				forcePushDisabled := self.c.UserConfig.Git.DisableForcePushing
+				if forcePushDisabled {
+					return errors.New(self.c.Tr.UpdatesRejectedAndForcePushDisabled)
+				}
+				_ = 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
 			}
 			return err
 		}
@@ -216,7 +242,7 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt
 		Title:  self.c.Tr.ForcePush,
 		Prompt: self.forcePushPrompt(),
 		HandleConfirm: func() error {
-			opts.force = true
+			opts.forceWithLease = true
 			return self.pushAux(currentBranch, opts)
 		},
 	})
diff --git a/pkg/i18n/chinese.go b/pkg/i18n/chinese.go
index 002143b282e..f8ec9720c46 100644
--- a/pkg/i18n/chinese.go
+++ b/pkg/i18n/chinese.go
@@ -35,323 +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:              "您的分支已与远程分支不同, 并且您已经禁用了强行推送",
-		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:       `创建修正提交`,
-		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:                "上游格式无效，格式应当为：'<remote> <branchname>'",
-		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:                   "您的分支已与远程分支不同, 并且您已经禁用了强行推送",
+		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:            `创建修正提交`,
+		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:                     "上游格式无效，格式应当为：'<remote> <branchname>'",
+		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/english.go b/pkg/i18n/english.go
index 0fe5ab12a64..fe088f8e0eb 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -198,6 +198,7 @@ type TranslationSet struct {
 	ForcePushPrompt                       string
 	ForcePushDisabled                     string
 	UpdatesRejected                       string
+	UpdatesRejectedAndForcePushDisabled   string
 	CheckForUpdate                        string
 	CheckingForUpdates                    string
 	UpdateAvailableTitle                  string
@@ -1160,6 +1161,7 @@ func EnglishTranslationSet() TranslationSet {
 		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",
 		UpdatesRejected:                      "Updates were rejected. Please fetch and examine the remote changes before pushing again.",
+		UpdatesRejectedAndForcePushDisabled:  "Updates were rejected and you have disabled force pushing",
 		CheckForUpdate:                       "Check for update",
 		CheckingForUpdates:                   "Checking for updates...",
 		UpdateAvailableTitle:                 "Update available!",
diff --git a/pkg/i18n/korean.go b/pkg/i18n/korean.go
index e333dd29267..83a583faf62 100644
--- a/pkg/i18n/korean.go
+++ b/pkg/i18n/korean.go
@@ -19,270 +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가 비활성화 되었습니다.",
-		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`,
-		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가 비활성화 되었습니다.",
+		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`,
+		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:              `'<remote> <branchname>'와 같은 형식으로 입력하세요.`,
 		InvalidUpstream:            "Upstream의 형식이 잘못되었습니다.'<remote> <branchname>' 와 같은 형식으로 입력하세요.",
diff --git a/pkg/i18n/polish.go b/pkg/i18n/polish.go
index 64067fb1dfc..97a68a32676 100644
--- a/pkg/i18n/polish.go
+++ b/pkg/i18n/polish.go
@@ -183,6 +183,7 @@ func polishTranslationSet() TranslationSet {
 		ForcePush:                           "Wymuś wysłanie",
 		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",
+		UpdatesRejectedAndForcePushDisabled: "Aktualizacje zostały odrzucone i wyłączyłeś wymuszenie wysłania",
 		CheckForUpdate:                      "Sprawdź aktualizacje",
 		CheckingForUpdates:                  "Sprawdzanie aktualizacji...",
 		UpdateAvailableTitle:                "Dostępna aktualizacja!",
diff --git a/pkg/i18n/russian.go b/pkg/i18n/russian.go
index a52d19cde7c..ebcfaacfe5c 100644
--- a/pkg/i18n/russian.go
+++ b/pkg/i18n/russian.go
@@ -35,389 +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:             "Установить автора (должно выглядеть как «Имя <Email>»)",
-		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 коммит`,
-		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 как '<remote> <branchname>'`,
-		InvalidUpstream:                  "Недействительный upstream. Должен быть в формате '<remote> <branchname>'",
-		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:                "Установить автора (должно выглядеть как «Имя <Email>»)",
+		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 коммит`,
+		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 как '<remote> <branchname>'`,
+		InvalidUpstream:                     "Недействительный upstream. Должен быть в формате '<remote> <branchname>'",
+		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 d6ec8f71ea9..2da3d52c04e 100644
--- a/pkg/i18n/traditional_chinese.go
+++ b/pkg/i18n/traditional_chinese.go
@@ -67,389 +67,390 @@ 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 指令以復原。這不包括工作區更改；只考慮提交。",
-		RedoTooltip:                      "將使用 reflog 確任 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:               "日誌",
-		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:                 "提交中",
-		RevertingStatus:                  "還原中",
-		CommitFiles:                      "提交檔案",
-		SubCommitsDynamicTitle:           "提交 (共 %s項)",
-		CommitFilesDynamicTitle:          "差異檔案 (共 %s項)",
-		RemoteBranchesDynamicTitle:       "遠端分支 (共 %s項)",
-		ViewItemFiles:                    "檢視所選項目的檔案",
-		CommitFilesTitle:                 "提交檔案",
-		CheckoutCommitFileTooltip:        "檢出檔案",
-		DiscardFileChangesTitle:          "捨棄檔案更改",
-		DiscardFileChangesPrompt:         "是否捨棄此提交？如果這個檔案是在此提交中創建的，它將被刪除",
-		DisabledForGPG:                   "此功能不適用於 GPG 加密",
-		CreateRepo:                       "未在 git 版本庫中。是否建立新版本庫？ (y/n): ",
-		BareRepo:                         "你嘗試在裸版本庫中開啟 Lazygit，但 Lazygit 尚未支援裸版本庫。是否開啟最新版本庫？ (y/n) ",
-		InitialBranch:                    "分支名稱？（留空使用 git 的預設值）：",
-		NoRecentRepositories:             "必須在 git 版本庫中開啟 lazygit。沒有有效的最近版本庫。退出。",
-		IncorrectNotARepository:          "無效 `notARepository` 輸入。輸入應為「prompt」、「create」、「skip」、或「quit」。",
-		AutoStashTitle:                   "是否自動收藏？",
-		AutoStashPrompt:                  "必須收藏並拾起變更才得以繼續操作。是否自動執行？（Enter/Esc）",
-		StashPrefix:                      "自動收藏 ",
-		Cancel:                           "取消",
-		DiscardAllChanges:                "刪除所有變更",
-		DiscardUnstagedChanges:           "刪除未預存變更",
-		DiscardAllChangesToAllFiles:      "刪除工作目錄",
-		DiscardAnyUnstagedChanges:        "刪除未預存變更",
-		DiscardUntrackedFiles:            "刪除未追蹤檔案",
-		DiscardStagedChanges:             "刪除已預存變更",
-		HardReset:                        "強制重設",
-		ViewResetOptions:                 "檢視重設選項",
-		CreateFixupCommitTooltip:         "為此提交建立修復提交",
-		SquashAboveCommits:               "壓縮上方所有「fixup」提交（自動壓縮）",
-		SquashAboveCommitsTooltip:        "是否壓縮上方 {{.commit}} 所有「fixup」提交？",
-		CreateFixupCommit:                "建立修復提交",
-		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:                    `輸入上游為 '<remote> <branchname>'`,
-		InvalidUpstream:                  "無效的上游。必須符合 '<remote> <branchname>' 的格式",
-		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:                   "排除已追蹤檔案",
-		ViewResetToUpstreamOptions:       "檢視上游重設選項",
-		NextScreenMode:                   "下一個螢幕模式（常規/半螢幕/全螢幕）",
-		PrevScreenMode:                   "上一個螢幕模式",
-		StartSearch:                      "搜尋",
-		StartFilter:                      "搜尋",
-		Panel:                            "面板",
-		KeybindingsLegend:                "說明：`<c-b>` 表示 Ctrl＋B、`<a-b>` 表示 Alt＋B，`B`表示 Shift＋B",
-		RenameBranch:                     "重新命名分支",
-		BranchUpstreamOptionsTitle:       "上游分支設定",
-		ViewBranchUpstreamOptionsTooltip: "檢視有關上游分支的設定（例如重設至上游）",
-		UpstreamNotSetError:              "目標分支沒有上游分支（或其上游分支未儲存於本地）",
-		ViewBranchUpstreamOptions:        "檢視上游設定",
-		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 指令以復原。這不包括工作區更改；只考慮提交。",
+		RedoTooltip:                         "將使用 reflog 確任 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:                  "日誌",
+		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:                    "提交中",
+		RevertingStatus:                     "還原中",
+		CommitFiles:                         "提交檔案",
+		SubCommitsDynamicTitle:              "提交 (共 %s項)",
+		CommitFilesDynamicTitle:             "差異檔案 (共 %s項)",
+		RemoteBranchesDynamicTitle:          "遠端分支 (共 %s項)",
+		ViewItemFiles:                       "檢視所選項目的檔案",
+		CommitFilesTitle:                    "提交檔案",
+		CheckoutCommitFileTooltip:           "檢出檔案",
+		DiscardFileChangesTitle:             "捨棄檔案更改",
+		DiscardFileChangesPrompt:            "是否捨棄此提交？如果這個檔案是在此提交中創建的，它將被刪除",
+		DisabledForGPG:                      "此功能不適用於 GPG 加密",
+		CreateRepo:                          "未在 git 版本庫中。是否建立新版本庫？ (y/n): ",
+		BareRepo:                            "你嘗試在裸版本庫中開啟 Lazygit，但 Lazygit 尚未支援裸版本庫。是否開啟最新版本庫？ (y/n) ",
+		InitialBranch:                       "分支名稱？（留空使用 git 的預設值）：",
+		NoRecentRepositories:                "必須在 git 版本庫中開啟 lazygit。沒有有效的最近版本庫。退出。",
+		IncorrectNotARepository:             "無效 `notARepository` 輸入。輸入應為「prompt」、「create」、「skip」、或「quit」。",
+		AutoStashTitle:                      "是否自動收藏？",
+		AutoStashPrompt:                     "必須收藏並拾起變更才得以繼續操作。是否自動執行？（Enter/Esc）",
+		StashPrefix:                         "自動收藏 ",
+		Cancel:                              "取消",
+		DiscardAllChanges:                   "刪除所有變更",
+		DiscardUnstagedChanges:              "刪除未預存變更",
+		DiscardAllChangesToAllFiles:         "刪除工作目錄",
+		DiscardAnyUnstagedChanges:           "刪除未預存變更",
+		DiscardUntrackedFiles:               "刪除未追蹤檔案",
+		DiscardStagedChanges:                "刪除已預存變更",
+		HardReset:                           "強制重設",
+		ViewResetOptions:                    "檢視重設選項",
+		CreateFixupCommitTooltip:            "為此提交建立修復提交",
+		SquashAboveCommits:                  "壓縮上方所有「fixup」提交（自動壓縮）",
+		SquashAboveCommitsTooltip:           "是否壓縮上方 {{.commit}} 所有「fixup」提交？",
+		CreateFixupCommit:                   "建立修復提交",
+		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:                       `輸入上游為 '<remote> <branchname>'`,
+		InvalidUpstream:                     "無效的上游。必須符合 '<remote> <branchname>' 的格式",
+		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:                      "排除已追蹤檔案",
+		ViewResetToUpstreamOptions:          "檢視上游重設選項",
+		NextScreenMode:                      "下一個螢幕模式（常規/半螢幕/全螢幕）",
+		PrevScreenMode:                      "上一個螢幕模式",
+		StartSearch:                         "搜尋",
+		StartFilter:                         "搜尋",
+		Panel:                               "面板",
+		KeybindingsLegend:                   "說明：`<c-b>` 表示 Ctrl＋B、`<a-b>` 表示 Alt＋B，`B`表示 Shift＋B",
+		RenameBranch:                        "重新命名分支",
+		BranchUpstreamOptionsTitle:          "上游分支設定",
+		ViewBranchUpstreamOptionsTooltip:    "檢視有關上游分支的設定（例如重設至上游）",
+		UpstreamNotSetError:                 "目標分支沒有上游分支（或其上游分支未儲存於本地）",
+		ViewBranchUpstreamOptions:           "檢視上游設定",
+		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:                      "顯示輸出：",


Test patch:
diff --git a/pkg/commands/git_commands/sync_test.go b/pkg/commands/git_commands/sync_test.go
index f5f281e147d..6ff8da8404f 100644
--- a/pkg/commands/git_commands/sync_test.go
+++ b/pkg/commands/git_commands/sync_test.go
@@ -18,24 +18,32 @@ func TestSyncPush(t *testing.T) {
 	scenarios := []scenario{
 		{
 			testName: "Push with force disabled",
-			opts:     PushOpts{Force: false},
+			opts:     PushOpts{ForceWithLease: false},
 			test: func(cmdObj oscommands.ICmdObj, err error) {
 				assert.Equal(t, cmdObj.Args(), []string{"git", "push"})
 				assert.NoError(t, err)
 			},
 		},
+		{
+			testName: "Push with force-with-lease enabled",
+			opts:     PushOpts{ForceWithLease: true},
+			test: func(cmdObj oscommands.ICmdObj, err error) {
+				assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force-with-lease"})
+				assert.NoError(t, err)
+			},
+		},
 		{
 			testName: "Push with force enabled",
 			opts:     PushOpts{Force: true},
 			test: func(cmdObj oscommands.ICmdObj, err error) {
-				assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force-with-lease"})
+				assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force"})
 				assert.NoError(t, err)
 			},
 		},
 		{
 			testName: "Push with force disabled, upstream supplied",
 			opts: PushOpts{
-				Force:          false,
+				ForceWithLease: false,
 				UpstreamRemote: "origin",
 				UpstreamBranch: "master",
 			},
@@ -47,7 +55,7 @@ func TestSyncPush(t *testing.T) {
 		{
 			testName: "Push with force disabled, setting upstream",
 			opts: PushOpts{
-				Force:          false,
+				ForceWithLease: false,
 				UpstreamRemote: "origin",
 				UpstreamBranch: "master",
 				SetUpstream:    true,
@@ -58,9 +66,9 @@ func TestSyncPush(t *testing.T) {
 			},
 		},
 		{
-			testName: "Push with force enabled, setting upstream",
+			testName: "Push with force-with-lease enabled, setting upstream",
 			opts: PushOpts{
-				Force:          true,
+				ForceWithLease: true,
 				UpstreamRemote: "origin",
 				UpstreamBranch: "master",
 				SetUpstream:    true,
@@ -73,7 +81,7 @@ func TestSyncPush(t *testing.T) {
 		{
 			testName: "Push with remote branch but no origin",
 			opts: PushOpts{
-				Force:          true,
+				ForceWithLease: true,
 				UpstreamRemote: "",
 				UpstreamBranch: "master",
 				SetUpstream:    true,
diff --git a/pkg/integration/tests/sync/force_push_remote_branch_not_stored_locally.go b/pkg/integration/tests/sync/force_push_remote_branch_not_stored_locally.go
new file mode 100644
index 00000000000..d6b8a7cfd78
--- /dev/null
+++ b/pkg/integration/tests/sync/force_push_remote_branch_not_stored_locally.go
@@ -0,0 +1,81 @@
+package sync
+
+import (
+	"github.com/jesseduffield/lazygit/pkg/config"
+	. "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var ForcePushRemoteBranchNotStoredLocally = NewIntegrationTest(NewIntegrationTestArgs{
+	Description:  "Push a branch whose remote branch is not stored locally, requiring a force push",
+	ExtraCmdArgs: []string{},
+	Skip:         false,
+	SetupConfig:  func(config *config.AppConfig) {},
+	SetupRepo: func(shell *Shell) {
+		shell.EmptyCommit("one")
+		shell.EmptyCommit("two")
+
+		shell.Clone("some-remote")
+
+		// remove the 'two' commit so that we have something to pull from the remote
+		shell.HardReset("HEAD^")
+
+		shell.SetConfig("branch.master.remote", "../some-remote")
+		shell.SetConfig("branch.master.pushRemote", "../some-remote")
+		shell.SetConfig("branch.master.merge", "refs/heads/master")
+
+		shell.CreateFileAndAdd("file1", "file1 content")
+	},
+	Run: func(t *TestDriver, keys config.KeybindingConfig) {
+		t.Views().Commits().
+			Lines(
+				Contains("one"),
+			)
+
+		t.Views().Status().Content(Contains("? repo → master"))
+
+		// We're behind our upstream now, so we expect to be asked to force-push
+		t.Views().Files().IsFocused().Press(keys.Universal.Push)
+
+		t.ExpectPopup().Confirmation().
+			Title(Equals("Force push")).
+			Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")).
+			Confirm()
+
+		// Make a new local commit
+		t.Views().Files().IsFocused().Press(keys.Files.CommitChanges)
+		t.ExpectPopup().CommitMessagePanel().Type("new").Confirm()
+
+		t.Views().Commits().
+			Lines(
+				Contains("new"),
+				Contains("one"),
+			)
+
+		// Pushing this works without needing to force push
+		t.Views().Files().IsFocused().Press(keys.Universal.Push)
+
+		// Now add the clone as a remote just so that we can check if what we
+		// pushed arrived there correctly
+		t.Views().Remotes().Focus().
+			Press(keys.Universal.New)
+
+		t.ExpectPopup().Prompt().
+			Title(Equals("New remote name:")).Type("some-remote").Confirm()
+		t.ExpectPopup().Prompt().
+			Title(Equals("New remote url:")).Type("../some-remote").Confirm()
+		t.Views().Remotes().Lines(
+			Contains("some-remote").IsSelected(),
+		).
+			PressEnter()
+
+		t.Views().RemoteBranches().IsFocused().Lines(
+			Contains("master").IsSelected(),
+		).
+			PressEnter()
+
+		t.Views().SubCommits().IsFocused().Lines(
+			Contains("new"),
+			Contains("one"),
+		)
+	},
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index c65db5abcdc..e1ded611b9f 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -276,6 +276,7 @@ var tests = []*components.IntegrationTest{
 	sync.ForcePush,
 	sync.ForcePushMultipleMatching,
 	sync.ForcePushMultipleUpstream,
+	sync.ForcePushRemoteBranchNotStoredLocally,
 	sync.ForcePushTriangular,
 	sync.Pull,
 	sync.PullAndSetUpstream,