Initial commit

This commit is contained in:
2025-10-14 14:17:21 +08:00
commit ac715a8b88
35011 changed files with 3834178 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
const translation = {
title: '어노테이션',
name: '어노테이션 답변',
editBy: '{{author}} 님이 편집한 답변',
noData: {
title: '어노테이션이 없습니다',
description: '여기에서는 앱 디버깅 중에 어노테이션을 편집하거나 일괄적으로 어노테이션을 가져와 고품질의 응답을 생성할 수 있습니다.',
},
table: {
header: {
question: '질문',
answer: '답변',
createdAt: '생성 날짜',
hits: '조회수',
actions: '액션',
addAnnotation: '어노테이션 추가',
bulkImport: '일괄 가져오기',
bulkExport: '일괄 내보내기',
clearAll: '모든 어노테이션 지우기',
clearAllConfirm: '모든 주석을 삭제하시겠습니까?',
},
},
editModal: {
title: '어노테이션 답변 편집',
queryName: '사용자 쿼리',
answerName: '스토리텔러 봇',
yourAnswer: '당신의 답변',
answerPlaceholder: '여기에 답변을 입력하세요',
yourQuery: '당신의 쿼리',
queryPlaceholder: '여기에 쿼리를 입력하세요',
removeThisCache: '이 어노테이션 삭제',
createdAt: '생성 날짜',
},
addModal: {
title: '어노테이션 답변 추가',
queryName: '질문',
answerName: '답변',
answerPlaceholder: '여기에 답변을 입력하세요',
queryPlaceholder: '여기에 질문을 입력하세요',
createNext: '다른 어노테이션이 달린 응답 추가',
},
batchModal: {
title: '일괄 가져오기',
csvUploadTitle: 'CSV 파일을 여기에 드래그 앤 드롭하거나,',
browse: '찾아보기',
tip: 'CSV 파일은 다음 구조를 따라야 합니다:',
question: '질문',
answer: '답변',
contentTitle: '덩어리 내용',
content: '내용',
template: '여기서 템플릿 다운로드',
cancel: '취소',
run: '일괄 실행',
runError: '일괄 실행 실패',
processing: '일괄 처리 중',
completed: '가져오기 완료',
error: '가져오기 오류',
ok: '확인',
},
errorMessage: {
answerRequired: '답변은 필수입니다',
queryRequired: '질문은 필수입니다',
},
viewModal: {
annotatedResponse: '어노테이션 답변',
hitHistory: '조회 기록',
hit: '조회',
hits: '조회수',
noHitHistory: '조회 기록이 없습니다',
},
hitHistoryTable: {
query: '쿼리',
match: '일치',
response: '응답',
source: '소스',
score: '점수',
time: '시간',
},
initSetup: {
title: '어노테이션 답변 초기 설정',
configTitle: '어노테이션 답변 설정',
confirmBtn: '저장하고 활성화하기',
configConfirmBtn: '저장',
},
embeddingModelSwitchTip: '어노테이션 텍스트의 임베딩 모델입니다. 모델을 변경하면 다시 임베딩되며 추가 비용이 발생합니다.',
list: {
delete: {
title: '삭제할 것인지 확실합니까?',
},
},
batchAction: {
cancel: '취소',
delete: '삭제',
selected: '선택됨',
},
}
export default translation

View File

@@ -0,0 +1,87 @@
const translation = {
apiServer: 'API 서버',
apiKey: 'API 키',
status: '상태',
disabled: '비활성화됨',
ok: '서비스 중',
copy: '복사',
copied: '복사 완료',
play: '실행',
pause: '일시 정지',
playing: '실행 중',
loading: '로드 중',
merMaid: {
rerender: '다시 렌더링',
},
never: '없음',
apiKeyModal: {
apiSecretKey: 'API 비밀 키',
apiSecretKeyTips: 'API 키를 보호하여 API 의 남용을 방지하십시오. 프런트엔드 코드에서 평문으로 사용하지 마세요. :)',
createNewSecretKey: '새로운 비밀 키 생성',
secretKey: '비밀 키',
created: '생성 날짜',
lastUsed: '최종 사용 날짜',
generateTips: '이 키를 안전하고 접근 가능한 위치에 보관하십시오.',
},
actionMsg: {
deleteConfirmTitle: '이 비밀 키를 삭제하시겠습니까?',
deleteConfirmTips: '이 작업은 취소할 수 없습니다.',
ok: '확인',
},
completionMode: {
title: '완성 모드 API',
info: '문서, 요약, 번역 등 고품질 텍스트 생성을 위해 사용자 입력을 사용하는 완성 메시지 API 를 사용합니다. 텍스트 생성은 Dify Prompt Engineering 에서 설정한 모델 매개변수와 프롬프트 템플릿에 의존합니다.',
createCompletionApi: '완성 메시지 생성',
createCompletionApiTip: '질의 응답 모드를 지원하기 위해 완성 메시지를 생성합니다.',
inputsTips:
'(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.',
queryTips: '사용자 입력 텍스트 내용.',
blocking: '블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)',
streaming: '스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.',
messageFeedbackApi: '메시지 피드백 (좋아요)',
messageFeedbackApiTip: '엔드 사용자 대신 수신된 메시지를 "좋아요" 또는 "좋아요"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.',
messageIDTip: '메시지 ID',
ratingTip: '좋아요 또는 좋아요, null 은 취소',
parametersApi: '애플리케이션 매개변수 정보 가져오기',
parametersApiTip: '변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다.',
},
chatMode: {
title: '채팅 모드 API',
info: '질의 응답 형식을 사용하는 다목적 대화형 응용 프로그램에는 채팅 메시지 API 를 호출하여 대화를 시작합니다. 반환된 conversation_id 를 전달하여 계속된 대화를 유지합니다. 응답 매개변수 및 템플릿은 Dify Prompt Eng 의 설정에 의존합니다.',
createChatApi: '채팅 메시지 생성',
createChatApiTip: '새로운 대화 메시지를 생성하거나 기존 대화를 계속합니다.',
inputsTips:
'(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.',
queryTips: '사용자 입력/질문 내용',
blocking: '블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)',
streaming: '스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.',
conversationIdTip: '(선택 사항) 대화 ID: 처음 대화의 경우 비워두고, 계속된 경우 컨텍스트에서 conversation_id 를 전달합니다.',
messageFeedbackApi: '메시지 피드백 (좋아요)',
messageFeedbackApiTip: '엔드 사용자 대신 수신된 메시지를 "좋아요" 또는 "좋아요"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.',
messageIDTip: '메시지 ID',
ratingTip: '좋아요 또는 좋아요, null 은 취소',
chatMsgHistoryApi: '채팅 메시지 기록 가져오기',
chatMsgHistoryApiTip: '첫 번째 페이지는 최신의 "limit" 바를 반환합니다. 역순입니다.',
chatMsgHistoryConversationIdTip: '대화 ID',
chatMsgHistoryFirstId: '현재 페이지의 첫 번째 채팅 레코드의 ID. 기본값은 없음입니다.',
chatMsgHistoryLimit: '한 번에 반환되는 채팅 수',
conversationsListApi: '대화 목록 가져오기',
conversationsListApiTip: '현재 사용자의 세션 목록을 가져옵니다. 기본적으로 최근 20 개의 세션이 반환됩니다.',
conversationsListFirstIdTip: '현재 페이지의 마지막 레코드의 ID, 기본값은 없음입니다.',
conversationsListLimitTip: '한 번에 반환되는 채팅 수',
conversationRenamingApi: '대화 이름 변경',
conversationRenamingApiTip: '대화 이름을 변경합니다. 이름은 멀티 세션 클라이언트 인터페이스에 표시됩니다.',
conversationRenamingNameTip: '새 이름',
parametersApi: '애플리케이션 매개변수 정보 가져오기',
parametersApiTip: '변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다.',
},
develop: {
requestBody: '요청 본문',
pathParams: '경로 매개변수',
query: '쿼리',
toc: '목차',
},
regenerate: '재생성',
}
export default translation

View File

@@ -0,0 +1,570 @@
const translation = {
pageTitle: {
line1: '프롬프트',
line2: '엔지니어링',
},
orchestrate: '오케스트레이션',
promptMode: {
simple: '전문가 모드로 전환하여 전체 프롬프트를 편집합니다',
advanced: '전문가 모드',
switchBack: '기본 모드로 전환',
advancedWarning: {
title: '전문가 모드로 전환되었습니다. 프롬프트를 변경하면 기본 모드로 돌아갈 수 없습니다.',
description: '전문가 모드에서는 전체 프롬프트를 편집할 수 있습니다.',
learnMore: '자세히 알아보기',
ok: '확인',
},
operation: {
addMessage: '메시지 추가',
},
contextMissing: '컨텍스트 컴포넌트를 찾을 수 없습니다. 프롬프트의 효과가 충분하지 않을 수 있습니다.',
},
operation: {
applyConfig: '배포',
resetConfig: '재설정',
debugConfig: '디버그',
addFeature: '기능 추가',
automatic: '자동',
stopResponding: '응답 중지',
agree: '좋아요',
disagree: '싫어요',
cancelAgree: '좋아요 취소',
cancelDisagree: '싫어요 취소',
userAction: '사용자',
},
notSetAPIKey: {
title: 'LLM 제공자 키가 설정되지 않았습니다',
trailFinished: '트라이얼 종료',
description: 'LLM 제공자 키가 설정되지 않았습니다. 디버깅하기 전에 설정해야 합니다.',
settingBtn: '설정으로 이동',
},
trailUseGPT4Info: {
title: '현재 gpt-4 는 지원되지 않습니다',
description: 'gpt-4 를 사용하려면 API 키를 설정해야 합니다.',
},
feature: {
groupChat: {
title: '채팅 기능 강화',
description: '사전 대화 설정을 추가하면 사용자 경험이 향상됩니다.',
},
groupExperience: {
title: '경험 강화',
},
conversationOpener: {
title: '대화 시작',
description: '채팅 앱에서 AI 가 사용자에게 처음으로 적극적으로 말을 건다면 일반적으로 환영 메시지로 사용됩니다.',
},
suggestedQuestionsAfterAnswer: {
title: '팔로우업',
description: '다음 질문 제안을 설정하면 사용자에게 더 나은 채팅이 제공됩니다.',
resDes: '사용자의 다음 질문에 대한 3 가지 제안.',
tryToAsk: '질문해보세요',
},
moreLikeThis: {
title: '유사한 항목',
description: '여러 텍스트를 한 번에 생성하고 편집하여 계속해서 생성합니다.',
generateNumTip: '생성 횟수',
tip: '이 기능을 사용하면 추가적인 토큰 오버헤드가 발생합니다',
},
speechToText: {
title: '음성에서 텍스트로',
description: '활성화하면 음성 입력을 사용할 수 있습니다.',
resDes: '음성 입력이 활성화되어 있습니다',
},
textToSpeech: {
title: '텍스트에서 음성으로',
description: '활성화하면 텍스트를 음성으로 변환할 수 있습니다.',
resDes: '텍스트에서 오디오로의 변환이 활성화되어 있습니다',
},
citation: {
title: '인용 및 소유권',
description: '활성화하면 생성된 콘텐츠의 소스 문서 및 소유권 섹션이 표시됩니다.',
resDes: '인용 및 소유권이 활성화되어 있습니다',
},
annotation: {
title: '주석 응답',
description: '유사한 사용자 질문과 우선 일치를 위해 캐시에 고품질 응답을 수동으로 추가할 수 있습니다.',
resDes: '주석 응답이 활성화되어 있습니다',
scoreThreshold: {
title: '점수 임계값',
description: '주석 응답의 유사성 임계값을 설정하는 데 사용됩니다.',
easyMatch: '간단한 일치',
accurateMatch: '정확한 일치',
},
matchVariable: {
title: '매치 변수',
choosePlaceholder: '매치 변수 선택',
},
cacheManagement: '주석',
cached: '주석이 있는',
remove: '삭제',
removeConfirm: '이 주석을 삭제하시겠습니까?',
add: '주석 추가',
edit: '주석 편집',
},
dataSet: {
title: '컨텍스트',
noData: '지식을 컨텍스트로 가져올 수 있습니다',
words: '단어',
textBlocks: '텍스트 블록',
selectTitle: '참조할 지식 선택',
selected: '선택한 지식',
noDataSet: '지식이 없습니다',
toCreate: '생성하기',
notSupportSelectMulti: '현재 다중 선택은 지원되지 않습니다',
queryVariable: {
title: '쿼리 변수',
tip: '이 변수는 컨텍스트 조회에 사용되는 쿼리 입력으로 사용되며, 이 변수 입력에 관련된 컨텍스트 정보를 가져옵니다.',
choosePlaceholder: '쿼리 변수 선택',
noVar: '변수 없음',
noVarTip: '변수 섹션 하단에서 변수를 생성하십시오',
unableToQueryDataSet: '지식을 쿼리할 수 없음',
unableToQueryDataSetTip: '지식 쿼리에 실패했습니다. 정상적으로 쿼리할 수 없는 경우, 컨텍스트 섹션에서 컨텍스트 쿼리 변수를 다시 선택하십시오.',
ok: '확인',
contextVarNotEmpty: '컨텍스트 쿼리 변수를 비울 수 없습니다',
deleteContextVarTitle: '변수 "{{varName}}"를 삭제하시겠습니까?',
deleteContextVarTip: '이 변수는 컨텍스트 쿼리 변수로 설정되어 있어 삭제하면 지식의 정상적인 사용에 영향을 미칩니다. 삭제하려면 컨텍스트 섹션에서 다시 선택하십시오.',
},
},
tools: {
title: '도구',
tips: '도구는 사용자 입력이나 변수를 요청 매개변수로 사용하여 외부 데이터를 컨텍스트로 쿼리하는 표준적인 API 호출 방법을 제공합니다.',
toolsInUse: '{{count}}개의 도구가 사용 중',
modal: {
title: '도구',
toolType: {
title: '도구 유형',
placeholder: '도구 유형 선택',
},
name: {
title: '이름',
placeholder: '이름 입력',
},
variableName: {
title: '변수 이름',
placeholder: '변수 이름 입력',
},
},
},
conversationHistory: {
title: '대화 기록',
description: '대화 역할에 접두사 이름을 설정합니다',
tip: '대화 기록이 활성화되어 있지 않습니다. 위의 프롬프트에 <histories>를 추가하십시오.',
learnMore: '자세히 알아보기',
editModal: {
title: '대화 역할 이름 편집',
userPrefix: '사용자 접두사',
assistantPrefix: '어시스턴트 접두사',
},
},
toolbox: {
title: '도구 상자',
},
moderation: {
title: '콘텐츠 모더레이션',
description: '모더레이션 API 를 사용하거나 기밀 단어 목록을 유지함으로써 모델 출력을 안전하게 합니다.',
allEnabled: '입력/출력 콘텐츠가 모두 활성화되어 있습니다',
inputEnabled: '입력 콘텐츠가 활성화되어 있습니다',
outputEnabled: '출력 콘텐츠가 활성화되어 있습니다',
modal: {
title: '콘텐츠 모더레이션 설정',
provider: {
title: '제공자',
openai: 'OpenAI 모더레이션',
openaiTip: {
prefix: 'OpenAI 모더레이션에는',
suffix: '에 OpenAI API 키가 설정되어 있어야 합니다.',
},
keywords: '키워드',
},
keywords: {
tip: '한 줄에 하나씩, 줄 바꿈으로 입력하세요. 한 줄 당 최대 100 자.',
placeholder: '한 줄씩 입력하세요',
line: '줄',
},
content: {
input: '입력 콘텐츠 모더레이션',
output: '출력 콘텐츠 모더레이션',
preset: '프리셋 응답',
placeholder: '프리셋 응답 내용을 입력하세요',
condition: '최소한 하나의 입력 및 출력 콘텐츠를 모더레이션합니다',
fromApi: '프리셋 응답은 API 에서 반환됩니다',
errorMessage: '프리셋 응답은 비워둘 수 없습니다',
supportMarkdown: '마크다운이 지원됩니다',
},
openaiNotConfig: {
before: 'OpenAI 모더레이션에는',
after: '에 OpenAI API 키가 설정되어 있어야 합니다.',
},
},
contentEnableLabel: '콘텐츠 모더레이션이 활성화됨',
},
fileUpload: {
title: '파일 업로드',
description: '채팅 입력 상자에서 이미지, 문서 및 기타 파일 업로드를 지원합니다.',
supportedTypes: '지원 파일 유형',
numberLimit: '최대 업로드 수',
modalTitle: '파일 업로드 설정',
},
imageUpload: {
title: '이미지 업로드',
description: '이미지 업로드를 지원합니다.',
supportedTypes: '지원 파일 유형',
numberLimit: '최대 업로드 수',
modalTitle: '이미지 업로드 설정',
},
bar: {
empty: '웹 앱 사용자 경험을 향상시키는 기능 활성화',
enableText: '기능 활성화됨',
manage: '관리',
},
documentUpload: {
title: '문서',
description: '문서를 활성화하면 모델이 문서를 받아들이고 문서에 대한 질문에 답할 수 있습니다.',
},
audioUpload: {
title: '오디오',
description: '오디오를 활성화하면 모델이 전사 및 분석을 위해 오디오 파일을 처리할 수 있습니다.',
},
},
automatic: {
},
resetConfig: {
title: '리셋을 확인하시겠습니까?',
message: '변경 사항이 취소되고, 마지막으로 공개된 구성이 복원됩니다.',
},
errorMessage: {
nameOfKeyRequired: '키 이름: {{key}} 이 필요합니다',
valueOfVarRequired: '{{key}}의 값은 비워둘 수 없습니다',
queryRequired: '요청 텍스트가 필요합니다.',
waitForResponse: '이전 메시지에 대한 응답이 완료될 때까지 기다려 주세요.',
waitForBatchResponse: '배치 작업에 대한 응답이 완료될 때까지 기다려 주세요.',
notSelectModel: '모델을 선택해 주세요',
waitForImgUpload: '이미지 업로드가 완료될 때까지 기다려 주세요',
waitForFileUpload: '파일이 업로드될 때까지 기다리십시오.',
},
chatSubTitle: '단계',
completionSubTitle: '접두사 프롬프트',
promptTip: '프롬프트는 AI 의 응답을 지시하고 제한하여 유도합니다. {{input}}과 같은 변수를 삽입하세요. 이 프롬프트는 사용자에게 표시되지 않습니다.',
formattingChangedTitle: '포맷이 변경되었습니다',
formattingChangedText: '포맷을 변경하면 디버그 영역이 재설정됩니다. 계속하시겠습니까?',
variableTitle: '변수',
variableTip: '사용자는 양식에 변수를 입력하고, 프롬프트 내의 변수가 자동으로 대체됩니다.',
notSetVar: '변수를 사용하면 사용자는 양식에 입력할 때 프롬프트의 단어나 시작 단어를 소개할 수 있습니다. "{{input}}"을 프롬프트 단어에 입력해 보세요.',
autoAddVar: '프리프롬프트에서 참조되는 미정의 변수가 있습니다. 사용자 입력 양식에 추가하시겠습니까?',
variableTable: {
key: '변수 키',
name: '사용자 입력 필드명',
optional: '옵션',
type: '입력 타입',
action: '액션',
typeString: '문자열',
typeSelect: '선택',
},
varKeyError: {
canNoBeEmpty: '{{key}}가 필요합니다',
tooLong: '{{key}}가 너무 깁니다. 30 자를 넘을 수 없습니다',
notValid: '{{key}}가 유효하지 않습니다. 문자, 숫자, 밑줄만 포함할 수 있습니다',
notStartWithNumber: '{{key}}는 숫자로 시작할 수 없습니다',
keyAlreadyExists: '{{key}}는 이미 존재합니다',
},
otherError: {
promptNoBeEmpty: '프롬프트를 비울 수 없습니다',
historyNoBeEmpty: '프롬프트에 대화 기록을 설정해야 합니다',
queryNoBeEmpty: '프롬프트에 쿼리를 설정해야 합니다',
},
variableConfig: {
'addModalTitle': '입력 필드 추가',
'editModalTitle': '입력 필드 편집',
'description': '{{varName}} 변수 설정',
'fieldType': '필드 타입',
'string': '짧은 텍스트',
'text-input': '짧은 텍스트',
'paragraph': '문단',
'select': '선택',
'number': '숫자',
'notSet': '설정되지 않음. 프롬프트의 프리픽스에 {{input}}을 입력해 보세요.',
'stringTitle': '폼 텍스트 상자 옵션',
'maxLength': '최대 길이',
'options': '옵션',
'addOption': '옵션 추가',
'apiBasedVar': 'API 기반 변수',
'varName': '변수명',
'labelName': '레이블명',
'inputPlaceholder': '입력하세요',
'required': '필수',
'hide': '숨기기',
'errorMsg': {
labelNameRequired: '레이블명은 필수입니다',
varNameCanBeRepeat: '변수명은 중복될 수 없습니다',
atLeastOneOption: '적어도 하나의 옵션이 필요합니다',
optionRepeat: '옵션이 중복되어 있습니다',
},
'defaultValue': '기본값',
'noDefaultValue': '기본값 없음',
'selectDefaultValue': '기본값 선택',
'file': {
image: {
name: '이미지',
},
audio: {
name: '오디오',
},
document: {
name: '문서',
},
video: {
name: '비디오',
},
custom: {
description: '다른 파일 형식을 지정합니다.',
name: '다른 파일 형식',
createPlaceholder: ' 파일 확장자(예: .doc',
},
supportFileTypes: '지원 파일 형식',
},
'content': '콘텐츠',
'single-file': '단일 파일',
'both': '둘다',
'multi-files': '파일 목록',
'uploadFileTypes': '파일 형식 업로드',
'maxNumberOfUploads': '최대 업로드 수',
'localUpload': '로컬 업로드',
'json': 'JSON 코드',
'jsonSchema': 'JSON 스키마',
'checkbox': '체크박스',
'optional': '선택 사항',
'unit': '단위',
'uploadMethod': '업로드 방법',
'startChecked': '시작 체크',
'tooltips': '툴팁',
'placeholder': '자리 표시자',
'noDefaultSelected': '선택하지 않음',
'displayName': '표시 이름',
'showAllSettings': '모든 설정 표시',
'startSelectedOption': '선택한 옵션 시작',
'unitPlaceholder': '숫자 뒤에 단위 표시(예: 토큰)',
'placeholderPlaceholder': '필드가 비어 있을 때 표시할 텍스트를 입력합니다.',
'defaultValuePlaceholder': '필드를 미리 채울 기본값을 입력합니다.',
'tooltipsPlaceholder': '레이블 위로 마우스를 가져갈 때 표시되는 유용한 텍스트를 입력합니다.',
},
vision: {
name: '비전',
description: '비전을 활성화하면 모델이 이미지를 받아와 관련 질문에 답변할 수 있습니다.',
settings: '설정',
visionSettings: {
title: '비전 설정',
resolution: '해상도',
resolutionTooltip: `저해상도는 모델에게 512 x 512 해상도의 저해상도 이미지를 제공하여 65 토큰의 예산으로 이미지를 표현합니다. 이로 인해 API 는 더 빠른 응답을 제공하며 높은 세부 정보가 필요한 경우 토큰 소모를 늘립니다.
\n
고해상도는 먼저 모델에게 저해상도 이미지를 보여주고, 그 후 입력 이미지 크기에 따라 512px 의 정사각형 세부 사진을 만듭니다. 각 세부 사진에 대해 129 토큰의 예산을 사용합니다.`,
high: '고',
low: '저',
uploadMethod: '업로드 방식',
both: '모두',
localUpload: '로컬 업로드',
url: 'URL',
uploadLimit: '업로드 제한',
},
onlySupportVisionModelTip: '비전 모델만 지원',
},
voice: {
name: '음성',
defaultDisplay: '기본 음성',
description: '텍스트 읽기 음성 설정',
settings: '설정',
voiceSettings: {
title: '음성 설정',
language: '언어',
resolutionTooltip: '텍스트 읽기 음성 언어를 지원합니다.',
voice: '음성',
autoPlay: '자동 재생',
autoPlayEnabled: '켜다',
autoPlayDisabled: '폐쇄',
},
},
openingStatement: {
title: '대화 시작',
add: '추가',
writeOpener: '오프너 작성',
placeholder: '여기에 오프너 메시지를 작성하세요. 변수를 사용할 수 있습니다. {{variable}}를 입력해보세요.',
openingQuestion: '시작 질문',
openingQuestionPlaceholder: '변수를 사용할 수 있습니다. {{variable}}을(를) 입력해 보세요.',
noDataPlaceHolder: '사용자와의 대화를 시작하면 대화 애플리케이션에서 그들과 더 밀접한 관계를 구축하는 데 도움이 됩니다.',
varTip: '변수를 사용할 수 있습니다. {{variable}}를 입력해보세요.',
tooShort: '대화 시작에는 최소 20 단어의 초기 프롬프트가 필요합니다.',
notIncludeKey: '초기 프롬프트에 변수 {{key}}가 포함되어 있지 않습니다. 초기 프롬프트에 추가하세요.',
},
modelConfig: {
model: '모델',
setTone: '응답 톤 설정',
title: '모델 및 매개변수',
modeType: {
chat: '채팅',
completion: '완성',
},
},
inputs: {
title: '디버그 및 미리보기',
noPrompt: '프리프롬프트 입력란에 몇 가지 프롬프트를 작성해보세요.',
userInputField: '사용자 입력 필드',
noVar: '변수 값을 입력하세요. 새로운 세션이 시작될 때마다 프롬프트 단어가 자동으로 대체됩니다.',
chatVarTip: '변수 값을 입력하세요. 새로운 세션이 시작될 때마다 프롬프트 단어가 자동으로 대체됩니다.',
completionVarTip: '변수 값을 입력하세요. 질문이 전송될 때마다 프롬프트 단어가 자동으로 대체됩니다.',
previewTitle: '프롬프트 미리보기',
queryTitle: '쿼리 내용',
queryPlaceholder: '요청 텍스트를 입력하세요.',
run: '실행',
},
result: '출력 텍스트',
datasetConfig: {
settingTitle: '리트리벌 설정',
knowledgeTip: '지식을 추가하려면 "+" 버튼을 클릭하세요.',
retrieveOneWay: {
title: 'N-to-1 리트리벌',
description: '사용자 의도와 지식 설명을 기반으로, 에이전트가 자율적으로 최적의 지식을 선택합니다. 개별적이고 제한된 지식을 가진 애플리케이션에 적합합니다.',
},
retrieveMultiWay: {
title: '멀티패스 리트리벌',
description: '사용자 의도에 따라 모든 지식을 쿼리하고, 관련 텍스트를 여러 소스에서 가져와 다시 순위를 매긴 후 사용자 쿼리에 가장 적합한 결과를 선택합니다. 재순위 모델 API 의 구성이 필요합니다.',
},
rerankModelRequired: '재순위 모델이 필요합니다',
params: '매개변수',
top_k: '상위 K',
top_kTip: '사용자 질문에 가장 유사한 청크를 필터링하는 데 사용됩니다. 시스템은 선택한 모델의 max_tokens 에 따라 동적으로 상위 K 값을 조정합니다.',
score_threshold: '점수 임계값',
score_thresholdTip: '청크 필터링의 유사성 임계값을 설정하는 데 사용됩니다.',
retrieveChangeTip: '인덱스 모드 및 리트리벌 모드를 변경하면 이 지식과 관련된 애플리케이션에 영향을 줄 수 있습니다.',
embeddingModelRequired: '구성된 임베딩 모델이 필요합니다.',
},
debugAsSingleModel: '단일 모델로 디버그',
debugAsMultipleModel: '다중 모델로 디버그',
duplicateModel: '복제',
publishAs: '로 게시',
assistantType: {
name: '어시스턴트 유형',
chatAssistant: {
name: '기본 어시스턴트',
description: '대규모 언어 모델을 사용하여 채팅 기반의 어시스턴트를 구축합니다',
},
agentAssistant: {
name: '에이전트 어시스턴트',
description: '작업을 자율적으로 완료하기 위한 도구를 선택할 수 있는 인텔리전트 에이전트를 구축합니다',
},
},
agent: {
agentMode: '에이전트 모드',
agentModeDes: '에이전트의 추론 모드 유형을 설정합니다',
agentModeType: {
ReACT: 'ReAct',
functionCall: '함수 호출',
},
setting: {
name: '에이전트 설정',
description: '에이전트 어시스턴트 설정에서는 에이전트 모드나 빌트인 프롬프트 등 고급 기능을 설정할 수 있습니다. 에이전트 유형에서만 사용할 수 있습니다.',
maximumIterations: {
name: '최대 반복 횟수',
description: '에이전트 어시스턴트가 실행할 수 있는 반복 횟수를 제한합니다',
},
},
buildInPrompt: '빌트인 프롬프트',
firstPrompt: '첫 번째 프롬프트',
nextIteration: '다음 반복',
promptPlaceholder: '여기에 프롬프트를 입력하세요',
tools: {
name: '도구',
description: '도구를 사용하여 인터넷 검색이나 과학적 계산 등 LLM 의 기능을 확장할 수 있습니다',
enabled: '활성화됨',
},
},
codegen: {
instruction: '지시',
apply: '적용하다',
generatedCodeTitle: '생성된 코드',
title: '코드 생성기',
applyChanges: '변경 사항 적용',
resTitle: '생성된 코드',
noDataLine1: '왼쪽에 사용 사례를 설명하십시오.',
overwriteConfirmTitle: '기존 코드를 덮어쓰시겠습니까?',
generate: '창조하다',
loading: '코드 생성 중...',
overwriteConfirmMessage: '이 작업은 기존 코드를 덮어씁니다. 계속하시겠습니까?',
noDataLine2: '코드 미리 보기가 여기에 표시됩니다.',
instructionPlaceholder: '생성하려는 코드에 대한 자세한 설명을 입력합니다.',
description: '코드 생성기는 구성된 모델을 사용하여 지시에 따라 고품질 코드를 생성합니다. 명확하고 자세한 지침을 제공하십시오.',
},
generate: {
template: {
pythonDebugger: {
name: '파이썬 디버거',
instruction: '지시에 따라 코드를 생성하고 디버깅할 수 있는 봇',
},
translation: {
name: '번역',
instruction: '여러 언어를 번역할 수 있는 번역기',
},
professionalAnalyst: {
name: '전문 분석가',
instruction: '인사이트를 추출하고, 위험을 식별하고, 긴 보고서에서 주요 정보를 단일 메모로 추출합니다.',
},
excelFormulaExpert: {
name: 'Excel 수식 전문가',
instruction: '초보 사용자가 사용자 지시에 따라 Excel 수식을 이해, 사용 및 생성할 수 있도록 도와주는 챗봇',
},
travelPlanning: {
name: '여행 계획',
instruction: '여행 계획 도우미는 사용자가 쉽게 여행을 계획할 수 있도록 설계된 지능형 도구입니다',
},
SQLSorcerer: {
name: 'SQL 마법사',
instruction: '일상적인 언어를 SQL 쿼리로 변환',
},
GitGud: {
name: '깃구드',
instruction: '사용자가 설명한 버전 제어 작업을 기반으로 적절한 Git 명령 생성',
},
meetingTakeaways: {
name: '회의 요점',
instruction: '회의를 토론 주제, 핵심 내용 및 실행 항목을 포함한 간결한 요약으로 추출합니다.',
},
writingsPolisher: {
name: '글쓰기 폴리셔',
instruction: '고급 카피에디팅 기술을 사용하여 글쓰기 향상',
},
},
apply: '적용하다',
instruction: '지시',
resTitle: '생성된 프롬프트',
generate: '창조하다',
tryIt: '사용해 보기',
title: '프롬프트 생성기',
overwriteTitle: '기존 구성을 재정의하시겠습니까?',
loading: '응용 프로그램 오케스트레이션...',
overwriteMessage: '이 프롬프트를 적용하면 기존 구성이 재정의됩니다.',
description: '프롬프트 생성기는 구성된 모델을 사용하여 더 높은 품질과 더 나은 구조를 위해 프롬프트를 최적화합니다. 명확하고 상세한 지침을 작성하십시오.',
to: '에게',
press: '프레스',
dismiss: '해제',
version: '버전',
latest: '최신',
versions: '버전들',
optimizationNote: '최적화 참고',
optional: '선택 사항',
idealOutput: '이상적인 출력',
insertContext: '문맥을 삽입하세요.',
optimizePromptTooltip: '프롬프트 생성기에서 최적화하기',
instructionPlaceHolderLine1: '출력을 더 간결하게 하여 핵심 내용을 유지하세요.',
instructionPlaceHolderLine3: '톤이 너무 거칠어요, 좀 더 친근하게 만들어 주세요.',
instructionPlaceHolderLine2: '출력 형식이 잘못되었습니다. JSON 형식을 엄격히 준수해 주시기 바랍니다.',
idealOutputPlaceholder: '당신의 이상적인 응답 형식, 길이, 톤 및 내용 요구 사항을 설명하십시오...',
instructionPlaceHolderTitle: '이 프롬프트를 어떻게 개선하고 싶은지 설명하세요. 예를 들어:',
newNoDataLine1: '왼쪽 열에 지침을 작성하고 생성 버튼을 클릭하여 응답을 확인하세요.',
codeGenInstructionPlaceHolderLine: '입력 및 출력의 데이터 유형과 변수 처리 방법과 같은 피드백이 더 상세할수록 코드 생성이 더 정확해질 것입니다.',
},
warningMessage: {
timeoutExceeded: '시간 초과로 인해 결과가 표시되지 않습니다. 전체 결과를 수집하려면 로그를 참조하십시오.',
},
noResult: '출력이 여기에 표시됩니다.',
}
export default translation

View File

@@ -0,0 +1,100 @@
const translation = {
title: '로그',
description: '로그는 애플리케이션 실행 상태를 기록합니다. 사용자 입력 및 AI 응답이 포함됩니다.',
dateTimeFormat: 'YYYY/MM/DD HH:mm:ss',
table: {
header: {
updatedTime: '업데이트 시간',
time: '생성 시간',
endUser: '엔드 유저 또는 계정',
input: '입력',
output: '출력',
summary: '요약',
messageCount: '메시지 수',
userRate: '사용자 비율',
adminRate: '관리자 비율',
startTime: '시작 시간',
status: '상태',
runtime: '실행 시간',
tokens: '토큰',
user: '엔드 유저 또는 계정',
version: '버전',
},
pagination: {
previous: '이전',
next: '다음',
},
empty: {
noChat: '아직 대화가 없습니다',
noOutput: '출력이 없습니다',
element: {
title: '여기 누구 있어요?',
content:
'여기에서 엔드 유저와 AI 애플리케이션 간 상호 작용을 관찰하고 주석을 달아 AI 정확도를 계속 향상시킵니다. 웹 앱을 <shareLink>공유</shareLink>하거나 <testLink>테스트</testLink>하고 다시 이 페이지로 돌아오세요.',
},
},
},
detail: {
time: '시간',
conversationId: '대화 ID',
promptTemplate: '프롬프트 템플릿',
promptTemplateBeforeChat: '채팅 전 프롬프트 템플릿 - 시스템 메시지로',
annotationTip: '{{user}}에 의해 향상됨',
timeConsuming: '시간 소요',
second: '초',
tokenCost: '토큰 비용',
loading: '로드 중',
operation: {
like: '좋아요',
dislike: '좋아요 취소',
addAnnotation: '향상 추가',
editAnnotation: '향상 편집',
annotationPlaceholder: 'AI 가 응답할 것으로 예상하는 답변을 입력하여 향후 모델 세부 조정 및 텍스트 생성 품질 지속적 향상을 위해 개선할 수 있습니다.',
},
variables: '변수',
uploadImages: '업로드된 이미지',
modelParams: '모델 매개 변수',
},
filter: {
period: {
today: '오늘',
last7days: '지난 7 일',
last4weeks: '지난 4 주',
last3months: '지난 3 개월',
last12months: '지난 12 개월',
monthToDate: '월 초부터 오늘까지',
quarterToDate: '분기 초부터 오늘까지',
yearToDate: '연 초부터 오늘까지',
allTime: '모든 기간',
},
annotation: {
all: '모두',
annotated: '향상 주석 ({{count}} 개 항목)',
not_annotated: '주석 없음',
},
sortBy: '정렬 기준:',
descending: '내림차순',
ascending: '오름차순',
},
workflowTitle: '워크플로우 로그',
workflowSubtitle: '이 로그는 Automate 의 작업을 기록했습니다.',
runDetail: {
title: '대화 로그',
workflowTitle: '로그 세부 정보',
fileListDetail: '세부',
fileListLabel: '파일 세부 정보',
},
promptLog: '프롬프트 로그',
agentLog: '에이전트 로그',
viewLog: '로그 보기',
agentLogDetail: {
agentMode: '에이전트 모드',
toolUsed: '사용된 도구',
iterations: '반복',
iteration: '반복',
finalProcessing: '최종 처리',
},
dateFormat: 'MM/DD/YYYY',
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
welcome: {
firstStepTip: '시작하려면,',
enterKeyTip: '아래에 OpenAI API 키를 입력하세요',
getKeyTip: 'OpenAI 대시보드에서 API 키를 가져오세요',
placeholder: '나의 OpenAI API 키 (예: sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: '{{providerName}} 트라이얼 쿼터를 사용 중입니다.',
description: '트라이얼 쿼터는 테스트용으로 제공됩니다. 트라이얼 쿼터 소진 전에 고유한 모델 제공자를 설정하거나 추가 쿼터를 구매하세요.',
},
exhausted: {
title: '트라이얼 쿼터가 소진되었습니다. API 키를 설정하세요.',
description: '트라이얼 쿼터가 소진되었습니다. 고유한 모델 제공자를 설정하거나 추가 쿼터를 구매하세요.',
},
},
selfHost: {
title: {
row1: '시작하려면,',
row2: '먼저 모델 제공자를 설정하세요.',
},
},
callTimes: '요청 횟수',
usedToken: '사용된 토큰',
setAPIBtn: '모델 제공자 설정으로 이동',
tryCloud: '또는 Dify 의 클라우드 버전을 무료로 체험해보세요',
},
overview: {
title: '개요',
appInfo: {
explanation: '사용하기 쉬운 AI 웹앱',
accessibleAddress: '공개 URL',
preview: '미리보기',
regenerate: '재생성',
regenerateNotice: '공개 URL 을 재생성하시겠습니까?',
preUseReminder: '계속하기 전에 웹앱을 활성화하세요.',
settings: {
entry: '설정',
title: '웹앱 설정',
webName: '웹앱 이름',
webDesc: '웹앱 설명',
webDescTip: '이 텍스트는 클라이언트 측에서 표시되며, 애플리케이션의 사용 방법에 대한 기본적인 안내를 제공합니다.',
webDescPlaceholder: '웹앱 설명을 입력하세요',
language: '언어',
workflow: {
title: '워크플로 단계',
show: '표시',
hide: '숨기기',
showDesc: 'WebApp 에서 워크플로 세부 정보 표시 또는 숨기기',
subTitle: '워크플로우 세부 정보',
},
chatColorTheme: '챗봇 색상 테마',
chatColorThemeDesc: '챗봇의 색상 테마를 설정하세요',
chatColorThemeInverted: '반전',
invalidHexMessage: '잘못된 16 진수 값',
invalidPrivacyPolicy: '유효하지 않은 개인정보처리방침 링크입니다. http 또는 https 로 시작하는 유효한 링크를 사용해 주세요',
more: {
entry: '추가 설정 보기',
copyright: '저작권',
copyRightPlaceholder: '저작권자 또는 조직 이름을 입력하세요',
privacyPolicy: '개인정보 처리방침',
privacyPolicyPlaceholder: '개인정보 처리방침 링크를 입력하세요',
privacyPolicyTip: '방문자가 애플리케이션이 수집하는 데이터를 이해하고, Dify 의 <privacyPolicyLink>개인정보 처리방침</privacyPolicyLink>을 참조할 수 있도록 합니다.',
customDisclaimer: '사용자 지정 면책 조항',
customDisclaimerPlaceholder: '사용자 지정 면책 조항 텍스트를 입력합니다.',
customDisclaimerTip: '사용자 지정 고지 사항 텍스트는 클라이언트 쪽에 표시되어 응용 프로그램에 대한 추가 정보를 제공합니다',
copyrightTip: '웹앱에 저작권 정보 표시',
copyrightTooltip: '프로페셔널 플랜 이상으로 업그레이드하세요.',
},
sso: {
label: 'SSO 인증',
title: '웹앱 SSO',
tooltip: '관리자에게 문의하여 web app SSO 를 사용하도록 설정합니다.',
description: '모든 사용자는 WebApp 을 사용하기 전에 SSO 로 로그인해야 합니다.',
},
modalTip: '클라이언트 쪽 웹앱 설정.',
},
embedded: {
entry: '임베드',
title: '웹사이트에 임베드하기',
explanation: '챗봇 앱을 웹사이트에 임베드하는 방법을 선택하세요.',
iframe: '웹사이트의 원하는 위치에 챗봇 앱을 추가하려면 이 iframe 을 HTML 코드에 추가하세요.',
scripts: '웹사이트의 우측 하단에 챗봇 앱을 추가하려면 이 코드를 HTML 에 추가하세요.',
chromePlugin: 'Dify Chatbot Chrome 확장 프로그램 설치',
copied: '복사되었습니다',
copy: '복사',
},
qrcode: {
title: '공유용 QR 코드',
scan: '앱 공유를 스캔하세요',
download: 'QR 코드 다운로드',
},
customize: {
way: '방법',
entry: '사용자화',
title: 'AI 웹앱 사용자화',
explanation: '시나리오와 스타일 요구에 따라 웹앱의 프론트엔드를 사용자화할 수 있습니다.',
way1: {
name: '클라이언트 코드를 포크하여 수정하고 Vercel 에 배포하기 (권장)',
step1: '클라이언트 코드를 포크하여 수정합니다',
step1Tip: '여기를 클릭하여 소스 코드를 GitHub 계정에 포크하고 코드를 수정하세요',
step1Operation: 'Dify-WebClient',
step2: 'Vercel 에 배포합니다',
step2Tip: '여기를 클릭하여 리포지토리를 Vercel 에 임포트하고 배포하세요',
step2Operation: '리포지토리 임포트',
step3: '환경 변수를 설정합니다',
step3Tip: 'Vercel 에 다음 환경 변수를 추가하세요',
},
way2: {
name: '클라이언트 측 코드를 작성하여 API 를 호출하고 서버에 배포합니다',
operation: '문서',
},
},
launch: '발사',
},
apiInfo: {
title: '백엔드 서비스 API',
explanation: '개발자의 애플리케이션에 쉽게 통합할 수 있습니다',
accessibleAddress: '서비스 API 엔드포인트',
doc: 'API 레퍼런스',
},
status: {
running: '서비스 중',
disable: '비활성',
},
},
analysis: {
title: '분석',
ms: 'ms',
tokenPS: '토큰/초',
totalMessages: {
title: '총 메시지 수',
explanation: '일일 AI 상호작용 수.',
},
totalConversations: {
title: '총 대화 수',
explanation: '일일 AI 대화 수; 프롬프트 엔지니어링/디버깅 제외.',
},
activeUsers: {
title: '활성 사용자 수',
explanation: 'AI 와의 Q&A 에 참여하는 고유 사용자 수; 엔지니어링/디버깅 목적의 프롬프트는 제외됩니다.',
},
tokenUsage: {
title: '토큰 사용량',
explanation: '애플리케이션의 언어 모델의 일일 토큰 사용량을 반영하여 비용 관리에 도움이 됩니다.',
consumed: '소비된 토큰',
},
avgSessionInteractions: {
title: '평균 세션 상호작용 수',
explanation: '사용자와 AI 의 연속적인 커뮤니케이션 수; 대화형 애플리케이션을 위한 것입니다.',
},
avgUserInteractions: {
title: '평균 사용자 상호작용 수',
explanation: '사용자의 일일 사용 빈도를 반영합니다. 이 지표는 사용자의 임계를 반영합니다.',
},
userSatisfactionRate: {
title: '사용자 만족도율',
explanation: '1,000 개의 메시지 당 "좋아요" 수입니다. 이는 사용자가 매우 만족한 응답의 비율을 나타냅니다.',
},
avgResponseTime: {
title: '평균 응답 시간',
explanation: 'AI 가 처리/응답하는 시간 (밀리초); 텍스트 기반 애플리케이션을 위한 것입니다.',
},
tps: {
title: '토큰 출력 속도',
explanation: 'LLM 의 성능을 측정합니다. 요청 시작부터 출력 완료까지의 LLM 의 토큰 출력 속도를 계산합니다.',
},
},
}
export default translation

View File

@@ -0,0 +1,347 @@
const translation = {
createApp: '앱 만들기',
types: {
all: '모두',
chatbot: '챗봇',
agent: '에이전트',
workflow: '워크플로우',
completion: '완성',
basic: '기초의',
advanced: '채팅 플로우',
},
duplicate: '복제',
duplicateTitle: '앱 복제하기',
export: 'DSL 내보내기',
exportFailed: 'DSL 내보내기 실패',
importDSL: 'DSL 파일 가져오기',
createFromConfigFile: 'DSL 파일에서 생성하기',
deleteAppConfirmTitle: '이 앱을 삭제하시겠습니까?',
deleteAppConfirmContent:
'앱을 삭제하면 복구할 수 없습니다. 사용자는 더 이상 앱에 액세스할 수 없으며 모든 프롬프트 설정 및 로그가 영구적으로 삭제됩니다.',
appDeleted: '앱이 삭제되었습니다',
appDeleteFailed: '앱 삭제 실패',
join: '커뮤니티에 참여하기',
communityIntro: '여러 채널에서 팀원, 기여자, 개발자들과 토론하세요.',
roadmap: '로드맵 보기',
newApp: {
startFromBlank: '빈 상태로 시작',
startFromTemplate: '템플릿에서 시작',
captionName: '앱 아이콘과 이름',
appNamePlaceholder: '앱 이름을 입력하세요',
captionDescription: '설명',
workflowWarning: '현재 베타 버전입니다',
appDescriptionPlaceholder: '앱 설명을 입력하세요',
useTemplate: '이 템플릿 사용',
previewDemo: '데모 미리보기',
chatApp: '어시스턴트',
chatAppIntro:
'대화형 어플리케이션을 만들고 싶어요. 이 어플리케이션은 질문과 답변 형식을 사용하여 다단계 대화를 지원합니다.',
agentAssistant: '새로운 에이전트 어시스턴트',
completeApp: '텍스트 생성기',
completeAppIntro:
'프롬프트를 기반으로 품질 높은 텍스트를 생성하는 어플리케이션을 만들고 싶어요. 기사, 요약, 번역 등을 생성합니다.',
showTemplates: '템플릿 선택',
hideTemplates: '모드 선택으로 돌아가기',
Create: '만들기',
Cancel: '취소',
nameNotEmpty: '이름을 입력하세요',
appTemplateNotSelected: '템플릿을 선택하세요',
appTypeRequired: '앱 종류를 선택하세요',
appCreated: '앱이 생성되었습니다',
appCreateFailed: '앱 생성 실패',
caution: '주의',
Confirm: '확인하다',
appCreateDSLErrorPart4: '시스템 지원 DSL 버전:',
appCreateDSLErrorTitle: '버전 비호환성',
appCreateDSLErrorPart2: '계속하시겠습니까?',
appCreateDSLErrorPart3: '현재 응용 프로그램 DSL 버전:',
appCreateDSLWarning:
'주의: DSL 버전 차이는 특정 기능에 영향을 미칠 수 있습니다.',
appCreateDSLErrorPart1:
'DSL 버전에서 상당한 차이가 감지되었습니다. 강제로 가져오면 응용 프로그램이 오작동할 수 있습니다.',
chooseAppType: '앱 유형 선택',
forBeginners: '초보자용 기본 앱 유형',
forAdvanced: '고급 사용자용',
chatbotShortDescription: '간단한 설정으로 LLM 기반 챗봇',
workflowUserDescription:
'드래그 앤 드롭으로 자율 AI 워크플로우를 시각적으로 구축',
noTemplateFoundTip: '다른 키워드를 사용하여 검색해 보십시오.',
noIdeaTip: '아이디어가 없으신가요? 템플릿을 확인해 보세요',
optional: '선택적',
noTemplateFound: '템플릿을 찾을 수 없습니다.',
completionShortDescription: '텍스트 생성 작업을 위한 AI 도우미',
learnMore: '더 알아보세요',
foundResults: '{{count}} 결과',
agentShortDescription:
'추론 및 자율적인 도구 사용 기능이 있는 지능형 에이전트',
advancedShortDescription: '다중 대화를 위해 강화된 워크플로우',
noAppsFound: '앱을 찾을 수 없습니다.',
foundResult: '{{count}} 결과',
completionUserDescription:
'간단한 구성으로 텍스트 생성 작업을 위한 AI 도우미를 빠르게 구축합니다.',
chatbotUserDescription:
'간단한 구성으로 LLM 기반 챗봇을 빠르게 구축할 수 있습니다. 나중에 Chatflow 로 전환할 수 있습니다.',
workflowShortDescription: '지능형 자동화를 위한 에이전트 플로우',
agentUserDescription:
'작업 목표를 달성하기 위해 반복적인 추론과 자율적인 도구를 사용할 수 있는 지능형 에이전트입니다.',
advancedUserDescription: '메모리 기능과 챗봇 인터페이스를 갖춘 워크플로우',
dropDSLToCreateApp: '여기에 DSL 파일을 드롭하여 앱을 불러오세요.',
import: '수입',
},
editApp: '정보 편집하기',
editAppTitle: '앱 정보 편집하기',
editDone: '앱 정보가 업데이트되었습니다',
editFailed: '앱 정보 업데이트 실패',
iconPicker: {
ok: '확인',
cancel: '취소',
emoji: '이모지',
image: '이미지',
},
switch: '워크플로우 오케스트레이션으로 전환하기',
switchTipStart:
'새로운 앱의 복사본이 생성되어 새로운 복사본이 워크플로우 오케스트레이션으로 전환됩니다. 새로운 복사본은 ',
switchTip: '전환을 허용하지 않습니다',
switchTipEnd: ' 기본적인 오케스트레이션으로 되돌릴 수 없습니다.',
switchLabel: '생성될 앱의 복사본',
removeOriginal: '원본 앱 제거하기',
switchStart: '전환 시작하기',
typeSelector: {
all: '모든 종류',
chatbot: '챗봇',
agent: '에이전트',
workflow: '워크플로우',
completion: '완성',
advanced: '채팅 플로우',
},
tracing: {
title: '앱 성능 추적',
description: '제 3 자 LLMOps 제공업체 구성 및 앱 성능 추적.',
config: '구성',
collapse: '접기',
expand: '펼치기',
tracing: '추적',
disabled: '비활성화됨',
disabledTip: '먼저 제공업체를 구성해 주세요',
enabled: '서비스 중',
tracingDescription:
'LLM 호출, 컨텍스트, 프롬프트, HTTP 요청 등 앱 실행의 전체 컨텍스트를 제 3 자 추적 플랫폼에 캡처합니다.',
configProviderTitle: {
configured: '구성됨',
notConfigured: '추적을 활성화하려면 제공업체를 구성하세요',
moreProvider: '더 많은 제공업체',
},
arize: {
title: 'Arize',
description:
'엔터프라이즈급 LLM 가시성, 온라인 및 오프라인 평가, 모니터링 및 실험—OpenTelemetry를 기반으로 합니다. LLM 및 에이전트 기반 애플리케이션을 위해 특별히 설계되었습니다.',
},
phoenix: {
title: 'Phoenix',
description:
'오픈소스 및 OpenTelemetry 기반의 가시성, 평가, 프롬프트 엔지니어링 및 실험 플랫폼으로, LLM 워크플로우 및 에이전트를 지원합니다.',
},
langsmith: {
title: 'LangSmith',
description:
'LLM 기반 애플리케이션 수명 주기의 모든 단계를 위한 올인원 개발자 플랫폼.',
},
langfuse: {
title: 'Langfuse',
description:
'LLM 애플리케이션을 디버그하고 개선하기 위한 추적, 평가, 프롬프트 관리 및 메트릭.',
},
inUse: '사용 중',
configProvider: {
title: '구성 ',
placeholder: '{{key}}를 입력하세요',
project: '프로젝트',
publicKey: '공개 키',
secretKey: '비밀 키',
viewDocsLink: '{{key}} 문서 보기',
removeConfirmTitle: '{{key}} 구성을 제거하시겠습니까?',
removeConfirmContent:
'현재 구성이 사용 중입니다. 제거하면 추적 기능이 꺼집니다.',
},
view: '보기',
opik: {
title: '오픽',
description:
'Opik 은 LLM 애플리케이션을 평가, 테스트 및 모니터링하기 위한 오픈 소스 플랫폼입니다.',
},
weave: {
title: '직조하다',
description:
'Weave 는 LLM 애플리케이션을 평가하고 테스트하며 모니터링하기 위한 오픈 소스 플랫폼입니다.',
},
aliyun: {
title: '클라우드 모니터',
description: '알리바바 클라우드에서 제공하는 완전 관리형 및 유지보수가 필요 없는 가시성 플랫폼은 Dify 애플리케이션의 모니터링, 추적 및 평가를 즉시 사용할 수 있도록 지원합니다.',
},
},
answerIcon: {
description:
'web app 아이콘을 사용하여 공유 응용 프로그램에서 바꿀🤖지 여부',
title: 'web app 아이콘을 사용하여 🤖',
descriptionInExplore:
'Explore 에서 web app 아이콘을 사용하여 바꿀🤖지 여부',
},
importFromDSL: 'DSL 에서 가져오기',
importFromDSLFile: 'DSL 파일에서',
importFromDSLUrl: 'URL 에서',
importFromDSLUrlPlaceholder: '여기에 DSL 링크 붙여 넣기',
dslUploader: {
button: '파일을 드래그 앤 드롭하거나',
browse: '찾아보기',
},
mermaid: {
handDrawn: '손으로 그린',
classic: '고전',
},
openInExplore: 'Explore 에서 열기',
newAppFromTemplate: {
sidebar: {
Agent: '대리인',
Workflow: '워크플로',
HR: '인사',
Programming: '프로그래밍',
Writing: '쓰기',
Assistant: '조수',
Recommended: '권장',
},
byCategories: '카테고리별',
searchAllTemplate: '모든 템플릿 검색...',
},
showMyCreatedAppsOnly: '내가 만든 앱만 보기',
appSelector: {
params: '앱 매개 변수',
noParams: '매개 변수가 필요하지 않습니다.',
label: '앱',
placeholder: '앱 선택...',
},
structOutput: {
required: '필수',
LLMResponse: 'LLM 응답',
modelNotSupported: '모델이 지원되지 않습니다.',
notConfiguredTip: '구성이 아직 설정되지 않았습니다.',
structured: '구조화된',
configure: '설정하다',
moreFillTip: '최대 10 단계 중첩을 표시합니다.',
modelNotSupportedTip:
'현재 모델은 이 기능을 지원하지 않으며 자동으로 프롬프트 주입으로 다운그레이드됩니다.',
structuredTip:
'구조화된 출력은 모델이 제공한 JSON 스키마를 항상 준수하는 응답을 생성하도록 보장하는 기능입니다.',
},
accessItemsDescription: {
anyone: '누구나 웹 앱에 접근할 수 있습니다.',
specific: '특정 그룹이나 회원만 웹 앱에 접근할 수 있습니다.',
organization: '조직 내 모든 사람이 웹 애플리케이션에 접근할 수 있습니다.',
external: '인증된 외부 사용자만 웹 애플리케이션에 접근할 수 있습니다.',
},
accessControlDialog: {
accessItems: {
anyone: '링크가 있는 누구나',
specific: '특정 그룹 또는 구성원',
organization: '기업 내의 회원만',
external: '인증된 외부 사용자',
},
operateGroupAndMember: {
searchPlaceholder: '그룹 및 구성원 검색',
allMembers: '모든 멤버들',
expand: '확장하다',
noResult: '결과 없음',
},
title: '웹 애플리케이션 접근 제어',
accessLabel: '누가 접근할 수 있습니까?',
groups_one: '{{count}} 그룹',
groups_other: '{{count}} 그룹',
members_one: '{{count}} 회원',
members_other: '{{count}} 회원',
noGroupsOrMembers: '선택된 그룹 또는 멤버가 없습니다.',
webAppSSONotEnabledTip:
'웹 앱 인증 방법을 구성하려면 엔터프라이즈 관리자인에게 문의하십시오.',
updateSuccess: '업데이트가 성공적으로 완료되었습니다.',
description: '웹 앱 접근 권한 설정',
},
publishApp: {
title: '누가 웹 애플리케이션에 접근할 수 있나요?',
notSet: '설정되지 않음',
notSetDesc: '현재 아무도 웹 앱에 접근할 수 없습니다. 권한을 설정해 주세요.',
},
accessControl: '웹 애플리케이션 접근 제어',
noAccessPermission: '웹 앱에 대한 접근 권한이 없습니다.',
maxActiveRequests: '동시 최대 요청 수',
maxActiveRequestsPlaceholder: '무제한 사용을 원하시면 0을 입력하세요.',
maxActiveRequestsTip: '앱당 최대 동시 활성 요청 수(무제한은 0)',
gotoAnything: {
actions: {
searchWorkflowNodes: '워크플로 노드 검색',
searchApplicationsDesc: '애플리케이션 검색 및 탐색',
searchPlugins: '플러그인 검색',
searchApplications: '응용 프로그램 검색',
searchPluginsDesc: '플러그인을 검색하고 탐색합니다.',
searchWorkflowNodesDesc: '이름 또는 유형별로 현재 워크플로의 노드를 찾아 이동',
searchKnowledgeBasesDesc: '기술 자료를 검색하고 탐색합니다.',
searchWorkflowNodesHelp: '이 기능은 워크플로를 볼 때만 작동합니다. 먼저 워크플로로 이동합니다.',
searchKnowledgeBases: '기술 자료 검색',
themeCategoryTitle: '주제',
themeSystem: '시스템 테마',
themeDark: '어두운 테마',
languageChangeDesc: 'UI 언어 변경',
languageCategoryTitle: '언어',
runTitle: '명령어',
themeLight: '라이트 테마',
themeDarkDesc: '어두운 모양 사용',
themeLightDesc: '밝은 외관 사용',
themeCategoryDesc: '애플리케이션 테마 전환',
languageCategoryDesc: '인터페이스 언어 전환',
runDesc: '빠른 명령 실행 (테마, 언어 등...)',
themeSystemDesc: '운영 체제의 외관을 따르세요',
slashDesc: '/theme, /lang와 같은 명령어를 실행하십시오.',
communityDesc: '오픈 디스코드 커뮤니티',
feedbackDesc: '공개 커뮤니티 피드백 토론',
docDesc: '도움 문서 열기',
accountDesc: '계정 페이지로 이동',
},
emptyState: {
noAppsFound: '앱을 찾을 수 없습니다.',
noPluginsFound: '플러그인을 찾을 수 없습니다.',
noKnowledgeBasesFound: '기술 자료를 찾을 수 없습니다.',
noWorkflowNodesFound: '워크플로 노드를 찾을 수 없습니다.',
tryDifferentTerm: '다른 검색어를 시도하거나 {{mode}} 필터를 제거하세요',
trySpecificSearch: '특정 검색을 위해 {{shortcuts}}를 사용해보세요',
},
groups: {
apps: '앱',
plugins: '플러그인',
knowledgeBases: '기술 자료',
workflowNodes: '워크플로 노드',
commands: '명령어',
},
searching: '검색...',
searchTitle: '무엇이든 검색',
useAtForSpecific: '특정 형식에 @ 사용',
searchTemporarilyUnavailable: '일시적으로 검색할 수 없음',
noResults: '결과를 찾을 수 없습니다.',
someServicesUnavailable: '일부 검색 서비스를 사용할 수 없습니다.',
servicesUnavailableMessage: '일부 검색 서비스에서 문제가 발생할 수 있습니다. 잠시 후에 다시 시도하십시오.',
searchFailed: '검색 실패',
searchPlaceholder: '명령을 검색하거나 @를 입력합니다...',
clearToSearchAll: '@를 지우면 모두 검색됩니다.',
selectSearchType: '검색할 항목 선택',
commandHint: '@를 입력하여 카테고리별로 찾아봅니다.',
searchHint: '즉시 모든 것을 검색하려면 입력을 시작하세요.',
resultCount: '{{count}} 개 결과',
resultCount_other: '{{count}} 개 결과',
inScope: '{{scope}}s 내에서',
tryDifferentSearch: '다른 검색어 사용해 보기',
noMatchingCommands: '일치하는 명령을 찾을 수 없습니다.',
slashHint: '모든 사용 가능한 명령을 보려면 /를 입력하세요.',
tips: '↑↓ 키를 눌러 탐색하세요',
pressEscToClose: 'ESC를 눌러 닫기',
selectToNavigate: '선택하여 탐색하기',
startTyping: '검색하려면 타이핑을 시작하세요',
},
}
export default translation

View File

@@ -0,0 +1,204 @@
const translation = {
currentPlan: '현재 요금제',
upgradeBtn: {
plain: '요금제 업그레이드',
encourage: '지금 업그레이드',
encourageShort: '업그레이드',
},
viewBilling: '청구 및 구독 관리',
buyPermissionDeniedTip: '구독하려면 엔터프라이즈 관리자에게 문의하세요',
plansCommon: {
title: '당신에게 맞는 요금제를 선택하세요',
yearlyTip: '연간 구독 시 2개월 무료!',
mostPopular: '가장 인기 있는',
planRange: {
monthly: '월간',
yearly: '연간',
},
month: '월',
year: '년',
save: '절약 ',
free: '무료',
currentPlan: '현재 요금제',
contractSales: '영업팀에 문의하기',
contractOwner: '팀 관리자에게 문의하기',
startForFree: '무료로 시작하기',
contactSales: '영업팀에 문의하기',
talkToSales: '영업팀과 상담하기',
modelProviders: '모델 제공자',
buildApps: '앱 만들기',
vectorSpace: '벡터 공간',
vectorSpaceTooltip:
'벡터 공간은 LLM 이 데이터를 이해하는 데 필요한 장기 기억 시스템입니다.',
documentProcessingPriority: '문서 처리 우선순위',
documentProcessingPriorityUpgrade:
'더 높은 정확성과 빠른 속도로 데이터를 처리합니다.',
priority: {
'standard': '표준',
'priority': '우선',
'top-priority': '최우선',
},
logsHistory: '로그 기록',
customTools: '사용자 정의 도구',
unavailable: '사용 불가',
days: '일',
unlimited: '무제한',
support: '지원',
supportItems: {
communityForums: '커뮤니티 포럼',
emailSupport: '이메일 지원',
priorityEmail: '우선 이메일 및 채팅 지원',
logoChange: '로고 변경',
SSOAuthentication: 'SSO 인증',
personalizedSupport: '개별 지원',
dedicatedAPISupport: '전용 API 지원',
customIntegration: '사용자 정의 통합 및 지원',
ragAPIRequest: 'RAG API 요청',
agentMode: '에이전트 모드',
workflow: '워크플로우',
llmLoadingBalancing: 'LLM 로드 밸런싱',
bulkUpload: '문서 대량 업로드',
llmLoadingBalancingTooltip:
'모델에 여러 API 키를 추가하여 API 속도 제한을 효과적으로 우회할 수 있습니다.',
},
comingSoon: '곧 출시 예정',
member: '멤버',
memberAfter: '멤버',
messageRequest: {
title: '메시지 크레딧',
tooltip:
'GPT 제외 다양한 요금제에서의 메시지 호출 쿼터 (gpt4 제외). 제한을 초과하는 메시지는 OpenAI API 키를 사용합니다.',
titlePerMonth: '{{count,number}} 메시지/월',
},
annotatedResponse: {
title: '주석 응답 쿼터',
tooltip:
'수동으로 편집 및 응답 주석 달기로 앱의 사용자 정의 가능한 고품질 질의응답 기능을 제공합니다 (채팅 앱에만 해당).',
},
ragAPIRequestTooltip:
'Dify 의 지식베이스 처리 기능을 호출하는 API 호출 수를 나타냅니다.',
receiptInfo: '팀 소유자 및 팀 관리자만 구독 및 청구 정보를 볼 수 있습니다',
annotationQuota: 'Annotation Quota(주석 할당량)',
freeTrialTipPrefix: '요금제에 가입하고 ',
comparePlanAndFeatures: '계획 및 기능 비교',
documents: '{{count,number}} 지식 문서',
apiRateLimit: 'API 요금 한도',
cloud: '클라우드 서비스',
unlimitedApiRate: 'API 호출 속도 제한 없음',
freeTrialTip: '200 회의 OpenAI 호출 무료 체험을 받으세요. ',
annualBilling: '연간 청구',
getStarted: '시작하기',
apiRateLimitUnit: '{{count,number}}/일',
freeTrialTipSuffix: '신용카드 없음',
teamWorkspace: '{{count,number}} 팀 작업 공간',
self: '자체 호스팅',
teamMember_other: '{{count,number}} 팀원',
teamMember_one: '{{count,number}} 팀원',
priceTip: '작업 공간당/',
apiRateLimitTooltip:
'Dify API 를 통한 모든 요청에는 API 요금 한도가 적용되며, 여기에는 텍스트 생성, 채팅 대화, 워크플로 실행 및 문서 처리가 포함됩니다.',
documentsRequestQuota: '{{count,number}}/분 지식 요청 비율 제한',
documentsTooltip:
'지식 데이터 소스에서 가져올 수 있는 문서 수에 대한 쿼터.',
documentsRequestQuotaTooltip:
'지식 기반 내에서 작업 공간이 분당 수행할 수 있는 총 작업 수를 지정합니다. 여기에는 데이터 세트 생성, 삭제, 업데이트, 문서 업로드, 수정, 보관 및 지식 기반 쿼리가 포함됩니다. 이 지표는 지식 기반 요청의 성능을 평가하는 데 사용됩니다. 예를 들어, 샌드박스 사용자가 1 분 이내에 10 회의 연속 히트 테스트를 수행하면, 해당 작업 공간은 다음 1 분 동안 데이터 세트 생성, 삭제, 업데이트 및 문서 업로드 또는 수정과 같은 작업을 수행하는 것이 일시적으로 제한됩니다.',
startBuilding: '구축 시작',
},
plans: {
sandbox: {
name: '샌드박스',
description: 'GPT 무료 체험 200 회',
for: '핵심 기능 무료 체험',
},
professional: {
name: '프로페셔널',
description:
'개인 및 소규모 팀을 위해 더 많은 파워를 저렴한 가격에 제공합니다.',
for: '1인 개발자/소규모 팀을 위한',
},
team: {
name: '팀',
description: '제한 없이 협업하고 최고의 성능을 누리세요.',
for: '중간 규모 팀을 위한',
},
enterprise: {
name: '엔터프라이즈',
description:
'대규모 미션 크리티컬 시스템을 위한 완전한 기능과 지원을 제공합니다.',
includesTitle: '팀 플랜에 추가로 포함된 항목:',
price: '맞춤형',
btnText: '판매 문의하기',
for: '대규모 팀을 위해',
priceTip: '연간 청구 전용',
features: [
'엔터프라이즈급 확장 가능한 배포 솔루션',
'상업용 라이선스 인증',
'전용 엔터프라이즈 기능',
'다중 워크스페이스 및 엔터프라이즈 관리',
'SSO(싱글 사인온)',
'Dify 파트너와의 협상을 통한 SLA',
'고급 보안 및 제어 기능',
'Dify의 공식 업데이트 및 유지 관리',
'전문 기술 지원',
],
},
community: {
btnText: '커뮤니티 시작하기',
description: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한',
name: '커뮤니티',
price: '무료',
includesTitle: '무료 기능:',
for: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한',
features: [
'모든 핵심 기능이 공개 저장소에 공개됨',
'단일 워크스페이스',
'Dify 오픈소스 라이선스를 준수함',
],
},
premium: {
btnText: '프리미엄 받기',
priceTip: '클라우드 마켓플레이스를 기반으로',
name: '프리미엄',
description: '중규모 조직 및 팀을 위한',
comingSoon: '마이크로소프트 애저 및 구글 클라우드 지원 곧 제공됩니다.',
price: '확장 가능',
for: '중규모 조직 및 팀을 위한',
includesTitle: '커뮤니티의 모든 것, 여기에 추가로:',
features: [
'다양한 클라우드 제공업체를 통한 자가 관리 신뢰성',
'단일 워크스페이스',
'웹앱 로고 및 브랜딩 커스터마이징',
'우선 이메일 및 채팅 지원',
],
},
},
vectorSpace: {
fullTip: '벡터 공간이 가득 찼습니다.',
fullSolution: '더 많은 공간을 얻으려면 요금제를 업그레이드하세요.',
},
apps: {
contactUs: '문의하기',
fullTip1: '업그레이드하여 더 많은 앱을 만들기',
fullTip2: '계획 한도에 도달했습니다.',
fullTip2des:
'비활성 애플리케이션을 정리하여 사용량을 줄이거나 저희에게 문의하는 것이 좋습니다.',
fullTip1des: '이 계획에서 앱을 구축할 수 있는 한계에 도달했습니다.',
},
annotatedResponse: {
fullTipLine1: '더 많은 대화를 주석 처리하려면,',
fullTipLine2: '요금제를 업그레이드하세요.',
quotaTitle: '주석 응답 쿼터',
},
usagePage: {
vectorSpace: '지식 데이터 저장소',
annotationQuota: '주석 할당량',
teamMembers: '팀원들',
buildApps: '앱 만들기',
documentsUploadQuota: '문서 업로드 한도',
vectorSpaceTooltip:
'고품질 색인 모드를 사용하는 문서는 지식 데이터 저장소 자원을 소모합니다. 지식 데이터 저장소가 한도에 도달하면 새 문서를 업로드할 수 없습니다.',
},
teamMembers: '팀원들',
}
export default translation

View File

@@ -0,0 +1,763 @@
const translation = {
api: {
success: '성공',
actionSuccess: '동작이 성공적으로 수행되었습니다',
saved: '저장됨',
create: '생성됨',
remove: '삭제됨',
},
operation: {
create: '생성',
confirm: '확인',
cancel: '취소',
clear: '지우기',
save: '저장',
saveAndEnable: '저장 및 활성화',
edit: '편집',
add: '추가',
added: '추가됨',
refresh: '새로 고침',
reset: '초기화',
search: '검색',
change: '변경',
remove: '삭제',
send: '전송',
copy: '복사',
lineBreak: '줄 바꿈',
sure: '확실히',
download: '다운로드',
delete: '삭제',
settings: '설정',
setup: '설정',
getForFree: '무료로 받기',
reload: '다시 불러오기',
ok: '확인',
log: '로그',
learnMore: '자세히 알아보기',
params: '매개변수',
duplicate: '중복',
rename: '이름 바꾸기',
audioSourceUnavailable: '오디오 소스를 사용할 수 없습니다.',
openInNewTab: '새 탭에서 열기',
zoomIn: '확대',
copyImage: '이미지 복사',
zoomOut: '축소',
close: '닫다',
viewMore: '더보기',
regenerate: '재생성',
view: '보기',
saveAndRegenerate: '저장 및 자식 청크 재생성',
submit: '전송',
skip: '배',
imageCopied: '복사된 이미지',
deleteApp: '앱 삭제',
copied: '복사',
viewDetails: '세부 정보보기',
in: '안으로',
downloadFailed: '다운로드 실패했습니다. 나중에 다시 시도하십시오.',
format: '형식',
more: '더 많은',
downloadSuccess: '다운로드 완료.',
selectAll: '모두 선택',
deSelectAll: '모두 선택 해제',
config: '구성',
},
placeholder: {
input: '입력해주세요',
select: '선택해주세요',
},
voice: {
language: {
zhHans: '중국어',
zhHant: '번체 중국어',
enUS: '영어',
deDE: '독일어',
frFR: '프랑스어',
esES: '스페인어',
itIT: '이탈리아어',
thTH: '태국어',
idID: '인도네시아어',
jaJP: '일본어',
koKR: '한국어',
ptBR: '포르투갈어',
ruRU: '러시아어',
ukUA: '우크라이나어',
viVN: '베트남어',
plPL: '폴란드어',
roRO: '루마니아어',
hiIN: '힌디어',
trTR: '터키어',
faIR: '페르시아어',
},
},
unit: {
char: '문자',
},
actionMsg: {
noModification: '현재 변경사항이 없습니다.',
modifiedSuccessfully: '변경이 성공적으로 이루어졌습니다',
modifiedUnsuccessfully: '변경에 실패했습니다',
copySuccessfully: '복사가 성공적으로 이루어졌습니다',
paySucceeded: '결제가 성공했습니다',
payCancelled: '결제가 취소되었습니다',
generatedSuccessfully: '생성이 성공적으로 이루어졌습니다',
generatedUnsuccessfully: '생성에 실패했습니다',
},
model: {
params: {
temperature: '온도',
temperatureTip: '랜덤성을 제어합니다. 온도를 낮추면 더 랜덤한 결과물을 얻을 수 있습니다. 온도가 0 에 가까워질수록 모델은 결정적이고 반복적으로 작동합니다.',
top_p: '상위 P',
top_pTip: '뉴클리어스 샘플링에 의한 다양성 제어: 0.5 는 모든 확률 가중 옵션의 절반을 고려함을 의미합니다.',
presence_penalty: '존재 페널티',
presence_penaltyTip: '이전 텍스트에서 토큰이 나타나는지 여부에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 새로운 주제에 대해 말할 가능성이 높아집니다.',
frequency_penalty: '빈도 페널티',
frequency_penaltyTip: '이전 텍스트 내 토큰의 기존 빈도에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 같은 문구를 글자 그대로 반복할 가능성이 줄어듭니다.',
max_tokens: '최대 토큰',
max_tokensTip:
'응답의 최대 길이를 토큰 단위로 제한하는 데 사용됩니다. 큰 값은 프롬프트, 채팅 로그 및 남은 공간에 대한 제한을 가질 수 있습니다. 2/3 이하로 설정하는 것이 좋습니다. gpt-4-1106-preview, gpt-4-vision-preview 의 최대 토큰 (입력 128k 출력 4k) 보다 작게 설정하는 것이 좋습니다.',
maxTokenSettingTip: '최대 토큰 설정이 높아서 프롬프트, 쿼리 및 데이터 공간에 제한이 생길 수 있습니다. 현재 모델의 최대 토큰의 80% 이하로 설정해주세요.',
setToCurrentModelMaxTokenTip: '최대 토큰이 현재 모델의 최대 토큰의 80% 로 업데이트되었습니다 {{maxToken}}.',
stop_sequences: '중단 시퀀스',
stop_sequencesTip: 'API 가 진행 중인 토큰 생성을 중단하는 최대 4 개의 시퀀스입니다. 반환된 텍스트에는 중단 시퀀스가 포함되지 않습니다.',
stop_sequencesPlaceholder: '시퀀스를 입력하고 탭 키를 누르세요',
},
tone: {
Creative: '창의적인',
Balanced: '균형잡힌',
Precise: '정확한',
Custom: '사용자 정의',
},
addMoreModel: '설정에서 다른 모델을 추가하세요',
capabilities: '멀티모달 기능',
settingsLink: '모델 공급자 설정',
},
menus: {
status: '베타 버전',
explore: '탐색',
apps: '스튜디오',
plugins: '플러그인',
pluginsTips: '타사 플러그인을 통합하거나 ChatGPT 호환 AI 플러그인을 작성합니다.',
datasets: '지식',
datasetsTips: '곧 출시될 예정: 고유한 텍스트 데이터를 가져오거나 웹훅을 통해 실시간으로 데이터를 기록하여 LLM 컨텍스트를 강화합니다.',
newApp: '새로운 앱',
newDataset: '지식 만들기',
tools: '도구',
exploreMarketplace: 'Marketplace 둘러보기',
appDetail: '앱 세부정보',
account: '계정',
},
userProfile: {
settings: '설정',
emailSupport: '이메일 지원',
workspace: '작업 공간',
createWorkspace: '작업 공간 만들기',
helpCenter: '도움말 센터',
communityFeedback: '로드맵 및 피드백',
roadmap: '로드맵',
community: '커뮤니티',
about: 'Dify 소개',
logout: '로그아웃',
github: '깃허브',
compliance: '컴플라이언스',
support: '지원',
},
settings: {
accountGroup: '계정',
workplaceGroup: '작업 공간',
account: '내 계정',
members: '멤버',
billing: '청구',
integrations: '통합',
language: '언어',
provider: '모델 제공자',
dataSource: '데이터 소스',
plugin: '플러그인',
apiBasedExtension: 'API 확장',
generalGroup: '일반',
},
account: {
avatar: '아바타',
name: '이름',
email: '이메일',
password: '비밀번호',
passwordTip: '일시적인 로그인 코드를 사용하지 않으려면 영구적인 비밀번호를 설정할 수 있습니다.',
setPassword: '비밀번호 설정',
resetPassword: '비밀번호 재설정',
currentPassword: '현재 비밀번호',
newPassword: '새 비밀번호',
confirmPassword: '비밀번호 확인',
notEqual: '비밀번호가 일치하지 않습니다.',
langGeniusAccount: 'Dify 계정',
langGeniusAccountTip: 'Dify 계정과 관련된 사용자 데이터.',
editName: '이름 편집',
showAppLength: '{{length}}개의 앱 표시',
delete: '계정 삭제',
deleteTip: '계정을 삭제하면 모든 데이터가 영구적으로 지워지며 복구할 수 없습니다.',
myAccount: '내 계정',
studio: '디파이 스튜디오',
account: '계정',
deletePrivacyLink: '개인 정보 보호 정책.',
deleteSuccessTip: '계정 삭제를 완료하는 데 시간이 필요합니다. 모든 작업이 완료되면 이메일로 연락드리겠습니다.',
deleteLabel: '확인하려면 아래 이메일을 입력하십시오.',
deletePlaceholder: '이메일을 입력해 주세요',
sendVerificationButton: '인증 코드 보내기',
verificationLabel: '인증 코드',
verificationPlaceholder: '6 자리 코드를 붙여넣습니다.',
permanentlyDeleteButton: '계정 영구 삭제',
feedbackTitle: '피드백',
feedbackLabel: '계정을 삭제한 이유를 알려주시겠습니까?',
feedbackPlaceholder: '선택적',
deletePrivacyLinkTip: '당사가 귀하의 데이터를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.',
workspaceIcon: '작업 공간 아이콘',
editWorkspaceInfo: '작업 공간 정보 편집',
workspaceName: '작업 공간 이름',
changeEmail: {
codeLabel: '검증 코드',
codePlaceholder: '6자리 코드를 붙여넣으세요',
title: '이메일 변경',
emailLabel: '새 이메일',
verifyEmail: '현재 이메일을 확인하세요',
sendVerifyCode: '인증 코드를 보내다',
continue: '계속하다',
resendCount: '{{count}}초 후에 다시 보내기',
verifyNew: '새 이메일 확인하기',
emailPlaceholder: '새 이메일을 입력하세요',
resend: '다시 보내기',
newEmail: '새 이메일 주소를 설정하세요',
existingEmail: '이미 이 이메일을 가진 사용자가 존재합니다.',
content4: '우리는 방금 귀하에게 임시 인증 코드를 <email>{{email}}</email>로 보냈습니다.',
changeTo: '{{email}}로 변경',
content2: '현재 이메일은 <email>{{email}}</email>입니다. 이 이메일 주소로 인증 코드가 전송되었습니다.',
resendTip: '코드를 받지 못하셨나요?',
content3: '새로운 이메일을 입력하시면 인증 코드를 보내드립니다.',
content1: '계속 진행하면, 재인증을 위해 <email>{{email}}</email>로 인증 코드를 전송하겠습니다.',
authTip: '이메일이 변경되면, 이전 이메일에 연결된 Google 또는 GitHub 계정은 더 이상 이 계정에 로그인할 수 없습니다.',
unAvailableEmail: '이 이메일은 일시적으로 사용할 수 없습니다.',
},
},
members: {
team: '팀',
invite: '초대',
name: '이름',
lastActive: '최근 활동',
role: '역할',
pending: '대기 중...',
owner: '소유자',
admin: '관리자',
adminTip: '앱 빌드 및 팀 설정 관리 가능',
normal: '일반',
normalTip: '앱 사용만 가능하고 앱 빌드는 불가능',
editor: '편집자',
editorTip: '앱 빌드만 가능하고 팀 설정 관리 불가능',
inviteTeamMember: '팀 멤버 초대',
inviteTeamMemberTip: '로그인 후에 바로 팀 데이터에 액세스할 수 있습니다.',
emailNotSetup: '이메일 서버가 설정되지 않아 초대 이메일을 보낼 수 없습니다. 대신 초대 후 발급되는 초대 링크를 사용자에게 알려주세요.',
email: '이메일',
emailInvalid: '유효하지 않은 이메일 형식',
emailPlaceholder: '이메일 입력',
sendInvite: '초대 보내기',
invitedAsRole: '{{role}} 사용자로 초대되었습니다',
invitationSent: '초대가 전송되었습니다',
invitationSentTip: '초대가 전송되었으며, 그들은 Dify 에 로그인하여 당신의 팀 데이터에 액세스할 수 있습니다.',
invitationLink: '초대 링크',
failedInvitationEmails: '다음 사용자들은 성공적으로 초대되지 않았습니다',
ok: '확인',
removeFromTeam: '팀에서 제거',
removeFromTeamTip: '팀 액세스가 제거됩니다',
setAdmin: '관리자 설정',
setMember: '일반 멤버 설정',
setEditor: '편집자 설정',
disInvite: '초대 취소',
deleteMember: '멤버 삭제',
you: '(나)',
datasetOperator: '지식 관리자',
setBuilder: '빌더로 설정',
builder: '건설자',
builderTip: '자신의 앱을 구축 및 편집할 수 있습니다.',
datasetOperatorTip: '기술 자료만 관리할 수 있습니다.',
transferModal: {
codeLabel: '검증 코드',
sendVerifyCode: '인증 코드를 보내다',
verifyContent: '현재 이메일은 <email>{{email}}</email>입니다.',
verifyEmail: '현재 이메일을 확인하세요',
continue: '계속하다',
title: '작업 공간 소유권 이전',
resend: '다시 보내기',
transferLabel: '작업 공간 소유권을 이전하다',
transferPlaceholder: '작업 공간 구성원을 선택하세요…',
warning: '당신은 "{{workspace}}"의 소유권을 이전하려고 합니다. 이는 즉시 발효되며 되돌릴 수 없습니다.',
transfer: '작업 공간 소유권 이전',
resendCount: '{{count}}초 후에 다시 보내기',
verifyContent2: '재인증을 위해 이 이메일로 임시 인증 코드를 발송하겠습니다.',
warningTip: '당신은 관리자 회원이 될 것이고, 새로운 소유자는 완전한 제어 권한을 갖게 됩니다.',
codePlaceholder: '6자리 코드를 붙여넣으세요',
resendTip: '코드를 받지 못하셨나요?',
sendTip: '계속 진행하면, 재인증을 위해 <email>{{email}}</email>로 인증 코드를 전송하겠습니다.',
},
transferOwnership: '소유권 이전',
},
integrations: {
connected: '연결됨',
google: 'Google',
googleAccount: 'Google 계정으로 로그인',
github: 'GitHub',
githubAccount: 'GitHub 계정으로 로그인',
connect: '연결',
},
language: {
displayLanguage: '표시 언어',
timezone: '시간대',
},
provider: {
apiKey: 'API 키',
enterYourKey: '여기에 API 키를 입력하세요',
invalidKey: '유효하지 않은 OpenAI API 키',
validatedError: '검증 실패:',
validating: '키를 확인하는 중...',
saveFailed: 'API 키 저장 실패',
apiKeyExceedBill: '이 API KEY 에는 사용 가능한 할당량이 없습니다. 자세한 내용은',
addKey: '키 추가',
comingSoon: '곧 출시됨',
editKey: '편집',
invalidApiKey: '유효하지 않은 API 키',
azure: {
apiBase: 'API 베이스',
apiBasePlaceholder: 'Azure OpenAI 엔드포인트의 API 베이스 URL.',
apiKey: 'API 키',
apiKeyPlaceholder: '여기에 API 키를 입력하세요',
helpTip: 'Azure OpenAI 서비스 배우기',
},
openaiHosted: {
openaiHosted: '호스팅된 OpenAI',
onTrial: '트라이얼 중',
exhausted: '할당량이 다 사용되었습니다',
desc: 'Dify 가 제공하는 OpenAI 호스팅 서비스를 사용하면 GPT-3.5 와 같은 모델을 사용할 수 있습니다. 트라이얼 할당량이 다 사용되기 전에 다른 모델 제공자를 설정해야 합니다.',
callTimes: '호출 횟수',
usedUp: '트라이얼 할당량이 다 사용되었습니다. 다른 모델 제공자를 추가하세요.',
useYourModel: '현재 사용자 정의 모델 제공자를 사용 중입니다.',
close: '닫기',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude 호스팅',
onTrial: '트라이얼 중',
exhausted: '할당량이 다 사용되었습니다',
desc: '고급 대화 및 창의적인 콘텐츠 생성부터 상세한 지시까지 다양한 작업에 강력한 모델입니다.',
callTimes: '호출 횟수',
usedUp: '트라이얼 할당량이 다 사용되었습니다. 다른 모델 제공자를 추가하세요.',
useYourModel: '현재 사용자 정의 모델 제공자를 사용 중입니다.',
close: '닫기',
trialQuotaTip: 'Anthropic 평가판 할당량은 2025/03/11에 만료되며 그 이후에는 더 이상 사용할 수 없습니다. 제때 활용하시기 바랍니다.',
},
anthropic: {
using: '임베드 기능을 사용 중입니다',
enableTip: 'Anthropic 모델을 활성화하려면 먼저 OpenAI 또는 Azure OpenAI 서비스에 바인딩해야 합니다.',
notEnabled: '비활성화됨',
keyFrom: 'Anthropic 에서 API 키를 받으세요',
},
encrypted: {
front: 'API KEY 는',
back: '기술을 사용하여 암호화 및 저장됩니다.',
},
},
modelProvider: {
notConfigured: '시스템 모델이 아직 완전히 설정되지 않아 일부 기능을 사용할 수 없습니다.',
systemModelSettings: '시스템 모델 설정',
systemModelSettingsLink: '시스템 모델 설정이 필요한 이유는 무엇입니까?',
selectModel: '모델 선택',
setupModelFirst: '먼저 모델을 설정하세요',
systemReasoningModel: {
key: '시스템 추론 모델',
tip: '앱 구축에 사용되는 기본 추론 모델을 설정합니다. 또한 대화 이름 생성 및 다음 질문 제안과 같은 기능도 기본 추론 모델을 사용합니다.',
},
embeddingModel: {
key: '임베딩 모델',
tip: '지식 문서 임베딩 처리의 기본 모델을 설정합니다. 지식 가져오기 및 임포트에 모두 이 임베딩 모델을 벡터화 처리에 사용합니다. 변경하면 가져온 지식과 질문 간의 벡터 차원이 일치하지 않아 가져오기에 실패합니다. 실패를 피하려면 이 모델을 변경하지 마세요.',
required: '임베딩 모델이 필요합니다',
},
speechToTextModel: {
key: '음성-to-텍스트 모델',
tip: '대화에서의 음성-to-텍스트 입력에 사용되는 기본 모델을 설정합니다.',
},
ttsModel: {
key: '텍스트-to-음성 모델',
tip: '대화에서의 텍스트-to-음성 입력에 사용되는 기본 모델을 설정합니다.',
},
rerankModel: {
key: '재랭크 모델',
tip: '재랭크 모델은 사용자 쿼리와의 의미적 일치를 기반으로 후보 문서 목록을 재배열하여 의미적 순위를 향상시킵니다.',
},
quota: '할당량',
searchModel: '검색 모델',
noModelFound: '{{model}}에 대한 모델을 찾을 수 없습니다',
models: '모델',
showMoreModelProvider: '더 많은 모델 제공자 표시',
selector: {
tip: '이 모델은 삭제되었습니다. 다른 모델을 추가하거나 다른 모델을 선택하세요.',
emptyTip: '사용 가능한 모델이 없습니다',
emptySetting: '설정으로 이동하여 구성하세요',
rerankTip: '재랭크 모델을 설정하세요',
},
card: {
quota: '할당량',
onTrial: '트라이얼 중',
paid: '유료',
quotaExhausted: '할당량이 다 사용되었습니다',
callTimes: '호출 횟수',
tokens: '토큰',
buyQuota: 'Buy Quota',
priorityUse: '우선 사용',
removeKey: 'API 키 제거',
tip: '지불된 할당량에 우선순위가 부여됩니다. 평가판 할당량은 유료 할당량이 소진된 후 사용됩니다.',
},
item: {
deleteDesc: '{{modelName}}은 (는) 시스템 추론 모델로 사용 중입니다. 제거 후 일부 기능을 사용할 수 없습니다. 확인하시겠습니까?',
freeQuota: '무료 할당량',
},
addApiKey: 'API 키 추가',
invalidApiKey: '잘못된 API 키',
encrypted: {
front: 'API 키는 다음 기술을 사용하여 암호화되어 저장됩니다',
back: ' 기술.',
},
freeQuota: {
howToEarn: '얻는 방법',
},
addMoreModelProvider: '모델 제공자 추가',
addModel: '모델 추가',
modelsNum: '{{num}}개의 모델',
showModels: '모델 표시',
showModelsNum: '{{num}}개의 모델 표시',
collapse: '축소',
config: '설정',
modelAndParameters: '모델 및 매개변수',
model: '모델',
featureSupported: '{{feature}} 지원됨',
callTimes: '호출 횟수',
credits: '메시지 크레딧',
buyQuota: '할당량 구매',
getFreeTokens: '무료 토큰 받기',
priorityUsing: '우선 사용',
deprecated: '사용 중단됨',
confirmDelete: '삭제를 확인하시겠습니까?',
quotaTip: '남은 무료 토큰 사용 가능',
loadPresets: '프리셋 로드',
parameters: '매개변수',
apiKey: 'API 키',
defaultConfig: '기본 구성',
providerManaged: '제공자 관리',
loadBalancing: '부하 분산 Load balancing',
addConfig: '구성 추가',
apiKeyStatusNormal: 'APIKey 상태는 정상입니다.',
configLoadBalancing: 'Config 로드 밸런싱',
editConfig: '구성 편집',
loadBalancingHeadline: '로드 밸런싱',
modelHasBeenDeprecated: '이 모델은 더 이상 사용되지 않습니다',
loadBalancingDescription: '여러 자격 증명 세트로 부담을 줄입니다.',
upgradeForLoadBalancing: '로드 밸런싱을 사용하도록 계획을 업그레이드합니다.',
apiKeyRateLimit: '속도 제한에 도달했으며, {{seconds}}s 후에 사용할 수 있습니다.',
loadBalancingInfo: '기본적으로 부하 분산은 라운드 로빈 전략을 사용합니다. 속도 제한이 트리거되면 1 분의 휴지 기간이 적용됩니다.',
loadBalancingLeastKeyWarning: '로드 밸런싱을 사용하려면 최소 2 개의 키를 사용하도록 설정해야 합니다.',
providerManagedDescription: '모델 공급자가 제공하는 단일 자격 증명 집합을 사용합니다.',
installProvider: '모델 공급자 설치',
discoverMore: '더 알아보기',
emptyProviderTitle: '모델 공급자가 설정되지 않음',
configureTip: 'api-key 설정 또는 사용할 모델 추가',
emptyProviderTip: '먼저 모델 공급자를 설치하십시오.',
toBeConfigured: '구성 예정',
auth: {
apiKeyModal: {
addModel: '모델 추가',
title: 'API 키 인증 구성',
desc: '자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 모델을 사용할 수 있습니다.',
},
addApiKey: 'API 키 추가',
apiKeys: 'API 키',
unAuthorized: '무단',
configModel: '구성 모델',
authorizationError: '권한 오류',
configLoadBalancing: '구성 로드 밸런싱',
addNewModel: '새 모델 추가하기',
specifyModelCredentialTip: '구성된 모델 자격 증명을 사용합니다.',
modelCredentials: '모델 자격 증명',
addCredential: '자격 증명을 추가하다',
authRemoved: '인증이 제거되었습니다.',
providerManaged: '제공자가 관리하는',
addModelCredential: '모델 자격 증명 추가',
specifyModelCredential: '모델 자격 증명을 명시하세요.',
providerManagedTip: '현재 구성은 제공업체에 의해 호스팅되고 있습니다.',
addModel: '모델 추가',
removeModel: '모델 제거',
manageCredentials: '자격 증명 관리',
selectModelCredential: '모델 자격 증명 선택',
modelCredential: '모델 자격 증명',
addNewModelCredential: '새 모델 자격 증명 추가',
editModelCredential: '모델 자격 증명 편집',
customModelCredentials: '사용자 지정 모델 자격 증명',
customModelCredentialsDeleteTip: '자격 증명이 사용 중이며 삭제할 수 없습니다.',
},
parametersInvalidRemoved: '일부 매개변수가 유효하지 않아 제거되었습니다.',
},
dataSource: {
add: '데이터 소스 추가하기',
connect: '연결하기',
notion: {
title: 'Notion',
description: '노션을 지식 데이터 소스로 사용하기.',
connectedWorkspace: '작업 공간에 연결됨',
addWorkspace: '작업 공간에 추가하기',
connected: '연결됨',
disconnected: '연결 안됨',
changeAuthorizedPages: '허가된 페이지 변경하기',
pagesAuthorized: '페이지가 허가됨',
sync: '동기화',
remove: '제거하기',
selector: {
pageSelected: '페이지 선택됨',
searchPages: '페이지 검색...',
noSearchResult: '검색 결과 없음',
addPages: '페이지 추가하기',
preview: '미리보기',
},
integratedAlert: 'Notion은 내부 자격 증명을 통해 통합되므로 다시 인증할 필요가 없습니다.',
},
website: {
inactive: '게으른',
title: '웹 사이트',
configuredCrawlers: '구성된 크롤러',
with: '와',
active: '활동적인',
description: '웹 크롤러를 사용하여 웹 사이트에서 콘텐츠를 가져옵니다.',
},
configure: '구성',
},
plugin: {
serpapi: {
apiKey: 'API 키',
apiKeyPlaceholder: 'API 키를 입력하세요',
keyFrom: 'SerpAPI 계정 페이지에서 SerpAPI 키를 가져오세요',
},
},
apiBasedExtension: {
title: 'API 기반 확장은 Dify 애플리케이션 전체에서 간편한 사용을 위한 설정을 단순화하고 집중적인 API 관리를 제공합니다.',
link: '사용자 정의 API 기반 확장을 개발하는 방법 배우기',
add: 'API 기반 확장 추가',
selector: {
title: 'API 기반 확장',
placeholder: 'API 기반 확장을 선택하세요',
manage: 'API 기반 확장 관리',
},
modal: {
title: 'API 기반 확장 추가',
editTitle: 'API 기반 확장 편집',
name: {
title: '이름',
placeholder: '이름을 입력하세요',
},
apiEndpoint: {
title: 'API 엔드포인트',
placeholder: 'API 엔드포인트를 입력하세요',
},
apiKey: {
title: 'API 키',
placeholder: 'API 키를 입력하세요',
lengthError: 'API 키는 5 자 미만이어야 합니다',
},
},
type: '유형',
},
about: {
changeLog: '변경 로그',
updateNow: '지금 업데이트',
nowAvailable: 'Dify {{version}} 사용 가능합니다.',
latestAvailable: 'Dify {{version}} 최신 버전입니다.',
},
appMenus: {
overview: '모니터링',
promptEng: '오케스트레이트',
apiAccess: 'API 액세스',
logAndAnn: '로그 및 어노테이션',
logs: '로그',
},
environment: {
testing: '테스트',
development: '개발',
},
appModes: {
completionApp: '텍스트 생성',
chatApp: '채팅 앱',
},
datasetMenus: {
documents: '문서',
hitTesting: '검색 테스트',
settings: '설정',
emptyTip: '연결된 지식이 없습니다. 애플리케이션 또는 플러그인으로 이동하여 연결을 완료하세요.',
viewDoc: '문서 보기',
relatedApp: '관련 앱',
noRelatedApp: '연결된 앱 없음',
pipeline: '파이프라인',
},
voiceInput: {
speaking: '지금 말하고 있습니다...',
converting: '텍스트로 변환 중...',
notAllow: '마이크가 허용되지 않았습니다',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: '대화 이름 바꾸기',
conversationName: '대화 이름',
conversationNamePlaceholder: '대화 이름을 입력하세요',
conversationNameCanNotEmpty: '대화 이름은 필수입니다',
citation: {
title: '인용',
linkToDataset: '지식 링크',
characters: '문자수:',
hitCount: '검색 횟수:',
vectorHash: '벡터 해시:',
hitScore: '검색 점수:',
},
inputPlaceholder: '봇과 대화',
thought: '생각',
thinking: '생각...',
resend: '재전송',
},
promptEditor: {
placeholder: '여기에 프롬프트 단어를 입력하세요. 변수를 삽입하려면 "{{"를 입력하고, 프롬프트 컨텐츠 블록을 삽입하려면 "/"를 입력하세요.',
context: {
item: {
title: '컨텍스트',
desc: '컨텍스트 템플릿을 삽입합니다.',
},
modal: {
title: '{{num}} 번째 컨텍스트',
add: '컨텍스트 추가',
footer: '아래의 컨텍스트 섹션에서 컨텍스트를 관리할 수 있습니다.',
},
},
history: {
item: {
title: '대화 기록',
desc: '과거 메시지 템플릿을 삽입합니다.',
},
modal: {
title: '예시',
user: '안녕하세요',
assistant: '안녕하세요! 오늘은 어떻게 도와드릴까요?',
edit: '대화 역할 이름 편집',
},
},
variable: {
item: {
title: '변수 및 외부 도구',
desc: '변수 및 외부 도구를 삽입합니다.',
},
outputToolDisabledItem: {
title: '변수',
desc: '변수를 삽입합니다.',
},
modal: {
add: '새로운 변수',
addTool: '새로운 도구',
},
},
query: {
item: {
title: '쿼리',
desc: '사용자 쿼리 템플릿을 삽입합니다.',
},
},
existed: '프롬프트에 이미 존재합니다',
},
imageUploader: {
uploadFromComputer: '컴퓨터에서 업로드',
uploadFromComputerReadError: '이미지 읽기 실패. 다시 시도하세요.',
uploadFromComputerUploadError: '이미지 업로드 실패. 다시 업로드하세요.',
uploadFromComputerLimit: '업로드 이미지 크기는 {{size}} MB 를 초과할 수 없습니다',
pasteImageLink: '이미지 링크 붙여넣기',
pasteImageLinkInputPlaceholder: '여기에 이미지 링크를 붙여넣으세요',
pasteImageLinkInvalid: '유효하지 않은 이미지 링크',
imageUpload: '이미지 업로드',
},
tag: {
placeholder: '모든 태그',
addNew: '새 태그 추가',
noTag: '태그 없음',
noTagYet: '아직 태그가 없습니다',
addTag: '태그 추가',
editTag: '태그 편집',
manageTags: '태그 관리',
selectorPlaceholder: '검색 또는 생성할 문자를 입력하세요',
create: '생성',
delete: '태그 삭제',
deleteTip: '태그가 사용 중입니다. 삭제하시겠습니까?',
created: '태그가 성공적으로 생성되었습니다',
failed: '태그 생성에 실패했습니다',
},
errorMsg: {
urlError: 'URL 은 http:// 또는 https:// 로 시작해야 합니다.',
fieldRequired: '{{field}}는 필수입니다.',
},
fileUploader: {
uploadFromComputer: '로컬 업로드',
pasteFileLinkInputPlaceholder: 'URL 입력...',
pasteFileLinkInvalid: '유효하지 않은 파일 링크',
uploadFromComputerReadError: '파일 읽기에 실패했습니다. 다시 시도하십시오.',
pasteFileLink: '파일 링크 붙여넣기',
fileExtensionNotSupport: '지원되지 않는 파일 확장자',
uploadFromComputerLimit: '업로드 파일은 {{size}}를 초과할 수 없습니다.',
uploadFromComputerUploadError: '파일 업로드에 실패했습니다. 다시 업로드하십시오.',
},
license: {
expiring_plural: '{{count}}일 후에 만료',
expiring: '하루 후에 만료',
unlimited: '무제한',
},
pagination: {
perPage: '페이지당 항목 수',
},
theme: {
theme: '테마',
light: '밝은',
dark: '어두운',
auto: '시스템',
},
compliance: {
iso27001: 'ISO 27001:2022 인증',
soc2Type1: 'SOC 2 유형 I 보고서',
soc2Type2: 'SOC 2 유형 II 보고서',
gdpr: 'GDPR DPA',
professionalUpgradeTooltip: '팀 플랜 이상에서만 사용할 수 있습니다.',
sandboxUpgradeTooltip: '전문가 또는 팀 플랜에서만 사용할 수 있습니다.',
},
imageInput: {
supportedFormats: 'PNG, JPG, JPEG, WEBP 및 GIF 를 지원합니다.',
browse: '브라우즈',
dropImageHere: '여기에 이미지를 드롭하거나',
},
you: '너',
avatar: {
deleteTitle: '아바타 제거하기',
deleteDescription: '프로필 사진을 제거하시겠습니까? 귀하의 계정은 기본 초기 아바타를 사용하게 됩니다.',
},
feedback: {
content: '피드백 내용',
title: '피드백 제공하기',
subtitle: '이 응답에서 무엇이 잘못되었는지 말씀해 주세요.',
placeholder: '문제가 무엇인지 또는 어떻게 개선할 수 있는지 설명해 주십시오...',
},
label: {
optional: '(선택 사항)',
},
}
export default translation

View File

@@ -0,0 +1,32 @@
const translation = {
custom: '사용자 정의',
upgradeTip: {
prefix: '플랜을 업그레이드하여',
suffix: '브랜드를 사용자 정의하세요.',
des: '계획을 업그레이드하여 브랜드를 맞춤화하세요.',
title: '플랜을 업그레이드하세요',
},
webapp: {
title: 'web app 브랜드 사용자 정의',
removeBrand: 'Powered by Dify 삭제',
changeLogo: 'Powered by 브랜드 이미지 변경',
changeLogoTip: '최소 크기 40x40px 의 SVG 또는 PNG 형식',
},
app: {
title: '앱 헤더 브랜드 사용자 정의',
changeLogoTip: '최소 크기 80x80px 의 SVG 또는 PNG 형식',
},
upload: '업로드',
uploading: '업로드 중',
uploadedFail: '이미지 업로드 실패. 다시 업로드해 주세요.',
change: '변경',
apply: '적용',
restore: '기본값으로 복원',
customize: {
contactUs: '문의하기',
prefix: '앱 내 브랜드 로고를 사용자 정의하려면,',
suffix: '엔터프라이즈 버전으로 업그레이드하세요.',
},
}
export default translation

View File

@@ -0,0 +1,218 @@
const translation = {
steps: {
header: {
fallbackRoute: '지식',
},
one: '데이터 소스 선택',
two: '텍스트 전처리 및 클리닝',
three: '실행 및 완료',
},
error: {
unavailable: '이 지식은 사용할 수 없습니다',
},
stepOne: {
filePreview: '파일 미리보기',
pagePreview: '페이지 미리보기',
dataSourceType: {
file: '텍스트 파일에서 가져오기',
notion: 'Notion 동기화',
web: '웹 사이트 동기화',
},
uploader: {
title: '텍스트 파일 업로드',
button: '파일이나 폴더를 끌어서 놓기',
buttonSingleFile: '파일을 끌어서 놓기',
browse: '찾아보기',
tip: '{{supportTypes}}을 (를) 지원합니다. 파일당 최대 크기는 {{size}}MB 입니다.',
validation: {
typeError: '지원되지 않는 파일 유형입니다',
size: '파일 크기가 너무 큽니다. 최대 크기는 {{size}}MB 입니다',
count: '여러 파일은 지원되지 않습니다',
filesNumber: '일괄 업로드 제한 ({{filesNumber}}개) 에 도달했습니다.',
},
cancel: '취소',
change: '변경',
failed: '업로드에 실패했습니다',
},
notionSyncTitle: 'Notion 에 연결되지 않았습니다',
notionSyncTip: 'Notion 과 동기화하려면 먼저 Notion 에 연결해야 합니다.',
connect: '연결하기',
button: '다음',
emptyDatasetCreation: '비어있는 지식 생성',
modal: {
title: '비어있는 지식 생성',
tip: '비어있는 지식에는 문서가 포함되지 않으며 언제든지 문서를 업로드할 수 있습니다.',
input: '지식 이름',
placeholder: '입력하세요',
nameNotEmpty: '이름은 비워둘 수 없습니다',
nameLengthInvalid: '이름은 1~40 자여야 합니다',
cancelButton: '취소',
confirmButton: '생성',
failed: '생성에 실패했습니다',
},
website: {
limit: '한계',
options: '옵션',
firecrawlDoc: 'Firecrawl 문서',
selectAll: '모두 선택',
maxDepth: '최대 수심',
includeOnlyPaths: '경로만 포함',
excludePaths: '경로 제외',
preview: '미리 보기',
run: '달리다',
fireCrawlNotConfigured: 'Firecrawl 이 구성되지 않았습니다.',
firecrawlTitle: 'Firecrawl 로 🔥웹 콘텐츠 추출',
configure: '구성',
resetAll: '모두 재설정',
crawlSubPage: '하위 페이지 크롤링',
exceptionErrorTitle: 'Firecrawl 작업을 실행하는 동안 예외가 발생했습니다.',
scrapTimeInfo: '{{time}}s 내에 총 {{total}} 페이지를 스크랩했습니다.',
unknownError: '알 수 없는 오류',
totalPageScraped: '스크랩한 총 페이지 수:',
fireCrawlNotConfiguredDescription: 'API 키로 Firecrawl 을 구성하여 사용합니다.',
extractOnlyMainContent: '기본 콘텐츠만 추출합니다 (머리글, 탐색, 바닥글 등 없음).',
maxDepthTooltip: '입력한 URL 을 기준으로 크롤링할 최대 수준입니다. 깊이 0 은 입력 된 url 의 페이지를 긁어 내고, 깊이 1 은 url 과 enteredURL + one / 이후의 모든 것을 긁어 모으는 식입니다.',
chooseProvider: '제공자 선택',
jinaReaderDocLink: 'https://jina.ai/reader',
useSitemap: '사이트맵 사용',
jinaReaderNotConfiguredDescription: '액세스를 위해 무료 API 키를 입력하여 Jina Reader 를 설정합니다.',
jinaReaderDoc: 'Jina Reader 에 대해 자세히 알아보기',
jinaReaderTitle: '전체 사이트를 Markdown 으로 변환',
jinaReaderNotConfigured: 'Jina Reader 가 구성되지 않았습니다.',
useSitemapTooltip: '사이트맵을 따라 사이트를 크롤링합니다. 그렇지 않은 경우 Jina Reader 는 페이지 관련성에 따라 반복적으로 크롤링하여 더 적지만 더 높은 품질의 페이지를 생성합니다.',
watercrawlDoc: '워터크롤 문서',
waterCrawlNotConfiguredDescription: 'API 키로 Watercrawl 을 구성하여 사용하십시오.',
watercrawlTitle: 'Watercrawl 로 웹 콘텐츠 추출하기',
configureFirecrawl: '파이어크롤 구성하기',
configureJinaReader: '지나 리더 설정하기',
waterCrawlNotConfigured: 'Watercrawl 이 설정되어 있지 않습니다.',
configureWatercrawl: '워터크롤 구성하기',
running: '달리기',
},
cancel: '취소',
},
stepTwo: {
segmentation: '청크 설정',
auto: '자동',
autoDescription: '청크 및 전처리 규칙을 자동으로 설정합니다. 처음 사용자는 이 옵션을 선택하는 것을 권장합니다.',
custom: '사용자 설정',
customDescription: '청크 규칙, 청크 길이, 전처리 규칙 등을 사용자 정의합니다.',
separator: '세그먼트 식별자',
separatorPlaceholder: '예: 줄바꿈 (\\\\n) 또는 특수 구분자 (예: "***")',
maxLength: '최대 청크 길이',
overlap: '청크 중첩',
overlapTip: '청크 중첩을 설정하여 그 사이의 의미적 연관성을 유지하고 검색 효과를 향상시킬 수 있습니다. 최대 청크 크기의 10%~25% 로 설정하는 것이 좋습니다.',
overlapCheck: '청크 중첩은 최대 청크 길이를 초과할 수 없습니다',
rules: '텍스트 전처리 규칙',
removeExtraSpaces: '연속된 공백, 줄바꿈, 탭을 대체합니다',
removeUrlEmails: '모든 URL 과 이메일 주소를 제거합니다',
removeStopwords: '일반적인 불용어 (예: "a", "an", "the" 등) 를 제거합니다',
preview: '미리보기',
reset: '초기화',
indexMode: '인덱스 모드',
qualified: '고품질',
recommend: '추천',
qualifiedTip: '사용자 쿼리에 대해 더 높은 정확성을 제공하기 위해 기본 시스템 임베딩 인터페이스를 호출하여 처리합니다.',
warning: '모델 제공자의 API 키를 설정하세요.',
click: '설정으로 이동',
economical: '경제적',
economicalTip: '오프라인 벡터 엔진, 키워드 인덱스 등을 사용하여 토큰 소비 없이 정확도를 낮춥니다.',
QATitle: '질문과 답변 형식으로 세그먼트화',
QATip: '이 옵션을 활성화하면 추가 토큰이 소비됩니다',
QALanguage: '사용 언어',
estimateCost: '예상 비용',
estimateSegment: '예상 청크 수',
segmentCount: '청크',
calculating: '계산 중...',
fileSource: '문서 전처리',
notionSource: '페이지 전처리',
other: '기타',
fileUnit: '파일',
notionUnit: '페이지',
previousStep: '이전 단계',
nextStep: '저장하고 처리',
save: '저장하고 처리',
cancel: '취소',
sideTipTitle: '청크와 전처리가 필요한 이유',
sideTipP1: '텍스트 데이터를 처리할 때 청크와 클리닝은 두 가지 중요한 전처리 단계입니다.',
sideTipP2: '세그멘테이션은 긴 텍스트를 단락으로 분할하여 모델이 이해하기 쉽게 합니다. 이로 인해 모델 결과의 품질과 관련성이 향상됩니다.',
sideTipP3: '클리닝은 불필요한 문자 및 형식을 제거하여 지식을 더 깔끔하고 분석 가능한 것으로 만듭니다.',
sideTipP4: '적절한 청크와 클리닝은 모델의 성능을 향상시키고 정확하고 가치 있는 결과를 제공합니다.',
previewTitle: '미리보기',
previewTitleButton: '미리보기',
previewButton: '질문 - 답변 형식으로 전환',
previewSwitchTipStart: '현재 청크 미리보기는 텍스트 형식입니다. 질문과 답변 형식 미리보기로 전환하면',
previewSwitchTipEnd: ' 추가 토큰이 소비됩니다',
characters: '문자',
indexSettingTip: '인덱스 방식을 변경하려면,',
retrievalSettingTip: '인덱스 방식을 변경하려면,',
datasetSettingLink: '지식 설정',
webpageUnit: '페이지',
websiteSource: '웹 사이트 전처리',
separatorTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n 및 \\n은 단락과 줄을 구분하는 데 일반적으로 사용되는 구분 기호입니다. 쉼표 (\\n\\n,\\n) 와 함께 사용하면 최대 청크 길이를 초과할 경우 단락이 줄로 분할됩니다. 직접 정의한 특수 구분 기호 (예: ***) 를 사용할 수도 있습니다.',
maxLengthCheck: '최대 청크 길이는 {{limit}} 미만이어야 합니다.',
childChunkForRetrieval: '검색을 위한 자식 청크',
qaSwitchHighQualityTipContent: '현재 고품질 인덱스 방법만 Q&A 형식 청크를 지원합니다. 고화질 모드로 전환하시겠습니까?',
previewChunkTip: '왼쪽의 \'Preview Chunk\' 버튼을 클릭하여 프리뷰를 로드합니다',
general: '일반',
fullDoc: '전체 문서',
previewChunk: '프리뷰 청크 (Preview Chunk)',
parentChunkForContext: '컨텍스트에 대한 Parent-chunk',
parentChildDelimiterTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n은 원본 문서를 큰 부모 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.',
paragraph: '단락',
parentChild: '부모 - 자식',
useQALanguage: 'Q&A 형식을 사용하는 청크',
highQualityTip: '고품질 모드에서 삽입을 마치면 경제적 모드로 되돌릴 수 없습니다.',
notAvailableForQA: 'Q&A 인덱스에는 사용할 수 없습니다.',
qaSwitchHighQualityTipTitle: 'Q&A 형식에는 고품질 인덱싱 방법이 필요합니다.',
notAvailableForParentChild: '부모 - 자식 인덱스에는 사용할 수 없습니다.',
previewChunkCount: '{{개수}} 추정된 청크',
parentChildTip: '부모 - 자식 모드를 사용할 때 자식 청크는 검색에 사용되고 부모 청크는 컨텍스트로 회수에 사용됩니다.',
generalTip: '일반적인 텍스트 청크 모드에서는 검색된 청크와 회수된 청크가 동일합니다.',
fullDocTip: '전체 문서가 상위 청크로 사용되며 직접 검색됩니다. 성능상의 이유로 10000 토큰을 초과하는 텍스트는 자동으로 잘립니다.',
parentChildChunkDelimiterTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n 은 부모 청크를 작은 자식 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.',
switch: '스위치',
paragraphTip: '이 모드는 구분 기호와 최대 청크 길이에 따라 텍스트를 단락으로 분할하며, 분할된 텍스트를 검색을 위한 부모 청크로 사용합니다.',
qaTip: '구조화된 Q&A 데이터를 사용하는 경우 질문과 답변을 연결하는 문서를 만들 수 있습니다. 이러한 문서는 질문 부분을 기반으로 인덱싱되므로 시스템이 쿼리 유사성을 기반으로 관련 답변을 검색할 수 있습니다.',
},
stepThree: {
creationTitle: '🎉 지식이 생성되었습니다',
creationContent: '지식 이름이 자동으로 설정되었지만 언제든지 변경할 수 있습니다',
label: '지식 이름',
additionTitle: '🎉 문서가 업로드되었습니다',
additionP1: '문서가 지식에 업로드되었습니다',
additionP2: '지식의 문서 목록에서 찾을 수 있습니다.',
stop: '처리 중지',
resume: '처리 재개',
navTo: '문서로 이동',
sideTipTitle: '다음 단계는 무엇인가요',
sideTipContent:
'문서 인덱싱이 완료되면 지식을 응용 프로그램 컨텍스트로 통합할 수 있습니다. 프롬프트 오케스트레이션 페이지에서 컨텍스트 설정을 찾을 수 있습니다. 또한 독립된 ChatGPT 인덱스 플러그인으로 출시할 수도 있습니다.',
modelTitle: '임베딩을 중지해도 괜찮습니까?',
modelContent: '나중에 처리를 다시 시작해야 할 경우, 중단한 위치에서 계속합니다.',
modelButtonConfirm: '확인',
modelButtonCancel: '취소',
},
firecrawl: {
getApiKeyLinkText: 'firecrawl.dev 에서 API 키 가져오기',
apiKeyPlaceholder: 'firecrawl.dev 의 API 키',
configFirecrawl: 'Firecrawl 구성 🔥',
},
jinaReader: {
apiKeyPlaceholder: 'jina.ai 의 API 키',
getApiKeyLinkText: 'jina.ai 에서 무료 API 키 받기',
configJinaReader: 'Jina Reader 구성',
},
otherDataSource: {
learnMore: '더 알아보세요',
title: '다른 데이터 소스에 연결하시겠습니까?',
description: '현재 Dify 의 기술 자료에는 제한된 데이터 소스만 있습니다. Dify 기술 자료에 데이터 소스를 제공하는 것은 모든 사용자를 위해 플랫폼의 유연성과 기능을 향상시키는 데 도움이 되는 환상적인 방법입니다. 기여 가이드를 통해 쉽게 시작할 수 있습니다. 자세한 내용은 아래 링크를 클릭하십시오.',
},
watercrawl: {
getApiKeyLinkText: 'watercrawl.dev 에서 API 키를 얻으세요.',
configWatercrawl: '워터크롤 구성하기',
apiKeyPlaceholder: 'watercrawl.dev 의 API 키',
},
}
export default translation

View File

@@ -0,0 +1,402 @@
const translation = {
list: {
title: '문서',
desc: '지식의 모든 파일이 여기에 표시되며, 전체 지식이 Dify 의 인용문이나 챗 플러그인을 통해 링크되거나 색인화될 수 있습니다.',
addFile: '파일 추가',
addPages: '페이지 추가',
table: {
header: {
fileName: '파일명',
words: '단어 수',
hitCount: '검색 횟수',
uploadTime: '업로드 시간',
status: '상태',
action: '동작',
chunkingMode: '청크 모드',
},
name: '이름',
rename: '이름 바꾸기',
},
action: {
uploadFile: '새 파일 업로드',
settings: '세그먼트 설정',
addButton: '청크 추가',
add: '청크 추가',
batchAdd: '일괄 추가',
archive: '아카이브',
unarchive: '아카이브 해제',
delete: '삭제',
enableWarning: '아카이브된 파일은 활성화할 수 없습니다.',
sync: '동기화',
resume: '재개',
pause: '일시 중지',
},
index: {
enable: '활성화',
disable: '비활성화',
all: '모두',
enableTip: '파일을 색인화할 수 있습니다.',
disableTip: '파일을 색인화할 수 없습니다.',
},
status: {
queuing: '대기 중',
indexing: '색인화 중',
paused: '일시 중지됨',
error: '오류',
available: '사용 가능',
enabled: '활성화됨',
disabled: '비활성화됨',
archived: '아카이브됨',
},
empty: {
title: '아직 문서가 없습니다',
upload: {
tip: '파일을 업로드하거나 웹 사이트에서 동기화하거나 Notion 이나 GitHub 같은 웹 앱에서 동기화할 수 있습니다.',
},
sync: {
tip: 'Dify 는 정기적으로 Notion 에서 파일을 다운로드하고 처리합니다.',
},
},
delete: {
title: '정말 삭제하시겠습니까?',
content: '나중에 처리를 계속해야 하는 경우 중단한 곳에서 계속합니다.',
},
batchModal: {
title: '일괄 추가',
csvUploadTitle: 'CSV 파일을 여기로 드래그 앤 드롭하거나',
browse: '찾아보기',
tip: 'CSV 파일은 다음 구조를 따라야 합니다:',
question: '질문',
answer: '답변',
contentTitle: '청크 내용',
content: '내용',
template: '여기서 템플릿 다운로드',
cancel: '취소',
run: '일괄 실행',
runError: '일괄 실행에 실패했습니다',
processing: '일괄 처리 중',
completed: '가져오기 완료',
error: '가져오기 오류',
ok: '확인',
},
addUrl: 'URL 추가',
learnMore: '더 알아보세요',
},
metadata: {
title: '메타데이터',
desc: '문서 메타데이터에 레이블을 붙여 AI 가 신속하게 접근할 수 있고 사용자에게 출처가 공개됩니다.',
dateTimeFormat: 'YYYY 년 M 월 D 일 hh:mm A',
docTypeSelectTitle: '문서 유형을 선택하세요',
docTypeChangeTitle: '문서 유형 변경',
docTypeSelectWarning: '문서 유형을 변경하면 현재 입력된 메타데이터가 유지되지 않습니다.',
firstMetaAction: '시작하기',
placeholder: {
add: '추가',
select: '선택',
},
source: {
upload_file: '파일 업로드',
notion: 'Notion 에서 동기화',
github: 'GitHub 에서 동기화',
website_crawl: '웹사이트 크롤링',
local_file: '로컬 파일',
online_document: '온라인 문서',
},
type: {
book: '도서',
webPage: '웹 페이지',
paper: '논문',
socialMediaPost: '소셜 미디어 게시물',
personalDocument: '개인 문서',
businessDocument: '비즈니스 문서',
IMChat: 'IM 채팅',
wikipediaEntry: '위키피디아 항목',
notion: 'Notion 에서 동기화',
github: 'GitHub 에서 동기화',
technicalParameters: '기술적 매개변수',
},
field: {
processRule: {
processDoc: '문서 처리',
segmentRule: '청크 규칙',
segmentLength: '청크 길이',
processClean: '텍스트 전처리',
},
book: {
title: '제목',
language: '언어',
author: '저자',
publisher: '출판사',
publicationDate: '출판일',
ISBN: 'ISBN',
category: '카테고리',
},
webPage: {
title: '제목',
url: 'URL',
language: '언어',
authorPublisher: '저자/출판사',
publishDate: '공개일',
topicKeywords: '주제/키워드',
description: '설명',
},
paper: {
title: '제목',
language: '언어',
author: '저자',
publishDate: '공개일',
journalConferenceName: '저널/학회명',
volumeIssuePage: '권호페이지',
DOI: 'DOI',
topicsKeywords: '주제/키워드',
abstract: '요약',
},
socialMediaPost: {
platform: '플랫폼',
authorUsername: '저자/사용자명',
publishDate: '공개일',
postURL: '게시물 URL',
topicsTags: '주제/태그',
},
personalDocument: {
title: '제목',
author: '저자',
creationDate: '생성일',
lastModifiedDate: '최종 수정일',
documentType: '문서 유형',
tagsCategory: '태그/카테고리',
},
businessDocument: {
title: '제목',
author: '저자',
creationDate: '생성일',
lastModifiedDate: '최종 수정일',
documentType: '문서 유형',
departmentTeam: '부서/팀',
},
IMChat: {
chatPlatform: '채팅 플랫폼',
chatPartiesGroupName: '채팅 참여자/그룹명',
participants: '참여자',
startDate: '시작일',
endDate: '종료일',
topicsKeywords: '주제/키워드',
fileType: '파일 유형',
},
wikipediaEntry: {
title: '제목',
language: '언어',
webpageURL: '웹 페이지 URL',
editorContributor: '편집자/기고자',
lastEditDate: '최종 편집일',
summaryIntroduction: '요약/소개',
},
notion: {
title: '제목',
language: '언어',
author: '저자',
createdTime: '생성 일시',
lastModifiedTime: '최종 수정 일시',
url: 'URL',
tag: '태그',
description: '설명',
},
github: {
repoName: '저장소 이름',
repoDesc: '저장소 설명',
repoOwner: '저장소 소유자',
fileName: '파일 이름',
filePath: '파일 경로',
programmingLang: '프로그래밍 언어',
url: 'URL',
license: '라이선스',
lastCommitTime: '최종 커밋 시간',
lastCommitAuthor: '최종 커밋 작성자',
},
originInfo: {
originalFilename: '원본 파일 이름',
originalFileSize: '원본 파일 크기',
uploadDate: '업로드 일시',
lastUpdateDate: '최종 업데이트 일시',
source: '소스',
},
technicalParameters: {
segmentSpecification: '청크 사양',
segmentLength: '청크 길이',
avgParagraphLength: '평균 문단 길이',
paragraphs: '문단',
hitCount: '검색 횟수',
embeddingTime: '임베딩 시간',
embeddedSpend: '임베딩 소모',
},
},
languageMap: {
zh: '중국어',
en: '영어',
es: '스페인어',
fr: '프랑스어',
de: '독일어',
ja: '일본어',
ko: '한국어',
ru: '러시아어',
ar: '아랍어',
pt: '포르투갈어',
it: '이탈리아어',
nl: '네덜란드어',
pl: '폴란드어',
sv: '스웨덴어',
tr: '터키어',
he: '히브리어',
hi: '힌디어',
da: '덴마크어',
fi: '핀란드어',
no: '노르웨이어',
hu: '헝가리어',
el: '그리스어',
cs: '체코어',
th: '태국어',
id: '인도네시아어',
},
categoryMap: {
book: {
fiction: '소설',
biography: '전기',
history: '역사',
science: '과학',
technology: '기술',
education: '교육',
philosophy: '철학',
religion: '종교',
socialSciences: '사회과학',
art: '예술',
travel: '여행',
health: '건강',
selfHelp: '자기 도움',
businessEconomics: '비즈니스/경제',
cooking: '요리',
childrenYoungAdults: '어린이/청소년',
comicsGraphicNovels: '만화/그래픽 소설',
poetry: '시',
drama: '연극',
other: '기타',
},
personalDoc: {
notes: '메모',
blogDraft: '블로그 초안',
diary: '다이어리',
researchReport: '연구 보고서',
bookExcerpt: '책 발췌',
schedule: '일정',
list: '목록',
projectOverview: '프로젝트 개요',
photoCollection: '사진 컬렉션',
creativeWriting: '창작 글',
codeSnippet: '코드 스니펫',
designDraft: '디자인 초안',
personalResume: '이력서',
other: '기타',
},
businessDoc: {
meetingMinutes: '회의록',
researchReport: '연구 보고서',
proposal: '제안서',
employeeHandbook: '직원 안내서',
trainingMaterials: '교육 자료',
requirementsDocument: '요구 사항 문서',
designDocument: '디자인 문서',
productSpecification: '제품 사양서',
financialReport: '재무 보고서',
marketAnalysis: '마켓 분석',
projectPlan: '프로젝트 계획서',
teamStructure: '팀 구조',
policiesProcedures: '정책 및 절차',
contractsAgreements: '계약 및 협약',
emailCorrespondence: '이메일 통신',
other: '기타',
},
},
},
embedding: {
processing: '임베딩 처리 중...',
paused: '임베딩이 일시 중지되었습니다',
completed: '임베딩이 완료되었습니다',
error: '임베딩 오류',
docName: '문서 전처리',
mode: '세그먼트 규칙',
segmentLength: '청크의 길이',
textCleaning: '텍스트 전처리',
segments: '세그먼트',
highQuality: '고품질 모드',
economy: '경제 모드',
estimate: '소비량 예상',
stop: '처리 중지',
resume: '처리 재개',
automatic: '자동',
custom: '사용자 정의',
previewTip: '임베딩이 완료된 후에 세그먼트 미리보기를 사용할 수 있습니다',
childMaxTokens: '아이',
parentMaxTokens: '부모',
pause: '일시 중지',
hierarchical: '부모 - 자식',
waiting: '임베딩 대기 중...',
},
segment: {
paragraphs: '단락',
keywords: '키워드',
addKeyWord: '키워드 추가',
keywordError: '키워드 최대 길이는 20 자입니다',
hitCount: '검색 횟수',
vectorHash: '벡터 해시: ',
questionPlaceholder: '질문을 입력하세요',
questionEmpty: '질문을 비워둘 수 없습니다',
answerPlaceholder: '답변을 입력하세요',
answerEmpty: '답변을 비워둘 수 없습니다',
contentPlaceholder: '내용을 입력하세요',
contentEmpty: '내용을 비워둘 수 없습니다',
newTextSegment: '새로운 텍스트 세그먼트',
newQaSegment: '새로운 Q&A 세그먼트',
delete: '이 청크를 삭제하시겠습니까?',
parentChunks_one: '부모 청크 (PARENT CHUNK)',
newChunk: '새 청크',
addChildChunk: '자손 청크 추가 (Add Child Chunk)',
editChildChunk: '자손 청크 편집 (Edit Child Chunk)',
chunkDetail: '청크 디테일 (Chunk Detail)',
editChunk: '청크 편집 (Edit Chunk)',
regeneratingTitle: '자식 청크 재생성',
newChildChunk: '새 자손 청크 (New Child Chunk)',
childChunkAdded: '자식 청크 1 개 추가됨',
chunk: '덩어리',
searchResults_zero: '결과',
empty: '청크를 찾을 수 없습니다.',
editParentChunk: '부모 청크 편집 (Edit Parent Chunk)',
chunks_one: '덩어리',
regenerationSuccessMessage: '이 창을 닫을 수 있습니다.',
childChunks_one: '자식 청크 (CHILD CHUNK)',
regenerationSuccessTitle: '재생이 완료되었습니다.',
editedAt: '편집 위치',
dateTimeFormat: 'MM/DD/YYYY h:mm',
addAnother: '다른 항목 추가',
chunkAdded: '청크 1 개 추가됨',
searchResults_one: '결과',
searchResults_other: '결과',
regenerationConfirmMessage: '자식 청크를 다시 생성하면 편집된 청크와 새로 추가된 청크를 포함하여 현재 자식 청크를 덮어씁니다. 재생성은 취소할 수 없습니다.',
regenerationConfirmTitle: '자식 청크를 다시 생성하시겠습니까?',
clearFilter: '필터 지우기',
characters_one: '문자',
parentChunk: '부모 - 청크',
expandChunks: '청크 확장',
collapseChunks: '청크 축소',
parentChunks_other: '부모 청크 (PARENT CHUNKS)',
childChunk: '자식 청크',
childChunks_other: '자식 청크',
chunks_other: '청크',
edited: '편집',
addChunk: '청크 추가 (Add Chunk)',
characters_other: '문자',
regeneratingMessage: '시간이 걸릴 수 있으니 잠시만 기다려 주십시오...',
keywordDuplicate: '키워드가 이미 존재합니다.',
keywordEmpty: '키워드는 비워둘 수 없습니다.',
},
}
export default translation

View File

@@ -0,0 +1,34 @@
const translation = {
title: '검색 테스트',
desc: '주어진 쿼리 텍스트에 기반하여 지식의 검색 효과를 테스트합니다.',
dateTimeFormat: 'YYYY/MM/DD HH:mm',
table: {
header: {
source: '소스',
text: '텍스트',
time: '시간',
},
},
input: {
title: '소스 텍스트',
placeholder: '텍스트를 입력하세요. 간결한 설명문이 좋습니다.',
countWarning: '최대 200 자까지 입력할 수 있습니다.',
indexWarning: '고품질 지식만.',
testing: '테스트 중',
},
hit: {
title: '검색 결과 단락',
emptyTip: '검색 테스트 결과가 여기에 표시됩니다.',
},
noRecentTip: '최근 쿼리 결과가 없습니다.',
viewChart: '벡터 차트 보기',
settingTitle: '검색 설정',
viewDetail: '자세히보기',
open: '열다',
records: '레코드',
hitChunks: '{{num}}개의 자식 청크를 히트했습니다.',
keyword: '키워드',
chunkDetail: '청크 디테일 (Chunk Detail)',
}
export default translation

View File

@@ -0,0 +1,154 @@
const translation = {
creation: {
createFromScratch: {
title: '빈 지식 파이프라인',
description: '데이터 처리 및 구조를 완전히 제어할 수 있는 사용자 지정 파이프라인을 처음부터 만듭니다.',
},
caution: '주의',
createKnowledge: '지식 창출',
backToKnowledge: '지식으로 돌아가기',
importDSL: 'DSL 파일에서 가져오기',
errorTip: '기술 자료를 만들지 못했습니다.',
successTip: '기술 자료를 성공적으로 만들었습니다.',
},
templates: {
customized: '주문을 받아서 만들어진',
},
operations: {
choose: '고르다',
convert: '변환',
preview: '미리 보기',
process: '프로세스',
dataSource: '데이터 소스',
details: '세부 정보',
saveAndProcess: '저장 및 처리',
exportPipeline: '수출 파이프라인',
editInfo: '정보 편집',
backToDataSource: '데이터 소스로 돌아가기',
useTemplate: '이 지식 파이프라인 사용',
},
deletePipeline: {
title: '이 파이프라인 템플릿을 삭제하시겠습니까?',
content: '파이프라인 템플릿을 삭제하는 것은 되돌릴 수 없습니다.',
},
publishPipeline: {
success: {
message: '지식 파이프라인 게시',
},
error: {
message: '지식 파이프라인 게시 실패',
},
},
publishTemplate: {
success: {
learnMore: '더 알아보세요',
message: '파이프라인 템플릿 게시됨',
tip: '생성 페이지에서 이 템플릿을 사용할 수 있습니다.',
},
error: {
message: '파이프라인 템플릿을 게시하지 못했습니다.',
},
},
exportDSL: {
successTip: '파이프라인 DSL 내보내기 성공',
errorTip: '파이프라인 DSL을 내보내지 못했습니다.',
},
details: {
structure: '구조',
structureTooltip: '청크 구조는 문서를 분할하고 인덱싱하는 방법(일반, 부모-자식 및 Q&A 모드를 제공)을 결정하며 각 기술 자료에 고유합니다.',
},
testRun: {
steps: {
documentProcessing: '문서 처리',
dataSource: '데이터 소스',
},
dataSource: {
localFiles: '로컬 파일',
},
notion: {
docTitle: 'Notion 문서',
title: 'Notion 페이지 선택',
},
title: '테스트 실행',
tooltip: '테스트 실행 모드에서는 더 쉬운 디버깅 및 관찰을 위해 한 번에 하나의 문서만 가져올 수 있습니다.',
},
inputFieldPanel: {
uniqueInputs: {
title: '각 입구에 대한 고유한 입력',
tooltip: '고유 입력은 선택한 데이터 원본 및 해당 다운스트림 노드에서만 액세스할 수 있습니다. 사용자는 다른 데이터 원본을 선택할 때 입력할 필요가 없습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 표시됩니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다.',
},
globalInputs: {
title: '모든 입구에 대한 전역 입력',
tooltip: '전역 입력은 모든 노드에서 공유됩니다. 사용자는 데이터 원본을 선택할 때 이를 입력해야 합니다. 예를 들어 구분 기호 및 최대 청크 길이와 같은 필드는 여러 데이터 원본에 균일하게 적용될 수 있습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 나타납니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다.',
},
preview: {
stepOneTitle: '데이터 소스',
stepTwoTitle: '문서 처리',
},
error: {
variableDuplicate: '변수 이름이 이미 존재합니다. 다른 이름을 선택해 주세요.',
},
addInputField: '입력 필드 추가',
title: '사용자 입력 필드',
editInputField: '입력 필드 편집',
description: '사용자 입력 필드는 파이프라인 실행 프로세스 중에 필요한 변수를 정의하고 수집하는 데 사용됩니다. 사용자는 필드 유형을 사용자 정의하고 다양한 데이터 소스 또는 문서 처리 단계의 요구 사항을 충족하도록 입력 값을 유연하게 구성할 수 있습니다.',
},
addDocuments: {
steps: {
processingDocuments: '문서 처리',
processDocuments: '문서 처리',
chooseDatasource: '데이터 소스 선택',
},
stepOne: {
preview: '미리 보기',
},
stepTwo: {
previewChunks: '프리뷰 청크',
chunkSettings: '청크 세팅',
},
stepThree: {
learnMore: '더 알아보세요',
},
characters: '문자',
backToDataSource: '데이터 소스',
title: '문서 추가',
},
documentSettings: {
title: '문서 설정',
},
onlineDocument: {},
onlineDrive: {
breadcrumbs: {
allFiles: '모든 파일',
allBuckets: '모든 Cloud Storage 버킷',
searchPlaceholder: '파일 검색...',
},
emptySearchResult: '항목을 찾을 수 없습니다.',
emptyFolder: '이 폴더는 비어 있습니다.',
resetKeywords: '키워드 재설정',
notSupportedFileType: '이 파일 형식은 지원되지 않습니다',
},
credentialSelector: {},
conversion: {
confirm: {
title: '확인',
content: '이 작업은 영구적입니다. 이전 방법으로 되돌릴 수 없습니다. 변환을 확인하시기 바랍니다.',
},
title: '지식 파이프라인으로 변환',
warning: '이 작업은 실행 취소할 수 없습니다.',
errorMessage: '데이터 세트를 파이프라인으로 변환하지 못했습니다.',
successMessage: '데이터 세트를 파이프라인으로 성공적으로 변환했습니다.',
descriptionChunk2: '— 마켓플레이스의 플러그인에 액세스할 수 있는 보다 개방적이고 유연한 접근 방식입니다. 이렇게 하면 향후 모든 문서에 새로운 처리 방법이 적용됩니다.',
descriptionChunk1: '이제 문서 처리에 지식 파이프라인을 사용하도록 기존 기술 자료를 변환할 수 있습니다',
},
knowledgeDescription: '지식 설명',
knowledgePermissions: '권한을',
inputField: '입력 필드',
knowledgeNameAndIcon: '지식 이름 & 아이콘',
pipelineNameAndIcon: '파이프라인 이름 & 아이콘',
editPipelineInfo: '파이프라인 정보 편집',
knowledgeNameAndIconPlaceholder: '기술 자료의 이름을 입력하십시오.',
knowledgeDescriptionPlaceholder: '이 기술 자료에 포함된 내용을 설명하십시오. 자세한 설명을 통해 AI는 데이터 세트의 콘텐츠에 보다 정확하게 액세스할 수 있습니다. 비어 있으면 Dify는 기본 히트 전략을 사용합니다. (선택 사항)',
}
export default translation

View File

@@ -0,0 +1,51 @@
const translation = {
title: '지식 설정',
desc: '여기에서 지식의 속성과 작동 방법을 변경할 수 있습니다.',
form: {
name: '지식 이름',
namePlaceholder: '지식 이름을 입력하세요',
nameError: '이름은 비워둘 수 없습니다',
desc: '지식 설명',
descInfo: '지식 내용을 개괄하는 명확한 텍스트 설명을 작성하세요. 이 설명은 여러 지식 중에서 선택하는 기준으로 사용됩니다.',
descPlaceholder: '이 지식에 포함된 내용을 설명하세요. 자세한 설명은 AI 가 지식 내용에 빠르게 접근할 수 있도록 합니다. 비어 있으면 Dify 가 기본 검색 전략을 사용합니다.',
descWrite: '좋은 지식 설명 작성 방법 배우기',
permissions: '권한',
permissionsOnlyMe: '나만',
permissionsAllMember: '모든 팀 멤버',
indexMethod: '인덱스 방법',
indexMethodHighQuality: '고품질',
indexMethodHighQualityTip: '사용자 쿼리 시 더 높은 정확도를 제공하기 위해 Embedding 모델을 호출하여 처리합니다.',
indexMethodEconomy: '경제적',
indexMethodEconomyTip: '오프라인 벡터 엔진, 키워드 인덱스 등을 사용하여 토큰을 소비하지 않고도 정확도를 감소시킵니다.',
embeddingModel: '임베딩 모델',
embeddingModelTip: '임베딩 모델 변경은',
embeddingModelTipLink: '설정',
retrievalSetting: {
title: '검색 설정',
learnMore: '자세히 알아보기',
description: ' 검색 방법에 대한 자세한 정보',
longDescription: ' 검색 방법에 대한 자세한 내용은 언제든지 지식 설정에서 변경할 수 있습니다.',
method: '검색 방법',
},
save: '저장',
permissionsInvitedMembers: '부분 팀 구성원',
me: '(당신)',
externalKnowledgeAPI: '외부 지식 API',
externalKnowledgeID: '외부 지식 ID',
retrievalSettings: '검색 설정',
upgradeHighQualityTip: '고품질 모드로 업그레이드한 후에는 경제적 모드로 되돌릴 수 없습니다.',
indexMethodChangeToEconomyDisabledTip: 'HQ 에서 ECO 로 다운그레이드할 수 없습니다.',
helpText: '좋은 데이터 세트 설명을 작성하는 방법을 알아보세요.',
searchModel: '모델 검색',
chunkStructure: {
title: '청크 구조',
learnMore: '더 알아보세요',
description: '청크 구조에 대해.',
},
numberOfKeywords: '키워드 수',
nameAndIcon: '이름 & 아이콘',
onSearchResults: '검색어와 일치하는 구성원이 없습니다.\n검색을 다시 시도합니다.',
},
}
export default translation

View File

@@ -0,0 +1,230 @@
const translation = {
knowledge: '지식',
documentCount: ' 문서',
wordCount: ' k 단어',
appCount: ' 연결된 앱',
createDataset: '지식 생성',
createDatasetIntro: '자체 텍스트 데이터를 가져오거나 LLM 컨텍스트를 강화하기 위해 웹훅을 통해 실시간 데이터를 기록할 수 있습니다.',
deleteDatasetConfirmTitle: '이 지식을 삭제하시겠습니까?',
deleteDatasetConfirmContent: '지식을 삭제하면 다시 되돌릴 수 없습니다. 사용자는 더 이상 귀하의 지식에 액세스할 수 없으며 모든 프롬프트 설정과 로그가 영구적으로 삭제됩니다.',
datasetUsedByApp: '이 지식은 일부 앱에서 사용 중입니다. 앱에서 더 이상 이 지식을 사용할 수 없게 되며, 모든 프롬프트 구성 및 로그가 영구적으로 삭제됩니다.',
datasetDeleted: '지식이 삭제되었습니다',
datasetDeleteFailed: '지식 삭제에 실패했습니다',
didYouKnow: '알고 계셨나요?',
intro1: '지식을 Dify 애플리케이션에 ',
intro2: '컨텍스트로',
intro3: ' 통합할 수 있습니다.',
intro4: '혹은, ',
intro5: '이처럼',
intro6: ' 독립적인 ChatGPT 인덱스 플러그인으로 공개할 수 있습니다',
unavailable: '사용 불가',
unavailableTip: '임베딩 모델을 사용할 수 없습니다. 기본 임베딩 모델을 설정해야 합니다.',
datasets: '지식',
datasetsApi: 'API',
retrieval: {
semantic_search: {
title: '벡터 검색',
description: '쿼리의 임베딩을 생성하고, 해당 벡터 표현에 가장 유사한 텍스트 청크를 검색합니다.',
},
full_text_search: {
title: '전체 텍스트 검색',
description: '문서 내 모든 용어를 인덱싱하여 사용자가 원하는 용어를 검색하고 관련 텍스트 청크를 가져올 수 있게 합니다.',
},
hybrid_search: {
title: '하이브리드 검색',
description: '전체 텍스트 검색과 벡터 검색을 동시에 실행하고 사용자 쿼리에 가장 적합한 매치를 선택하기 위해 다시 랭크를 매깁니다. 재랭크 모델 API 설정이 필요합니다.',
recommend: '추천',
},
invertedIndex: {
title: '역 인덱스',
description: '효율적인 검색에 사용되는 구조입니다. 각 용어는 문서나 웹 페이지에 포함된 것을 가리키며, 용어마다 체계적으로 정리되어 있습니다.',
},
change: '변경',
changeRetrievalMethod: '검색 방법 변경',
keyword_search: {
title: '반전 인덱스',
description: '역인덱스는 효율적인 검색을 위해 사용되는 구조입니다. 용어별로 구성된 각 용어는 해당 용어가 포함된 문서 또는 웹 페이지를 가리킵니다.',
},
},
docsFailedNotice: '문서 인덱스에 실패했습니다',
retry: '재시도',
indexingTechnique: {
high_quality: 'HQ',
economy: '이코노미',
},
indexingMethod: {
semantic_search: '벡터',
full_text_search: '전체 텍스트',
hybrid_search: '하이브리드',
invertedIndex: '역인덱스',
},
mixtureHighQualityAndEconomicTip: '고품질과 경제적 지식 베이스의 혼합을 위해서는 재순위 모델이 필요합니다.',
inconsistentEmbeddingModelTip: '선택된 지식 베이스의 임베딩 모델이 일관되지 않은 경우 재순위 모델이 필요합니다.',
retrievalSettings: '검색 설정',
rerankSettings: '재순위 설정',
weightedScore: {
title: '가중 점수',
description: '할당된 가중치를 조정함으로써, 이 재순위 전략은 의미론적 일치 또는 키워드 일치 중 어느 것을 우선시할지 결정합니다.',
semanticFirst: '의미론 우선',
keywordFirst: '키워드 우선',
customized: '사용자 정의',
semantic: '의미론적',
keyword: '키워드',
},
nTo1RetrievalLegacy: 'N-대 -1 검색은 9 월부터 공식적으로 더 이상 사용되지 않습니다. 더 나은 결과를 얻으려면 최신 다중 경로 검색을 사용하는 것이 좋습니다.',
nTo1RetrievalLegacyLink: '자세히 알아보기',
nTo1RetrievalLegacyLinkText: 'N-대 -1 검색은 9 월에 공식적으로 더 이상 사용되지 않습니다.',
defaultRetrievalTip: '다중 경로 검색이 기본적으로 사용됩니다. 지식은 여러 기술 자료에서 검색된 다음 순위가 다시 매겨집니다.',
editExternalAPIConfirmWarningContent: {
front: '이 외부 지식 API 는 다음에 연결됩니다.',
end: '외부 지식, 그리고 이 수정 사항은 그들 모두에게 적용될 것입니다. 이 변경 사항을 저장하시겠습니까?',
},
editExternalAPIFormWarning: {
end: '외부 지식',
front: '이 외부 API 는 다음에 연결됩니다.',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: '삭제하다',
end: '?',
},
content: {
front: '이 외부 지식 API 는 다음에 연결됩니다.',
end: '외부 지식. 이 API 를 삭제하면 모두 무효화됩니다. 이 API 를 삭제하시겠습니까?',
},
noConnectionContent: '이 API 를 삭제하시겠습니까?',
},
selectExternalKnowledgeAPI: {
placeholder: '외부 지식 API 선택',
},
connectDatasetIntro: {
content: {
link: '외부 API 를 만드는 방법 알아보기',
end: '. 그런 다음 해당 기술 ID 를 찾아 왼쪽 양식에 입력합니다. 모든 정보가 올바르면 연결 단추를 클릭한 후 기술 자료의 검색 테스트로 자동으로 이동합니다.',
front: '외부 기술 자료에 연결하려면 먼저 외부 API 를 만들어야 합니다. 주의 깊게 읽고 참조하십시오.',
},
learnMore: '더 알아보세요',
title: '외부 기술 자료에 연결하는 방법',
},
connectHelper: {
helper1: 'API 및 기술 자료 ID 를 통해 외부 기술 자료에 연결합니다. 현재,',
helper4: '도움말 문서 읽기',
helper2: '검색 기능만 지원됩니다',
helper5: '이 기능을 사용하기 전에 주의하십시오.',
helper3: '. 다음을 강력히 권장합니다.',
},
externalKnowledgeForm: {
cancel: '취소',
connect: '연결하다',
},
externalAPIForm: {
encrypted: {
end: '기술.',
front: 'API 토큰은 다음을 사용하여 암호화되고 저장됩니다.',
},
save: '구해내다',
name: '이름',
endpoint: 'API 엔드포인트',
edit: '편집하다',
cancel: '취소',
apiKey: 'API 키',
},
editExternalAPITooltipTitle: '연결된 지식',
externalAPIPanelTitle: '외부 지식 API',
externalKnowledgeDescription: '지식 설명',
externalAPI: '외부 API',
externalKnowledgeName: '외부 지식 이름',
createExternalAPI: '외부 지식 API 추가',
externalTag: '외부',
editExternalAPIFormTitle: '외부 지식 API 편집',
externalKnowledgeNamePlaceholder: '기술 자료의 이름을 입력하십시오.',
externalAPIPanelDocumentation: '외부 지식 API 를 만드는 방법 알아보기',
createNewExternalAPI: '새 외부 지식 API 만들기',
mixtureInternalAndExternalTip: '리랭크 모델은 내부 및 외부 지식의 혼합에 필요합니다.',
connectDataset: '외부 기술 자료에 연결',
learnHowToWriteGoodKnowledgeDescription: '적절한 지식 설명을 작성하는 방법 알아보기',
externalKnowledgeDescriptionPlaceholder: '이 기술 자료의 내용 설명 (선택 사항)',
externalKnowledgeId: '외부 지식 ID',
externalKnowledgeIdPlaceholder: '지식 ID 를 입력하십시오.',
allExternalTip: '외부 지식만 사용하는 경우 사용자는 리랭크 모델을 사용할지 여부를 선택할 수 있습니다. 활성화하지 않으면 검색된 청크가 점수에 따라 정렬됩니다. 서로 다른 기술 자료의 검색 전략이 일관되지 않으면 부정확합니다.',
externalAPIPanelDescription: '외부 지식 API 는 Dify 외부의 기술 자료에 연결하고 해당 기술 자료에서 지식을 검색하는 데 사용됩니다.',
noExternalKnowledge: '아직 외부 지식 API 가 없으므로 여기를 클릭하여 생성하십시오.',
chunkingMode: {
parentChild: '부모 - 자식',
general: '일반',
graph: '그래프',
qa: '질문과 답변',
},
parentMode: {
fullDoc: '전체 문서',
paragraph: '단락',
},
batchAction: {
delete: '삭제하다',
enable: '사용',
cancel: '취소',
archive: '보관',
selected: '선택한',
disable: '비활성화',
},
localDocs: '로컬 문서',
preprocessDocument: '{{숫자}} 문서 전처리',
enable: '사용',
documentsDisabled: '{{num}} 문서 사용 안 함 - 30 일 이상 비활성 상태',
allKnowledge: '모든 지식',
allKnowledgeDescription: '이 작업 영역의 모든 정보를 표시하려면 선택합니다. 워크스페이스 소유자만 모든 기술 자료를 관리할 수 있습니다.',
metadata: {
createMetadata: {
namePlaceholder: '메타데이터 이름 추가',
name: '이름',
type: '유형',
back: '뒤',
title: '새 메타데이터',
},
checkName: {
empty: '메타데이터 이름은 비어 있을 수 없습니다.',
invalid: '메타데이터 이름은 소문자, 숫자 및 밑줄만 포함할 수 있으며 소문자로 시작해야 합니다.',
tooLong: '메타데이터 이름은 {{max}}자를 초과할 수 없습니다.',
},
batchEditMetadata: {
multipleValue: '다중 값',
editMetadata: '메타데이터 편집',
applyToAllSelectDocument: '선택한 모든 문서에 적용',
editDocumentsNum: '{{num}} 개 문서 편집 중',
applyToAllSelectDocumentTip: '선택된 모든 문서에 대해 위에서 편집한 모든 메타데이터와 새 메타데이터를 자동으로 생성하십시오. 그렇지 않으면 메타데이터 편집은 해당 문서에만 적용됩니다.',
},
selectMetadata: {
manageAction: '관리하다',
newAction: '새 메타데이터',
search: '메타데이터 검색',
},
datasetMetadata: {
name: '이름',
deleteTitle: '삭제 확인',
disabled: '사용안함',
addMetaData: '메타데이터 추가',
values: '{{num}} 값들',
namePlaceholder: '메타데이터 이름',
rename: '이름 변경',
builtInDescription: '내장 메타데이터는 자동으로 추출되고 생성됩니다. 사용하기 전에 활성화해야 하며 편집할 수 없습니다.',
deleteContent: '정말 \'{{name}}\' 메타데이터를 삭제하시겠습니까?',
description: '이 지식에서 모든 메타데이터를 관리할 수 있습니다. 수정 사항은 모든 문서에 동기화됩니다.',
builtIn: '내장형',
},
documentMetadata: {
technicalParameters: '기술 매개변수',
startLabeling: '레이블링 시작',
metadataToolTip: '메타데이터는 정보 검색의 정확성과 관련성을 향상시키는 중요한 필터 역할을 합니다. 이 문서에 대한 메타데이터를 여기에서 수정하고 추가할 수 있습니다.',
documentInformation: '문서 정보',
},
addMetadata: '메타데이터 추가',
metadata: '메타데이터',
chooseTime: '시간을 선택하세요...',
},
embeddingModelNotAvailable: '임베딩 모델을 사용할 수 없습니다.',
updated: '업데이트',
externalKnowledgeBase: '외부 기술 자료',
createFromPipeline: '지식 파이프라인에서 만들기',
}
export default translation

View File

@@ -0,0 +1,79 @@
const translation = {
toVerifiedTip: {
end: 'Dify 프로페셔널 플랜을 위해.',
coupon: '독점 100% 쿠폰',
front:
'당신은 이제 교육 인증 상태를 받을 자격이 있습니다. 아래에 귀하의 교육 정보를 입력하여 과정을 완료하고 인증을 받으십시오.',
},
form: {
schoolName: {
placeholder: '귀하의 학교의 공식 약어가 아닌 전체 이름을 입력하세요.',
title: '당신의 학교 이름',
},
schoolRole: {
option: {
teacher: '교사',
student: '학생',
administrator: '학교 관리자',
},
title: '당신의 학교 역할',
},
terms: {
desc: {
end: '제출함으로써:',
and: '와',
termsOfService: '서비스 약관',
front: '귀하의 정보 및 교육 인증 상태 사용은 우리의',
privacyPolicy: '개인정보 보호정책',
},
option: {
inSchool:
'나는 제공된 기관에 재학 중이거나 고용되어 있음을 확인합니다. Dify 는 재학증명서나 고용증명서를 요청할 수 있습니다. 만약 내가 자격을 허위로 진술하면, 나는 내 교육 상태에 따라 처음 면제된 수수료를 지불하기로 동의합니다.',
age: '만 18세 이상입니다.',
},
title: '약관 및 동의사항',
},
},
submit: '제출',
rejectContent:
'안타깝게도, 귀하는 교육 인증 상태에 적합하지 않으므로 이 이메일 주소를 사용할 경우 Dify Professional Plan 의 독점 100% 쿠폰을 받을 수 없습니다.',
successContent:
'귀하의 계정에 Dify Professional 플랜을 위한 100% 할인 쿠폰을 발급했습니다. 이 쿠폰은 1 년간 유효하므로 유효 기간 내에 사용해 주시기 바랍니다.',
currentSigned: '현재 로그인 중입니다',
toVerified: '교육 인증 받기',
rejectTitle: '귀하의 Dify 교육 인증이 거부되었습니다.',
learn: '교육 인증을 받는 방법을 배우세요',
submitError: '양식 제출에 실패했습니다. 나중에 다시 시도해 주세요.',
successTitle: '당신은 Dify 교육 인증을 받았습니다.',
emailLabel: '현재 이메일',
notice: {
expired: {
summary: {
line1: '여전히 Dify에 접근하고 사용할 수 있습니다.',
line2: '하지만, 더 이상 새로운 교육 할인 쿠폰을 받을 수 없습니다.',
},
title: '귀하의 교육 상태가 만료되었습니다.',
},
isAboutToExpire: {
summary: '걱정하지 마세요 — 이번 사항은 현재 구독에 영향을 주지 않지만, 다시 상태를 확인하지 않으면 갱신 시 교육 할인 혜택을 받지 못합니다.',
},
stillInEducation: {
title: '아직 학업 중이신가요?',
isAboutToExpire: '새로운 학년을 위한 쿠폰을 받으시려면 지금 다시 인증하십시오. 쿠폰은 귀하의 계정에 저장되어 다음 갱신 시 사용할 수 있습니다.',
expired: '지금 다시 확인하여 다가오는 학년도에 사용할 새 쿠폰을 받아보세요. 우리는 그것을 귀하의 계정에 추가하며, 다음 업그레이드에 사용할 수 있습니다.',
},
alreadyGraduated: {
title: '벌써 졸업했나요?',
expired: '유료 기능에 대한 전체 액세스를 얻기 위해 언제든지 자유롭게 업그레이드하세요.',
isAboutToExpire: '현재 구독은 여전히 유효합니다. 구독이 종료되면 샌드박스 요금제로 변경되며, 언제든지 업그레이드하여 유료 기능에 대한 전체 접근을 복원할 수 있습니다.',
},
action: {
dismiss: '해제',
upgrade: '업그레이드',
reVerify: '재확인',
},
dateFormat: 'MM/DD/YYYY',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
title: '탐색',
sidebar: {
discovery: '탐색',
chat: '채팅',
workspace: '작업 공간',
action: {
pin: '고정',
unpin: '고정 해제',
rename: '이름 변경',
delete: '삭제',
},
delete: {
title: '앱 삭제',
content: '이 앱을 삭제해도 괜찮습니까?',
},
},
apps: {
title: 'Dify 로 앱 탐색',
description: '이 템플릿 앱을 즉시 사용하거나 템플릿을 기반으로 고유한 앱을 사용자 정의하세요.',
allCategories: '모든 카테고리',
},
appCard: {
addToWorkspace: '작업 공간에 추가',
customize: '사용자 정의',
},
appCustomize: {
title: '{{name}}으로 앱 만들기',
subTitle: '앱 아이콘 및 이름',
nameRequired: '앱 이름은 필수입니다',
},
category: {
Assistant: '어시스턴트',
Writing: '작성',
Translate: '번역',
Programming: '프로그래밍',
Agent: '에이전트',
Workflow: '워크플로우',
HR: '인사',
Entertainment: '오락',
},
}
export default translation

View File

@@ -0,0 +1,8 @@
const translation = {
sidebar: {
expandSidebar: '사이드바 확장',
collapseSidebar: '사이드바 축소',
},
}
export default translation

View File

@@ -0,0 +1,125 @@
const translation = {
pageTitle: '시작하기 🎉',
welcome: 'Dify 에 오신 것을 환영합니다. 계속하려면 로그인하세요.',
email: '이메일 주소',
emailPlaceholder: '이메일 주소를 입력하세요',
password: '비밀번호',
passwordPlaceholder: '비밀번호를 입력하세요',
name: '사용자 이름',
namePlaceholder: '사용자 이름을 입력하세요',
forget: '비밀번호를 잊으셨나요?',
signBtn: '로그인',
installBtn: '설치',
setAdminAccount: '관리자 계정 설정',
setAdminAccountDesc: '앱 생성 및 LLM 제공자 관리 등 최고 권한을 가진 관리자 계정 설정',
createAndSignIn: '계정 생성 및 로그인',
oneMoreStep: '마지막 단계',
createSample: '이 정보를 기반으로 샘플 앱을 생성합니다.',
invitationCode: '초대 코드',
invitationCodePlaceholder: '초대 코드를 입력하세요',
interfaceLanguage: '인터페이스 언어',
timezone: '시간대',
go: 'Dify 로 이동',
sendUsMail: '간단한 소개를 메일로 보내주시면 초대 요청을 처리해드립니다.',
acceptPP: '개인정보 처리 방침에 동의합니다.',
reset: '비밀번호를 재설정하려면 다음 명령을 실행하세요:',
withGitHub: 'GitHub 로 계속',
withGoogle: 'Google 로 계속',
rightTitle: 'LLM 의 최대 잠재력을 발휘하세요',
rightDesc: '매력적이고 조작 가능하며 개선 가능한 AI 애플리케이션을 쉽게 구축하세요.',
tos: '이용약관',
pp: '개인정보 처리 방침',
tosDesc: '가입함으로써 다음 내용에 동의하게 됩니다.',
goToInit: '계정이 초기화되지 않았다면 초기화 페이지로 이동하세요.',
dontHave: '계정이 없으신가요?',
invalidInvitationCode: '유효하지 않은 초대 코드입니다.',
accountAlreadyInited: '계정은 이미 초기화되었습니다.',
forgotPassword: '비밀번호를 잊으셨나요?',
resetLinkSent: '재설정 링크가 전송되었습니다',
sendResetLink: '재설정 링크 보내기',
backToSignIn: '로그인으로 돌아가기',
forgotPasswordDesc: '비밀번호를 재설정하려면 이메일 주소를 입력하세요. 비밀번호 재설정 방법에 대한 이메일을 보내드리겠습니다.',
checkEmailForResetLink: '비밀번호 재설정 링크를 확인하려면 이메일을 확인하세요. 몇 분 내에 나타나지 않으면 스팸 폴더를 확인하세요.',
passwordChanged: '지금 로그인',
changePassword: '비밀번호 변경',
changePasswordTip: '계정의 새 비밀번호를 입력하세요',
invalidToken: '유효하지 않거나 만료된 토큰',
confirmPassword: '비밀번호 확인',
confirmPasswordPlaceholder: '새 비밀번호를 확인하세요',
passwordChangedTip: '비밀번호가 성공적으로 변경되었습니다',
error: {
emailEmpty: '이메일 주소를 입력하세요.',
emailInValid: '유효한 이메일 주소를 입력하세요.',
nameEmpty: '사용자 이름을 입력하세요.',
passwordEmpty: '비밀번호를 입력하세요.',
passwordInvalid: '비밀번호는 문자와 숫자를 포함하고 8 자 이상이어야 합니다.',
passwordLengthInValid: '비밀번호는 8 자 이상이어야 합니다.',
registrationNotAllowed: '계정을 찾을 수 없습니다. 등록하려면 시스템 관리자에게 문의하십시오.',
invalidEmailOrPassword: '유효하지 않은 이메일이나 비밀번호입니다.',
},
license: {
tip: 'Dify Community Edition 을 시작하기 전에 GitHub 의',
link: '오픈 소스 라이선스',
},
join: '가입하기',
joinTipStart: '당신을 초대합니다.',
joinTipEnd: '팀에 가입하세요.',
invalid: '링크의 유효 기간이 만료되었습니다.',
explore: 'Dify 를 탐색하세요',
activatedTipStart: '이제',
activatedTipEnd: '팀에 가입되었습니다.',
activated: '지금 로그인하세요',
adminInitPassword: '관리자 초기화 비밀번호',
validate: '확인',
checkCode: {
verify: '확인',
verificationCode: '인증 코드',
validTime: '코드는 5 분 동안 유효합니다',
checkYourEmail: '이메일 주소 확인',
invalidCode: '유효하지 않은 코드',
verificationCodePlaceholder: '6 자리 코드 입력',
emptyCode: '코드가 필요합니다.',
useAnotherMethod: '다른 방법 사용',
didNotReceiveCode: '코드를 받지 못하셨나요?',
resend: '재전송',
tipsPrefix: '우리는 확인 코드를 보냅니다',
},
back: '뒤로',
or: '또는',
useVerificationCode: '인증 코드 사용',
continueWithCode: '코드로 계속하기',
usePassword: '비밀번호 사용',
withSSO: 'SSO 로 계속하기',
backToLogin: '로그인으로 돌아가기',
resetPassword: '비밀번호 재설정',
setYourAccount: '계정 설정',
noLoginMethod: '인증 방법이 구성되지 않음',
sendVerificationCode: '인증 코드 보내기',
changePasswordBtn: '비밀번호 설정',
enterYourName: '사용자 이름을 입력해 주세요',
noLoginMethodTip: '인증 방법을 추가하려면 시스템 관리자에게 문의하십시오.',
resetPasswordDesc: 'Dify 에 가입할 때 사용한 이메일을 입력하면 비밀번호 재설정 이메일을 보내드립니다.',
licenseInactiveTip: '작업 영역에 대한 Dify Enterprise 라이선스가 비활성 상태입니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.',
licenseLost: '라이센스 분실',
licenseLostTip: 'Dify 라이선스 서버에 연결하지 못했습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.',
licenseInactive: 'License Inactive(라이선스 비활성)',
licenseExpired: '라이센스가 만료되었습니다.',
licenseExpiredTip: '작업 영역에 대한 Dify Enterprise 라이선스가 만료되었습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.',
webapp: {
noLoginMethod: '웹 애플리케이션에 대한 인증 방법이 구성되어 있지 않습니다.',
disabled: '웹앱 인증이 비활성화되었습니다. 이를 활성화하려면 시스템 관리자에게 문의하십시오. 앱을 직접 사용해 볼 수 있습니다.',
noLoginMethodTip: '인증 방법을 추가하려면 시스템 관리자에게 연락하십시오.',
login: '로그인',
},
signup: {
signIn: '로그인',
signUp: '가입하기',
haveAccount: '이미 계정이 있으신가요?',
createAccount: '계정을 생성하세요',
verifyMail: '인증 코드로 계속 진행하세요',
noAccount: '계정이 없으신가요?',
welcome: '👋 환영합니다! 시작하려면 세부 정보를 입력해 주세요.',
},
}
export default translation

View File

@@ -0,0 +1,27 @@
const translation = {
tips: {
needLogin: '로그인하여 인증해 주세요.',
notLoggedIn: '이 앱은 Dify Cloud 계정에 접근하고 싶어합니다.',
loggedIn: '이 앱은 다음 정보를 귀하의 Dify Cloud 계정에서 액세스하려고 합니다.',
common: '우리는 귀하의 개인 정보를 존중하며, 이 정보를 개발자 도구를 통한 귀하의 경험 향상에만 사용할 것입니다.',
},
scopes: {
avatar: '아바타',
email: '이메일',
name: '이름',
languagePreference: '언어 선호',
timezone: '시간대',
},
error: {
invalidParams: '유효하지 않은 매개변수',
authorizeFailed: '권한 부여 실패',
authAppInfoFetchFailed: '인증을 위한 앱 정보를 가져오지 못했습니다.',
},
continue: '계속',
unknownApp: '알 수 없는 앱',
switchAccount: '계정 전환',
login: '로그인',
connect: '연결',
}
export default translation

View File

@@ -0,0 +1,38 @@
const translation = {
common: {
publishAsPipeline: {
name: '파이프라인 이름 & 아이콘',
description: '지식 설명',
namePlaceholder: '이 지식 파이프라인의 이름을 입력하십시오. (필수)',
descriptionPlaceholder: '이 지식 파이프라인에 대한 설명을 입력하십시오. (선택 사항)',
},
reRun: '다시 실행',
processing: '가공',
testRun: '테스트 실행',
confirmPublish: '게시 확인',
preparingDataSource: '데이터 소스 준비',
publishAs: '지식 파이프라인으로 게시',
goToAddDocuments: '문서 추가로 이동',
confirmPublishContent: '지식 파이프라인을 성공적으로 게시한 후에는 이 지식 기반의 청크 구조를 수정할 수 없습니다. 게시하시겠습니까?',
},
inputField: {
manage: '관리하다',
create: '사용자 입력 필드 만들기',
},
publishToast: {
title: '이 파이프라인은 아직 게시되지 않았습니다.',
desc: '파이프라인이 게시되지 않은 경우 기술 자료 노드에서 청크 구조를 수정할 수 있으며 파이프라인 오케스트레이션 및 변경 내용은 자동으로 초안으로 저장됩니다.',
},
result: {
resultPreview: {
loading: '가공... 기다리세요',
viewDetails: '세부 정보보기',
error: '실행 중 오류가 발생했습니다.',
},
},
ragToolSuggestions: {
title: 'RAG에 대한 제안',
},
}
export default translation

View File

@@ -0,0 +1,26 @@
const translation = {
tags: {
social: '사회적인',
finance: '금융',
travel: '여행하다',
search: '검색',
entertainment: '오락',
utilities: '유틸리티',
productivity: '생산력',
weather: '날씨',
other: '다른',
videos: '동영상',
news: '소식',
medical: '내과의',
education: '교육',
image: '이미지',
design: '디자인',
business: '사업',
agent: '에이전트',
rag: '넝마',
},
allTags: '모든 태그',
searchTags: '검색 태그',
}
export default translation

View File

@@ -0,0 +1,311 @@
const translation = {
category: {
agents: '에이전트 전략',
models: '모델',
all: '모두',
extensions: '확장',
tools: '도구',
bundles: '번들',
datasources: '데이터 소스',
},
categorySingle: {
extension: '확장',
tool: '도구',
agent: '에이전트 전략',
bundle: '보따리',
model: '모델',
datasource: '데이터 소스',
},
list: {
source: {
marketplace: '마켓플레이스에서 설치',
local: '로컬 패키지 파일에서 설치',
github: 'GitHub 에서 설치',
},
noInstalled: '설치된 플러그인이 없습니다.',
notFound: '플러그인을 찾을 수 없습니다.',
},
source: {
local: '로컬 패키지 파일',
marketplace: '마켓',
github: '깃허브',
},
detailPanel: {
categoryTip: {
marketplace: '마켓플레이스에서 설치됨',
debugging: '디버깅 플러그인',
github: 'Github 에서 설치됨',
local: '로컬 플러그인',
},
operation: {
detail: '세부 정보',
install: '설치',
viewDetail: '자세히보기',
info: '플러그인 정보',
update: '업데이트',
remove: '제거',
checkUpdate: '업데이트 확인',
},
toolSelector: {
empty: '\'+\' 버튼을 클릭하여 도구를 추가합니다. 여러 도구를 추가할 수 있습니다.',
descriptionLabel: '도구 설명',
uninstalledContent: '이 플러그인은 로컬/GitHub 저장소에서 설치됩니다. 설치 후 사용하십시오.',
params: '추론 구성',
paramsTip1: 'LLM 추론 파라미터를 제어합니다.',
uninstalledLink: '플러그인에서 관리',
unsupportedTitle: '지원되지 않는 작업',
auto: '자동 번역',
settings: '사용자 설정',
unsupportedContent2: '버전을 전환하려면 클릭합니다.',
uninstalledTitle: '도구가 설치되지 않음',
descriptionPlaceholder: '도구의 용도에 대한 간략한 설명 (예: 특정 위치의 온도 가져오기).',
title: '추가 도구',
toolLabel: '도구',
placeholder: '도구 선택...',
paramsTip2: '\'자동\'이 꺼져 있으면 기본값이 사용됩니다.',
unsupportedContent: '설치된 플러그인 버전은 이 작업을 제공하지 않습니다.',
toolSetting: '도구 설정',
unsupportedMCPTool: '현재 선택된 에이전트 전략 플러그인 버전은 MCP 도구를 지원하지 않습니다.',
},
configureApp: '앱 구성',
strategyNum: '{{번호}} {{전략}} 포함',
endpointModalDesc: '구성이 완료되면 API 엔드포인트를 통해 플러그인에서 제공하는 기능을 사용할 수 있습니다.',
actionNum: '{{번호}} {{행동}} 포함',
endpointDeleteTip: '엔드포인트 제거',
modelNum: '{{번호}} 포함 된 모델',
configureModel: '모델 구성',
configureTool: '구성 도구',
switchVersion: '스위치 버전',
endpointsEmpty: '\'+\' 버튼을 클릭하여 엔드포인트를 추가합니다.',
endpointModalTitle: '엔드포인트 설정',
endpointsTip: '이 플러그인은 엔드포인트를 통해 특정 기능을 제공하며 현재 작업 공간에 대해 여러 엔드포인트 세트를 구성할 수 있습니다.',
endpointDisableContent: '{{name}}을 비활성화하시겠습니까?',
endpointDeleteContent: '{{name}}을 제거하시겠습니까?',
disabled: '비활성화',
endpointsDocLink: '문서 보기',
endpoints: '끝점',
serviceOk: '서비스 정상',
endpointDisableTip: '엔드포인트 비활성화',
deprecation: {
reason: {
ownershipTransferred: '소유권 이전',
businessAdjustments: '사업 조정',
noMaintainer: '유지보수자 없음',
},
noReason: '이 플러그인은 더 이상 지원되지 않으며 업데이트되지 않을 것입니다.',
onlyReason: '이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다.',
fullMessage: '이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다. 대신 <CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink>를 사용하십시오.',
},
},
debugInfo: {
title: '디버깅',
viewDocs: '문서 보기',
},
privilege: {
admins: '관리자',
title: '플러그인 기본 설정',
whoCanDebug: '누가 플러그인을 디버깅할 수 있나요?',
noone: '아무도 없어',
everyone: '모두',
whoCanInstall: '누가 플러그인을 설치하고 관리할 수 있습니까?',
},
pluginInfoModal: {
packageName: '패키지',
repository: '저장소',
title: '플러그인 정보',
release: '석방',
},
action: {
deleteContentRight: '플러그인?',
usedInApps: '이 플러그인은 {{num}}개의 앱에서 사용되고 있습니다.',
pluginInfo: '플러그인 정보',
checkForUpdates: '업데이트 확인',
deleteContentLeft: '제거하시겠습니까?',
delete: '플러그인 제거',
},
installModal: {
labels: {
package: '패키지',
repository: '저장소',
version: '버전',
},
back: '뒤로',
readyToInstallPackage: '다음 플러그인을 설치하려고 합니다.',
close: '닫다',
fromTrustSource: '<trustSource>신뢰할 수 있는 출처</trustSource>의 플러그인만 설치하도록 하세요.',
readyToInstall: '다음 플러그인을 설치하려고 합니다.',
uploadFailed: '업로드 실패',
installPlugin: '플러그인 설치',
pluginLoadErrorDesc: '이 플러그인은 설치되지 않습니다.',
installedSuccessfully: '설치 성공',
installedSuccessfullyDesc: '플러그인이 성공적으로 설치되었습니다.',
installing: '설치...',
pluginLoadError: '플러그인 로드 오류',
installFailedDesc: '플러그인이 설치되지 않았습니다.',
installFailed: '설치 실패',
next: '다음',
installComplete: '설치 완료',
install: '설치하다',
readyToInstallPackages: '다음 {{num}} 플러그인을 설치하려고 합니다.',
uploadingPackage: '{{packageName}} 업로드 중...',
dropPluginToInstall: '플러그인 패키지를 여기에 놓아 설치하십시오.',
cancel: '취소',
installWarning: '이 플러그인은 설치할 수 없습니다.',
},
installFromGitHub: {
uploadFailed: '업로드 실패',
selectVersionPlaceholder: '버전을 선택하세요.',
installPlugin: 'GitHub 에서 플러그인 설치',
installFailed: '설치 실패',
updatePlugin: 'GitHub 에서 플러그인 업데이트',
selectPackage: '패키지 선택',
gitHubRepo: 'GitHub 리포지토리',
selectPackagePlaceholder: '패키지를 선택하세요.',
installedSuccessfully: '설치 성공',
selectVersion: '버전 선택',
installNote: '신뢰할 수 있는 출처의 플러그인만 설치하도록 하세요.',
},
upgrade: {
usedInApps: '{{num}}개의 앱에서 사용됨',
description: '다음 플러그인을 설치하려고 합니다.',
successfulTitle: '설치 성공',
upgrade: '설치하다',
upgrading: '설치...',
close: '닫다',
title: '플러그인 설치',
},
error: {
noReleasesFound: '릴리스를 찾을 수 없습니다. GitHub 리포지토리 또는 입력 URL 을 확인하세요.',
fetchReleasesError: '릴리스를 검색할 수 없습니다. 나중에 다시 시도하십시오.',
inValidGitHubUrl: '잘못된 GitHub URL 입니다. 유효한 URL 을 https://github.com/owner/repo 형식으로 입력하십시오.',
},
marketplace: {
sortOption: {
recentlyUpdated: '최근 업데이트',
firstReleased: '첫 출시',
newlyReleased: '새로 출시 된',
mostPopular: '가장 인기 있는',
},
noPluginFound: '플러그인을 찾을 수 없습니다.',
empower: 'AI 개발 역량 강화',
viewMore: '더보기',
difyMarketplace: 'Dify 마켓플레이스',
pluginsResult: '{{num}} 결과',
discover: '발견하다',
moreFrom: 'Marketplace 에서 더 보기',
sortBy: '정렬',
and: '그리고',
verifiedTip: 'Dify 에 의해 확인됨',
partnerTip: 'Dify 파트너에 의해 확인됨',
},
task: {
installingWithSuccess: '{{installingLength}} 플러그인 설치, {{successLength}} 성공.',
installedError: '{{errorLength}} 플러그인 설치 실패',
installing: '{{installingLength}} 플러그인 설치, 0 완료.',
installingWithError: '{{installingLength}} 플러그인 설치, {{successLength}} 성공, {{errorLength}} 실패',
installError: '{{errorLength}} 플러그인 설치 실패, 보려면 클릭하십시오.',
clearAll: '모두 지우기',
},
installAction: '설치하다',
searchTools: '검색 도구...',
installPlugin: '플러그인 설치',
endpointsEnabled: '{{num}}개의 엔드포인트 집합이 활성화되었습니다.',
installFrom: '에서 설치',
allCategories: '모든 카테고리',
findMoreInMarketplace: 'Marketplace 에서 더 알아보기',
searchCategories: '검색 카테고리',
search: '검색',
searchInMarketplace: 'Marketplace 에서 검색',
from: '보낸 사람',
searchPlugins: '검색 플러그인',
install: '{{num}} 설치',
fromMarketplace: 'Marketplace 에서',
metadata: {
title: '플러그인',
},
difyVersionNotCompatible: '현재 Dify 버전이 이 플러그인과 호환되지 않습니다. 필요한 최소 버전으로 업그레이드하십시오: {{minimalDifyVersion}}',
requestAPlugin: '플러그인을 요청하세요',
publishPlugins: '플러그인 게시',
auth: {
oauthClient: 'OAuth 클라이언트',
default: '기본',
addApi: 'API 키 추가하기',
authorization: '권한',
oauthClientSettings: 'OAuth 클라이언트 설정',
setupOAuth: 'OAuth 클라이언트 설정',
setDefault: '기본값으로 설정',
workspaceDefault: '작업 공간 기본값',
saveAndAuth: '저장하고 승인하세요',
addOAuth: 'OAuth 추가하기',
custom: '맞춤형',
authRemoved: '인증이 제거되었습니다.',
saveOnly: '저장만 하기',
authorizationName: '권한 이름',
useApiAuth: 'API 키 인증 구성',
useOAuth: 'OAuth 사용하기',
useApi: 'API 키를 사용하세요.',
authorizations: '권한',
useOAuthAuth: 'OAuth 인증 사용하기',
useApiAuthDesc: '자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 도구를 사용할 수 있습니다.',
clientInfo: '이 도구 공급자에 대한 시스템 클라이언트 비밀이 발견되지 않았으므로 수동으로 설정해야 하며, redirect_uri는 다음을 사용하십시오.',
unavailable: '사용할 수 없음',
credentialUnavailable: '현재 자격 증명이 사용 불가능합니다. 관리자에게 문의하십시오.',
customCredentialUnavailable: '현재 사용자 정의 자격 증명이 사용 불가능합니다.',
credentialUnavailableInButton: '자격 증명 사용 불가능',
connectedWorkspace: '연결된 작업 공간',
emptyAuth: '인증을 구성하십시오.',
},
deprecated: '사용 중단됨',
autoUpdate: {
strategy: {
disabled: {
name: '장애인',
description: '플러그인이 자동으로 업데이트되지 않습니다.',
},
fixOnly: {
name: '수정만 하기',
selectedDescription: '패치 버전만 자동 업데이트',
description: '패치 버전만 자동 업데이트 (예: 1.0.1 → 1.0.2). 마이너 버전 변경은 업데이트를 유발하지 않습니다.',
},
latest: {
name: '최신',
description: '항상 최신 버전으로 업데이트하세요.',
selectedDescription: '항상 최신 버전으로 업데이트하세요.',
},
},
upgradeMode: {
partial: '선택된 것만',
all: '모두 업데이트하기',
exclude: '선택한 항목 제외',
},
upgradeModePlaceholder: {
partial: '선택된 플러그인만 자동 업데이트됩니다. 현재 선택된 플러그인이 없으므로 자동 업데이트되는 플러그인은 없습니다.',
exclude: '선택한 플러그인은 자동으로 업데이트되지 않습니다.',
},
operation: {
clearAll: '모두 지우기',
select: '플러그인을 선택하세요',
},
pluginDowngradeWarning: {
exclude: '자동 업데이트에서 제외',
title: '플러그인 다운그레이드',
downgrade: '어쨌든 다운그레이드',
description: '이 플러그인은 현재 자동 업데이트가 활성화되어 있습니다. 버전을 다운그레이드하면 다음 자동 업데이트 중에 변경 사항이 덮어써질 수 있습니다.',
},
noPluginPlaceholder: {
noFound: '플러그인이 없습니다.',
noInstalled: '설치된 플러그인이 없습니다.',
},
updateTimeTitle: '업데이트 시간',
automaticUpdates: '자동 업데이트',
updateTime: '업데이트 시간',
nextUpdateTime: '다음 자동 업데이트: {{time}}',
updateSettings: '설정 업데이트',
partialUPdate: '다음 {{num}} 플러그인만 자동 업데이트됩니다.',
changeTimezone: '시간대를 변경하려면 <setTimezone>설정</setTimezone>으로 이동하세요.',
specifyPluginsToUpdate: '업데이트할 플러그인을 지정하십시오.',
excludeUpdate: '다음 {{num}} 플러그인은 자동 업데이트되지 않습니다.',
},
}
export default translation

View File

@@ -0,0 +1,3 @@
const translation = {}
export default translation

View File

@@ -0,0 +1,31 @@
const translation = {
input: '입력',
result: '결과',
detail: '상세정보',
tracing: '트레이싱',
resultPanel: {
status: '상태',
time: '소요 시간',
tokens: '토큰 총합',
},
meta: {
title: '메타데이터',
status: '상태',
version: '버전',
executor: '실행자',
startTime: '시작 시간',
time: '소요 시간',
tokens: '토큰 총합',
steps: '실행 단계',
},
resultEmpty: {
title: '이 실행에서는 JSON 형식만 출력됩니다',
tipLeft: '를 방문해주세요',
link: '상세 정보 패널',
tipRight: '를 확인하세요.',
},
actionLogs: '작업 로그',
circularInvocationTip: '현재 워크플로우에 도구/노드의 순환 호출이 있습니다.',
}
export default translation

View File

@@ -0,0 +1,81 @@
const translation = {
common: {
welcome: '',
appUnavailable: '앱을 사용할 수 없습니다',
appUnknownError: '앱을 사용할 수 없습니다',
},
chat: {
newChat: '새 채팅',
pinnedTitle: '고정됨',
unpinnedTitle: '채팅',
newChatDefaultName: '새 대화',
resetChat: '대화 재설정',
poweredBy: 'Powered by',
prompt: '프롬프트',
privatePromptConfigTitle: '채팅 설정',
publicPromptConfigTitle: '초기 프롬프트',
configStatusDes: '시작하기 전에 채팅 설정을 변경할 수 있습니다',
configDisabled: '이전 세션의 설정이 현재 세션에서 사용되었습니다.',
startChat: '채팅 시작',
privacyPolicyLeft: '앱 개발자가 제공하는',
privacyPolicyMiddle: '개인 정보 보호 정책',
privacyPolicyRight: '을 읽어보세요.',
deleteConversation: {
title: '대화 삭제',
content: '이 대화를 삭제하시겠습니까?',
},
tryToSolve: '해결하려고 합니다',
temporarySystemIssue: '죄송합니다. 일시적인 시스템 문제가 발생했습니다.',
expand: '확장',
collapse: '축소',
viewChatSettings: '채팅 설정 보기',
newChatTip: '이미 새로운 채팅 중입니다.',
chatFormTip: '채팅이 시작된 후에는 채팅 설정을 수정할 수 없습니다.',
chatSettingsTitle: '새 채팅 설정',
},
generation: {
tabs: {
create: '일회용 실행',
batch: '일괄 실행',
saved: '저장된 결과',
},
savedNoData: {
title: '아직 저장된 결과가 없습니다!',
description: '컨텐츠 생성을 시작하고 저장된 결과를 여기서 찾아보세요.',
startCreateContent: '컨텐츠 생성 시작',
},
title: 'AI 완성',
queryTitle: '컨텐츠 쿼리',
completionResult: '완성 결과',
queryPlaceholder: '쿼리 컨텐츠를 작성해주세요...',
run: '실행',
copy: '복사',
resultTitle: 'AI 완성',
noData: 'AI 가 필요한 내용을 제공할 것입니다.',
csvUploadTitle: 'CSV 파일을 여기로 끌어다 놓거나',
browse: '찾아보기',
csvStructureTitle: 'CSV 파일은 다음 구조를 따라야 합니다:',
downloadTemplate: '여기에서 템플릿 다운로드',
field: '필드',
batchFailed: {
info: '{{num}} 회의 실행이 실패했습니다',
retry: '재시도',
outputPlaceholder: '출력 컨텐츠 없음',
},
errorMsg: {
empty: '업로드된 파일에 컨텐츠를 입력해주세요.',
fileStructNotMatch: '업로드된 CSV 파일이 구조와 일치하지 않습니다.',
emptyLine: '줄 {{rowIndex}}이 (가) 비어 있습니다.',
invalidLine: '줄 {{rowIndex}}: {{varName}}의 값은 비워둘 수 없습니다.',
moreThanMaxLengthLine: '줄 {{rowIndex}}: {{varName}}의 값은 {{maxLength}}자를 초과할 수 없습니다.',
atLeastOne: '업로드된 파일에는 적어도 한 줄의 입력이 필요합니다.',
},
execution: '실행',
executions: '{{num}} 처형',
},
login: {
backToHome: '홈으로 돌아가기',
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
daysInWeek: {
Sun: '일요일',
Mon: '월요일',
Tue: '화요일',
Wed: '수요일',
Thu: '목요일',
Fri: '금요일',
Sat: '토요일',
},
months: {
May: '5 월',
January: '1 월',
August: '8 월',
July: '7 월',
April: '4 월',
October: '10 월',
December: '12 월',
February: '2 월',
June: '6 월',
November: '11 월',
March: '3 월',
September: '9 월',
},
operation: {
pickDate: '날짜 선택',
cancel: '취소',
ok: '좋아요',
now: '오늘',
},
title: {
pickTime: '시간 선택',
},
defaultPlaceholder: '시간을 선택하세요...',
dateFormats: {
input: 'YYYY-MM-DD',
display: 'MMMM D, YYYY',
outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
displayWithTime: 'MMMM D, YYYY hh:mm A',
output: 'YYYY-MM-DD',
},
}
export default translation

View File

@@ -0,0 +1,250 @@
const translation = {
title: '도구',
createCustomTool: '커스텀 도구 만들기',
customToolTip: 'Dify 커스텀 도구에 대해 더 알아보기',
type: {
all: '모두',
builtIn: '내장',
custom: '커스텀',
workflow: '워크플로우',
},
contribute: {
line1: '저는 Dify 에',
line2: '도구를 기여하는데 관심이 있습니다.',
viewGuide: '가이드 보기',
},
author: '저자',
auth: {
authorized: '인증됨',
setup: '사용을 위한 인증 설정',
setupModalTitle: '인증 설정',
setupModalTitleDescription: '자격 증명을 구성한 후에 워크스페이스의 모든 멤버가 이 도구를 사용하여 애플리케이션을 조작할 수 있습니다.',
},
includeToolNum: '{{num}}개의 도구가 포함되어 있습니다',
addTool: '도구 추가',
addToolModal: {
type: '타입',
category: '카테고리',
add: '추가',
added: '추가됨',
manageInTools: '도구에서 관리',
custom: {
title: '사용자 정의 도구 없음',
tip: '사용자 정의 도구 생성',
},
workflow: {
title: '워크플로우 도구 없음',
tip: '스튜디오에서 워크플로우를 도구로 게시',
},
mcp: {
title: 'MCP 도구 없음',
tip: 'MCP 서버 추가',
},
agent: {
title: '에이전트 전략 없음',
},
},
createTool: {
title: '커스텀 도구 만들기',
editAction: '설정',
editTitle: '커스텀 도구 편집',
name: '이름',
toolNamePlaceHolder: '도구 이름을 입력하세요',
nameForToolCall: '도구 호출 이름',
nameForToolCallPlaceHolder: 'getCurrentWeather, list_pets 과 같이, 기계 인지를 위해 사용됩니다.',
nameForToolCallTip: '숫자와 문자, 밑줄만 지원합니다.',
description: '설명',
descriptionPlaceholder: '도구의 목적을 설명합니다. 예시로, 특정 지역의 온도 가져오기',
schema: '스키마',
schemaPlaceHolder: '여기에 OpenAPI 스키마를 입력하세요',
viewSchemaSpec: 'OpenAPI-Swagger 명세 보기',
importFromUrl: 'URL 에서 가져오기',
importFromUrlPlaceHolder: 'https://...',
urlError: '유효한 URL 을 입력하세요',
examples: '예시',
exampleOptions: {
json: '날씨 (JSON)',
yaml: '펫 스토어 (YAML)',
blankTemplate: '빈 템플릿',
},
availableTools: {
title: '사용 가능한 도구',
name: '이름',
description: '설명',
method: '메소드',
path: '경로',
action: '동작',
test: '테스트',
},
authMethod: {
title: '인증 방법',
type: '인증 유형',
keyTooltip: 'HTTP 헤더 키입니다. 생각이 없으면 "Authorization"으로 남겨둘 수 있습니다. 또는 사용자 정의 값을 설정할 수 있습니다.',
types: {
none: '없음',
apiKeyPlaceholder: 'API 키의 HTTP 헤더 이름',
apiValuePlaceholder: 'API 키를 입력하세요',
api_key_query: '쿼리 매개변수',
queryParamPlaceholder: 'API 키에 대한 쿼리 매개변수 이름',
api_key_header: '헤더',
},
key: '키',
value: '값',
queryParam: '쿼리 매개변수',
queryParamTooltip: '전달할 API 키 쿼리 매개변수의 이름, 예: "https://example.com/test?key=API_KEY"에서의 "key".',
},
authHeaderPrefix: {
title: '인증 유형',
types: {
basic: '베이직',
bearer: '베어러',
custom: '사용자 정의',
},
},
privacyPolicy: '개인정보 처리방침',
privacyPolicyPlaceholder: '개인정보 처리방침을 입력하세요',
toolInput: {
title: '도구 입력',
name: '이름',
required: '필요사항',
method: '방식',
methodSetting: '설정',
methodSettingTip: '도구 설정에서 사용자가 기입',
methodParameter: '파라미터',
methodParameterTip: '추론 중에 LLM 이 기입',
label: '태그',
labelPlaceholder: '태그를 선택하세요.(선택사항)',
description: '설명',
descriptionPlaceholder: '파라미터의 의도를 설명하세요.',
},
customDisclaimer: '사용자 정의 권리 포기 문구',
customDisclaimerPlaceholder: '사용자 정의 권리 포기 문구를 입력해주세요.',
confirmTitle: '저장하시겠습니까?',
confirmTip: '이 도구를 사용하는 앱은 영향을 받습니다.',
deleteToolConfirmTitle: '이 도구를 삭제하시겠습니까?',
deleteToolConfirmContent: '이 도구를 삭제하면 되돌릴 수 없습니다. 사용자는 더 이상 당신의 도구에 액세스할 수 없습니다.',
},
test: {
title: '테스트',
parametersValue: '파라미터 및 값',
parameters: '파라미터',
value: '값',
testResult: '테스트 결과',
testResultPlaceholder: '테스트 결과가 여기에 표시됩니다',
},
thought: {
using: '사용 중',
used: '사용됨',
requestTitle: '요청',
responseTitle: '응답',
},
setBuiltInTools: {
info: '정보',
setting: '설정',
toolDescription: '도구 설명',
parameters: '파라미터',
string: '문자열',
number: '숫자',
required: '필수',
infoAndSetting: '정보 및 설정',
file: '파일',
},
noCustomTool: {
title: '커스텀 도구가 없습니다!',
content: 'AI 앱을 구축하기 위한 커스텀 도구를 여기서 추가 및 관리합니다.',
createTool: '도구 만들기',
},
noSearchRes: {
title: '죄송합니다. 결과가 없습니다!',
content: '검색 결과가 없습니다.',
reset: '검색 초기화',
},
builtInPromptTitle: '프롬프트',
toolRemoved: '도구가 제거되었습니다',
notAuthorized: '권한이 없습니다',
howToGet: '획득 방법',
openInStudio: '스튜디오에서 열기',
toolNameUsageTip: 'Agent 추리와 프롬프트를 위한 도구 호출 이름',
noTools: '도구를 찾을 수 없습니다.',
copyToolName: '이름 복사',
mcp: {
create: {
cardTitle: 'MCP 서버 추가 (HTTP)',
cardLink: 'MCP 서버 통합에 대해 자세히 알아보기',
},
noConfigured: '구성되지 않은 서버',
updateTime: '업데이트됨',
toolsCount: '{count} 도구',
noTools: '사용 가능한 도구 없음',
modal: {
title: 'MCP 서버 추가 (HTTP)',
editTitle: 'MCP 서버 수정 (HTTP)',
name: '이름 및 아이콘',
namePlaceholder: 'MCP 서버 이름 지정',
serverUrl: '서버 URL',
serverUrlPlaceholder: '서버 엔드포인트 URL',
serverUrlWarning: '서버 주소를 업데이트하면 이 서버에 의존하는 응용 프로그램에 지장이 발생할 수 있습니다',
serverIdentifier: '서버 식별자',
serverIdentifierTip: '작업 공간 내에서 MCP 서버의 고유 식별자. 소문자, 숫자, 밑줄 및 하이픈만 사용 가능. 최대 24자.',
serverIdentifierPlaceholder: '고유 식별자, 예: my-mcp-server',
serverIdentifierWarning: 'ID 변경 후 기존 앱에서 서버를 인식하지 못합니다',
cancel: '취소',
save: '저장',
confirm: '추가 및 승인',
timeout: '타임아웃',
sseReadTimeout: 'SSE 읽기 타임아웃',
headers: '헤더',
headerKeyPlaceholder: '예: 승인',
headerKey: '헤더 이름',
headerValuePlaceholder: '예: 베어러 토큰123',
timeoutPlaceholder: '서른',
headerValue: '헤더 값',
addHeader: '헤더 추가',
noHeaders: '사용자 정의 헤더가 구성되어 있지 않습니다.',
headersTip: 'MCP 서버 요청과 함께 보낼 추가 HTTP 헤더',
maskedHeadersTip: '헤더 값은 보안상 마스킹 처리되어 있습니다. 변경 사항은 실제 값에 업데이트됩니다.',
},
delete: 'MCP 서버 제거',
deleteConfirmTitle: '{mcp}를 제거하시겠습니까?',
operation: {
edit: '편집',
remove: '제거',
},
authorize: '권한 부여',
authorizing: '권한 부여 중...',
authorizingRequired: '권한이 필요합니다',
authorizeTip: '권한 부여 후 도구가 여기에 표시됩니다.',
update: '업데이트',
updating: '업데이트 중',
gettingTools: '도구 가져오는 중...',
updateTools: '도구 업데이트 중...',
toolsEmpty: '도구가 로드되지 않음',
getTools: '도구 가져오기',
toolUpdateConfirmTitle: '도구 목록 업데이트',
toolUpdateConfirmContent: '도구 목록을 업데이트하면 기존 앱에 영향을 줄 수 있습니다. 계속하시겠습니까?',
toolsNum: '{count} 도구가 포함됨',
onlyTool: '1개 도구 포함',
identifier: '서버 식별자 (클릭하여 복사)',
server: {
title: 'MCP 서버',
url: '서버 URL',
reGen: '서버 URL을 다시 생성하시겠습니까?',
addDescription: '설명 추가',
edit: '설명 수정',
modal: {
addTitle: 'MCP 서버를 활성화하기 위한 설명 추가',
editTitle: '설명 수정',
description: '설명',
descriptionPlaceholder: '이 도구가 수행하는 작업과 LLM이 사용하는 방법을 설명하세요.',
parameters: '매개변수',
parametersTip: '각 매개변수의 설명을 추가하여 LLM이 목적과 제한 사항을 이해할 수 있도록 도와주세요.',
parametersPlaceholder: '매개변수의 목적 및 제한 사항',
confirm: 'MCP 서버 활성화',
},
publishTip: '앱이 게시되지 않았습니다. 먼저 앱을 게시하십시오.',
},
},
allTools: '모든 도구',
}
export default translation

File diff suppressed because it is too large Load Diff