mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-12 08:59:13 +08:00
Fix/2969 add model provider ollama not work (#2973)
This commit is contained in:
parent
7c8c233cf4
commit
eeaa3c1643
@ -161,7 +161,7 @@ const Form: FC<FormProps> = ({
|
|||||||
flex justify-center items-center mr-2 w-4 h-4 border border-gray-300 rounded-full
|
flex justify-center items-center mr-2 w-4 h-4 border border-gray-300 rounded-full
|
||||||
${value[variable] === option.value && 'border-[5px] border-primary-600'}
|
${value[variable] === option.value && 'border-[5px] border-primary-600'}
|
||||||
`} />
|
`} />
|
||||||
<div className='text-sm text-gray-900'>{option.label[language]}</div>
|
<div className='text-sm text-gray-900'>{option.label[language] || option.label.en_US}</div>
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
@ -206,9 +206,9 @@ const Form: FC<FormProps> = ({
|
|||||||
return option.show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)
|
return option.show_on.every(showOnItem => value[showOnItem.variable] === showOnItem.value)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}).map(option => ({ value: option.value, name: option.label[language] }))}
|
}).map(option => ({ value: option.value, name: option.label[language] || option.label.en_US }))}
|
||||||
onSelect={item => handleFormChange(variable, item.value as string)}
|
onSelect={item => handleFormChange(variable, item.value as string)}
|
||||||
placeholder={placeholder?.[language]}
|
placeholder={placeholder?.[language] || placeholder?.en_US}
|
||||||
/>
|
/>
|
||||||
{fieldMoreInfo?.(formSchema)}
|
{fieldMoreInfo?.(formSchema)}
|
||||||
{validating && changeKey === variable && <ValidatingTip />}
|
{validating && changeKey === variable && <ValidatingTip />}
|
||||||
|
@ -219,7 +219,7 @@ const ModelModal: FC<ModelModalProps> = ({
|
|||||||
const renderTitlePrefix = () => {
|
const renderTitlePrefix = () => {
|
||||||
const prefix = configurateMethod === ConfigurateMethodEnum.customizableModel ? t('common.operation.add') : t('common.operation.setup')
|
const prefix = configurateMethod === ConfigurateMethodEnum.customizableModel ? t('common.operation.add') : t('common.operation.setup')
|
||||||
|
|
||||||
return `${prefix} ${provider.label[language]}`
|
return `${prefix} ${provider.label[language] || provider.label.en_US}`
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -116,11 +116,11 @@ const ProviderCard: FC<ProviderCardProps> = ({
|
|||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
key={method}
|
key={method}
|
||||||
className='h-7 bg-white text-xs text-gray-700'
|
className={'h-7 bg-white text-xs text-gray-700 shrink-0'}
|
||||||
onClick={() => onOpenModal(method)}
|
onClick={() => onOpenModal(method)}
|
||||||
>
|
>
|
||||||
<Settings01 className='mr-[5px] w-3.5 h-3.5' />
|
<Settings01 className={`mr-[5px] w-3.5 h-3.5 ${s.icon}`} />
|
||||||
{t('common.operation.setup')}
|
<span className='text-xs inline-flex items-center justify-center overflow-ellipsis shrink-0'>{t('common.operation.setup')}</span>
|
||||||
</Button>
|
</Button>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ const ProviderIcon: FC<ProviderIconProps> = ({
|
|||||||
return (
|
return (
|
||||||
<div className={`inline-flex items-center ${className}`}>
|
<div className={`inline-flex items-center ${className}`}>
|
||||||
<div className='text-xs font-semibold text-black'>
|
<div className='text-xs font-semibold text-black'>
|
||||||
{provider.label[language]}
|
{provider.label[language] || provider.label.en_US}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -1,39 +1,210 @@
|
|||||||
const translation = {
|
const translation = {
|
||||||
you: '(Você)',
|
api: {
|
||||||
|
success: 'Sucesso',
|
||||||
|
actionSuccess: 'Ação bem-sucedida',
|
||||||
|
saved: 'Salvo',
|
||||||
|
create: 'Criado',
|
||||||
|
remove: 'Removido',
|
||||||
|
},
|
||||||
|
operation: {
|
||||||
|
create: 'Criar',
|
||||||
|
confirm: 'Confirmar',
|
||||||
|
cancel: 'Cancelar',
|
||||||
|
clear: 'Limpar',
|
||||||
|
save: 'Salvar',
|
||||||
|
edit: 'Editar',
|
||||||
|
add: 'Adicionar',
|
||||||
|
added: 'Adicionado',
|
||||||
|
refresh: 'Reiniciar',
|
||||||
|
reset: 'Redefinir',
|
||||||
|
search: 'Buscar',
|
||||||
|
change: 'Alterar',
|
||||||
|
remove: 'Remover',
|
||||||
|
send: 'Enviar',
|
||||||
|
copy: 'Copiar',
|
||||||
|
lineBreak: 'Quebra de linha',
|
||||||
|
sure: 'Tenho certeza',
|
||||||
|
download: 'Baixar',
|
||||||
|
delete: 'Excluir',
|
||||||
|
settings: 'Configurações',
|
||||||
|
setup: 'Configuração',
|
||||||
|
getForFree: 'Obter gratuitamente',
|
||||||
|
reload: 'Recarregar',
|
||||||
|
ok: 'OK',
|
||||||
|
log: 'Log',
|
||||||
|
learnMore: 'Saiba Mais',
|
||||||
|
params: 'Parâmetros',
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
input: 'Por favor, insira',
|
||||||
|
select: 'Por favor, selecione',
|
||||||
|
},
|
||||||
|
voice: {
|
||||||
|
language: {
|
||||||
|
zhHans: 'Chinês',
|
||||||
|
enUS: 'Inglês',
|
||||||
|
deDE: 'Alemão',
|
||||||
|
frFR: 'Francês',
|
||||||
|
esES: 'Espanhol',
|
||||||
|
itIT: 'Italiano',
|
||||||
|
thTH: 'Tailandês',
|
||||||
|
idID: 'Indonésio',
|
||||||
|
jaJP: 'Japonês',
|
||||||
|
koKR: 'Coreano',
|
||||||
|
ptBR: 'Português',
|
||||||
|
ruRU: 'Russo',
|
||||||
|
ukUA: 'Ucraniano',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
unit: {
|
||||||
|
char: 'caracteres',
|
||||||
|
},
|
||||||
|
actionMsg: {
|
||||||
|
noModification: 'Sem modificações no momento.',
|
||||||
|
modifiedSuccessfully: 'Modificado com sucesso',
|
||||||
|
modifiedUnsuccessfully: 'Modificado sem sucesso',
|
||||||
|
copySuccessfully: 'Copiado com sucesso',
|
||||||
|
paySucceeded: 'Pagamento realizado com sucesso',
|
||||||
|
payCancelled: 'Pagamento cancelado',
|
||||||
|
generatedSuccessfully: 'Gerado com sucesso',
|
||||||
|
generatedUnsuccessfully: 'Geração sem sucesso',
|
||||||
|
},
|
||||||
|
model: {
|
||||||
|
params: {
|
||||||
|
temperature: 'Temperatura',
|
||||||
|
temperatureTip:
|
||||||
|
'Controla a aleatoriedade: Diminuir resulta em conclusões menos aleatórias. À medida que a temperatura se aproxima de zero, o modelo se tornará determinístico e repetitivo.',
|
||||||
|
top_p: 'Top P',
|
||||||
|
top_pTip:
|
||||||
|
'Controla a diversidade via amostragem de núcleo: 0.5 significa que metade de todas as opções ponderadas por probabilidade são consideradas.',
|
||||||
|
presence_penalty: 'Penalidade de presença',
|
||||||
|
presence_penaltyTip:
|
||||||
|
'Quanto penalizar novos tokens com base em se eles aparecem no texto até agora.\nAumenta a probabilidade do modelo de falar sobre novos tópicos.',
|
||||||
|
frequency_penalty: 'Penalidade de frequência',
|
||||||
|
frequency_penaltyTip:
|
||||||
|
'Quanto penalizar novos tokens com base em sua frequência existente no texto até agora.\nDiminui a probabilidade do modelo de repetir a mesma linha textualmente.',
|
||||||
|
max_tokens: 'Máximo de tokens',
|
||||||
|
max_tokensTip:
|
||||||
|
'Usado para limitar o comprimento máximo da resposta, em tokens. \nValores maiores podem limitar o espaço restante para palavras de prompt, registros de bate-papo e Conhecimento. \nRecomenda-se defini-lo abaixo de dois terços\ngpt-4-1106-preview, gpt-4-vision-preview max token (entrada 128k saída 4k)',
|
||||||
|
maxTokenSettingTip: 'Sua configuração máxima de token é alta, limitando potencialmente o espaço para palavras de prompt, consultas e dados. Considere definir abaixo de 2/3.',
|
||||||
|
setToCurrentModelMaxTokenTip: 'O máximo de tokens é atualizado para 80% do máximo de token do modelo atual {{maxToken}}.',
|
||||||
|
stop_sequences: 'Sequências de parada',
|
||||||
|
stop_sequencesTip: 'Até quatro sequências onde a API irá parar de gerar mais tokens. O texto retornado não conterá a sequência de parada.',
|
||||||
|
stop_sequencesPlaceholder: 'Digite a sequência e pressione Tab',
|
||||||
|
},
|
||||||
|
tone: {
|
||||||
|
Creative: 'Criativo',
|
||||||
|
Balanced: 'Equilibrado',
|
||||||
|
Precise: 'Preciso',
|
||||||
|
Custom: 'Personalizado',
|
||||||
|
},
|
||||||
|
addMoreModel: 'Vá para configurações para adicionar mais modelos',
|
||||||
|
},
|
||||||
|
menus: {
|
||||||
|
status: 'beta',
|
||||||
|
explore: 'Explorar',
|
||||||
|
apps: 'Estúdio',
|
||||||
|
plugins: 'Plugins',
|
||||||
|
pluginsTips: 'Integre plugins de terceiros ou crie plugins de IA compatíveis com o ChatGPT.',
|
||||||
|
datasets: 'Conhecimento',
|
||||||
|
datasetsTips: 'EM BREVE: Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento do contexto LLM.',
|
||||||
|
newApp: 'Novo App',
|
||||||
|
newDataset: 'Criar Conhecimento',
|
||||||
|
tools: 'Ferramentas',
|
||||||
|
},
|
||||||
|
userProfile: {
|
||||||
|
settings: 'Configurações',
|
||||||
|
workspace: 'Espaço de trabalho',
|
||||||
|
createWorkspace: 'Criar Espaço de Trabalho',
|
||||||
|
helpCenter: 'Ajuda',
|
||||||
|
roadmapAndFeedback: 'Roadmap e Feedback',
|
||||||
|
community: 'Comunidade',
|
||||||
|
about: 'Sobre',
|
||||||
|
logout: 'Sair',
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
accountGroup: 'CONTA',
|
||||||
|
workplaceGroup: 'ESPAÇO DE TRABALHO',
|
||||||
|
account: 'Minha conta',
|
||||||
|
members: 'Membros',
|
||||||
|
billing: 'Faturamento',
|
||||||
|
integrations: 'Integrações',
|
||||||
|
language: 'Idioma',
|
||||||
|
provider: 'Fornecedor de modelo',
|
||||||
|
dataSource: 'Fonte de dados',
|
||||||
|
plugin: 'Plugins',
|
||||||
|
apiBasedExtension: 'Extensão baseada em API',
|
||||||
|
},
|
||||||
|
account: {
|
||||||
|
avatar: 'Avatar',
|
||||||
|
name: 'Nome',
|
||||||
|
email: 'E-mail',
|
||||||
|
password: 'Senha',
|
||||||
|
passwordTip: 'Você pode definir uma senha permanente se não quiser usar códigos de login temporários',
|
||||||
|
setPassword: 'Definir uma senha',
|
||||||
|
resetPassword: 'Redefinir senha',
|
||||||
|
currentPassword: 'Senha atual',
|
||||||
|
newPassword: 'Nova senha',
|
||||||
|
confirmPassword: 'Confirmar senha',
|
||||||
|
notEqual: 'As duas senhas são diferentes.',
|
||||||
|
langGeniusAccount: 'Conta Dify',
|
||||||
|
langGeniusAccountTip: 'Sua conta Dify e dados de usuário associados.',
|
||||||
|
editName: 'Editar Nome',
|
||||||
|
showAppLength: 'Mostrar {{length}} apps',
|
||||||
|
},
|
||||||
|
members: {
|
||||||
|
team: 'Equipe',
|
||||||
|
invite: 'Adicionar',
|
||||||
|
name: 'NOME',
|
||||||
|
lastActive: 'ÚLTIMA ATIVIDADE',
|
||||||
|
role: 'FUNÇÕES',
|
||||||
|
pending: 'Pendente...',
|
||||||
|
owner: 'Proprietário',
|
||||||
|
admin: 'Admin',
|
||||||
|
adminTip: 'Pode criar aplicativos e gerenciar configurações da equipe',
|
||||||
|
normal: 'Normal',
|
||||||
|
normalTip: 'Só pode usar aplicativos, não pode criar aplicativos',
|
||||||
|
inviteTeamMember: 'Adicionar membro da equipe',
|
||||||
|
inviteTeamMemberTip: 'Eles podem acessar os dados da sua equipe diretamente após fazer login.',
|
||||||
|
email: 'E-mail',
|
||||||
|
emailInvalid: 'Formato de e-mail inválido',
|
||||||
|
emailPlaceholder: 'Por favor, insira e-mails',
|
||||||
|
sendInvite: 'Enviar Convite',
|
||||||
|
invitedAsRole: 'Convidado como usuário {{role}}',
|
||||||
|
invitationSent: 'Convite enviado',
|
||||||
|
invitationSentTip: 'Convite enviado e eles podem fazer login no Dify para acessar os dados da sua equipe.',
|
||||||
|
invitationLink: 'Link do Convite',
|
||||||
|
failedinvitationEmails: 'Os seguintes usuários não foram convidados com sucesso',
|
||||||
|
ok: 'OK',
|
||||||
|
removeFromTeam: 'Remover da equipe',
|
||||||
|
removeFromTeamTip: 'Removerá o acesso da equipe',
|
||||||
|
setAdmin: 'Definir como administrador',
|
||||||
|
setMember: 'Definir como membro comum',
|
||||||
|
disinvite: 'Cancelar o convite',
|
||||||
|
deleteMember: 'Excluir Membro',
|
||||||
|
you: '(Você)',
|
||||||
|
},
|
||||||
integrations: {
|
integrations: {
|
||||||
connected: 'Conectado',
|
connected: 'Conectado',
|
||||||
google: 'Google',
|
google: 'Google',
|
||||||
googleAccount: 'Entrar com conta do Google',
|
googleAccount: 'Faça login com a conta do Google',
|
||||||
github: 'GitHub',
|
github: 'GitHub',
|
||||||
githubAccount: 'Entrar com conta do GitHub',
|
githubAccount: 'Faça login com a conta do GitHub',
|
||||||
connect: 'Conectar',
|
connect: 'Conectar',
|
||||||
},
|
},
|
||||||
language: {
|
language: {
|
||||||
displayLanguage: 'Idioma de exibição',
|
displayLanguage: 'Idioma de exibição',
|
||||||
timezone: 'Fuso horário',
|
timezone: 'Fuso horário',
|
||||||
},
|
},
|
||||||
voice: {
|
|
||||||
language: {
|
|
||||||
zhHans: 'chinês',
|
|
||||||
enUS: 'inglês',
|
|
||||||
deDE: 'alemão',
|
|
||||||
frFR: 'francês',
|
|
||||||
esES: 'espanhol',
|
|
||||||
itIT: 'italiano',
|
|
||||||
thTH: 'tailandês',
|
|
||||||
idID: 'indonésio',
|
|
||||||
ukUA: 'ucraniana',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
provider: {
|
provider: {
|
||||||
apiKey: 'Chave da API',
|
apiKey: 'Chave da API',
|
||||||
enterYourKey: 'Insira sua chave da API aqui',
|
enterYourKey: 'Insira sua chave da API aqui',
|
||||||
invalidKey: 'Chave da API inválida',
|
invalidKey: 'Chave da API OpenAI inválida',
|
||||||
validatedError: 'Falha na validação: ',
|
validatedError: 'Falha na validação: ',
|
||||||
validating: 'Validando chave...',
|
validating: 'Validando chave...',
|
||||||
saveFailed: 'Falha ao salvar a chave da API',
|
saveFailed: 'Falha ao salvar a chave da API',
|
||||||
apiKeyExceedBill: 'Esta chave da API não possui cota disponível, por favor leia',
|
apiKeyExceedBill: 'Esta CHAVE DE API não tem quota disponível, por favor, leia',
|
||||||
addKey: 'Adicionar chave',
|
addKey: 'Adicionar Chave',
|
||||||
comingSoon: 'Em breve',
|
comingSoon: 'Em breve',
|
||||||
editKey: 'Editar',
|
editKey: 'Editar',
|
||||||
invalidApiKey: 'Chave da API inválida',
|
invalidApiKey: 'Chave da API inválida',
|
||||||
@ -42,49 +213,33 @@ const translation = {
|
|||||||
apiBasePlaceholder: 'A URL base da API do seu ponto de extremidade Azure OpenAI.',
|
apiBasePlaceholder: 'A URL base da API do seu ponto de extremidade Azure OpenAI.',
|
||||||
apiKey: 'Chave da API',
|
apiKey: 'Chave da API',
|
||||||
apiKeyPlaceholder: 'Insira sua chave da API aqui',
|
apiKeyPlaceholder: 'Insira sua chave da API aqui',
|
||||||
helpTip: 'Aprenda sobre o Serviço Azure OpenAI',
|
helpTip: 'Saiba mais sobre o Serviço Azure OpenAI',
|
||||||
},
|
},
|
||||||
openaiHosted: {
|
openaiHosted: {
|
||||||
openaiHosted: 'OpenAI Hospedado',
|
openaiHosted: 'OpenAI Hospedado',
|
||||||
onTrial: 'EM TESTE',
|
onTrial: 'EM TESTE',
|
||||||
exhausted: 'COTA ESGOTADA',
|
exhausted: 'COTA ESGOTADA',
|
||||||
desc: 'O serviço de hospedagem OpenAI fornecido pela Dify permite que você use modelos como o GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros provedores de modelo.',
|
desc: 'O serviço de hospedagem OpenAI fornecido pela Dify permite que você use modelos como GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros fornecedores de modelos.',
|
||||||
callTimes: 'Número de chamadas',
|
callTimes: 'Chamadas',
|
||||||
usedUp: 'Cota de teste esgotada. Adicione seu próprio provedor de modelo.',
|
usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.',
|
||||||
useYourModel: 'Atualmente usando seu próprio provedor de modelo.',
|
useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.',
|
||||||
close: 'Fechar',
|
close: 'Fechar',
|
||||||
},
|
},
|
||||||
voice: {
|
|
||||||
language: {
|
|
||||||
zhHans: 'chinês',
|
|
||||||
enUS: 'inglês',
|
|
||||||
deDE: 'alemão',
|
|
||||||
frFR: 'francês',
|
|
||||||
esES: 'espanhol',
|
|
||||||
itIT: 'italiano',
|
|
||||||
thTH: 'tailandês',
|
|
||||||
idID: 'indonésio',
|
|
||||||
jaJP: 'japonês',
|
|
||||||
koKR: 'coreano',
|
|
||||||
ptBR: 'português',
|
|
||||||
ruRU: 'russo',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
anthropicHosted: {
|
anthropicHosted: {
|
||||||
anthropicHosted: 'Anthropic Claude',
|
anthropicHosted: 'Anthropic Claude',
|
||||||
onTrial: 'EM TESTE',
|
onTrial: 'EM TESTE',
|
||||||
exhausted: 'COTA ESGOTADA',
|
exhausted: 'COTA ESGOTADA',
|
||||||
desc: 'Modelo poderoso, que se destaca em uma ampla gama de tarefas, desde diálogos sofisticados e geração de conteúdo criativo até instruções detalhadas.',
|
desc: 'Modelo poderoso, que se destaca em uma ampla gama de tarefas, desde diálogos sofisticados e geração de conteúdo criativo até instruções detalhadas.',
|
||||||
callTimes: 'Número de chamadas',
|
callTimes: 'Chamadas',
|
||||||
usedUp: 'Cota de teste esgotada. Adicione seu próprio provedor de modelo.',
|
usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.',
|
||||||
useYourModel: 'Atualmente usando seu próprio provedor de modelo.',
|
useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.',
|
||||||
close: 'Fechar',
|
close: 'Fechar',
|
||||||
},
|
},
|
||||||
anthropic: {
|
anthropic: {
|
||||||
using: 'A capacidade de incorporação está usando',
|
using: 'A capacidade de incorporação está sendo utilizada',
|
||||||
enableTip: 'Para habilitar o modelo Anthropic, você precisa se vincular ao OpenAI ou ao Azure OpenAI Service primeiro.',
|
enableTip: 'Para habilitar o modelo da Anthropic, você precisa vincular ao OpenAI ou ao Azure OpenAI Service primeiro.',
|
||||||
notEnabled: 'Não habilitado',
|
notEnabled: 'Não habilitado',
|
||||||
keyFrom: 'Obtenha sua chave da API do Anthropic',
|
keyFrom: 'Obtenha sua chave da API da Anthropic',
|
||||||
},
|
},
|
||||||
encrypted: {
|
encrypted: {
|
||||||
front: 'Sua CHAVE DA API será criptografada e armazenada usando',
|
front: 'Sua CHAVE DA API será criptografada e armazenada usando',
|
||||||
@ -92,29 +247,33 @@ const translation = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
modelProvider: {
|
modelProvider: {
|
||||||
notConfigured: 'O modelo do sistema ainda não foi totalmente configurado e algumas funções podem não estar disponíveis.',
|
notConfigured: 'O modelo do sistema ainda não foi totalmente configurado e algumas funções podem estar indisponíveis.',
|
||||||
systemModelSettings: 'Configurações do modelo do sistema',
|
systemModelSettings: 'Configurações do Modelo do Sistema',
|
||||||
systemModelSettingsLink: 'Por que é necessário configurar um modelo do sistema?',
|
systemModelSettingsLink: 'Por que é necessário configurar um modelo do sistema?',
|
||||||
selectModel: 'Selecione seu modelo',
|
selectModel: 'Selecione seu modelo',
|
||||||
setupModelFirst: 'Por favor, configure seu modelo primeiro',
|
setupModelFirst: 'Por favor, configure seu modelo primeiro',
|
||||||
systemReasoningModel: {
|
systemReasoningModel: {
|
||||||
key: 'Modelo de raciocínio do sistema',
|
key: 'Modelo de Raciocínio do Sistema',
|
||||||
tip: 'Defina o modelo de inferência padrão a ser usado para criar aplicativos, bem como recursos como geração de nome de diálogo e sugestão de próxima pergunta também usarão o modelo de inferência padrão.',
|
tip: 'Defina o modelo de inferência padrão a ser usado para criar aplicativos, bem como recursos como geração de nomes de diálogo e sugestão de próxima pergunta também usarão o modelo de inferência padrão.',
|
||||||
},
|
},
|
||||||
embeddingModel: {
|
embeddingModel: {
|
||||||
key: 'Modelo de incorporação',
|
key: 'Modelo de Incorporação',
|
||||||
tip: 'Defina o modelo padrão para o processamento de incorporação de documentos do Conhecimento, tanto a recuperação quanto a importação do Conhecimento usam este modelo de Incorporação para o processamento de vetorização. A troca causará inconsistência na dimensão do vetor entre o Conhecimento importado e a pergunta, resultando em falha na recuperação. Para evitar falhas na recuperação, não altere este modelo indiscriminadamente.',
|
tip: 'Defina o modelo padrão para o processamento de incorporação de documentos do Conhecimento, tanto a recuperação quanto a importação do Conhecimento usam este modelo de Incorporação para processamento de vetorização. Alterar causará inconsistência na dimensão do vetor entre o Conhecimento importado e a pergunta, resultando em falha na recuperação. Para evitar falhas na recuperação, não altere este modelo indiscriminadamente.',
|
||||||
required: 'O modelo de incorporação é obrigatório',
|
required: 'O modelo de Incorporação é obrigatório',
|
||||||
},
|
},
|
||||||
speechToTextModel: {
|
speechToTextModel: {
|
||||||
key: 'Modelo de fala para texto',
|
key: 'Modelo de Fala para Texto',
|
||||||
tip: 'Defina o modelo padrão para entrada de fala para texto em conversa.',
|
tip: 'Defina o modelo padrão para entrada de fala para texto na conversa.',
|
||||||
|
},
|
||||||
|
ttsModel: {
|
||||||
|
key: 'Modelo de Texto para Fala',
|
||||||
|
tip: 'Defina o modelo padrão para entrada de texto para fala na conversa.',
|
||||||
},
|
},
|
||||||
rerankModel: {
|
rerankModel: {
|
||||||
key: 'Modelo de reclassificação',
|
key: 'Modelo de Reordenação',
|
||||||
tip: 'O modelo de reclassificação reordenará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica',
|
tip: 'O modelo de reordenaenação reorganizará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica',
|
||||||
},
|
},
|
||||||
quota: 'Cota',
|
quota: 'Quota',
|
||||||
searchModel: 'Modelo de pesquisa',
|
searchModel: 'Modelo de pesquisa',
|
||||||
noModelFound: 'Nenhum modelo encontrado para {{model}}',
|
noModelFound: 'Nenhum modelo encontrado para {{model}}',
|
||||||
models: 'Modelos',
|
models: 'Modelos',
|
||||||
@ -122,24 +281,24 @@ const translation = {
|
|||||||
selector: {
|
selector: {
|
||||||
tip: 'Este modelo foi removido. Adicione um modelo ou selecione outro modelo.',
|
tip: 'Este modelo foi removido. Adicione um modelo ou selecione outro modelo.',
|
||||||
emptyTip: 'Nenhum modelo disponível',
|
emptyTip: 'Nenhum modelo disponível',
|
||||||
emptySetting: 'Por favor, vá para as configurações para configurar',
|
emptySetting: 'Por favor, vá para configurações para configurar',
|
||||||
rerankTip: 'Por favor, configure o modelo de reclassificação',
|
rerankTip: 'Por favor, configure o modelo de reordenação',
|
||||||
},
|
},
|
||||||
card: {
|
card: {
|
||||||
quota: 'COTA',
|
quota: 'QUOTA',
|
||||||
onTrial: 'Em Teste',
|
onTrial: 'Em Teste',
|
||||||
paid: 'Pago',
|
paid: 'Pago',
|
||||||
quotaExhausted: 'Cota esgotada',
|
quotaExhausted: 'Quota esgotada',
|
||||||
callTimes: 'Número de chamadas',
|
callTimes: 'Chamadas',
|
||||||
tokens: 'Tokens',
|
tokens: 'Tokens',
|
||||||
buyQuota: 'Comprar Cota',
|
buyQuota: 'Comprar Quota',
|
||||||
priorityUse: 'Uso prioritário',
|
priorityUse: 'Uso prioritário',
|
||||||
removeKey: 'Remover Chave da API',
|
removeKey: 'Remover Chave da API',
|
||||||
tip: 'A cota paga terá prioridade. A cota de teste será usada após a cota paga ser esgotada.',
|
tip: 'A prioridade será dada à quota paga. A quota de teste será usada após a quota paga ser esgotada.',
|
||||||
},
|
},
|
||||||
item: {
|
item: {
|
||||||
deleteDesc: '{{modelName}} está sendo usado como modelos de raciocínio do sistema. Algumas funções não estarão disponíveis após a remoção. Por favor, confirme.',
|
deleteDesc: '{{modelName}} está sendo usado como modelos de raciocínio do sistema. Algumas funções não estarão disponíveis após a remoção. Por favor, confirme.',
|
||||||
freeQuota: 'COTA GRATUITA',
|
freeQuota: 'QUOTA GRATUITA',
|
||||||
},
|
},
|
||||||
addApiKey: 'Adicionar sua chave da API',
|
addApiKey: 'Adicionar sua chave da API',
|
||||||
invalidApiKey: 'Chave da API inválida',
|
invalidApiKey: 'Chave da API inválida',
|
||||||
@ -150,24 +309,25 @@ const translation = {
|
|||||||
freeQuota: {
|
freeQuota: {
|
||||||
howToEarn: 'Como ganhar',
|
howToEarn: 'Como ganhar',
|
||||||
},
|
},
|
||||||
addMoreModelProvider: 'ADICIONAR MAIS PROVEDOR DE MODELO',
|
addMoreModelProvider: 'ADICIONAR MAIS FORNECEDOR DE MODELO',
|
||||||
addModel: 'Adicionar Modelo',
|
addModel: 'Adicionar Modelo',
|
||||||
modelsNum: '{{num}} Modelos',
|
modelsNum: '{{num}} Modelos',
|
||||||
showModels: 'Mostrar Modelos',
|
showModels: 'Mostrar Modelos',
|
||||||
showModelsNum: 'Mostrar {{num}} Modelos',
|
showModelsNum: 'Mostrar {{num}} Modelos',
|
||||||
collapse: 'Recolher',
|
collapse: 'Recolher',
|
||||||
config: 'Configurar',
|
config: 'Configuração',
|
||||||
modelAndParameters: 'Modelo e Parâmetros',
|
modelAndParameters: 'Modelo e Parâmetros',
|
||||||
model: 'Modelo',
|
model: 'Modelo',
|
||||||
featureSupported: '{{feature}} suportado',
|
featureSupported: '{{feature}} suportado',
|
||||||
callTimes: 'Número de chamadas',
|
callTimes: 'Chamadas',
|
||||||
buyQuota: 'Comprar Cota',
|
credits: 'Créditos de Mensagem',
|
||||||
getFreeTokens: 'Obter Tokens gratuitos',
|
buyQuota: 'Comprar Quota',
|
||||||
|
getFreeTokens: 'Obter Tokens Gratuitos',
|
||||||
priorityUsing: 'Uso prioritário',
|
priorityUsing: 'Uso prioritário',
|
||||||
deprecated: 'Descontinuado',
|
deprecated: 'Obsoleto',
|
||||||
confirmDelete: 'confirmar exclusão?',
|
confirmDelete: 'confirmar exclusão?',
|
||||||
quotaTip: 'Tokens gratuitos disponíveis restantes',
|
quotaTip: 'Tokens gratuitos disponíveis restantes',
|
||||||
loadPresets: 'Carregar presentes',
|
loadPresets: 'Carregar Predefinições',
|
||||||
parameters: 'PARÂMETROS',
|
parameters: 'PARÂMETROS',
|
||||||
},
|
},
|
||||||
dataSource: {
|
dataSource: {
|
||||||
@ -197,11 +357,11 @@ const translation = {
|
|||||||
serpapi: {
|
serpapi: {
|
||||||
apiKey: 'Chave da API',
|
apiKey: 'Chave da API',
|
||||||
apiKeyPlaceholder: 'Insira sua chave da API',
|
apiKeyPlaceholder: 'Insira sua chave da API',
|
||||||
keyFrom: 'Obtenha sua chave SerpAPI na página da conta SerpAPI',
|
keyFrom: 'Obtenha sua chave da SerpAPI na página da conta da SerpAPI',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
apiBasedExtension: {
|
apiBasedExtension: {
|
||||||
title: 'As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em aplicativos da Dify.',
|
title: 'As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em todos os aplicativos da Dify.',
|
||||||
link: 'Saiba como desenvolver sua própria Extensão de API.',
|
link: 'Saiba como desenvolver sua própria Extensão de API.',
|
||||||
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
|
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
|
||||||
add: 'Adicionar Extensão de API',
|
add: 'Adicionar Extensão de API',
|
||||||
@ -230,13 +390,13 @@ const translation = {
|
|||||||
type: 'Tipo',
|
type: 'Tipo',
|
||||||
},
|
},
|
||||||
about: {
|
about: {
|
||||||
changeLog: 'Registro de alterações',
|
changeLog: 'Registro de Alterações',
|
||||||
updateNow: 'Atualizar agora',
|
updateNow: 'Atualizar agora',
|
||||||
nowAvailable: 'Dify {{version}} está disponível agora.',
|
nowAvailable: 'Dify {{version}} já está disponível.',
|
||||||
latestAvailable: 'Dify {{version}} é a versão mais recente disponível.',
|
latestAvailable: 'Dify {{version}} é a última versão disponível.',
|
||||||
},
|
},
|
||||||
appMenus: {
|
appMenus: {
|
||||||
overview: 'Visão geral',
|
overview: 'Visão Geral',
|
||||||
promptEng: 'Orquestrar',
|
promptEng: 'Orquestrar',
|
||||||
apiAccess: 'Acesso à API',
|
apiAccess: 'Acesso à API',
|
||||||
logAndAnn: 'Logs e Anúncios',
|
logAndAnn: 'Logs e Anúncios',
|
||||||
@ -247,7 +407,7 @@ const translation = {
|
|||||||
},
|
},
|
||||||
appModes: {
|
appModes: {
|
||||||
completionApp: 'Gerador de Texto',
|
completionApp: 'Gerador de Texto',
|
||||||
chatApp: 'Aplicativo de Chat',
|
chatApp: 'Aplicativo de Bate-papo',
|
||||||
},
|
},
|
||||||
datasetMenus: {
|
datasetMenus: {
|
||||||
documents: 'Documentos',
|
documents: 'Documentos',
|
||||||
@ -255,7 +415,7 @@ const translation = {
|
|||||||
settings: 'Configurações',
|
settings: 'Configurações',
|
||||||
emptyTip: 'O Conhecimento não foi associado, por favor, vá para o aplicativo ou plug-in para completar a associação.',
|
emptyTip: 'O Conhecimento não foi associado, por favor, vá para o aplicativo ou plug-in para completar a associação.',
|
||||||
viewDoc: 'Ver documentação',
|
viewDoc: 'Ver documentação',
|
||||||
relatedApp: 'aplicativos vinculados',
|
relatedApp: 'aplicativos relacionados',
|
||||||
},
|
},
|
||||||
voiceInput: {
|
voiceInput: {
|
||||||
speaking: 'Fale agora...',
|
speaking: 'Fale agora...',
|
||||||
@ -267,10 +427,10 @@ const translation = {
|
|||||||
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
|
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
|
||||||
'gpt-4': 'GPT-4',
|
'gpt-4': 'GPT-4',
|
||||||
'gpt-4-32k': 'GPT-4-32K',
|
'gpt-4-32k': 'GPT-4-32K',
|
||||||
'text-davinci-003': 'Text-Davinci-003',
|
'text-davinci-003': 'Texto-Davinci-003',
|
||||||
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
|
'text-embedding-ada-002': 'Texto-Embutimento-Ada-002',
|
||||||
'whisper-1': 'Whisper-1',
|
'whisper-1': 'Sussurro-1',
|
||||||
'claude-instant-1': 'Claude-Instant',
|
'claude-instant-1': 'Claude-Instantâneo',
|
||||||
'claude-2': 'Claude-2',
|
'claude-2': 'Claude-2',
|
||||||
},
|
},
|
||||||
chat: {
|
chat: {
|
||||||
@ -280,29 +440,29 @@ const translation = {
|
|||||||
conversationNameCanNotEmpty: 'Nome da conversa obrigatório',
|
conversationNameCanNotEmpty: 'Nome da conversa obrigatório',
|
||||||
citation: {
|
citation: {
|
||||||
title: 'CITAÇÕES',
|
title: 'CITAÇÕES',
|
||||||
linkToDataset: 'Link para o Conhecimento',
|
linkToDataset: 'Link para Conhecimento',
|
||||||
characters: 'Personagens:',
|
characters: 'Personagens:',
|
||||||
hitCount: 'Contagem de recuperação:',
|
hitCount: 'Contagem de recuperação:',
|
||||||
vectorHash: 'Hash do vetor:',
|
vectorHash: 'Hash de vetor:',
|
||||||
hitScore: 'Pontuação de recuperação:',
|
hitScore: 'Pontuação de recuperação:',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
promptEditor: {
|
promptEditor: {
|
||||||
placeholder: 'Escreva sua palavra de estímulo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de estímulo',
|
placeholder: 'Escreva sua palavra de incentivo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de incentivo',
|
||||||
context: {
|
context: {
|
||||||
item: {
|
item: {
|
||||||
title: 'Contexto',
|
title: 'Contexto',
|
||||||
desc: 'Inserir modelo de contexto',
|
desc: 'Inserir modelo de contexto',
|
||||||
},
|
},
|
||||||
modal: {
|
modal: {
|
||||||
title: '{{num}} Conhecimento em Contexto',
|
title: '{{num}} Conhecimentos no Contexto',
|
||||||
add: 'Adicionar Contexto',
|
add: 'Adicionar Contexto',
|
||||||
footer: 'Você pode gerenciar os contextos na seção de Contexto abaixo.',
|
footer: 'Você pode gerenciar contextos na seção Contexto abaixo.',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
history: {
|
history: {
|
||||||
item: {
|
item: {
|
||||||
title: 'Histórico da Conversa',
|
title: 'Histórico de Conversas',
|
||||||
desc: 'Inserir modelo de mensagem histórica',
|
desc: 'Inserir modelo de mensagem histórica',
|
||||||
},
|
},
|
||||||
modal: {
|
modal: {
|
||||||
@ -328,17 +488,17 @@ const translation = {
|
|||||||
desc: 'Inserir modelo de consulta do usuário',
|
desc: 'Inserir modelo de consulta do usuário',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
existed: 'Já existe no estímulo',
|
existed: 'Já existe no incentivo',
|
||||||
},
|
},
|
||||||
imageUploader: {
|
imageUploader: {
|
||||||
uploadFromComputer: 'Enviar do computador',
|
uploadFromComputer: 'Enviar do Computador',
|
||||||
uploadFromComputerReadError: 'Falha na leitura da imagem, por favor, tente novamente.',
|
uploadFromComputerReadError: 'Falha ao ler a imagem, por favor, tente novamente.',
|
||||||
uploadFromComputerUploadError: 'Falha no envio da imagem, por favor, envie novamente.',
|
uploadFromComputerUploadError: 'Falha ao enviar a imagem, por favor, envie novamente.',
|
||||||
uploadFromComputerLimit: 'As imagens enviadas não podem exceder {{size}} MB',
|
uploadFromComputerLimit: 'As imagens enviadas não podem exceder {{size}} MB',
|
||||||
pasteImageLink: 'Colar link da imagem',
|
pasteImageLink: 'Colar link da imagem',
|
||||||
pasteImageLinkInputPlaceholder: 'Cole o link da imagem aqui',
|
pasteImageLinkInputPlaceholder: 'Cole o link da imagem aqui',
|
||||||
pasteImageLinkInvalid: 'Link da imagem inválido',
|
pasteImageLinkInvalid: 'Link da imagem inválido',
|
||||||
imageUpload: 'Envio de Imagem',
|
imageUpload: 'Enviar Imagem',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,29 +1,29 @@
|
|||||||
const translation = {
|
const translation = {
|
||||||
custom: 'Customization',
|
custom: 'Personalização',
|
||||||
upgradeTip: {
|
upgradeTip: {
|
||||||
prefix: 'Upgrade your plan to',
|
prefix: 'Atualize seu plano para',
|
||||||
suffix: 'customize your brand.',
|
suffix: 'personalizar sua marca.',
|
||||||
},
|
},
|
||||||
webapp: {
|
webapp: {
|
||||||
title: 'Customize WebApp brand',
|
title: 'Personalizar marca do WebApp',
|
||||||
removeBrand: 'Remove Powered by Dify',
|
removeBrand: 'Remover Powered by Dify',
|
||||||
changeLogo: 'Change Powered by Brand Image',
|
changeLogo: 'Alterar Imagem da Marca Powered by',
|
||||||
changeLogoTip: 'SVG or PNG format with a minimum size of 40x40px',
|
changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 40x40px',
|
||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
title: 'Customize app header brand',
|
title: 'Personalizar cabeçalho do aplicativo',
|
||||||
changeLogoTip: 'SVG or PNG format with a minimum size of 80x80px',
|
changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 80x80px',
|
||||||
},
|
},
|
||||||
upload: 'Upload',
|
upload: 'Enviar',
|
||||||
uploading: 'Uploading',
|
uploading: 'Enviando',
|
||||||
uploadedFail: 'Image upload failed, please re-upload.',
|
uploadedFail: 'Falha no envio da imagem, por favor, envie novamente.',
|
||||||
change: 'Change',
|
change: 'Alterar',
|
||||||
apply: 'Apply',
|
apply: 'Aplicar',
|
||||||
restore: 'Restore Defaults',
|
restore: 'Restaurar Padrões',
|
||||||
customize: {
|
customize: {
|
||||||
contactUs: ' contact us ',
|
contactUs: ' entre em contato conosco ',
|
||||||
prefix: 'To customize the brand logo within the app, please',
|
prefix: 'Para personalizar o logotipo da marca dentro do aplicativo, por favor',
|
||||||
suffix: 'to upgrade to the Enterprise edition.',
|
suffix: 'para fazer upgrade para a edição Enterprise.',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ const translation = {
|
|||||||
type: {
|
type: {
|
||||||
all: 'Todas',
|
all: 'Todas',
|
||||||
builtIn: 'Integradas',
|
builtIn: 'Integradas',
|
||||||
custom: 'Personal...',
|
custom: 'Personalizadas',
|
||||||
},
|
},
|
||||||
contribute: {
|
contribute: {
|
||||||
line1: 'Estou interessado em ',
|
line1: 'Estou interessado em ',
|
||||||
@ -13,7 +13,7 @@ const translation = {
|
|||||||
},
|
},
|
||||||
author: 'Por',
|
author: 'Por',
|
||||||
auth: {
|
auth: {
|
||||||
unauthorized: 'Não autorizado',
|
unauthorized: 'Para Autorizar',
|
||||||
authorized: 'Autorizado',
|
authorized: 'Autorizado',
|
||||||
setup: 'Configurar autorização para usar',
|
setup: 'Configurar autorização para usar',
|
||||||
setupModalTitle: 'Configurar Autorização',
|
setupModalTitle: 'Configurar Autorização',
|
||||||
@ -35,8 +35,8 @@ const translation = {
|
|||||||
urlError: 'Digite uma URL válida',
|
urlError: 'Digite uma URL válida',
|
||||||
examples: 'Exemplos',
|
examples: 'Exemplos',
|
||||||
exampleOptions: {
|
exampleOptions: {
|
||||||
json: 'Clima (JSON)',
|
json: 'Clima(JSON)',
|
||||||
yaml: 'Pet Store (YAML)',
|
yaml: 'Pet Store(YAML)',
|
||||||
blankTemplate: 'Modelo em Branco',
|
blankTemplate: 'Modelo em Branco',
|
||||||
},
|
},
|
||||||
availableTools: {
|
availableTools: {
|
||||||
@ -51,18 +51,22 @@ const translation = {
|
|||||||
authMethod: {
|
authMethod: {
|
||||||
title: 'Método de Autorização',
|
title: 'Método de Autorização',
|
||||||
type: 'Tipo de Autorização',
|
type: 'Tipo de Autorização',
|
||||||
|
keyTooltip: 'Chave do Cabeçalho HTTP, você pode deixar como "Authorization" se não tiver ideia do que é ou definir um valor personalizado',
|
||||||
types: {
|
types: {
|
||||||
none: 'Nenhum',
|
none: 'Nenhum',
|
||||||
api_key: 'Chave de API',
|
api_key: 'Chave de API',
|
||||||
|
apiKeyPlaceholder: 'Nome do cabeçalho HTTP para a Chave de API',
|
||||||
|
apiValuePlaceholder: 'Digite a Chave de API',
|
||||||
},
|
},
|
||||||
key: 'Chave',
|
key: 'Chave',
|
||||||
value: 'Valor',
|
value: 'Valor',
|
||||||
},
|
},
|
||||||
authHeaderPrefix: {
|
authHeaderPrefix: {
|
||||||
|
title: 'Tipo de Autenticação',
|
||||||
types: {
|
types: {
|
||||||
basic: 'Basic',
|
basic: 'Básica',
|
||||||
bearer: 'Bearer',
|
bearer: 'Bearer',
|
||||||
custom: 'Custom',
|
custom: 'Personalizada',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
privacyPolicy: 'Política de Privacidade',
|
privacyPolicy: 'Política de Privacidade',
|
||||||
@ -94,7 +98,7 @@ const translation = {
|
|||||||
},
|
},
|
||||||
noCustomTool: {
|
noCustomTool: {
|
||||||
title: 'Nenhuma ferramenta personalizada!',
|
title: 'Nenhuma ferramenta personalizada!',
|
||||||
content: 'Você não possui ferramentas personalizadas. ',
|
content: 'Adicione e gerencie suas ferramentas personalizadas aqui para construir aplicativos de IA.',
|
||||||
createTool: 'Criar Ferramenta',
|
createTool: 'Criar Ferramenta',
|
||||||
},
|
},
|
||||||
noSearchRes: {
|
noSearchRes: {
|
||||||
@ -104,7 +108,8 @@ const translation = {
|
|||||||
},
|
},
|
||||||
builtInPromptTitle: 'Prompt',
|
builtInPromptTitle: 'Prompt',
|
||||||
toolRemoved: 'Ferramenta removida',
|
toolRemoved: 'Ferramenta removida',
|
||||||
howToGet: 'Como conseguir',
|
notAuthorized: 'Ferramenta não autorizada',
|
||||||
|
howToGet: 'Como obter',
|
||||||
}
|
}
|
||||||
|
|
||||||
export default translation
|
export default translation
|
||||||
|
@ -49,11 +49,14 @@ const translation = {
|
|||||||
test: 'Перевірка',
|
test: 'Перевірка',
|
||||||
},
|
},
|
||||||
authMethod: {
|
authMethod: {
|
||||||
title: 'Спосіб авторизації',
|
title: 'Метод авторизації',
|
||||||
type: 'Тип авторизації',
|
type: 'Тип авторизації',
|
||||||
|
keyTooltip: 'Ключ HTTP-заголовка. Якщо ви не знаєте, залиште його як "Authorization" або встановіть власне значення',
|
||||||
types: {
|
types: {
|
||||||
none: 'Немає',
|
none: 'Відсутня',
|
||||||
api_key: 'API ключі',
|
api_key: 'API-ключ',
|
||||||
|
apiKeyPlaceholder: 'Назва HTTP-заголовка для API-ключа',
|
||||||
|
apiValuePlaceholder: 'Введіть API-ключ',
|
||||||
},
|
},
|
||||||
key: 'Ключ',
|
key: 'Ключ',
|
||||||
value: 'Значення',
|
value: 'Значення',
|
||||||
|
@ -72,6 +72,14 @@ const translation = {
|
|||||||
privacyPolicy: '隐私协议',
|
privacyPolicy: '隐私协议',
|
||||||
privacyPolicyPlaceholder: '请输入隐私协议',
|
privacyPolicyPlaceholder: '请输入隐私协议',
|
||||||
},
|
},
|
||||||
|
test: {
|
||||||
|
title: '测试',
|
||||||
|
parametersValue: '参数和值',
|
||||||
|
parameters: '参数',
|
||||||
|
value: '值',
|
||||||
|
testResult: '测试结果',
|
||||||
|
testResultPlaceholder: '测试结果将显示在这里',
|
||||||
|
},
|
||||||
thought: {
|
thought: {
|
||||||
using: '正在使用',
|
using: '正在使用',
|
||||||
used: '已使用',
|
used: '已使用',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user