import type { PartialLocaleType } from './index'; import { SAAS_CHAT_UTM_URL } from '@/app/constant'; import { getClientConfig } from '../config/client'; import { SubmitKey } from '../store/config'; const isApp = !!getClientConfig()?.isApp; const ko: PartialLocaleType = { WIP: '곧 출시 예정...', Error: { Unauthorized: isApp ? `😆 대화 중 문제가 발생했습니다, 걱정하지 마세요: \\ 1️⃣ 제로 구성으로 시작하고 싶다면, [여기를 클릭하여 즉시 대화를 시작하세요 🚀](${SAAS_CHAT_UTM_URL}) \\ 2️⃣ 자신의 OpenAI 리소스를 사용하고 싶다면, [여기를 클릭하여](/#/settings) 설정을 수정하세요 ⚙️` : `😆 대화 중 문제가 발생했습니다, 걱정하지 마세요: \ 1️⃣ 제로 구성으로 시작하고 싶다면, [여기를 클릭하여 즉시 대화를 시작하세요 🚀](${SAAS_CHAT_UTM_URL}) \ 2️⃣ 개인 배포 버전을 사용하고 있다면, [여기를 클릭하여](/#/auth) 접근 키를 입력하세요 🔑 \ 3️⃣ 자신의 OpenAI 리소스를 사용하고 싶다면, [여기를 클릭하여](/#/settings) 설정을 수정하세요 ⚙️ `, }, Auth: { Title: '비밀번호 필요', Tips: '관리자가 비밀번호 인증을 활성화했습니다. 아래에 접근 코드를 입력하십시오.', SubTips: '또는 OpenAI 또는 Google API 키를 입력하십시오.', Input: '여기에 접근 코드를 입력하십시오.', Confirm: '확인', Later: '나중에 하기', Return: '돌아가기', SaasTips: '설정이 너무 복잡합니다. 즉시 사용하고 싶습니다.', TopTips: '🥳 NextChat AI 출시 기념 할인, 지금 OpenAI o1, GPT-4o, Claude-3.5 및 최신 대형 모델을 해제하세요', }, ChatItem: { ChatItemCount: (count: number) => `${count} 개의 대화`, }, Chat: { SubTitle: (count: number) => `총 ${count} 개의 대화`, EditMessage: { Title: '메시지 기록 편집', Topic: { Title: '채팅 주제', SubTitle: '현재 채팅 주제 변경', }, }, Actions: { ChatList: '메시지 목록 보기', CompressedHistory: '압축된 히스토리 프롬프트 보기', Export: '채팅 기록 내보내기', Copy: '복사', Stop: '정지', Retry: '다시 시도', Pin: '고정', PinToastContent: '1 개의 대화를 프롬프트에 고정했습니다.', PinToastAction: '보기', Delete: '삭제', Edit: '편집', RefreshTitle: '제목 새로고침', RefreshToast: '제목 새로고침 요청이 전송되었습니다', }, Commands: { new: '새 채팅', newm: '마스크에서 새 채팅', next: '다음 채팅', prev: '이전 채팅', clear: '컨텍스트 지우기', del: '채팅 삭제', }, InputActions: { Stop: '응답 중지', ToBottom: '최신으로 스크롤', Theme: { auto: '자동 테마', light: '라이트 모드', dark: '다크 모드', }, Prompt: '빠른 명령', Masks: '모든 마스크', Clear: '채팅 지우기', Settings: '채팅 설정', UploadImage: '이미지 업로드', }, Rename: '채팅 이름 변경', Typing: '입력 중…', Input: (submitKey: string) => { let inputHints = `${submitKey} 전송`; if (submitKey === String(SubmitKey.Enter)) { inputHints += ',Shift + Enter 줄 바꿈'; } return `${inputHints},/ 자동 완성,: 명령어 입력`; }, Send: '전송', Config: { Reset: '기억 지우기', SaveAs: '마스크로 저장', }, IsContext: '프롬프트 설정', }, Export: { Title: '채팅 기록 공유', Copy: '모두 복사', Download: '파일 다운로드', Share: 'ShareGPT에 공유', MessageFromYou: '사용자', MessageFromChatGPT: 'ChatGPT', Format: { Title: '내보내기 형식', SubTitle: 'Markdown 텍스트 또는 PNG 이미지로 내보낼 수 있습니다.', }, IncludeContext: { Title: '프롬프트 컨텍스트 포함', SubTitle: '메시지에 프롬프트 컨텍스트를 표시할지 여부', }, Steps: { Select: '선택', Preview: '미리보기', }, Image: { Toast: '스크린샷 생성 중', Modal: '길게 누르거나 오른쪽 클릭하여 이미지를 저장하십시오.', }, }, Select: { Search: '메시지 검색', All: '모두 선택', Latest: '최근 몇 개', Clear: '선택 지우기', }, Memory: { Title: '기록 요약', EmptyContent: '대화 내용이 너무 짧아 요약할 필요 없음', Send: '자동으로 채팅 기록을 압축하여 컨텍스트로 전송', Copy: '요약 복사', Reset: '[사용되지 않음]', ResetConfirm: '기록 요약을 지우겠습니까?', }, Home: { NewChat: '새 채팅', DeleteChat: '선택한 대화를 삭제하시겠습니까?', DeleteToast: '대화가 삭제되었습니다.', Revert: '되돌리기', }, Settings: { Title: '설정', SubTitle: '모든 설정 옵션', Danger: { Reset: { Title: '모든 설정 초기화', SubTitle: '모든 설정 항목을 기본값으로 초기화', Action: '지금 초기화', Confirm: '모든 설정을 초기화하시겠습니까?', }, Clear: { Title: '모든 데이터 지우기', SubTitle: '모든 채팅 및 설정 데이터 지우기', Action: '지금 지우기', Confirm: '모든 채팅 및 설정 데이터를 지우시겠습니까?', }, }, Lang: { Name: 'Language', // 주의: 새 번역을 추가하려면 이 값을 번역하지 말고 그대로 유지하세요. All: '모든 언어', }, Avatar: '아바타', FontSize: { Title: '글꼴 크기', SubTitle: '채팅 내용의 글꼴 크기', }, FontFamily: { Title: '채팅 폰트', SubTitle: '채팅 내용의 폰트, 비워 두면 글로벌 기본 폰트를 적용', Placeholder: '폰트 이름', }, InjectSystemPrompts: { Title: '시스템 수준 프롬프트 삽입', SubTitle: '각 요청 메시지 목록의 시작 부분에 ChatGPT 시스템 프롬프트를 강제로 추가', }, InputTemplate: { Title: '사용자 입력 전처리', SubTitle: '사용자의 최신 메시지가 이 템플릿에 채워집니다.', }, Update: { Version: (x: string) => `현재 버전: ${x}`, IsLatest: '최신 버전입니다.', CheckUpdate: '업데이트 확인', IsChecking: '업데이트 확인 중...', FoundUpdate: (x: string) => `새 버전 발견: ${x}`, GoToUpdate: '업데이트로 이동', }, SendKey: '전송 키', Theme: '테마', TightBorder: '테두리 없는 모드', SendPreviewBubble: { Title: '미리보기 버블', SubTitle: '미리보기 버블에서 Markdown 콘텐츠 미리보기', }, AutoGenerateTitle: { Title: '제목 자동 생성', SubTitle: '대화 내용에 따라 적절한 제목 생성', }, Sync: { CloudState: '클라우드 데이터', NotSyncYet: '아직 동기화되지 않았습니다.', Success: '동기화 성공', Fail: '동기화 실패', Config: { Modal: { Title: '클라우드 동기화 구성', Check: '사용 가능성 확인', }, SyncType: { Title: '동기화 유형', SubTitle: '선호하는 동기화 서버 선택', }, Proxy: { Title: '프록시 사용', SubTitle: '브라우저에서 동기화할 때 프록시를 활성화하여 교차 출처 제한을 피해야 함', }, ProxyUrl: { Title: '프록시 주소', SubTitle: '이 프로젝트에서 제공하는 교차 출처 프록시만 해당', }, WebDav: { Endpoint: 'WebDAV 주소', UserName: '사용자 이름', Password: '비밀번호', }, UpStash: { Endpoint: 'UpStash Redis REST URL', UserName: '백업 이름', Password: 'UpStash Redis REST Token', }, }, LocalState: '로컬 데이터', Overview: (overview: any) => { return `${overview.chat} 회의 대화, ${overview.message} 개의 메시지, ${overview.prompt} 개의 프롬프트, ${overview.mask} 개의 마스크`; }, ImportFailed: '가져오기 실패', }, Mask: { Splash: { Title: '마스크 시작 페이지', SubTitle: '새 채팅 시 마스크 시작 페이지 표시', }, Builtin: { Title: '내장 마스크 숨기기', SubTitle: '모든 마스크 목록에서 내장 마스크 숨기기', }, }, Prompt: { Disable: { Title: '프롬프트 자동 완성 비활성화', SubTitle: '입력 상자 시작 부분에 / 를 입력하여 자동 완성 활성화', }, List: '사용자 정의 프롬프트 목록', ListCount: (builtin: number, custom: number) => `내장 ${builtin} 개, 사용자 정의 ${custom} 개`, Edit: '편집', Modal: { Title: '프롬프트 목록', Add: '새로 만들기', Search: '프롬프트 검색', }, EditModal: { Title: '프롬프트 편집', }, }, HistoryCount: { Title: '히스토리 메시지 수', SubTitle: '각 요청에 포함된 히스토리 메시지 수', }, CompressThreshold: { Title: '히스토리 메시지 길이 압축 임계값', SubTitle: '압축되지 않은 히스토리 메시지가 이 값을 초과하면 압축 수행', }, Usage: { Title: '잔액 조회', SubTitle(used: any, total: any) { return `이번 달 사용된 금액: $${used},총 구독 금액: $${total}`; }, IsChecking: '확인 중...', Check: '다시 확인', NoAccess: '잔액을 보려면 API 키 또는 접근 비밀번호를 입력하십시오.', }, Access: { SaasStart: { Title: 'NextChat AI 사용하기', Label: '(가장 비용 효율적인 솔루션)', SubTitle: 'NextChat에 의해 공식적으로 유지 관리되며, 제로 구성으로 즉시 사용할 수 있으며, OpenAI o1, GPT-4o, Claude-3.5와 같은 최신 대형 모델을 지원합니다', ChatNow: '지금 채팅하기', }, AccessCode: { Title: '접근 비밀번호', SubTitle: '관리자가 암호화된 접근을 활성화했습니다.', Placeholder: '접근 비밀번호를 입력하십시오.', }, CustomEndpoint: { Title: '커스텀 엔드포인트', SubTitle: '커스텀 Azure 또는 OpenAI 서비스를 사용할지 여부', }, Provider: { Title: '모델 서비스 제공업체', SubTitle: '다른 서비스 제공업체로 전환', }, OpenAI: { ApiKey: { Title: 'API 키', SubTitle: '커스텀 OpenAI 키를 사용하여 비밀번호 접근 제한 우회', Placeholder: 'OpenAI API 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '기본 주소 외에 http(s)://을 포함해야 함', }, }, Azure: { ApiKey: { Title: '엔드포인트 키', SubTitle: '커스텀 Azure 키를 사용하여 비밀번호 접근 제한 우회', Placeholder: 'Azure API 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '예: ', }, ApiVerion: { Title: 'API 버전 (azure api version)', SubTitle: '특정 부분 버전 선택', }, }, Anthropic: { ApiKey: { Title: '엔드포인트 키', SubTitle: '커스텀 Anthropic 키를 사용하여 비밀번호 접근 제한 우회', Placeholder: 'Anthropic API 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '예: ', }, ApiVerion: { Title: 'API 버전 (claude api version)', SubTitle: '특정 API 버전 입력', }, }, Google: { ApiKey: { Title: 'API 키', SubTitle: 'Google AI에서 API 키를 가져오세요.', Placeholder: 'Google AI Studio API 키 입력', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '예: ', }, ApiVersion: { Title: 'API 버전 (gemini-pro 전용)', SubTitle: '특정 API 버전 선택', }, GoogleSafetySettings: { Title: 'Google 안전 필터링 수준', SubTitle: '콘텐츠 필터링 수준 설정', }, }, Baidu: { ApiKey: { Title: 'API 키', SubTitle: '커스텀 Baidu API 키 사용', Placeholder: 'Baidu API 키', }, SecretKey: { Title: 'Secret 키', SubTitle: '커스텀 Baidu Secret 키 사용', Placeholder: 'Baidu Secret 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '커스터마이즈는 .env에서 설정', }, }, ByteDance: { ApiKey: { Title: '엔드포인트 키', SubTitle: '커스텀 ByteDance API 키 사용', Placeholder: 'ByteDance API 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '예: ', }, }, Alibaba: { ApiKey: { Title: '엔드포인트 키', SubTitle: '커스텀 Alibaba Cloud API 키 사용', Placeholder: 'Alibaba Cloud API 키', }, Endpoint: { Title: '엔드포인트 주소', SubTitle: '예: ', }, }, CustomModel: { Title: '커스텀 모델 이름', SubTitle: '커스텀 모델 옵션 추가, 영어 쉼표로 구분', }, }, Model: '모델 (model)', CompressModel: { Title: '압축 모델', SubTitle: '기록을 압축하는 데 사용되는 모델', }, Temperature: { Title: '무작위성 (temperature)', SubTitle: '값이 클수록 응답이 더 무작위적', }, TopP: { Title: '탑 P 샘플링 (top_p)', SubTitle: '무작위성과 유사하지만, 무작위성과 함께 변경하지 마십시오.', }, MaxTokens: { Title: '단일 응답 제한 (max_tokens)', SubTitle: '단일 상호작용에 사용되는 최대 토큰 수', }, PresencePenalty: { Title: '주제 신선도 (presence_penalty)', SubTitle: '값이 클수록 새로운 주제로 확장할 가능성이 높음', }, FrequencyPenalty: { Title: '빈도 벌점 (frequency_penalty)', SubTitle: '값이 클수록 중복 단어 감소 가능성 높음', }, }, Store: { DefaultTopic: '새 채팅', BotHello: '무엇을 도와드릴까요?', Error: '오류가 발생했습니다. 나중에 다시 시도해 주세요.', Prompt: { History: (content: string) => `이것은 이전 채팅 요약입니다: ${content}`, Topic: '네 글자에서 다섯 글자로 이 문장의 간략한 주제를 반환하세요. 설명이나 문장 부호, 어미, 불필요한 텍스트, 굵은 글씨는 필요 없습니다. 주제가 없다면 \'잡담\'이라고만 반환하세요.', Summarize: '대화 내용을 간략히 요약하여 후속 컨텍스트 프롬프트로 사용하세요. 200자 이내로 작성하세요.', }, }, Copy: { Success: '클립보드에 복사되었습니다.', Failed: '복사 실패, 클립보드 권한을 부여해주세요.', }, Download: { Success: '내용이 디렉토리에 다운로드되었습니다.', Failed: '다운로드 실패.', }, Context: { Toast: (x: any) => ` ${x} 개의 프리셋 프롬프트 포함됨`, Edit: '현재 대화 설정', Add: '대화 추가', Clear: '컨텍스트가 지워졌습니다.', Revert: '컨텍스트 복원', }, Plugin: { Name: '플러그인', }, FineTuned: { Sysmessage: '당신은 보조자입니다.', }, SearchChat: { Name: '검색', Page: { Title: '채팅 기록 검색', Search: '검색어 입력', NoResult: '결과를 찾을 수 없습니다', NoData: '데이터가 없습니다', Loading: '로딩 중', SubTitle: (count: number) => `${count}개의 결과를 찾았습니다`, }, Item: { View: '보기', }, }, Mask: { Name: '마스크', Page: { Title: '프리셋 캐릭터 마스크', SubTitle: (count: number) => `${count} 개의 프리셋 캐릭터 정의`, Search: '캐릭터 마스크 검색', Create: '새로 만들기', }, Item: { Info: (count: number) => ` ${count} 개의 프리셋 대화 포함`, Chat: '대화', View: '보기', Edit: '편집', Delete: '삭제', DeleteConfirm: '삭제를 확인하시겠습니까?', }, EditModal: { Title: (readonly: boolean) => `프리셋 마스크 편집 ${readonly ? '(읽기 전용)' : ''}`, Download: '프리셋 다운로드', Clone: '프리셋 복제', }, Config: { Avatar: '캐릭터 아바타', Name: '캐릭터 이름', Sync: { Title: '전역 설정 사용', SubTitle: '현재 대화가 전역 모델 설정을 사용하는지 여부', Confirm: '현재 대화의 사용자 정의 설정이 자동으로 덮어쓰여질 것입니다. 전역 설정을 활성화하시겠습니까?', }, HideContext: { Title: '프리셋 대화 숨기기', SubTitle: '숨기면 프리셋 대화가 채팅 화면에 나타나지 않습니다.', }, Share: { Title: '이 마스크 공유하기', SubTitle: '이 마스크의 직접 링크 생성', Action: '링크 복사', }, }, }, NewChat: { Return: '돌아가기', Skip: '바로 시작', NotShow: '다시 보지 않기', ConfirmNoShow: '비활성화하시겠습니까? 비활성화 후 언제든지 설정에서 다시 활성화할 수 있습니다.', Title: '마스크 선택', SubTitle: '지금 시작하여 마스크 뒤의 사고와 교류해보세요.', More: '모두 보기', }, URLCommand: { Code: '링크에 액세스 코드가 포함되어 있습니다. 자동으로 입력하시겠습니까?', Settings: '링크에 프리셋 설정이 포함되어 있습니다. 자동으로 입력하시겠습니까?', }, UI: { Confirm: '확인', Cancel: '취소', Close: '닫기', Create: '새로 만들기', Edit: '편집', Export: '내보내기', Import: '가져오기', Sync: '동기화', Config: '구성', }, Exporter: { Description: { Title: '컨텍스트가 지워진 후의 메시지만 표시됩니다.', }, Model: '모델', Messages: '메시지', Topic: '주제', Time: '시간', }, }; export default ko;