mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 15:51:00 +00:00
2b86d1fda7
About 2900 strings still carried the `// en-fallback` placeholder and some 3100 more were unmarked English copies, most of them from the Studio, the assistant, OAuth and the date picker. Every one of them is translated now; where the English word is the locale's own one (German "Status", "Backup"), it is kept and marked `// same-as-en`. Placeholders, markup and product names are unchanged. "Studio", the photo book editor's name, joins Atlas and Vacay on the untranslated check's list of names. The baseline drops from 2900 marked and 3100 identical strings to 1 and 158.
143 lines
8.8 KiB
TypeScript
143 lines
8.8 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const storage: TranslationStrings = {
|
|
'storage.field.root': 'Diretório raiz',
|
|
'storage.help.root': 'Caminho absoluto no servidor onde este backend armazena seus objetos.',
|
|
'storage.field.endpoint': 'URL do endpoint',
|
|
'storage.help.endpoint':
|
|
'URL base do serviço compatível com S3, ex.: https://s3.example.com ou http://127.0.0.1:9000.',
|
|
'storage.field.bucket': 'Bucket', // same-as-en
|
|
'storage.field.accessKeyId': 'ID da chave de acesso',
|
|
'storage.field.secretAccessKey': 'Chave de acesso secreta',
|
|
'storage.field.region': 'Região',
|
|
'storage.help.region': 'Mantenha o padrão, a menos que seu provedor exija uma região específica.',
|
|
'storage.field.keyPrefix': 'Prefixo de chave',
|
|
'storage.help.keyPrefix': 'Prefixo opcional adicionado a cada chave de objeto, ex.: trek/prod.',
|
|
'storage.field.retries': 'Tentativas',
|
|
'storage.field.timeoutMs': 'Tempo limite (ms)',
|
|
'storage.field.primary': 'Backend primário',
|
|
'storage.field.replicas': 'Réplicas',
|
|
'storage.title': 'Armazenamento',
|
|
'storage.description': 'Onde o TREK guarda arquivos, fotos e backups enviados. Nada muda até você salvar.',
|
|
'storage.loading': 'Carregando…',
|
|
'storage.saved': 'Configuração de armazenamento salva',
|
|
'storage.save': 'Salvar alterações',
|
|
'storage.unsaved': 'Alterações não salvas',
|
|
'storage.saveConflict':
|
|
'A configuração de armazenamento mudou desde que foi carregada, por isso suas alterações não foram salvas. Descarte-as e recarregue a configuração salva para recomeçar.',
|
|
'storage.discardAndReload': 'Descartar minhas alterações e recarregar',
|
|
'storage.configError.banner':
|
|
'Falha ao carregar as configurações de armazenamento salvas — salvar irá substituí-las: {error}',
|
|
'storage.backends.title': 'Backends', // same-as-en
|
|
'storage.backends.add': 'Adicionar backend',
|
|
'storage.backends.usedBy': 'Usado por: {categories}',
|
|
'storage.backends.unused': 'Não atribuído a nenhuma categoria',
|
|
'storage.backends.envReadOnly': 'Definido por uma variável de ambiente (somente leitura)',
|
|
'storage.source.built-in': 'Integrado',
|
|
'storage.source.env': 'Ambiente',
|
|
'storage.source.settings': 'Configurações',
|
|
'storage.type.local': 'Local', // same-as-en
|
|
'storage.type.s3': 'S3',
|
|
'storage.type.mirror': 'Espelho',
|
|
'storage.actions.test': 'Testar',
|
|
'storage.actions.edit': 'Editar',
|
|
'storage.actions.remove': 'Remover',
|
|
'storage.test.running': 'Testando…',
|
|
'storage.test.ok': 'Conexão OK',
|
|
'storage.test.failed': 'Teste falhou',
|
|
'storage.remove.title': 'Remover backend',
|
|
'storage.remove.body': 'Remover {name} da configuração? O servidor rejeita o salvamento se algo ainda depender dele.',
|
|
'storage.remove.stillAssigned': 'Ainda atribuído a: {categories}',
|
|
'storage.form.addTitle': 'Adicionar backend',
|
|
'storage.form.editTitle': 'Editar backend',
|
|
'storage.form.name': 'Nome',
|
|
'storage.form.type': 'Tipo',
|
|
'storage.form.apply': 'Aplicar',
|
|
'storage.form.cancel': 'Cancelar',
|
|
'storage.form.duplicateName': 'Já existe um backend chamado {name}',
|
|
'storage.categories.title': 'Categorias',
|
|
'storage.categories.default': 'padrão',
|
|
'storage.categories.reassignWarning':
|
|
'Objetos existentes não são movidos: novos objetos vão para o backend recém-atribuído, os antigos permanecem onde estão.',
|
|
'storage.category.files': 'Documentos da viagem',
|
|
'storage.category.journey': 'Fotos da jornada',
|
|
'storage.category.covers': 'Imagens de capa',
|
|
'storage.category.avatars': 'Fotos de perfil',
|
|
'storage.category.places': 'Imagens de locais',
|
|
'storage.category.photos-google': 'Cache de fotos do Google',
|
|
'storage.category.photos-trek': 'Cache de fotos do TREK',
|
|
'storage.category.backups': 'Backups', // same-as-en
|
|
|
|
// What each category stores — rendered under the label in the category map.
|
|
'storage.categoryDesc.files':
|
|
'Anexos enviados para viagens — passagens, PDFs, confirmações de reserva e arquivos compartilhados no chat da viagem.',
|
|
'storage.categoryDesc.journey': 'Fotos e miniaturas anexadas às entradas da jornada.',
|
|
'storage.categoryDesc.covers': 'Imagens de capa de viagens e coleções, incluindo capas obtidas do Unsplash.',
|
|
'storage.categoryDesc.avatars': 'Fotos de perfil das contas de usuário.',
|
|
'storage.categoryDesc.places': 'Imagens anexadas a locais e locais de coleções — enviadas ou importadas.',
|
|
'storage.categoryDesc.photos-google':
|
|
'Cópias em cache de fotos do Google Places — podem ser buscadas novamente, seguro perdê-las.',
|
|
'storage.categoryDesc.photos-trek':
|
|
'Fotos em cache do serviço de fotos do TREK usado pelas Fotos (Memórias) — podem ser buscadas novamente, seguro perdê-las.',
|
|
'storage.categoryDesc.backups': 'Arquivos de backup do servidor criados pelo painel de Backup ou pela agenda.',
|
|
'storage.health.title': 'Integridade',
|
|
'storage.health.allClear': 'Nenhuma falha de réplica registrada.',
|
|
'storage.health.seedFile':
|
|
'Um arquivo semente storage-config.json está presente, mas é ignorado — já existem linhas de configuração. Gerencie o armazenamento aqui.',
|
|
'storage.health.failureLine': '{op} de {key} em {backend} falhou: {error}',
|
|
|
|
// Replicas-on-primary mirror UX (2026-08-20 spec)
|
|
'storage.mirror.targets': 'Destinos do espelho',
|
|
'storage.mirror.targetsHelp': 'Cada gravação neste backend também é copiada para cada destino selecionado.',
|
|
'storage.mirror.latencyNote':
|
|
'As réplicas são gravadas uma após a outra durante cada envio — um destino lento ou inacessível torna mais lento todo envio de toda categoria neste backend.',
|
|
'storage.mirror.mirroredTo': 'Espelhado para: {targets}',
|
|
'storage.mirror.replicaOf': 'Réplica de: {primaries}',
|
|
'storage.mirror.cacheWarning':
|
|
'Não recomendado: esta categoria contém conteúdo que pode ser buscado novamente — replicá-lo geralmente é um desperdício.',
|
|
'storage.mirror.degenerate.duplicate-mirror':
|
|
'Um segundo espelho envolve {primary} — o painel gerencia apenas o primeiro; remova este para gerenciar o espelhamento a partir de {primary}.',
|
|
'storage.mirror.degenerate.env-primary': 'Envolve um backend definido por variável de ambiente — não editável aqui.',
|
|
'storage.mirror.degenerate.missing-primary': 'Referencia um backend que não existe mais.',
|
|
'storage.remove.usedAsReplicaBy': 'Usado como réplica por: {primaries}',
|
|
|
|
// Backfill + usage (backfill/stats/notifications spec)
|
|
'storage.sync.now': 'Sincronizar agora',
|
|
'storage.sync.running': 'Sincronizando… {done}/{total}',
|
|
'storage.sync.counts': '{copied} copiados · {skipped} ignorados · {failed} falharam',
|
|
'storage.sync.cancel': 'Cancelar sincronização',
|
|
'storage.sync.done': 'Sincronização concluída: {copied} copiados, {deleted} excluídos, {failed} falharam',
|
|
'storage.sync.cancelled': 'Sincronização cancelada',
|
|
'storage.sync.error': 'Falha na sincronização: {error}',
|
|
'storage.sync.prompt': 'Os objetos existentes ainda não foram replicados — sincronizar agora?',
|
|
'storage.sync.dismiss': 'Dispensar',
|
|
'storage.usage.line': '{count} objetos · {size}',
|
|
'storage.usage.line.one': '{count} objeto · {size}',
|
|
'storage.usage.computed': 'Uso calculado {age}',
|
|
'storage.usage.never': 'Uso ainda não calculado',
|
|
'storage.usage.refresh': 'Atualizar',
|
|
'storage.usage.compute': 'Calcular agora',
|
|
'storage.usage.legacyNote': 'inclui a biblioteca de fotos legada',
|
|
|
|
// Category migration (copy → flip → delta sweep)
|
|
'storage.migrate.promptTitle': 'Mover objetos existentes para o novo backend?',
|
|
'storage.migrate.promptLine': '{category}: {count} objetos ({size}) de {from} para {to}',
|
|
'storage.migrate.promptLine.one': '{category}: {count} objeto ({size}) de {from} para {to}',
|
|
'storage.migrate.promptLineUnknown': '{category}: tamanho desconhecido (uso ainda não calculado) de {from} para {to}',
|
|
'storage.migrate.move': 'Mover objetos existentes',
|
|
'storage.migrate.routeOnly': 'Apenas rotear novas gravações',
|
|
'storage.migrate.running': 'Movendo {category}… {done}/{total}',
|
|
'storage.migrate.done': 'Movimentação concluída: {copied} copiados, {skipped} ignorados',
|
|
'storage.migrate.doneFailures': '{failed} falharam — esses objetos não foram copiados para o novo backend',
|
|
'storage.migrate.failed': 'Falha ao mover: {error} — a categoria não foi alterada',
|
|
'storage.migrate.cancelled': 'Movimentação cancelada — nada foi alterado',
|
|
'storage.migrate.reclaimable': '{count} objetos ({size}) permanecem em {from}, recupere manualmente',
|
|
'storage.migrate.reclaimable.one': '{count} objeto ({size}) permanece em {from}, recupere manualmente',
|
|
'storage.migrate.cancel': 'Cancelar movimentação',
|
|
'storage.migrate.promptCancel': 'Cancelar',
|
|
'storage.migrate.queued': 'Na fila: {categories}',
|
|
'storage.migrate.queueDropped':
|
|
'Não foi possível iniciar a próxima migração — a fila restante foi limpa: {categories}',
|
|
};
|
|
export default storage;
|