diff --git a/apps/gui/ui/app.js b/apps/gui/ui/app.js index 78fcf13..4841141 100644 --- a/apps/gui/ui/app.js +++ b/apps/gui/ui/app.js @@ -752,6 +752,7 @@ $('#settingsBtn')?.addEventListener('click', () => { const patch = { lang: d.querySelector('[name=lang]').value, notify: d.querySelector('[name=notify]').checked, maps: d.querySelector('[name=maps]').checked }; saveSettings(patch); setLang(patch.lang); + EX?.relang?.(); toast('Salvo'); }; d.showModal(); diff --git a/apps/gui/ui/explorer.js b/apps/gui/ui/explorer.js index 4c1a78d..0b3a147 100644 --- a/apps/gui/ui/explorer.js +++ b/apps/gui/ui/explorer.js @@ -669,6 +669,8 @@ export function createExplorer(deps) { }, query: () => toQuery(), destroy() { E.reloadToken++; stopPv?.(); stopLb?.(); host.innerHTML = ''; }, + /** Idioma trocado em Configurações: refaz o que foi montado em JS (datas, meses, rótulos). */ + relang() { paintCrumb(); paintChips(); paintNav(); paintActions(); paintInspector(); relayout(); }, focus() { scroll.focus({ preventScroll: true }); }, }; } diff --git a/apps/gui/ui/i18n-en.js b/apps/gui/ui/i18n-en.js index 95c52be..2559b06 100644 --- a/apps/gui/ui/i18n-en.js +++ b/apps/gui/ui/i18n-en.js @@ -448,4 +448,61 @@ export const EN = { 'diretório do ZIP não encontrado (arquivo possivelmente incompleto)': 'ZIP directory not found (file possibly incomplete)', 'visualizador indisponível': 'viewer unavailable', '© colaboradores do OpenStreetMap': '© OpenStreetMap contributors', + // explorador: textos que a interface divide em nós separados + 'selecionado': 'selected', + 'selecionados': 'selected', + 'selecionado (todos desta vista)': 'selected (all in this view)', + 'selecionados (todos desta vista)': 'selected (all in this view)', + 'Sessão: {n}': 'Session: {n}', + '🖼 Fotos': '🖼 Photos', + '📄 Documentos': '📄 Documents', + '🎞 Vídeos': '🎞 Videos', + '🎵 Áudio': '🎵 Audio', + '🗜 Compactados': '🗜 Archives', + '🗄 Bancos de dados': '🗄 Databases', + '📦 Outros': '📦 Other', + 'Imagem · {n}': 'Image · {n}', + 'Vídeo · {n}': 'Video · {n}', + 'Áudio · {n}': 'Audio · {n}', + 'Texto · {n}': 'Text · {n}', + 'Documento (texto extraído) · {n}': 'Document (extracted text) · {n}', + 'Conteúdo do arquivo compactado · {n}': 'Archive contents · {n}', + 'Banco de dados SQLite · {n}': 'SQLite database · {n}', + 'Dados brutos (hexadecimal) · {n}': 'Raw data (hexadecimal) · {n}', + // tipos e campos de metadados vindos do núcleo + 'Imagem JPEG': 'JPEG image', + 'Imagem PNG': 'PNG image', + 'Imagem GIF': 'GIF image', + 'Imagem BMP': 'BMP image', + 'Mídia MP4/MOV': 'MP4/MOV media', + 'Fabricante da câmera': 'Camera make', + 'Modelo da câmera': 'Camera model', + 'Data (EXIF)': 'Date (EXIF)', + 'Foto tirada em': 'Photo taken on', + 'Nº de série do corpo': 'Body serial number', + 'Proprietário da câmera': 'Camera owner', + 'Exposição': 'Exposure', + 'Distância focal': 'Focal length', + 'Data do GPS': 'GPS date', + 'Localização (GPS)': 'Location (GPS)', + 'Versão do PDF': 'PDF version', + 'Título': 'Title', + 'Criado com': 'Created with', + 'Páginas (aprox.)': 'Pages (approx.)', + 'Última modificação por': 'Last modified by', + 'Páginas': 'Pages', + 'Duração': 'Duration', + // saúde do disco e confiança vindas do núcleo + 'SSD (sem rotação)': 'SSD (no rotation)', + 'Cache de gravação': 'Write cache', + 'Segurança ATA': 'ATA security', + '{n} (máx. {n})': '{n} (max. {n})', + 'membro de RAID': 'RAID member', + 'sem rodapé/estrutura completa: pode estar truncado': 'no footer/complete structure: may be truncated', + 'vídeo sem índice (moov)': 'video without index (moov)', + // visualizador de SQLite + 'Nenhuma tabela encontrada no esquema. A primeira página pode estar danificada.': 'No table found in the schema. The first page may be damaged.', + 'Tabela virtual: o conteúdo não fica armazenado como linhas comuns.': 'Virtual table: the content is not stored as ordinary rows.', + 'Tabela WITHOUT ROWID: as linhas ficam numa árvore de índice, ainda não exibida.': 'WITHOUT ROWID table: the rows live in an index tree, not shown yet.', + 'Arquivo truncado: o cabeçalho indica {n} páginas, mas só há {n}. Parte dos dados pode estar faltando.': 'Truncated file: the header says {n} pages, but there are only {n}. Part of the data may be missing.', };