RSS Git Download  Clone
Raw Blame History 35kB 860 lines
const strings = {
  error: {
    server_error: "Erro do servidor, por favor tente novamente",
    aiPromptTooLong: "O prompt de AI é demasiado longo (máximo de 4096 caracteres)",
  },
  title: {
    donate: "Doar",
    donateTitle: "Apoie o P3X Redis UI",
    donateDescription: "O P3X Redis UI é um projeto gratuito e de código aberto. Os custos de manutenção da aplicação, funcionalidades de IA, imagens Docker, servidores e infraestrutura saem do bolso do programador. Se considera esta ferramenta útil, por favor considere apoiar o seu desenvolvimento contínuo com um donativo. Cada contribuição ajuda a manter o projeto vivo e em crescimento. Obrigado!",
    jsonRecursive: "A expandir todas as folhas",
    name: "P3X Redis UI",
    nameDonated: "P3X Redis UI+",
    main: "Pode escolher uma ligação Redis a partir do menu inferior esquerdo.",
    statistics: "Estatísticas",
    error: "Erro",
    connectingRedis: "A ligar ao Redis ...",
    socketioConnectError: "Erro Socket.IO",
    db: "DB",
    server: "Servidor",
    clients: "Clientes",
    memory: "Memória",
    persistence: "Persistência",
    stats: "Estatísticas",
    replication: "Replicação",
    cpu: "CPU",
    cluster: "Cluster",
    modules: "Módulos",
    errorstats: "Estatísticas de erros",
    commandstats: "Estatísticas de comandos",
    latencystats: "Estatísticas de latência",
    keysizes: "Tamanhos de chaves",
    threads: "Threads"
  },
  confirm: {
    dropIndex: "Tem a certeza de que deseja eliminar este índice?",
    uploadBuffer: "Tem a certeza de que quer carregar estes dados binários?",
    uploadBufferDone: "Os dados binários foram carregados",
    uploadBufferDoneAndSave: "Os dados binários foram carregados e guardados no servidor",
    title: "Confirmar",
    alert: "Alerta",
    info: "Informação",
    deleteListItem: "Tem a certeza de que quer eliminar este item da lista?",
    deleteHashKey: "Tem a certeza de que quer eliminar esta chave hash?",
    deleteStreamTimestamp: "Tem a certeza de que quer eliminar este carimbo temporal do stream?",
    deleteSetMember: "Tem a certeza de que quer eliminar este membro do conjunto?",
    deleteZSetMember: "Tem a certeza de que quer eliminar este membro do conjunto ordenado?",
    deleteConnection: "Confirmar",
    deleteConnectionText: "Tem a certeza de que quer eliminar esta ligação Redis?",
    deleteNode: "Tem a certeza de que quer eliminar este nó Redis?",
    delete: "Eliminar?",
    deleteAllKeys: opts => {
      return `Eliminar esta árvore e todas as suas chaves (${opts.key})?`;
    },
    deleteSearchKeys: opts => {
      return `Tem a certeza de que deseja eliminar todas as chaves correspondentes a "${opts.pattern}"? Encontradas ${opts.count} chaves.`;
    },
    socketioConnectError: "O Socket.IO não consegue ligar-se ao servidor. Pode recarregar e tentar resolver o erro de ligação; o cliente não sabe como resolvê-lo sozinho.",
    socketioAuthRequired: "É necessária autorização Socket.IO. Autentique-se com HTTP Basic Auth (nome de utilizador/palavra-passe) e recarregue.",
    invalidCredentials: "Nome de utilizador ou palavra-passe inválidos.",
    deleteKey: "Tem a certeza de que quer eliminar esta chave?",
    rename: {
      title: "Tem a certeza de que quer renomear esta chave?",
      textContent: "Esta ação renomeia a chave permanentemente.",
      placeholder: "A chave Redis (obrigatório)"
    },
    ttl: {
      title: "Tem a certeza de que quer alterar o TTL desta chave?",
      textContent: "Alterar o TTL atualiza o tempo de vida desta chave. Deixe vazio para manter a chave para sempre.",
      placeholder: "O TTL da chave Redis (inteiro ou vazio)",
      placeholderPlaceholder: "Vazio significa que persiste para sempre; caso contrário, introduza um número inteiro.",
      convertTextToTime: "Converter texto em tempo",
      convertTextToTimePlaceholder: "Ex.: 1d será 86400"
    }
  },
  language: {
    bg: "Български / Bulgarian",
    cs: "Čeština / Czech",
    de: "Deutsch / German",
    el: "Ελληνικά / Greek",
    en: "English",
    es: "Español / Spanish",
    fr: "Français / French",
    hu: "Magyar / Hungarian",
    it: "Italiano / Italian",
    ja: "日本語 / Japanese",
    nl: "Nederlands / Dutch",
    pl: "Polski / Polish",
    "pt-PT": "Português / Portuguese",
    ro: "Română / Romanian",
    ru: "Русский / Russian",
    sk: "Slovenčina / Slovak",
    sr: "Српски / Serbian",
    sv: "Svenska / Swedish",
    tr: "Türkçe / Turkish",
    uk: "Українська / Ukrainian",
    zn: "中文 / Chinese",
    ar: "العربية / Arabic",
    az: "Azərbaycanca / Azerbaijani",
    be: "Беларуская / Belarusian",
    bn: "বাংলা / Bengali",
    da: "Dansk / Danish",
    et: "Eesti / Estonian",
    fi: "Suomi / Finnish",
    fil: "Filipino / Filipino",
    he: "עברית / Hebrew",
    hr: "Hrvatski / Croatian",
    hy: "Հայերեն / Armenian",
    id: "Bahasa Indonesia / Indonesian",
    ka: "ქართული / Georgian",
    kk: "Қазақша / Kazakh",
    km: "ខ្មែរ / Khmer",
    ko: "한국어 / Korean",
    ky: "Кыргызча / Kyrgyz",
    lt: "Lietuvių / Lithuanian",
    mk: "Македонски / Macedonian",
    ms: "Bahasa Melayu / Malay",
    ne: "नेपाली / Nepali",
    no: "Norsk / Norwegian",
    "pt-BR": "Português (Brasil) / Portuguese (Brazil)",
    sl: "Slovenščina / Slovenian",
    tg: "Тоҷикӣ / Tajik",
    th: "ไทย / Thai",
    vi: "Tiếng Việt / Vietnamese",
    "zh-HK": "中文(香港) / Chinese (Hong Kong)",
    "zh-TW": "中文(台灣) / Chinese (Taiwan)",
    bs: 'Bosanski / Bosnian',
    si: 'සිංහල / Sinhala',
    sw: 'Kiswahili / Swahili',
    ta: 'தமிழ் / Tamil'
  },
  intention: {
    copy: "Copiar",
    downloadBuffer: "Descarregar binário",
    setBuffer: "Carregar binário",
    exportKeys: "Exportar chaves",
    exportAllKeys: (opts) => `Exportar todas as ${opts.count} chaves`,
    exportSearchResults: (opts) => `Exportar ${opts.count} resultados`,
    deleteAllKeysMenu: (opts) => `Eliminar tudo ${opts.count}`,
    importKeys: "Importar chaves",
    deleteSearchKeys: (opts) => `Eliminar ${opts.count} chaves correspondentes`,
    saveWithFormatJson: "Guardar com formatação",
    formatJson: "Formatar Json",
    wrap: "Quebrar linha",
    unwrap: "Não quebrar linha",
    downloadJson: "Descarregar JSON",
    pubsubMonitor: "PubSub",
    pulse: "Pulse",
    profiler: "Profiler",
    memoryAnalysis: "Analysis",
    // When you translate the language, keep the Language in English
    // eg. Idioma / Language
    language: "Idioma / Language",
    ok: "OK",
    addKey: "Adicionar a esta chave",
    addKeyRoot: "Adicionar uma chave raiz",
    reloadKey: "Recarregar chave",
    reload: "Recarregar",
    close: "Fechar",
    commands: "Comandos",
    view: "Vista",
    statistics: "Estatísticas",
    refresh: "Atualizar",
    pause: "Pausar",
    resume: "Retomar",
    clear: "Limpar",
    rename: "Renomear",
    main: "Base de dados",
    cancel: "Cancelar",
    theme: "Tema",
    github: "GitHub",
    githubRepo: "Repositório",
    githubRelease: "Versões",
    githubChangelog: "Registo de alterações",
    info: "Info",
    settings: "Definições",
    connect: "Ligar",
    disconnect: "Desligar",
    logout: "Sair",
    overview: "Visão geral",
    console: "Consola",
    noConnections: "Sem ligações, adicione uma ligação no menu de definições.",
    noConnectionsInSettings: "Sem ligações, pode adicionar uma NOVA LIGAÇÃO acima.",
    connectionAdd: "Nova ligação",
    addGroup: "Adicionar grupo",
    extend: "Expandir",
    collapse: "Recolher",
    add: "Adicionar",
    edit: "Editar",
    save: "Guardar",
    ttl: "Definir TTL",
    fieldTtl: "TTL do campo",
    digest: "Resumo",
    delete: "Eliminar",
    remove: "Remover",
    areYouSure: "Tem a certeza?",
    sure: "Sim",
    testConnection: "Testar ligação",
    getKey: "A carregar a chave Redis e dados associados ...",
    jsonViewShow: "Mostrar JSON",
    jsonViewEditor: "Editar JSON",
    quickConsole: "Consola Rápida",
    moveUp: "Mover para cima",
    moveDown: "Mover para baixo",
  },
  diff: {
    reviewChanges: "Rever altera\u00e7\u00f5es",
    inline: "Em linha",
    sideBySide: "Lado a lado",
    additions: "adi\u00e7\u00f5es",
    deletions: "remo\u00e7\u00f5es",
    unchangedLines: "linhas inalteradas",
    noChanges: "N\u00e3o foram detetadas altera\u00e7\u00f5es",
    before: "Antes",
    after: "Depois",
  },
  label: {
    id: {
      nodeId: 'ID do nó',
      id: "ID da ligação",
      info: "Se não pretende alterar as propriedades: sshPassword, sshPrivateKey, password, tlsCrt, tlsKey, tlsCa, introduza o ID da ligação nessas propriedades para manter os valores intactos. Se pretende a mesma lógica para a palavra-passe do nó, introduza o ID do nó na palavra-passe do nó."
    },
    secureFeature: 'Se vir um valor que começa com P3X e parece igual, é uma funcionalidade de segurança. Para alterar as definições, basta substituí-las por valores vazios ou por outra coisa e serão guardadas. Se não alterar as definições, estas mantêm-se como estão no servidor.',
    aiTranslating: "A traduzir...",
    aiSettings: "Definições de IA",
    aiGroqApiKey: "Chave API Groq",
    aiGroqApiKeyInfo: "Opcional. A sua própria chave API Groq para melhor desempenho. Obtenha uma chave gratuita em",
    aiGroqApiKeyPlaceholder: "gsk_...",
    aiGroqApiKeySaved: "Chave API IA guardada",
    aiGroqApiKeyInvalid: "Chave API Groq inválida",
    aiGroqApiKeyNotSet: "Não definido (predefinição do servidor)",
    aiEnabled: "IA ativada",
    aiEnabledYes: "Sim",
    aiEnabledNo: "Não",
    aiRouteViaNetwork: "Rota via network.corifeus.com",
    aiRoutingDirect: "As consultas vão diretamente para o Groq usando a sua própria chave API, sem passar pelo network.corifeus.com.",
    aiRoutingNetwork: "As consultas de IA são encaminhadas via network.corifeus.com. Se tiver a sua própria chave API Groq gratuita, pode desativar esta opção para encaminhar diretamente para o Groq sem network.corifeus.com.",
    aiMaxTokens: "Máximo de tokens de IA",
    aiMaxTokensInfo: "Número máximo de tokens para respostas de IA. Valores mais elevados permitem respostas mais longas, mas podem usar mais créditos de API.",
    ssh: {
      on: 'SSH ativado',
      off: 'SSH desativado',
      sshHost: 'Anfitrião SSH',
      sshPort: 'Porta SSH',
      sshUsername: 'Nome de utilizador SSH',
      sshPassword: 'Palavra-passe SSH',
      sshPrivateKey: 'Chave privada SSH'
    },
    isBuffer: opts => `[object ArrayBuffer] significa que o valor é dados binários ou o valor é maior que ${opts.maxValueAsBuffer}`,
    streamValue: `O campo e valor do stream estão numa única linha. Ex.: campo1 valor1 "campo 2" "valor 2"`,
    streamTimestampId: `'*' significa gerado automaticamente ou a especificação como <millisecondsTime>-<sequenceNumber>`,
    unableToLoadKey: ({
      key
    }) => {
      return `Não foi possível carregar esta chave: ${key}. É possível que a chave tenha sido eliminada. O erro exato está na consola.`;
    },
    bigJson: "Este objeto JSON tem mais de 10 kb, por isso certifique-se de que sabe o que está a fazer, pois algumas funções podem renderizar lentamente.",
    addNode: "Adicionar nó",
    validateJson: "Validar JSON",
    reducedFunction: `Funcionalidade reduzida`,
    tooManyKeys: opts => {
      return `Para a funcionalidade completa, o máximo de chaves permitido é ${opts.maxLightKeysCount}. Esta base de dados tem mais chaves do que o permitido, num total de ${opts.count}. A ordenação de chaves e a informação adicional da árvore estão desativadas. A pesquisa ocorre apenas no servidor em vez do cliente.`;
    },
    redisCommandNotFound: "Nenhum comando Redis correspondente encontrado ...",
    treeKeyStore: `A ordenação (comparação natural) é executada no cliente, ou seja, no navegador, o que significa que tem uma penalização para conjuntos grandes, como mais de 10k chaves; pode adicionar algum tempo à renderização da página. Não existe ordenação de chaves no Redis, apenas desta forma.`,
    socketIoTimeout: options => {
      return `O Socket.IO excedeu o tempo limite para este pedido (máx. ${options.timeout / 1000} segundos) ...`;
    },
    resizerInfo: options => {
      return `A largura mínima do painel esquerdo ou direito é ${options.width}px`;
    },
    jsonViewNotParsable: "Este valor não é analisável como JSON  ",
    ttlTitle: "Definir o TTL em segundos",
    passwordSecure: "A palavra-passe pode estar vazia, mas ainda assim mostrará caracteres; é uma funcionalidade de segurança.",
    aclAuthHint: "Utilize o nome de utilizador e a palavra-passe do Redis ACL para autenticar. Deixe em branco para o utilizador padrão sem palavra-passe.",
    tlsWithoutCert: "Ativar TLS sem certificado adicional",
    tlsRejectUnauthorized: "Rejeitar certificado não autorizado",
    tlsSecure: "Se vir uma configuração TLS que começa com P3X ou se todas as definições TLS parecem iguais, é uma funcionalidade de segurança. Para alterar as definições, substitua-as por valores vazios ou por outra coisa e serão guardadas. Se não alterar as definições TLS, estas mantêm-se como estão no servidor.",
    treeSeparatorEmpty: "Se o separador da árvore estiver vazio, a árvore não terá nós aninhados, apenas uma lista simples",
    treeSeparatorEmptyNote: "Sem nós aninhados, apenas uma lista simples",
    welcomeConsole: "Bem-vindo à Consola Redis",
    welcomeConsoleInfo: "Histórico com cursor CIMA ou BAIXO está ativado",
    redisListIndexInfo: "Vazio para acrescentar, -1 para inserir no início ou guardar na posição apresentada.",
    console: "Consola",
    connectiondAdd: "Adicionar ligação",
    connectiondEdit: "Editar ligação",
    connectiondView: "Ver ligação",
    connections: "Ligações",
    keysSort: {
      on: "Ordenação de chaves ativada",
      off: "Ordenação de chaves desativada"
    },
    cluster: {
      on: "Cluster ativado",
      off: "Cluster desativado"
    },
    sentinel: {
      on: "Sentinel ativado",
      off: "Sentinel desativado",
      name: "Nome do Sentinel"
    },
    readonly: {
      on: "Só de leitura ativado",
      off: "Só de leitura desativado"
    },
    theme: {
      light: "Claro",
      dark: "Escuro enterprise",
      darkNeu: "Escuro",
      darkoBluo: "Darko bluo",
      enterprise: "Enterprise",
      redis: "Redis",
      matrix: "Matrix"
    },
    connected: opts => {
      return `Ligado: ${opts.name}`;
    },
    tree: "Árvore",
    askAuth: "Pedir autorização",
    keyboardShortcuts: "Atalhos de teclado",
    about: "Sobre",
    supportedLanguages: "Idiomas suportados",
    version: "Versão",
    redisVersion: "Versão do Redis",
    modules: "Módulos",
    shortcutRefresh: "Atualizar",
    shortcutSearch: "Focar pesquisa",
    shortcutNewKey: "Nova chave",
    shortcutDisconnect: "Desligar",
    themeAuto: "Automático (sistema)",
    languageAuto: "Auto (system)",
    shortcutCommandPalette: "Paleta de comandos",
    commandPalette: "Paleta de comandos",
    noResults: "Sem resultados",
    redisCommandsReference: "Comandos Redis",
    ungrouped: "Sem grupo",
    grouped: "Agrupados",
    connectFirst: "Ligue-se primeiro a um servidor Redis",
    searchLanguage: "Pesquisar idioma...",
    exportProgress: "A exportar chaves...",
    importProgress: "A importar chaves...",
    importPreview: "Pré-visualização",
    importOverwrite: "Substituir",
    importSkip: "Ignorar",
    importConflict: "Se a chave já existir:",
    noKeysToExport: "Sem chaves para exportar",
    type: "Tipo",
    time: "Tempo",
    format: "Formato",
    loading: "A carregar...",
    autoRefresh: "Auto",
    exportSearchHint: "Exportando apenas chaves que correspondem à pesquisa atual",
    importSearchHint: "A importação aplica-se a toda a base de dados, não apenas aos resultados da pesquisa",
    deleteSearchHint: "Eliminar todas as chaves correspondentes à pesquisa atual",
    deletingSearchKeys: "A eliminar chaves correspondentes...",
    importNoKeys: "Nenhuma chave encontrada no ficheiro",
    desktopNotifications: "Notificações do ambiente de trabalho",
    desktopNotificationsEnabled: "Ativar notificações do ambiente de trabalho",
    desktopNotificationsInfo: "Receba notificações do SO para desconexões e reconexões do Redis quando a aplicação não estiver em foco."
  },
  status: {
    dataCopied: "Os dados estão na área de transferência",
    exportDone: "Exportação concluída",
    deletedSearchKeys: (opts) => `${opts.count} chaves eliminadas`,
    indexCreated: "Índice criado",
    indexDropped: "Índice eliminado",
    importDone: (opts) => `Importação concluída: ${opts.created} criados, ${opts.skipped} ignorados, ${opts.errors} erros`,
    nodeRemoved: "Nó removido",
    keyIsNotExisting: "Esta chave pode ter sido eliminada ou expirada.",
    keyCount: opts => {
      if (opts.keyCount === 0) {
        return "Sem chaves";
      } else if (opts.keyCount === 1) {
        return "1 chave";
      } else {
        return `${opts.keyCount} chaves`;
      }
    },
    treeExpandAll: "Expandir todas as folhas da árvore. Esta operação pode ser dispendiosa e demorar algum tempo ...",
    noRedisKeys: "Não existem chaves nesta base de dados.",
    redisConnected: "Ligação ao Redis estabelecida com sucesso",
    reverted: "Revertido",
    reloadingDataInfo: "A recarregar informações de dados Redis",
    added: "Adicionado",
    saved: "Atualizado",
    cancelled: "Cancelado",
    deleted: "Eliminado",
    savedRedis: "Os dados Redis foram guardados",
    redisDisconnected: opts => {
      return `A ligação atual teve um erro: ${opts.error.message}`;
    },
    dbChanged: opts => {
      return `O índice da base de dados foi definido para ${opts.db}. `;
    },
    treeDeleted: opts => {
      return `A chave da árvore foi eliminada (${opts.key}).`;
    },
    deletedKey: opts => {
      return `A chave foi eliminada (${opts.key}).`;
    },
    renamedKey: "Esta chave foi renomeada",
    ttlChanged: "O TTL desta chave foi alterado",
    notInteger: "Esta entrada não é um número inteiro",
    persisted: "Esta chave é persistida para sempre",
    set: "A chave foi definida/adicionada",
    connectionRestored: "Ligação restaurada",
    socketDisconnected: "Desligado",
    socketError: "Erro de ligação",
    deletedHashKey: "Chave hash eliminada",
    deletedSetMember: "Membro do conjunto eliminado",
    deletedListElement: "Elemento da lista eliminado",
    deletedZSetMember: "Membro do conjunto ordenado eliminado",
    deletedStreamTimestamp: "Entrada do stream eliminada",
  },
  code: {
    "delete-connection": "Esta ligação foi eliminada, por isso foi desligado desta instância Redis.",
    "save-connection": "Esta ligação foi alterada, por isso foi desligado desta instância Redis. Pode voltar a ligar-se.",
    "readonly-connections": "Adicionar/guardar/eliminar ligações é só de leitura!",
    "readonly-connection-mode": "Esta ligação é só de leitura!",
    "list-out-of-bounds": "O índice desta lista está fora dos limites",
    "invalid-json-value": "The value is not valid JSON.",
    "http_auth_required": "Autorização necessária: autentique-se com HTTP Basic Auth e recarregue.",
    "auto-connection-failed": "É possível que a ligação tenha sido removida e a ligação automática tenha falhado por esse motivo.",
    invalid_console_command: "Este comando não funciona através da GUI.",
    "AI_DISABLED": "IA está desativada. Ative nas definições de IA.",
    "AI_PROMPT_REQUIRED": "Consulta de IA é obrigatória.",
    "GROQ_API_KEY_READONLY": "A chave Groq API é apenas de leitura e não pode ser modificada.",
    "blocked_api_access": "O seu plano Groq API não permite acesso a este modelo. Atualize o seu plano Groq ou utilize o proxy network.corifeus.com.",
    "rate_limit": "Limite de taxa de IA atingido. Tente novamente mais tarde ou utilize a sua própria chave Groq API nas definições."
  },
  form: {
    error: {
      required: "Obrigatório",
      port: "A porta deve estar entre 1-65535",
      invalid: "O formulário é inválido"
    },
    connection: {
      label: {
        name: "Nome",
        group: "Grupo",
        host: "Nome do anfitrião",
        port: "Porta",
        password: "Palavra-passe",
        username: "Nome de utilizador"
      }
    },
    treeSettings: {
      maxValueDisplay: "Comprimento máximo de exibição do valor",
      maxValueDisplayInfo: "Se definido como 0, mostra valores completos. Se maior que 0, trunca para este comprimento. Se -1: para strings, oculta o valor até editar; para outros tipos, mostra o conteúdo completo.",
      maxKeys: "Número máximo de chaves",
      maxKeysInfo: "Para que a GUI não falhe, limitamos o número máximo de chaves.",
      keyCount: (opts) => {
        return `Número de chaves: ${opts?.keyCount ?? 0}`;
      },
      label: {
        animation: "Usar animação",
        noAnimation: "Sem animação",
        undoEnabled: "Desfazer ativado",
        undoDisabled: "Desfazer desativado",
        diffEnabled: "Mostrar diff antes de guardar",
        diffDisabled: "Diff antes de guardar desativado",
        jsonFormatTwoSpace: "Formatar JSON com 2 espaços",
        jsonFormatFourSpace: "Formatar JSON com 4 espaços",
        formName: "Definições Redis",
        searchModeClient: "Modo de pesquisa no cliente",
        searchModeServer: "Modo de pesquisa no servidor",
        searchModeStartsWith: "Pesquisa com modo começa com",
        searchModeIncludes: "Pesquisa com modo inclui"
      },
      undoHint: "Desfazer est\u00e1 dispon\u00edvel apenas para tipos de chave string e JSON",
      field: {
        treeSeparator: "Separador da árvore",
        treeSeparatorSelector: "Seletor do separador da árvore",
        page: "Contagem de páginas da árvore",
        keyPageCount: "Contagem de páginas de chaves",
        keysSort: "Ordenar as chaves",
        searchMode: "Modo de pesquisa",
        searchModeStartsWith: "Pesquisa começa com / inclui"
      },
      error: {
        keyPageCount: "A contagem de páginas de chaves deve ser um inteiro entre 5 - 100",
        page: "A contagem de páginas deve ser um inteiro entre 10 - 5000",
        maxValueDisplay: "O valor máximo de exibição deve ser um inteiro entre -1 e 32768",
        maxKeys: "O número máximo de chaves deve ser um inteiro entre 100 e 100000"
      }
    },
    key: {
      label: {
        formName: {
          add: "Adicionar nova chave Redis",
          edit: "Editar chave Redis",
          append: "Adicionar a chave Redis existente"
        }
      },
      field: {
        streamTimestamp: "Carimbo temporal",
        key: "Chave",
        type: "Tipo",
        index: "Índice",
        hashKey: "Chave hash",
        score: "Pontuação",
        value: "Valor",
        errorRate: "Taxa de erro",
        capacity: "Capacidade",
        topk: "Top K",
        width: "Largura",
        depth: "Profundidade",
        decay: "Decaimento",
        compression: "Compressão",
        increment: "Incremento",
        item: "Item",
        vectorValues: "Valores do vetor (separados por vírgula)",
        element: "Nome do elemento",
      },
      error: {
        streamTimestamp: "O carimbo temporal é obrigatório, em formato Redis ou como *",
        key: "A chave deve ter pelo menos um carácter",
        hashKey: "A chave da tabela hash deve ter pelo menos um carácter",
        score: "A pontuação do conjunto ordenado é obrigatória",
        value: "O valor é obrigatório",
        errorRate: "A taxa de erro deve estar entre 0 e 1 (ex. 0,01)",
        capacity: "A capacidade deve ser um inteiro positivo",
        topk: "Top K deve ser um inteiro positivo",
        width: "A largura deve ser um inteiro positivo",
        depth: "A profundidade deve ser um inteiro positivo",
        item: "O item é obrigatório"
      }
    },
    main: {
      label: {
        database: "DB"
      }
    }
  },
  page: {
    search: {
      title: "Pesquisar",
      index: "Índice",
      query: "Consulta",
      results: "Resultados",
      noIndex: "Nenhum índice encontrado",
      createIndex: "Criar índice",
      dropIndex: "Eliminar índice",
      indexInfo: "Info do índice",
      indexName: "Nome do índice",
      prefix: "Prefixo de chave (opcional)",
      fieldName: "Nome do campo",
      hybridMode: "Pesquisa híbrida (FT.HYBRID)",
      vectorField: "Campo vetorial",
      vectorValues: "Valores vetoriais",
    },
    monitor: {
      title: "Monitorização",
      memory: "Memória",
      opsPerSec: "Ops/seg",
      clients: "Clientes",
      blocked: "Bloqueados",
      hitsMisses: "Taxa de acerto",
      networkIo: "Rede I/O",
      slowLog: "Log lento",
      noSlowQueries: "Nenhuma consulta lenta registada.",
      confirmSlowLogReset: "Tem a certeza de que pretende repor o registo lento?",
      slowLogResetDone: "O registo lento foi reposto.",
      totalCommands: "Total",
      expired: "Expirados",
      evicted: "Despejados",
      clientList: "Lista de clientes",
      topKeys: "Maiores chaves por memória",
      killClient: "Encerrar cliente",
      clientKilled: "Cliente encerrado",
      confirmKillClient: "Tem a certeza de que deseja encerrar este cliente?",
      noKeys: "Sem chaves",
      rss: "RSS",
      peak: "Pico",
      fragmentation: "Fragmentação",
      hitsAndMisses: "Acertos / Erros",
      noClients: "Sem clientes",
      slotStats: "Estatísticas de slots do cluster",
      serverInfo: "Informações do servidor",
      os: "Sistema operativo",
      port: "Porta de rede",
      pid: "ID do processo",
      configFile: "Ficheiro de configuração",
      uptime: "Tempo de atividade",
      keyspace: "Espaço de chaves Redis",
      keys: "Chaves Redis",
      expires: "Expira",
      noKeyspace: "Sem chaves",
      persistence: "Persistência de dados",
      rdbLastSave: "Último salvamento do RDB",
      rdbStatus: "Estado do RDB",
      rdbChanges: "Alterações desde o último guardar",
      aofEnabled: "AOF ativado",
      aofSize: "Tamanho AOF",
      replication: "Replicação Redis",
      role: "Função de replicação",
      replicas: "Réplicas conectadas",
      masterHost: "Anfitrião Primário",
      linkStatus: "Estado do link de replicação",
      cpu: "Utilização da CPU",
      cpuSys: "Sistema",
      cpuUser: "Usuário",
      modules: "Módulos Redis carregados",
      noModules: "Nenhum módulo Redis carregado",
      clusterSlotMap: "Mapa de slots do cluster Redis",
      slotRange: "Intervalo de slots de cluster",
      totalSlots: "Total de slots de cluster",
      noClusterData: "Sem dados de cluster Redis disponíveis.",
    },
    analysis: {
      title: "Análise de Memória",
      runAnalysis: "Executar Análise",
      running: "A analisar...",
      typeDistribution: "Distribuição de Tipos",
      prefixMemory: "Memória por Prefixo",
      topKeysByMemory: "Maiores Chaves por Memória",
      expirationOverview: "Expiração de Chaves",
      memoryBreakdown: "Discriminação de Memória",
      keysScanned: "Chaves Analisadas",
      totalMemory: "Memória Total",
      rssMemory: "Memória RSS",
      peakMemory: "Memória de Pico",
      luaMemory: "Memória Lua",
      overheadMemory: "Sobrecarga",
      datasetMemory: "Conjunto de Dados",
      fragmentation: "Fragmentação",
      allocator: "Alocador",
      withTTL: "Com TTL",
      persistent: "Persistentes",
      avgTTL: "TTL Médio",
      prefix: "Prefixo",
      keyCount: "Contagem de Chaves",
      memoryUsage: "Utilização de Memória",
      noPrefix: "(sem prefixo)",
      topN: "Top N",
      maxScanKeys: "Máx. Chaves Analisadas",
      type: "Tipo",
      noData: "Sem dados. Clique em Executar Análise para começar.",
      exportAll: "Exportar Tudo",
      memoryDoctor: "Memory Doctor",
      doctorNoData: "Clique em Atualizar para executar o diagnóstico Memory Doctor.",
    },
    acl: {
      title: "Utilizadores ACL",
      loadUsers: "Carregar utilizadores",
      loading: "A carregar...",
      username: "Nome de utilizador",
      status: "Estado",
      enabled: "Habilitado",
      disabled: "Desativado",
      commands: "Comandos",
      commandsHint: "por exemplo, +@all or +@read -@dangerous",
      keys: "Padrões de chaves Redis",
      keysHint: "por exemplo, ~* or ~user:*",
      channels: "Canais Pub/Sub",
      channelsHint: "por exemplo, &* or &notifications:*",
      password: "Palavra-passe",
      noPassword: "Sem password (nopass)",
      passwordHint: "Deixe em branco para manter a palavra-passe atual",
      currentUser: "Atual",
      createUser: "Criar utilizador",
      editUser: "Editar utilizador",
      deleteUser: "Eliminar",
      confirmDelete: "Tem a certeza de que pretende eliminar o utilizador ACL?",
      userDeleted: "O utilizador ACL foi eliminado.",
      userSaved: "O utilizador ACL foi guardado.",
      cannotDeleteDefault: "Não é possível eliminar o utilizador padrão.",
      cannotDeleteSelf: "Não é possível eliminar o utilizador atualmente ligado.",
      noUsers: "O ACL requer o Redis 6.0+.",
      groupCommon: "Geral",
      groupDataTypes: "Tipos de dados",
      groupOperations: "Operações",
      rules: "Regras",
      rulesHint: "Tokens separados por espaço (por exemplo on >password +@all ~* &*)",
      defaultUserWarning: "Atenção: Modificar o utilizador padrão pode bloquear todas as ligações. Se isto acontecer, terá de reiniciar o Redis ou utilizar o redis-cli para restaurar o acesso.",
    },
    overview: {
      noConnected: "Não existe ligação ao Redis.",
      overviewClients: "Listar os ligados pelo número de clientes",
      connectedCount: opt => {
        if (opt.length === 1) {
          return "1 cliente";
        }
        return `${opt.length} clientes`;
      }
    },
    key: {
      label: {
        key: "Chave",
        encoding: "Codificação",
        compression: "Compressão",
        aiRateLimited: "Limite de pedidos de IA atingido. Tente novamente mais tarde ou utilize a sua própria chave de API do Groq nas Definições.",
        aiError: "A consulta de IA falhou",
        length: "Tamanho",
        ttl: "TTL",
        ttlTitle: "Time To Live",
        type: "Tipo",
        ttlNotExpire: "não expira",
        lengthString: "bytes",
        lengthItem: "itens",
        actions: "Ações"
      },
      list: {
        table: {
          index: "Índice",
          value: "Valor"
        }
      },
      hash: {
        table: {
          hashkey: "Chave hash",
          value: "Valor"
        }
      },
      set: {
        table: {
          value: "Membro"
        }
      },
      zset: {
        table: {
          value: "Membro",
          score: "Pontuação"
        }
      },
      stream: {
        table: {
          timestamp: "ID do carimbo temporal",
          field: "Campo",
          value: "Valor"
        }
      },
      timeseries: {
        chart: "Gráfico",
        info: "Informação",
        addPoint: "Adicionar ponto",
        from: "De (ms ou -)",
        to: "Até (ms ou +)",
        aggregation: "Agregação",
        timeBucket: "Bucket (ms)",
        none: "Nenhum",
        dataPoints: "pontos de dados",
        labels: "Etiquetas",
        rules: "Regras",
        retention: "Retenção",
        timestamp: "Carimbo temporal",
        value: "Valor",
        retentionHint: "0 = sem expiração, ou milissegundos",
        duplicatePolicy: "Política de duplicados",
        labelsHint: "chave1 valor1 chave2 valor2",
        timestampHint: "'*' significa gerado automaticamente, ou carimbo temporal em milissegundos",
        editAllHint: "Um ponto de dados por linha: carimbo_temporal valor (o carimbo temporal pode ser * para automático)",
        autoSpread: "Intervalo de dispersão automático *",
        formula: "Fórmula",
        formulaLinear: "Linear",
        formulaRandom: "Aleatório",
        formulaSawtooth: "Dente de serra",
        formulaPoints: "Pontos",
        formulaAmplitude: "Amplitude",
        formulaOffset: "Desvio",
        generate: "Gerar",
        exportChart: "Exportar PNG",
        overlay: "Sobrepor chaves",
        overlayHint: "Chaves separadas por vírgulas",
        mrangeFilter: "Filtro de etiquetas",
        bulkMode: "Geração em massa",
        mrangeHint: "ex. sensor=temp"
      },
      probabilistic: {
        info: "Informação",
        addItem: "Adicionar Item",
        checkItem: "Verificar Item",
        item: "Item",
        exists: "Existe",
        doesNotExist: "Não existe",
        topkList: "Itens Principais",
        topkCount: "Contagem",
        queryCount: "Contagem de Consultas",
        queryResult: "Resultado da Consulta",
        addedSuccessfully: "Item adicionado com sucesso",
        deletedSuccessfully: "Item eliminado com sucesso",
        quantile: "Quantil",
        quantileResult: "Resultado",
        noItems: "Sem itens para apresentar",
        resetConfirm: "Repor todos os dados neste T-Digest?"
      },
      vectorset: {
        info: "Informações",
        elements: "Elementos",
        similarity: "Pesquisa por Similaridade",
        searchByElement: "Pesquisar por elemento",
        searchByVector: "Pesquisar por vetor",
        vectorValues: "Valores do vetor",
        element: "Elemento",
        score: "Pontuação",
        count: "Contagem",
        addElement: "Adicionar Elemento",
        attributes: "Atributos",
        noAttributes: "Sem atributos",
        dimensions: "Dimensões",
        removeConfirm: "Remover este elemento do VectorSet?",
        noElements: "Sem elementos",
        filter: "Filtro",
        searchComplete: "Pesquisa concluída",
      }
    },
    treeControls: {
      settings: "Definições da árvore",
      expandAll: "Expandir tudo",
      collapseAll: "Recolher tudo",
      level: "Nível",
      search: {
        search: "Pesquisar nas chaves",
        clear: "Limpar pesquisa atual",
        placeholderClient: "Pesquisar no lado do cliente",
        placeholderServer: "Pesquisar no lado do servidor",
        info: (opts) => "A pesquisa no lado do cliente significa que corresponde ao texto no campo de pesquisa. A pesquisa no lado do servidor significa que pesquisa nos padrões de chaves como *{texto-de-pesquisa}*. Para conjuntos de pesquisa grandes, é melhor usar a pesquisa no lado do servidor. Para conjuntos de pesquisa mais pequenos, é melhor usar a pesquisa no lado do cliente." + ` Se a contagem de chaves for superior a ${opts?.maxLightKeysCount ?? 110000}, só pode pesquisar no lado do servidor.`,
        largeSetInfo: "Num conjunto grande, a pesquisa no lado do cliente está desativada, portanto atualmente só é possível pesquisar no lado do servidor.",
        infoDetails: "Para saber como a pesquisa funciona, verifique as definições"
      },
      pager: {
        next: "Seguinte",
        prev: "Anterior",
        first: "Primeiro",
        last: "Último"
      }
    }
  },
  time: {
    years: "anos",
    months: "meses",
    days: "dias",
    year: "ano",
    month: "mês",
    day: "dia",
    second: "segundo",
    seconds: "segundos",
    minute: "minuto",
    minutes: "minutos",
    hour: "hora",
    hours: "horas"
  },
  redisTypes: {
    string: "String",
    list: "List",
    hash: "Hash table",
    set: "Set",
    zset: "Sorted set - zset",
    stream: "Stream",
    json: "JSON",
    timeseries: "Time Series",
    bloom: "Bloom filtro",
    cuckoo: "Cuckoo filtro",
    topk: "Top-K",
    cms: "Count-Min Sketch",
    tdigest: "T-Digest",
    vectorset: "VectorSet",
  }
};
module.exports = strings;