diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index d491b6f5e31..5732bc0d33d 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -104,7 +104,13 @@ func (self *RebaseCommands) MoveCommitDown(commits []*models.Commit, index int) sha := commits[index].Sha - self.os.LogCommand(fmt.Sprintf("Moving TODO down: %s", utils.ShortSha(sha)), false) + msg := utils.ResolvePlaceholderString( + self.Tr.Log.MoveCommitDown, + map[string]string{ + "shortSha": utils.ShortSha(sha), + }, + ) + self.os.LogCommand(msg, false) return self.PrepareInteractiveRebaseCommand(PrepareInteractiveRebaseCommandOpts{ baseShaOrRoot: baseShaOrRoot, @@ -118,7 +124,13 @@ func (self *RebaseCommands) MoveCommitUp(commits []*models.Commit, index int) er sha := commits[index].Sha - self.os.LogCommand(fmt.Sprintf("Moving TODO up: %s", utils.ShortSha(sha)), false) + msg := utils.ResolvePlaceholderString( + self.Tr.Log.MoveCommitUp, + map[string]string{ + "shortSha": utils.ShortSha(sha), + }, + ) + self.os.LogCommand(msg, false) return self.PrepareInteractiveRebaseCommand(PrepareInteractiveRebaseCommandOpts{ baseShaOrRoot: baseShaOrRoot, @@ -149,7 +161,13 @@ func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, index in } func (self *RebaseCommands) EditRebase(branchRef string) error { - self.os.LogCommand(fmt.Sprintf("Beginning interactive rebase at '%s'", branchRef), false) + msg := utils.ResolvePlaceholderString( + self.Tr.Log.EditRebase, + map[string]string{ + "ref": branchRef, + }, + ) + self.os.LogCommand(msg, false) return self.PrepareInteractiveRebaseCommand(PrepareInteractiveRebaseCommandOpts{ baseShaOrRoot: branchRef, instruction: daemon.NewInsertBreakInstruction(), @@ -157,7 +175,14 @@ func (self *RebaseCommands) EditRebase(branchRef string) error { } func (self *RebaseCommands) EditRebaseFromBaseCommit(targetBranchName string, baseCommit string) error { - self.os.LogCommand(fmt.Sprintf("Beginning interactive rebase from '%s' onto '%s", baseCommit, targetBranchName), false) + msg := utils.ResolvePlaceholderString( + self.Tr.Log.EditRebaseFromBaseCommit, + map[string]string{ + "baseCommit": baseCommit, + "targetBranchName": targetBranchName, + }, + ) + self.os.LogCommand(msg, false) return self.PrepareInteractiveRebaseCommand(PrepareInteractiveRebaseCommandOpts{ baseShaOrRoot: baseCommit, onto: targetBranchName, @@ -412,7 +437,13 @@ func (self *RebaseCommands) CherryPickCommits(commits []*models.Commit) error { commitLines := lo.Map(commits, func(commit *models.Commit, _ int) string { return fmt.Sprintf("%s %s", utils.ShortSha(commit.Sha), commit.Name) }) - self.os.LogCommand(fmt.Sprintf("Cherry-picking commits:\n%s", strings.Join(commitLines, "\n")), false) + msg := utils.ResolvePlaceholderString( + self.Tr.Log.CherryPickCommits, + map[string]string{ + "commitLines": strings.Join(commitLines, "\n"), + }, + ) + self.os.LogCommand(msg, false) return self.PrepareInteractiveRebaseCommand(PrepareInteractiveRebaseCommandOpts{ baseShaOrRoot: "HEAD", diff --git a/pkg/commands/oscommands/os.go b/pkg/commands/oscommands/os.go index 4a77310b5b1..fc13eedf0d2 100644 --- a/pkg/commands/oscommands/os.go +++ b/pkg/commands/oscommands/os.go @@ -117,7 +117,15 @@ func (c *OSCommand) Quote(message string) string { // AppendLineToFile adds a new line in file func (c *OSCommand) AppendLineToFile(filename, line string) error { - c.LogCommand(fmt.Sprintf("Appending '%s' to file '%s'", line, filename), false) + msg := utils.ResolvePlaceholderString( + c.Tr.Log.AppendingLineToFile, + map[string]string{ + "line": line, + "filename": filename, + }, + ) + c.LogCommand(msg, false) + f, err := os.OpenFile(filename, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0o600) if err != nil { return utils.WrapError(err) @@ -154,7 +162,13 @@ func (c *OSCommand) AppendLineToFile(filename, line string) error { // CreateFileWithContent creates a file with the given content func (c *OSCommand) CreateFileWithContent(path string, content string) error { - c.LogCommand(fmt.Sprintf("Creating file '%s'", path), false) + msg := utils.ResolvePlaceholderString( + c.Tr.Log.CreateFileWithContent, + map[string]string{ + "path": path, + }, + ) + c.LogCommand(msg, false) if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil { c.Log.Error(err) return err @@ -170,7 +184,13 @@ func (c *OSCommand) CreateFileWithContent(path string, content string) error { // Remove removes a file or directory at the specified path func (c *OSCommand) Remove(filename string) error { - c.LogCommand(fmt.Sprintf("Removing '%s'", filename), false) + msg := utils.ResolvePlaceholderString( + c.Tr.Log.Remove, + map[string]string{ + "filename": filename, + }, + ) + c.LogCommand(msg, false) err := os.RemoveAll(filename) return utils.WrapError(err) } @@ -265,7 +285,14 @@ func PrepareForChildren(cmd *exec.Cmd) { func (c *OSCommand) CopyToClipboard(str string) error { escaped := strings.Replace(str, "\n", "\\n", -1) truncated := utils.TruncateWithEllipsis(escaped, 40) - c.LogCommand(fmt.Sprintf("Copying '%s' to clipboard", truncated), false) + + msg := utils.ResolvePlaceholderString( + c.Tr.Log.CopyToClipboard, + map[string]string{ + "str": truncated, + }, + ) + c.LogCommand(msg, false) if c.UserConfig.OS.CopyToClipboardCmd != "" { cmdStr := utils.ResolvePlaceholderString(c.UserConfig.OS.CopyToClipboardCmd, map[string]string{ "text": c.Cmd.Quote(str), @@ -277,7 +304,13 @@ func (c *OSCommand) CopyToClipboard(str string) error { } func (c *OSCommand) RemoveFile(path string) error { - c.LogCommand(fmt.Sprintf("Deleting path '%s'", path), false) + msg := utils.ResolvePlaceholderString( + c.Tr.Log.RemoveFile, + map[string]string{ + "path": path, + }, + ) + c.LogCommand(msg, false) return c.removeFileFn(path) } diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 696e4e717cf..4a2627cdc0d 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -421,10 +421,15 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action todo.TodoComma } self.c.LogAction("Update rebase TODO") - self.c.LogCommand( - fmt.Sprintf("Updating rebase action of commit %s to '%s'", commit.ShortSha(), action.String()), - false, + + msg := utils.ResolvePlaceholderString( + self.c.Tr.Log.HandleMidRebaseCommand, + map[string]string{ + "shortSha": commit.ShortSha(), + "action": action.String(), + }, ) + self.c.LogCommand(msg, false) if err := self.c.Git().Rebase.EditRebaseTodo(commit, action); err != nil { return false, self.c.Error(err) @@ -452,7 +457,14 @@ func (self *LocalCommitsController) moveDown(commit *models.Commit) error { // logging directly here because MoveTodoDown doesn't have enough information // to provide a useful log self.c.LogAction(self.c.Tr.Actions.MoveCommitDown) - self.c.LogCommand(fmt.Sprintf("Moving commit %s down", commit.ShortSha()), false) + + msg := utils.ResolvePlaceholderString( + self.c.Tr.Log.MovingCommitDown, + map[string]string{ + "shortSha": commit.ShortSha(), + }, + ) + self.c.LogCommand(msg, false) if err := self.c.Git().Rebase.MoveTodoDown(commit); err != nil { return self.c.Error(err) @@ -487,10 +499,13 @@ func (self *LocalCommitsController) moveUp(commit *models.Commit) error { // logging directly here because MoveTodoDown doesn't have enough information // to provide a useful log self.c.LogAction(self.c.Tr.Actions.MoveCommitUp) - self.c.LogCommand( - fmt.Sprintf("Moving commit %s up", commit.ShortSha()), - false, + msg := utils.ResolvePlaceholderString( + self.c.Tr.Log.MovingCommitUp, + map[string]string{ + "shortSha": commit.ShortSha(), + }, ) + self.c.LogCommand(msg, false) if err := self.c.Git().Rebase.MoveTodoUp(self.c.Model().Commits[index]); err != nil { return self.c.Error(err) diff --git a/pkg/gui/controllers/merge_conflicts_controller.go b/pkg/gui/controllers/merge_conflicts_controller.go index c90ada92e3b..86f49489c98 100644 --- a/pkg/gui/controllers/merge_conflicts_controller.go +++ b/pkg/gui/controllers/merge_conflicts_controller.go @@ -215,7 +215,7 @@ func (self *MergeConflictsController) HandleUndo() error { } self.c.LogAction("Restoring file to previous state") - self.c.LogCommand("Undoing last conflict resolution", false) + self.c.LogCommand(self.c.Tr.Log.HandleUndo, false) if err := os.WriteFile(state.GetPath(), []byte(state.GetContent()), 0o644); err != nil { return err } diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 84f881c5da7..6dee0046766 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -587,6 +587,7 @@ type TranslationSet struct { MarkedCommitMarker string Actions Actions Bisect Bisect + Log Log } type Bisect struct { @@ -609,6 +610,23 @@ type Bisect struct { Bisecting string } +type Log struct { + EditRebase string + MoveCommitUp string + MoveCommitDown string + CherryPickCommits string + HandleUndo string + HandleMidRebaseCommand string + MovingCommitUp string + MovingCommitDown string + RemoveFile string + CopyToClipboard string + Remove string + CreateFileWithContent string + AppendingLineToFile string + EditRebaseFromBaseCommit string +} + type Actions struct { CheckoutCommit string CheckoutTag string @@ -1456,5 +1474,21 @@ func EnglishTranslationSet() TranslationSet { CompletePromptIndeterminate: "Bisect complete! Some commits were skipped, so any of the following commits may have introduced the change:\n\n%s\n\nDo you want to reset 'git bisect' now?", Bisecting: "Bisecting", }, + Log: Log{ + EditRebase: "Beginning interactive rebase at '{{.ref}}'", + MoveCommitUp: "Moving TODO down: '{{.shortSha}}'", + MoveCommitDown: "Moving TODO down: '{{.shortSha}}'", + CherryPickCommits: "Cherry-picking commits:\n'{{.commitLines}}'", + HandleUndo: "Undoing last conflict resolution", + HandleMidRebaseCommand: "Updating rebase action of commit {{.shortSha}} to '{{.action}}'", + MovingCommitUp: "Moving commit {{.shortSha}} up", + MovingCommitDown: "Moving commit {{.shortSha}} down", + RemoveFile: "Deleting path '{{.path}}'", + CopyToClipboard: "Copying '{{.str}}' to clipboard", + Remove: "Removing '{{.filename}}'", + CreateFileWithContent: "Creating file '{{.path}}'", + AppendingLineToFile: "Appending '{{.line}}' to file '{{.filename}}'", + EditRebaseFromBaseCommit: "Beginning interactive rebase from '{{.baseCommit}}' onto '{{.targetBranchName}}", + }, } }