repo_description: ✨ Light and Fast AI Assistant. Support: Web | iOS | MacOS | Android |  Linux | Windows
repo_topics: calclaude chatgpt claude cross-platform desktop fe gemini gemini-pro gemini-server gemini-ultra gpt-4o groq nextjs ollama react tauri tauri-app vercel webui
code: import { SubmitKey } from "../store/config";
  import { PartialLocaleType } from "../locales/index";
  import { getClientConfig } from "../config/client";
  import { SAAS_CHAT_UTM_URL } from "@/app/constant";
  const isApp = !!getClientConfig()?.isApp;
  
  const pt: PartialLocaleType = {
    WIP: "Em breve...",
    Error: {
      Unauthorized: isApp
        ? `😆 A conversa encontrou alguns problemas, não se preocupe:
     \\ 1️⃣ Se você quiser começar sem configuração, [clique aqui para começar a conversar imediatamente 🚀](${SAAS_CHAT_UTM_URL})
     \\ 2️⃣ Se você deseja usar seus próprios recursos OpenAI, clique [aqui](/#/settings) para modificar as configurações ⚙️`
        : `😆 A conversa encontrou alguns problemas, não se preocupe:
     \ 1️⃣ Se você quiser começar sem configuração, [clique aqui para começar a conversar imediatamente 🚀](${SAAS_CHAT_UTM_URL})
     \ 2️⃣ Se você estiver usando uma versão de implantação privada, clique [aqui](/#/auth) para inserir a chave de acesso 🔑
     \ 3️⃣ Se você deseja usar seus próprios recursos OpenAI, clique [aqui](/#/settings) para modificar as configurações ⚙️
  `,
    },
    Auth: {
      Title: "Necessário Código de Acesso",
      Tips: "Por favor, insira o código de acesso abaixo",
      SubTips: "Ou insira sua Chave API OpenAI",
      Input: "código de acesso",
      Confirm: "Confirmar",
      Later: "Depois",
      Return: "Voltar",
      SaasTips: "A configuração é muito complicada, quero usá-la imediatamente",
      TopTips:
        "🥳 Oferta de Lançamento do NextChat AI, desbloqueie o OpenAI o1, GPT-4o, Claude-3.5 e os mais recentes grandes modelos agora",
    },
    ChatItem: {
      ChatItemCount: (count: number) => `${count} mensagens`,
    },
    Chat: {
      SubTitle: (count: number) => `${count} mensagens`,
      EditMessage: {
        Title: "Editar Todas as Mensagens",
        Topic: {
          Title: "Tópico",
          SubTitle: "Mudar o tópico atual",
        },
      },
      Actions: {
        ChatList: "Ir Para Lista de Chat",
        CompressedHistory: "Prompt de Memória Histórica Comprimida",
        Export: "Exportar Todas as Mensagens como Markdown",
        Copy: "Copiar",
        Stop: "Parar",
        Retry: "Tentar Novamente",
        Pin: "Fixar",
        PinToastContent: "Fixada 1 mensagem para prompts contextuais",
        PinToastAction: "Visualizar",
        Delete: "Deletar",
        Edit: "Editar",
        RefreshTitle: "Atualizar Título",
        RefreshToast: "Solicitação de atualização de título enviada",
      },
      Commands: {
        new: "Iniciar um novo chat",
        newm: "Iniciar um novo chat com máscara",
        next: "Próximo Chat",
        prev: "Chat Anterior",
        clear: "Limpar Contexto",
        del: "Deletar Chat",
      },
      InputActions: {
        Stop: "Parar",
        ToBottom: "Para o Mais Recente",
        Theme: {
          auto: "Automático",
          light: "Tema Claro",
          dark: "Tema Escuro",
        },
        Prompt: "Prompts",
        Masks: "Máscaras",
        Clear: "Limpar Contexto",
        Settings: "Configurações",
      },
      Rename: "Renomear Chat",
      Typing: "Digitando…",
      Input: (submitKey: string) => {
        var inputHints = `${submitKey} para enviar`;
        if (submitKey === String(SubmitKey.Enter)) {
          inputHints += ", Shift + Enter para quebrar linha";
        }
        return inputHints + ", / para buscar prompts, : para usar comandos";
      },
      Send: "Enviar",
      Config: {
        Reset: "Redefinir para Padrão",
        SaveAs: "Salvar como Máscara",
      },
      IsContext: "Prompt Contextual",
    },
    Export: {
      Title: "Exportar Mensagens",
      Copy: "Copiar Tudo",
      Download: "Baixar",
      MessageFromYou: "Mensagem De Você",
      MessageFromChatGPT: "Mensagem De ChatGPT",
      Share: "Compartilhar para ShareGPT",
      Format: {
        Title: "Formato de Exportação",
        SubTitle: "Markdown ou Imagem PNG",
      },
      IncludeContext: {
        Title: "Incluindo Contexto",
        SubTitle: "Exportar prompts de contexto na máscara ou não",
      },
      Steps: {
        Select: "Selecionar",
        Preview: "Pré-visualizar",
      },
      Image: {
        Toast: "Capturando Imagem...",
        Modal:
          "Pressione longamente ou clique com o botão direito para salvar a imagem",
      },
    },
    Select: {
      Search: "Buscar",
      All: "Selecionar Tudo",
      Latest: "Selecionar Mais Recente",
      Clear: "Limpar",
    },
    Memory: {
      Title: "Prompt de Memória",
      EmptyContent: "Nada ainda.",
      Send: "Enviar Memória",
      Copy: "Copiar Memória",
      Reset: "Resetar Sessão",
      ResetConfirm:
        "Resetar irá limpar o histórico de conversa atual e a memória histórica. Você tem certeza que quer resetar?",
    },
    Home: {
      NewChat: "Novo Chat",
      DeleteChat: "Confirmar para deletar a conversa selecionada?",
      DeleteToast: "Chat Deletado",
      Revert: "Reverter",
    },
    Settings: {
      Title: "Configurações",
      SubTitle: "Todas as Configurações",
      Danger: {
        Reset: {
          Title: "Resetar Todas as Configurações",
          SubTitle: "Resetar todos os itens de configuração para o padrão",
          Action: "Resetar",
          Confirm: "Confirmar para resetar todas as configurações para o padrão?",
        },
        Clear: {
          Title: "Limpar Todos os Dados",
          SubTitle: "Limpar todas as mensagens e configurações",
          Action: "Limpar",
          Confirm: "Confirmar para limpar todas as mensagens e configurações?",
        },
      },
      Lang: {
        Name: "Language",
        All: "Todos os Idiomas",
      },
      Avatar: "Avatar",
      FontSize: {
        Title: "Tamanho da Fonte",
        SubTitle: "Ajustar o tamanho da fonte do conteúdo do chat",
      },
      FontFamily: {
        Title: "Fonte do Chat",
        SubTitle:
          "Fonte do conteúdo do chat, deixe vazio para aplicar a fonte padrão global",
        Placeholder: "Nome da Fonte",
      },
      InjectSystemPrompts: {
        Title: "Inserir Prompts de Sistema",
        SubTitle: "Inserir um prompt de sistema global para cada requisição",
      },
      InputTemplate: {
        Title: "Modelo de Entrada",
        SubTitle: "A mensagem mais recente será preenchida neste modelo",
      },
  
      Update: {
        Version: (x: string) => `Versão: ${x}`,
        IsLatest: "Última versão",
        CheckUpdate: "Verificar Atualização",
        IsChecking: "Verificando atualização...",
        FoundUpdate: (x: string) => `Nova versão encontrada: ${x}`,
        GoToUpdate: "Atualizar",
      },
      SendKey: "Tecla de Envio",
      Theme: "Tema",
      TightBorder: "Borda Ajustada",
      SendPreviewBubble: {
        Title: "Bolha de Pré-visualização de Envio",
        SubTitle: "Pré-visualizar markdown na bolha",
      },
      AutoGenerateTitle: {
        Title: "Gerar Título Automaticamente",
        SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
      },
      Sync: {
        CloudState: "Última Atualização",
        NotSyncYet: "Ainda não sincronizado",
        Success: "Sincronização bem sucedida",
        Fail: "Falha na sincronização",
  
        Config: {
          Modal: {
            Title: "Configurar Sincronização",
            Check: "Verificar Conexão",
          },
          SyncType: {
            Title: "Tipo de Sincronização",
            SubTitle: "Escolha seu serviço de sincronização favorito",
          },
          Proxy: {
            Title: "Habilitar Proxy CORS",
            SubTitle: "Habilitar um proxy para evitar restrições de cross-origin",
          },
          ProxyUrl: {
            Title: "Endpoint de Proxy",
            SubTitle: "Apenas aplicável ao proxy CORS embutido para este projeto",
          },
  
          WebDav: {
            Endpoint: "Endpoint WebDAV",
            UserName: "Nome de Usuário",
            Password: "Senha",
          },
  
          UpStash: {
            Endpoint: "URL REST Redis UpStash",
            UserName: "Nome do Backup",
            Password: "Token REST Redis UpStash",
          },
        },
  
        LocalState: "Dados Locais",
        Overview: (overview: any) => {
          return `${overview.chat} chats，${overview.message} mensagens，${overview.prompt} prompts，${overview.mask} máscaras`;
        },
        ImportFailed: "Falha ao importar do arquivo",
      },
      Mask: {
        Splash: {
          Title: "Tela de Início da Máscara",
          SubTitle:
            "Mostrar uma tela de início da máscara antes de iniciar novo chat",
        },
        Builtin: {
          Title: "Esconder Máscaras Embutidas",
          SubTitle: "Esconder máscaras embutidas na lista de máscaras",
        },
      },
      Prompt: {
        Disable: {
          Title: "Desabilitar auto-completar",
          SubTitle: "Digite / para acionar auto-completar",
        },
        List: "Lista de Prompts",
        ListCount: (builtin: number, custom: number) =>
          `${builtin} embutidos, ${custom} definidos pelo usuário`,
        Edit: "Editar",
        Modal: {
          Title: "Lista de Prompts",
          Add: "Adicionar Um",
          Search: "Buscar Prompts",
        },
        EditModal: {
          Title: "Editar Prompt",
        },
      },
      HistoryCount: {
        Title: "Contagem de Mensagens Anexadas",
        SubTitle: "Número de mensagens enviadas anexadas por requisição",
      },
      CompressThreshold: {
        Title: "Limite de Compressão de Histórico",
        SubTitle:
          "Irá comprimir se o comprimento das mensagens não comprimidas exceder o valor",
      },
  
      Usage: {
        Title: "Saldo da Conta",
        SubTitle(used: any, total: any) {
          return `Usado este mês ${used}, assinatura ${total}`;
        },
        IsChecking: "Verificando...",
        Check: "Verificar",
        NoAccess: "Insira a Chave API para verificar o saldo",
      },
      Access: {
        SaasStart: {
          Title: "Usar NextChat AI",
          Label: "(A solução mais econômica)",
          SubTitle:
            "Mantido oficialmente pelo NextChat, pronto para uso sem configuração, suporta os mais recentes grandes modelos como OpenAI o1, GPT-4o e Claude-3.5",
          ChatNow: "Conversar agora",
        },
  
        AccessCode: {
          Title: "Código de Acesso",
          SubTitle: "Controle de Acesso Habilitado",
          Placeholder: "Insira o Código",
        },
        CustomEndpoint: {
          Title: "Endpoint Personalizado",
          SubTitle: "Use serviço personalizado Azure ou OpenAI",
        },
        Provider: {
          Title: "Provedor do Modelo",
          SubTitle: "Selecione Azure ou OpenAI",
        },
        OpenAI: {
          ApiKey: {
            Title: "Chave API OpenAI",
            SubTitle: "Usar Chave API OpenAI personalizada",
            Placeholder: "sk-xxx",
          },
  
          Endpoint: {
            Title: "Endpoint OpenAI",
            SubTitle:
              "Deve começar com http(s):// ou usar /api/openai como padrão",
          },
        },
        Azure: {
          ApiKey: {
            Title: "Chave API Azure",
            SubTitle: "Verifique sua chave API do console Azure",
            Placeholder: "Chave API Azure",
          },
  
          Endpoint: {
            Title: "Endpoint Azure",
            SubTitle: "Exemplo: ",
          },
  
          ApiVerion: {
            Title: "Versão API Azure",
            SubTitle: "Verifique sua versão API do console Azure",
          },
        },
        Anthropic: {
          ApiKey: {
            Title: "Chave API Anthropic",
            SubTitle: "Verifique sua chave API do console Anthropic",
            Placeholder: "Chave API Anthropic",
          },
  
          Endpoint: {
            Title: "Endpoint Address",
            SubTitle: "Exemplo: ",
          },
  
          ApiVerion: {
            Title: "Versão API (Versão api claude)",
            SubTitle: "Verifique sua versão API do console Anthropic",
          },
        },
        AI302: {
          ApiKey: {
            Title: "Chave API 302.AI",
            SubTitle: "Use uma chave API 302.AI personalizada",
            Placeholder: "302.AI API Key",
          },
          Endpoint: {
            Title: "Endpoint Address",
            SubTitle: "Exemplo: ",
          },
        },
        CustomModel: {
          Title: "Modelos Personalizados",
          SubTitle: "Opções de modelo personalizado, separados por vírgula",
        },
      },
  
      Model: "Modelo",
      CompressModel: {
        Title: "Modelo de Compressão",
        SubTitle: "Modelo usado para comprimir o histórico",
      },
      Temperature: {
        Title: "Temperatura",
        SubTitle: "Um valor maior torna a saída mais aleatória",
      },
      TopP: {
        Title: "Top P",
        SubTitle: "Não altere este valor junto com a temperatura",
      },
      MaxTokens: {
        Title: "Máximo de Tokens",
        SubTitle: "Comprimento máximo de tokens de entrada e tokens gerados",
      },
      PresencePenalty: {
        Title: "Penalidade de Presença",
        SubTitle:
          "Um valor maior aumenta a probabilidade de falar sobre novos tópicos",
      },
      FrequencyPenalty: {
        Title: "Penalidade de Frequência",
        SubTitle:
          "Um valor maior diminui a probabilidade de repetir a mesma linha",
      },
    },
    Store: {
      DefaultTopic: "Nova Conversa",
      BotHello: "Olá! Como posso ajudá-lo hoje?",
      Error: "Algo deu errado, por favor tente novamente mais tarde.",
      Prompt: {
        History: (content: string) =>
          "Este é um resumo do histórico de chat como um recapitulativo: " +
          content,
        Topic:
          "Por favor, gere um título de quatro a cinco palavras resumindo nossa conversa sem qualquer introdução, pontuação, aspas, períodos, símbolos ou texto adicional. Remova as aspas que o envolvem.",
        Summarize:
          "Resuma a discussão brevemente em 200 palavras ou menos para usar como um prompt para o contexto futuro.",
      },
    },
    Copy: {
      Success: "Copiado para a área de transferência",
      Failed:
        "Falha na cópia, por favor conceda permissão para acessar a área de transferência",
    },
    Download: {
      Success: "Conteúdo baixado para seu diretório.",
      Failed: "Falha no download.",
    },
    Context: {
      Toast: (x: any) => `Com ${x} prompts contextuais`,
      Edit: "Configurações do Chat Atual",
      Add: "Adicionar um Prompt",
      Clear: "Contexto Limpo",
      Revert: "Reverter",
    },
    Plugin: {
      Name: "Plugin",
    },
    FineTuned: {
      Sysmessage: "Você é um assistente que",
    },
    SearchChat: {
      Name: "Pesquisar",
      Page: {
        Title: "Pesquisar histórico de chat",
        Search: "Digite palavras-chave para pesquisa",
        NoResult: "Nenhum resultado encontrado",
        NoData: "Sem dados",
        Loading: "Carregando",
  
        SubTitle: (count: number) => `Encontrado ${count} resultados`,
      },
      Item: {
        View: "Ver",
      },
    },
    Mask: {
      Name: "Máscara",
      Page: {
        Title: "Template de Prompt",
        SubTitle: (count: number) => `${count} templates de prompt`,
        Search: "Buscar Templates",
        Create: "Criar",
      },
      Item: {
        Info: (count: number) => `${count} prompts`,
        Chat: "Chat",
        View: "Visualizar",
        Edit: "Editar",
        Delete: "Deletar",
        DeleteConfirm: "Confirmar para deletar?",
      },
      EditModal: {
        Title: (readonly: boolean) =>
          `Editar Template de Prompt ${readonly ? "(somente leitura)" : ""}`,
        Download: "Baixar",
        Clone: "Clonar",
      },
      Config: {
        Avatar: "Avatar do Bot",
        Name: "Nome do Bot",
        Sync: {
          Title: "Usar Configuração Global",
          SubTitle: "Usar configuração global neste chat",
          Confirm:
            "Confirmar para substituir a configuração personalizada pela configuração global?",
        },
        HideContext: {
          Title: "Esconder Prompts de Contexto",
          SubTitle: "Não mostrar prompts de contexto no chat",
        },
        Share: {
          Title: "Compartilhar Esta Máscara",
          SubTitle: "Gerar um link para esta máscara",
          Action: "Copiar Link",
        },
      },
    },
    NewChat: {
      Return: "Retornar",
      Skip: "Apenas Começar",
      Title: "Escolher uma Máscara",
      SubTitle: "Converse com a Alma por trás da Máscara",
      More: "Encontre Mais",
      NotShow: "Nunca Mostrar Novamente",
      ConfirmNoShow:
        "Confirmar para desabilitar？Você pode habilitar nas configurações depois.",
    },
  
    UI: {
      Confirm: "Confirmar",
      Cancel: "Cancelar",
      Close: "Fechar",
      Create: "Criar",
      Edit: "Editar",
      Export: "Exportar",
      Import: "Importar",
      Sync: "Sincronizar",
      Config: "Configurar",
    },
    Exporter: {
      Description: {
        Title: "Apenas mensagens após a limpeza do contexto serão exibidas",
      },
      Model: "Modelo",
      Messages: "Mensagens",
      Topic: "Tópico",
      Time: "Tempo",
    },
  
    URLCommand: {
      Code: "Código de acesso detectado a partir da url, confirmar para aplicar? ",
      Settings:
        "Configurações detectadas a partir da url, confirmar para aplicar?",
    },
  };
  
  export default pt;
  