583 lines
19 KiB
TypeScript
583 lines
19 KiB
TypeScript
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;
|