Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions brand-config.example-banana.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"ko-KR": "바나나 AI 어시스턴트",
"ru-RU": "Банановый ИИ Помощник",
"fr-FR": "Assistant IA Banane",
"fa-IR": "دستیار هوش مصنوعی موز"
"fa-IR": "دستیار هوش مصنوعی موز",
"pt-BR": "Assistente de IA Banana"
},
"appDescription": {
"en-US": "Banana AI Assistant is your intelligent work partner",
Expand All @@ -34,7 +35,8 @@
"ko-KR": "바나나 AI 어시스턴트는 당신의 지능형 업무 파트너입니다",
"ru-RU": "Банановый ИИ Помощник - ваш умный рабочий партнер",
"fr-FR": "L'Assistant IA Banane est votre partenaire de travail intelligent",
"fa-IR": "دستیار هوش مصنوعی موز شریک هوشمند کاری شماست"
"fa-IR": "دستیار هوش مصنوعی موز شریک هوشمند کاری شماست",
"pt-BR": "O Assistente de IA Banana é seu parceiro de trabalho inteligente"
},
"websiteText": {
"en-US": "Visit Banana Website",
Expand All @@ -45,7 +47,8 @@
"ko-KR": "바나나 웹사이트 방문",
"ru-RU": "Посетить сайт Банана",
"fr-FR": "Visitez le site Banane",
"fa-IR": "وبسایت موز را ببینید"
"fa-IR": "وبسایت موز را ببینید",
"pt-BR": "Visite o site da Banana"
}
},
"github": {
Expand Down
15 changes: 10 additions & 5 deletions brand-config.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"ko-KR": "DeepChat",
"ru-RU": "DeepChat",
"fr-FR": "DeepChat",
"fa-IR": "DeepChat"
"fa-IR": "DeepChat",
"pt-BR": "DeepChat"
},
"appDescription": {
"en-US": "DeepChat is a cross-platform AI client, dedicated to making AI accessible to more people.",
Expand All @@ -34,7 +35,8 @@
"ko-KR": "DeepChat은 더 많은 사람들이 AI에 접근할 수 있도록 하는 크로스 플랫폼 AI 클라이언트입니다。",
"ru-RU": "DeepChat - это кроссплатформенный AI-клиент, предназначенный для того, чтобы сделать AI доступным для большего количества людей.",
"fr-FR": "DeepChat est un client IA multiplateforme, dédié à rendre l'IA accessible à plus de personnes.",
"fa-IR": "دیپ چت یک کلاینت هوش مصنوعی چندپلتفرمه که هدفش در دسترس قرار دادن هوش مصنوعی برای افراد بیشتری است."
"fa-IR": "دیپ چت یک کلاینت هوش مصنوعی چندپلتفرمه که هدفش در دسترس قرار دادن هوش مصنوعی برای افراد بیشتری است.",
"pt-BR": "DeepChat é um cliente de IA multiplataforma, dedicado a tornar a IA acessível a mais pessoas."
},
"websiteText": {
"en-US": "Visit Our Website",
Expand All @@ -45,7 +47,8 @@
"ko-KR": "웹사이트 방문",
"ru-RU": "Посетить наш сайт",
"fr-FR": "Visitez notre site web",
"fa-IR": "وبسایت ما را ببینید"
"fa-IR": "وبسایت ما را ببینید",
"pt-BR": "Visite nosso site"
},
"welcomeTitle": {
"en-US": "Welcome to MyApp",
Expand All @@ -56,7 +59,8 @@
"ko-KR": "MyApp에 오신 것을 환영합니다",
"ru-RU": "Добро пожаловать в MyApp",
"fr-FR": "Bienvenue sur MyApp",
"fa-IR": "به MyApp خوش آمدید"
"fa-IR": "به MyApp خوش آمدید",
"pt-BR": "Bem-vindo ao MyApp"
},
"welcomeSetupDescription": {
"en-US": "Let's start setting up MyApp",
Expand All @@ -67,7 +71,8 @@
"ko-KR": "MyApp 설정을 시작합시다",
"ru-RU": "Начнем настройку MyApp",
"fr-FR": "Commençons la configuration de MyApp",
"fa-IR": "بیایید تنظیم MyApp را شروع کنیم"
"fa-IR": "بیایید تنظیم MyApp را شروع کنیم",
"pt-BR": "Vamos começar a configurar o MyApp"
}
},
"github": {
Expand Down
2 changes: 2 additions & 0 deletions electron-builder-macx64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ electronLanguages:
- fr
- fa-IR
- fa
- pt-BR
- pt
mac:
entitlementsInherit: build/entitlements.mac.plist
extendInfo:
Expand Down
2 changes: 2 additions & 0 deletions electron-builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ electronLanguages:
- fr
- fa-IR
- fa
- pt-BR
- pt
win:
executableName: DeepChat
nsis:
Expand Down
4 changes: 2 additions & 2 deletions scripts/rebrand.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ function updateI18nFiles(config) {
}

// 支持的语言
const locales = ['en-US', 'zh-CN', 'zh-TW', 'zh-HK', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR', 'fa-IR']
const locales = ['en-US', 'zh-CN', 'zh-TW', 'zh-HK', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR', 'fa-IR', 'pt-BR']

for (const locale of locales) {
// 更新 about.json
Expand Down Expand Up @@ -299,7 +299,7 @@ function updateAllI18nDeepChatReferences(config) {
}

// 支持的语言
const locales = ['en-US', 'zh-CN', 'zh-TW', 'zh-HK', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR', 'fa-IR']
const locales = ['en-US', 'zh-CN', 'zh-TW', 'zh-HK', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR', 'fa-IR', 'pt-BR']

// 需要处理的文件列表
const filesToProcess = [
Expand Down
3 changes: 2 additions & 1 deletion src/main/presenter/configPresenter/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,8 @@ export class ConfigPresenter implements IConfigPresenter {
'ru-RU',
'ja-JP',
'fr-FR',
'fa-IR'
'fa-IR',
'pt-BR'
]

// Exact match
Expand Down
3 changes: 2 additions & 1 deletion src/renderer/src/components/settings/DisplaySettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,8 @@ const languageOptions = [
{ value: 'ru-RU', label: 'Русский' },
{ value: 'ja-JP', label: '日本語' },
{ value: 'fr-FR', label: 'Français' },
{ value: 'fa-IR', label: 'فارسی (ایران)' }
{ value: 'fa-IR', label: 'فارسی (ایران)' },
{ value: 'pt-BR', label: 'Português (Brasil)' }
]

watch(selectedLanguage, async (newValue) => {
Expand Down
5 changes: 4 additions & 1 deletion src/renderer/src/i18n/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import zhTW from './zh-TW'
import ruRU from './ru-RU'
import frFR from './fr-FR'
import faIR from './fa-IR'
import ptBR from './pt-BR'

const locales = {
'zh-CN': zhCN,
Expand All @@ -18,9 +19,11 @@ const locales = {
'ru-RU': ruRU,
'fr-FR': frFR,
'fa-IR': faIR,
'pt-BR': ptBR,
zh: zhCN,
en: enUS,
fr: frFR
fr: frFR,
pt: ptBR
}
console.log('locales', locales)
export default locales
19 changes: 19 additions & 0 deletions src/renderer/src/i18n/pt-BR/about.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"title": "DeepChat",
"description": "DeepChat é um cliente de IA multiplataforma, dedicado a tornar a IA acessível a mais pessoas.",
"website": "Visite Nosso Site",
"deviceInfo": {
"title": "Informações do Dispositivo",
"platform": "Plataforma",
"arch": "Arquitetura",
"cpuModel": "Modelo da CPU",
"totalMemory": "Memória Total",
"osVersion": "Versão do Sistema"
},
"disclaimerButton": "Aviso Legal",
"disclaimerTitle": "Declaração de Termos de Uso",
"checkUpdateButton": "Verificar Atualizações",
"updateChannel": "Canal de Atualização",
"stableChannel": "Estável",
"canaryChannel": "Canary"
}
48 changes: 48 additions & 0 deletions src/renderer/src/i18n/pt-BR/artifacts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"clickToOpen": "Clique para Abrir",
"codeSnippet": "Trecho de Código",
"function": "Função",
"class": "Classe",
"reactComponent": "Componente React",
"moduleImport": "Importação de Módulo",
"variableDefinition": "Definição da Variável {name}",
"markdownDocument": "Documento Markdown",
"htmlDocument": "Documento HTML",
"svgImage": "Imagem SVG",
"flowchart": "Fluxograma",
"sequenceDiagram": "Diagrama de Sequência",
"classDiagram": "Diagrama de Classes",
"stateDiagram": "Diagrama de Estados",
"erDiagram": "Diagrama ER",
"ganttChart": "Gráfico de Gantt",
"pieChart": "Gráfico de Pizza",
"mermaidDiagram": "Diagrama Mermaid",
"flowchartOf": "Fluxograma de {name}",
"sequenceDiagramBetween": "Diagrama de Sequência entre {participants}",
"classDiagramOf": "Diagrama de Classes de {name}",
"stateDiagramOf": "Diagrama de Estados de {name}",
"erDiagramOf": "Diagrama ER de {name}",
"pieChartOf": "Gráfico de Pizza de {name}",
"unknownDocument": "Documento Desconhecido",
"preview": "Visualização",
"code": "Código",
"export": "Exportar",
"htmlPreviewTitle": "Visualização HTML",
"svgPreviewTitle": "Visualização SVG",
"copy": "Copiar",
"copySuccess": "Copiado",
"copySuccessDesc": "Conteúdo copiado para a área de transferência",
"copyFailed": "Falha ao Copiar",
"copyFailedDesc": "Falha ao copiar conteúdo para a área de transferência",
"copyAsImage": "Copiar como Imagem",
"copyImageSuccessDesc": "Imagem copiada para a área de transferência",
"copyImageFailedDesc": "Não foi possível copiar a imagem para a área de transferência.",
"desktop": "Desktop",
"tablet": "Tablet",
"mobile": "Celular",
"width": "Largura",
"height": "Altura",
"sanitizingSvg": "Sanitizando conteúdo SVG...",
"svgSanitizationFailed": "O conteúdo SVG falhou na validação de segurança",
"noSvgContent": "Nenhum conteúdo SVG disponível"
}
68 changes: 68 additions & 0 deletions src/renderer/src/i18n/pt-BR/chat.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"input": {
"placeholder": "Pergunte algo? Você pode citar ferramentas, arquivos, recursos usando {'@'}...",
"fileArea": "Área de Arquivos",
"inputArea": "Área de Entrada",
"functionSwitch": "Alternar Função",
"fileSelect": "Selecionar Arquivo",
"pasteFiles": "Colar arquivos da área de transferência",
"dropFiles": "Solte os arquivos aqui",
"promptFilesAdded": "Arquivos de Prompt Adicionados",
"promptFilesAddedDesc": "{count} arquivos adicionados com sucesso",
"promptFilesError": "Erro no Processamento de Arquivos",
"promptFilesErrorDesc": "Falha ao processar {count} arquivos",
"historyPlaceholder": "(Pressione Tab para autocompletar)",
"rateLimitQueue": "Fila {count}",
"rateLimitWait": "Aguarde {seconds}s",
"rateLimitQueueTooltip": "{count} requisições na fila, intervalo de {interval}s",
"rateLimitReadyTooltip": "Pronto para enviar, intervalo de {interval}s",
"rateLimitWaitingTooltip": "Aguarde mais {seconds}s, intervalo de {interval}s"
},
"features": {
"webSearch": "Busca na Web",
"thoughtForSeconds": "Pensou por {seconds}s",
"thoughtForSecondsLoading": "Pensando por {seconds}s...",
"artifactThinking": "Processando Artefato"
},
"search": {
"results": "Encontradas {0} páginas web",
"searching": "Buscando...",
"title": "Resultados da Busca",
"description": "Encontrados {0} resultados relacionados",
"optimizing": "Otimizando consulta de busca...",
"reading": "Buscando e lendo páginas web...",
"error": "Falha na busca"
},
"messages": {
"thinking": "Pensando...",
"rateLimitWaiting": "Limite de taxa atingido, aguardando na fila...",
"rateLimitTitle": "Limite de Taxa Ativo",
"rateLimitQueue": "Posição na Fila",
"rateLimitEstimated": "Tempo Estimado",
"rateLimitQuickSettings": "Ajustar Limite",
"rateLimitSwitchProvider": "Trocar Provedor",
"rateLimitImmediately": "Agora",
"rateLimitSeconds": "s",
"rateLimitMinutes": "m"
},
"rateLimit": {
"queueTooltip": "{count} requisições na fila, intervalo de {interval}s",
"readyTooltip": "Pronto para enviar, intervalo de {interval}s",
"waitingTooltip": "Aguarde mais {seconds}s, intervalo de {interval}s"
},
"notify": {
"generationComplete": "Geração concluída",
"generationError": "Falha na geração"
},
"navigation": {
"title": "Navegação de Mensagens",
"searchPlaceholder": "Buscar mensagens...",
"noResults": "Nenhuma mensagem encontrada",
"noMessages": "Nenhuma mensagem ainda",
"totalMessages": "Total de {count} mensagens",
"searchResults": "Encontrados {count} resultados em {total} mensagens",
"userMessage": "Mensagem do usuário",
"assistantMessage": "Resposta do assistente",
"unknownMessage": "Mensagem desconhecida"
}
}
79 changes: 79 additions & 0 deletions src/renderer/src/i18n/pt-BR/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"enabled": "Ativado",
"disabled": "Desativado",
"loading": "Carregando...",
"copySuccess": "Copiado com Sucesso",
"copySuccessDesc": "Conteúdo copiado para a área de transferência",
"copyImageSuccess": "Imagem Copiada",
"copyImageSuccessDesc": "Imagem copiada para a área de transferência",
"copyFailed": "Falha ao Copiar",
"copyFailedDesc": "Falha ao copiar conteúdo para a área de transferência",
"copyCode": "Copiar Código",
"copy": "Copiar",
"copied": "Copiado",
"paste": "Colar",
"export": "Exportar",
"newChat": "Nova Conversa",
"newTopic": "Novo Tópico",
"cancel": "Cancelar",
"confirm": "Confirmar",
"close": "Fechar",
"error": {
"requestFailed": "Falha na requisição...",
"createChatFailed": "Falha ao criar conversa",
"selectChatFailed": "Falha ao selecionar conversa",
"renameChatFailed": "Falha ao renomear conversa",
"deleteChatFailed": "Falha ao excluir conversa",
"cleanMessagesFailed": "Falha ao limpar mensagens",
"userCanceledGeneration": "Usuário cancelou a geração",
"sessionInterrupted": "A sessão foi interrompida inesperadamente, a geração está incompleta",
"noModelResponse": "O modelo não retornou nenhum conteúdo, pode ter excedido o tempo limite",
"invalidJson": "Formato JSON inválido",
"maximumToolCallsReached": "Número Máximo de Chamadas de Ferramentas Atingido",
"causeOfError": "Possíveis causas do erro:",
"error400": "Requisição inválida, possivelmente um problema de parâmetro ou compatibilidade",
"error401": "Falha na autenticação, possivelmente Chave API ou domínio incorretos",
"error403": "Acesso ao modelo proibido, possivelmente saldo insuficiente ou sem permissão",
"error404": "URL solicitada não encontrada, possivelmente domínio ou nome do modelo incorreto",
"error429": "Muitas requisições, possivelmente limitado pela taxa do serviço",
"error500": "Erro do servidor, o serviço pode estar instável, tente novamente mais tarde",
"error502": "Erro de gateway, o serviço pode estar instável, tente novamente mais tarde",
"error503": "Serviço indisponível, o serviço pode estar instável, tente novamente mais tarde",
"error504": "Tempo limite da requisição, o serviço pode estar instável ou pode haver problemas de rede, verifique as configurações de proxy e tente novamente",
"operationFailed": "Operação falhou"
},
"resetDataConfirmTitle": "Redefinir Todos os Dados?",
"resetDataConfirmDescription": "Isso redefinirá todos os seus dados para as configurações padrão. Esta ação não pode ser desfeita.",
"proxyMode": "Modo de Proxy",
"proxyModeSelect": "Selecionar Modo de Proxy",
"proxyModeSystem": "Proxy do Sistema",
"proxyModeNone": "Sem Proxy",
"proxyModeCustom": "Proxy Personalizado",
"customProxyUrl": "URL do Proxy Personalizado",
"customProxyUrlPlaceholder": "Exemplo: http://127.0.0.1:7890",
"invalidProxyUrl": "URL de proxy inválida, por favor insira uma URL http/https válida",
"disclaimer": "Aviso Legal",
"resetData": "Redefinir dados",
"searchAssistantModel": "Modelo de Assistente",
"searchEngine": "Mecanismo de Busca",
"searchEngineSelect": "Selecione um mecanismo de busca",
"searchPreview": "Visualização da busca",
"language": "Idioma",
"languageSelect": "Selecione um idioma",
"selectModel": "Selecione um modelo",
"title": "Configurações gerais",
"languageSystem": "Seguir o sistema",
"watermarkTip": "Gerado por IA",
"collapse": "Recolher",
"expand": "Expandir",
"image": "imagem",
"add": "Adicionar",
"reset": "Redefinir",
"format": "Formatar",
"edit": "Editar",
"delete": "Excluir",
"save": "Salvar",
"clear": "Limpar",
"saved": "Salvo",
"newTab": "Nova Aba"
}
Loading