fix(files): close preview on navigation/delete/rename + backfill i18n (#150)

* i18n: backfill files/download translations for de, es, fr, ja, ko, pt

Add nav.files, files.* (39 keys), and download.* (9 keys) so the file
browser UI is fully localized in these six locales instead of falling
back to English.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(files): close preview when navigating or affected file changes

Opening a preview and then navigating directories, deleting the
previewed file, or renaming it left the preview pane stuck on stale
content because previewFile was never cleared.

- stores/hermes/files.ts:
  - fetchEntries clears previewFile on path change (in-place refresh
    keeps the preview).
  - deleteEntry / renameEntry clear preview/editor state when the
    affected entry matches the previewed/edited file or its parent.
  - Add isAffected(target, changed, isDir) helper.
- components/hermes/files/FilePreview.vue: replace the misleading
  common.cancel close button with a dedicated files.closePreview key
  plus an X icon and quaternary style.
- i18n: add files.closePreview to all 8 locales.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
ww
2026-04-23 14:10:14 +08:00
committed by GitHub
parent 93719fb04b
commit a4bfd8edd3
10 changed files with 427 additions and 39 deletions
+64 -6
View File
@@ -75,6 +75,7 @@ export default {
usage: 'Uso',
channels: 'Canais',
terminal: 'Terminal',
files: 'Arquivos',
settings: 'Configuracoes',
connected: 'Conectado',
disconnected: 'Desconectado',
@@ -84,7 +85,6 @@ export default {
updateSuccess: 'Atualizacao concluida, por favor reinicie o servidor',
updateFailed: 'Falha na atualizacao',
logout: 'Sair',
nodeVersionWarning: 'Node.js v{version} detectado. A versao 23+ e necessaria para todas as funcionalidades (SQLite, node-pty).',
changelog: 'Registro de alteracoes',
noChangelog: 'Nenhum registro disponivel',
},
@@ -511,11 +511,6 @@ export default {
// Registro de alteracoes
changelog: {
new_0_4_4_1: 'Adicionar navegador de arquivos com suporte multi-backend (local/Docker/SSH/Singularity)',
new_0_4_4_2: 'Adicionar download de arquivos dos anexos de chat',
new_0_4_4_3: 'Adicionar indicador ao vivo nas sessoes de chat ativas',
new_0_4_4_4: 'Adicionar suporte para provedores StepFun e Nous Portal',
new_0_4_4_5: 'Corrigir erro 500 ao pesquisar com caracteres especiais',
new_0_4_3_1: 'Adicionar login por usuario/senha junto com autenticacao por token',
new_0_4_3_2: 'Adicionar configuracoes de conta para gerenciar credenciais',
new_0_4_3_3: 'Adicionar botao de sair na barra lateral',
@@ -527,4 +522,67 @@ export default {
new_0_4_2_5: 'Corrigir deteccao de provedores integrados e combinacao de modelos',
new_0_4_1_1: 'Corrigir bypass de autenticacao e servico de arquivos SPA',
},
// Arquivos
files: {
title: 'Arquivos',
tree: 'Arvore de diretorios',
list: 'Lista de arquivos',
breadcrumbRoot: 'Inicio',
newFile: 'Novo arquivo',
newFolder: 'Nova pasta',
upload: 'Enviar',
refresh: 'Atualizar',
open: 'Abrir',
edit: 'Editar',
preview: 'Visualizar',
download: 'Baixar',
copyPath: 'Copiar caminho',
rename: 'Renomear',
delete: 'Excluir',
name: 'Nome',
size: 'Tamanho',
modified: 'Modificado',
actions: 'Acoes',
emptyDir: 'Diretorio vazio',
loading: 'Carregando...',
confirmDelete: 'Tem certeza de que deseja excluir "{name}"?',
confirmDeleteDir: 'Tem certeza de que deseja excluir o diretorio "{name}" e todo o seu conteudo?',
deleteFailed: 'Falha ao excluir',
deleted: 'Excluido',
renameTo: 'Renomear para',
newFileName: 'Nome do arquivo',
newFolderName: 'Nome da pasta',
created: 'Criado',
createFailed: 'Falha ao criar',
renamed: 'Renomeado',
renameFailed: 'Falha ao renomear',
uploadSuccess: '{count} arquivo(s) enviado(s)',
uploadFailed: 'Falha ao enviar',
saveFailed: 'Falha ao salvar',
saved: 'Salvo',
unsavedChanges: 'Voce tem alteracoes nao salvas. Descartar?',
pathCopied: 'Caminho copiado',
fileTooLarge: 'Arquivo muito grande (max 10MB)',
permissionDenied: 'Nao e possivel modificar arquivo protegido',
notFound: 'Arquivo ou diretorio nao encontrado',
backendError: 'Falha na operacao de arquivo',
dragDropHint: 'Arraste arquivos aqui para enviar',
closeEditor: 'Fechar editor',
closePreview: 'Fechar',
saveFile: 'Salvar',
},
// Download
download: {
downloading: 'Baixando...',
downloadFailed: 'Falha no download',
fileNotFound: 'Arquivo nao encontrado ou excluido',
fileTooLarge: 'Arquivo muito grande (limite excedido)',
backendError: 'Falha ao ler o arquivo, o ambiente remoto pode estar indisponivel',
backendTimeout: 'Tempo esgotado para ler o arquivo',
unsupportedBackend: 'O backend de terminal atual nao suporta download de arquivos',
invalidPath: 'Caminho de arquivo invalido',
download: 'Baixar',
},
}