Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ cmd/

```bash
# Клонировать репозиторий
$ git clone https://github.com/yourusername/file-manager.git
$ git clone https://github.com/nps-rf/file-manager.git
$ cd file-manager

# Запустить приложение
Expand Down
30 changes: 15 additions & 15 deletions internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ func (a *App) cmdListDir(_ []string) error {

func (a *App) cmdChangeDir(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
return a.navigator.ChangeDirectory(args[0])
}
Expand All @@ -386,7 +386,7 @@ func (a *App) cmdPrintWorkingDir(_ []string) error {

func (a *App) cmdMakeDir(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -398,7 +398,7 @@ func (a *App) cmdMakeDir(args []string) error {

func (a *App) cmdCreateFile(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -410,7 +410,7 @@ func (a *App) cmdCreateFile(args []string) error {

func (a *App) cmdRemoveFile(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -422,7 +422,7 @@ func (a *App) cmdRemoveFile(args []string) error {

func (a *App) cmdRemoveDir(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -434,7 +434,7 @@ func (a *App) cmdRemoveDir(args []string) error {

func (a *App) cmdCopy(args []string) error {
if len(args) != 2 {
return fmt.Errorf("ожидается 2 аргумента, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_2"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -457,7 +457,7 @@ func (a *App) cmdCopy(args []string) error {

func (a *App) cmdMove(args []string) error {
if len(args) != 2 {
return fmt.Errorf("ожидается 2 аргумента, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_2"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -471,7 +471,7 @@ func (a *App) cmdMove(args []string) error {

func (a *App) cmdFindByName(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -487,7 +487,7 @@ func (a *App) cmdFindByName(args []string) error {

func (a *App) cmdFindByContent(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -503,7 +503,7 @@ func (a *App) cmdFindByContent(args []string) error {

func (a *App) cmdFileInfo(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand All @@ -527,7 +527,7 @@ func (a *App) cmdExit(_ []string) error {

func (a *App) cmdViewFile(args []string) error {
if len(args) < 1 || len(args) > 3 {
return fmt.Errorf("ожидается от 1 до 3 аргументов, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_1_to_3"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand Down Expand Up @@ -562,7 +562,7 @@ func (a *App) cmdViewFile(args []string) error {

func (a *App) cmdChangePermissions(args []string) error {
if len(args) != 2 {
return fmt.Errorf("ожидается 2 аргумента, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_2"), len(args))
}
mode := args[0]
dir, err := a.navigator.GetCurrentDirectory()
Expand All @@ -575,7 +575,7 @@ func (a *App) cmdChangePermissions(args []string) error {

func (a *App) cmdCreateArchive(args []string) error {
if len(args) < 3 {
return fmt.Errorf("ожидается минимум 3 аргумента, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_min_3"), len(args))
}
archiveName := args[0]
format := args[1]
Expand All @@ -593,7 +593,7 @@ func (a *App) cmdCreateArchive(args []string) error {

func (a *App) cmdExtractArchive(args []string) error {
if len(args) != 2 {
return fmt.Errorf("ожидается 2 аргумента, получено %d", len(args))
return fmt.Errorf(i18n.T("args_expected_2"), len(args))
}
dir, err := a.navigator.GetCurrentDirectory()
if err != nil {
Expand Down Expand Up @@ -822,7 +822,7 @@ func (a *App) cmdTrashList(_ []string) error {

func (a *App) cmdRestoreFromTrash(args []string) error {
if len(args) != 1 {
return fmt.Errorf("ожидается 1 аргумент — имя файла в корзине")
return fmt.Errorf(i18n.T("args_expected_1"), len(args))
}
err := a.fileOperator.SoftDeleter.RestoreFromTrash(args[0])
if err != nil {
Expand Down
42 changes: 20 additions & 22 deletions internal/display/display.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"strings"
"time"

"file-manager/internal/i18n"

"gopkg.in/djherbis/times.v1"
)

Expand Down Expand Up @@ -39,7 +41,7 @@ func NewDisplay() *Display {
func (d *Display) GetFileInfo(path string) (*FileInfo, error) {
info, err := os.Stat(path)
if err != nil {
return nil, fmt.Errorf("не удалось получить информацию о %s: %w", path, err)
return nil, fmt.Errorf(i18n.T("display_stat_error"), path, err)
}

// Проверяем, является ли файл исполняемым
Expand Down Expand Up @@ -76,33 +78,30 @@ func (d *Display) GetFileInfo(path string) (*FileInfo, error) {
func (d *Display) FormatFileInfo(fileInfo *FileInfo) string {
var sb strings.Builder

// Определяем тип файла
fileType := "Файл"
fileType := i18n.T("file")
if fileInfo.IsDir {
fileType = "Директория"
fileType = i18n.T("directory")
}

// Добавляем заголовок с подходящим цветом
if d.UseColors {
_, _ = HeaderColor.Fprintf(&sb, "Информация о файле: %s\n", fileInfo.Name)
_, _ = HeaderColor.Fprintf(&sb, i18n.T("file_info")+"\n", fileInfo.Name)
} else {
sb.WriteString(fmt.Sprintf("Информация о файле: %s\n", fileInfo.Name))
sb.WriteString(fmt.Sprintf(i18n.T("file_info")+"\n", fileInfo.Name))
}

sb.WriteString(fmt.Sprintf("Путь: %s\n", fileInfo.Path))
sb.WriteString(fmt.Sprintf("Тип: %s\n", fileType))
sb.WriteString(fmt.Sprintf(i18n.T("path")+": %s\n", fileInfo.Path))
sb.WriteString(fmt.Sprintf(i18n.T("type")+": %s\n", fileType))

// Размер (только для файлов)
if !fileInfo.IsDir {
sb.WriteString(fmt.Sprintf("Размер: %s\n", formatSize(fileInfo.Size)))
sb.WriteString(fmt.Sprintf(i18n.T("size")+"\n", formatSize(fileInfo.Size)))
}

sb.WriteString(fmt.Sprintf("Разрешения: %s\n", fileInfo.Mode.String()))
sb.WriteString(fmt.Sprintf("Последнее изменение: %s\n", fileInfo.LastModified.Format("02.01.2006 15:04:05")))
sb.WriteString(fmt.Sprintf("Дата создания: %s\n", fileInfo.CreatedAt.Format("02.01.2006 15:04:05")))
sb.WriteString(fmt.Sprintf(i18n.T("permissions")+"\n", fileInfo.Mode.String()))
sb.WriteString(fmt.Sprintf(i18n.T("last_modified")+"\n", fileInfo.LastModified.Format("02.01.2006 15:04:05")))
sb.WriteString(fmt.Sprintf(i18n.T("created_at")+"\n", fileInfo.CreatedAt.Format("02.01.2006 15:04:05")))

if fileInfo.IsExecutable {
sb.WriteString("Исполняемый: Да\n")
sb.WriteString(i18n.T("executable") + "\n")
}

return sb.String()
Expand All @@ -114,14 +113,14 @@ func (d *Display) FormatDirEntry(entry os.DirEntry, basePath string) (string, er

info, err := entry.Info()
if err != nil {
return "", fmt.Errorf("не удалось получить информацию о %s: %w", fullPath, err)
return "", fmt.Errorf(i18n.T("display_stat_error"), fullPath, err)
}

var prefix string
if entry.IsDir() {
prefix = "DIR "
prefix = i18n.T("dir_prefix")
} else {
prefix = "FILE "
prefix = i18n.T("file_prefix")
}

size := ""
Expand All @@ -137,7 +136,6 @@ func (d *Display) FormatDirEntry(entry os.DirEntry, basePath string) (string, er
size,
info.ModTime().Format("02.01.2006 15:04:05"))

// Применяем цвета если они включены
if d.UseColors {
color := GetColorByFileType(entry.Name(), entry.IsDir(), isExec)
return color.Sprint(result), nil
Expand All @@ -151,12 +149,12 @@ func (d *Display) FormatSearchResults(results []string, query string) string {
var sb strings.Builder

if d.UseColors {
_, _ = HeaderColor.Fprintf(&sb, "Результаты поиска для: %s\n", query)
_, _ = HeaderColor.Fprintf(&sb, i18n.T("search_results")+"\n", query)
} else {
sb.WriteString(fmt.Sprintf("Результаты поиска для: %s\n", query))
sb.WriteString(fmt.Sprintf(i18n.T("search_results")+"\n", query))
}

sb.WriteString(fmt.Sprintf("Найдено элементов: %d\n\n", len(results)))
sb.WriteString(fmt.Sprintf(i18n.T("found_items")+"\n\n", len(results)))

for i, result := range results {
if d.UseColors {
Expand Down
Loading
Loading