Browse Source

Add Korean translation

root 1 year ago
parent
commit
65c6b4af82

+ 1 - 1
README.md

@@ -31,7 +31,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel.
 - New in v2: create, share and debug your chat tools with prompt templates (mask)
 - Awesome prompts powered by [awesome-chatgpt-prompts-zh](https://github.com/PlexPt/awesome-chatgpt-prompts-zh) and [awesome-chatgpt-prompts](https://github.com/f/awesome-chatgpt-prompts)
 - Automatically compresses chat history to support long conversations while also saving your tokens
-- I18n: English, 简体中文, 繁体中文, 日本語, Français, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština
+- I18n: English, 简体中文, 繁体中文, 日本語, Français, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština, 한국어
 
 ## Roadmap
 

+ 1 - 0
app/locales/cn.ts

@@ -82,6 +82,7 @@ const cn = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "头像",

+ 1 - 0
app/locales/cs.ts

@@ -84,6 +84,7 @@ const cs: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/de.ts

@@ -85,6 +85,7 @@ const de: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/en.ts

@@ -84,6 +84,7 @@ const en: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/es.ts

@@ -84,6 +84,7 @@ const es: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어"
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/fr.ts

@@ -85,6 +85,7 @@ const fr: LocaleType = {
         vi: "Vietnamese",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어"
       },
     },
 

+ 3 - 0
app/locales/index.ts

@@ -10,6 +10,7 @@ import DE from "./de";
 import VI from "./vi";
 import RU from "./ru";
 import CS from "./cs";
+import KO from "./ko";
 
 export type { LocaleType } from "./cn";
 
@@ -26,6 +27,7 @@ export const AllLangs = [
   "vi",
   "ru",
   "cs",
+  "ko",
 ] as const;
 export type Lang = (typeof AllLangs)[number];
 
@@ -91,4 +93,5 @@ export default {
   vi: VI,
   ru: RU,
   cs: CS,
+  ko: KO,
 }[getLang()] as typeof CN;

+ 1 - 0
app/locales/it.ts

@@ -84,6 +84,7 @@ const it: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/jp.ts

@@ -84,6 +84,7 @@ const jp: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어"
       },
     },
     Avatar: "アバター",

+ 247 - 0
app/locales/ko.ts

@@ -0,0 +1,247 @@
+import { SubmitKey } from "../store/config";
+
+import type { LocaleType } from "./index";
+
+const ko = {
+  WIP: "곧 출시 예정...",
+  Error: {
+    Unauthorized: "권한이 없습니다. 설정 페이지에서 액세스 코드를 입력하세요.",
+  },
+  ChatItem: {
+    ChatItemCount: (count: number) => `${count}개의 메시지`,
+  },
+  Chat: {
+    SubTitle: (count: number) => `ChatGPT와의 ${count}개의 메시지`,
+    Actions: {
+      ChatList: "채팅 목록으로 이동",
+      CompressedHistory: "압축된 기억력 메모리 프롬프트",
+      Export: "모든 메시지를 Markdown으로 내보내기",
+      Copy: "복사",
+      Stop: "중지",
+      Retry: "다시 시도",
+      Delete: "삭제",
+    },
+    Rename: "채팅 이름 변경",
+    Typing: "입력 중...",
+    Input: (submitKey: string) => {
+      var inputHints = `${submitKey}를 눌러 보내기`;
+      if (submitKey === String(SubmitKey.Enter)) {
+        inputHints += ", Shift + Enter로 줄 바꿈";
+      }
+      return inputHints + ", 프롬프트 검색을 위해 / 입력";
+    },
+    Send: "보내기",
+    Config: {
+      Reset: "기본값으로 재설정",
+      SaveAs: "마스크로 저장",
+    },
+  },
+  Export: {
+    Title: "모든 메시지",
+    Copy: "모두 복사",
+    Download: "다운로드",
+    MessageFromYou: "나의 메시지",
+    MessageFromChatGPT: "ChatGPT의 메시지",
+  },
+  Memory: {
+    Title: "기억 프롬프트",
+    EmptyContent: "아직 내용이 없습니다.",
+    Send: "기억 보내기",
+    Copy: "기억 복사",
+    Reset: "세션 재설정",
+    ResetConfirm:
+      "재설정하면 현재 대화 기록과 기억력이 삭제됩니다. 정말 재설정하시겠습니까?",
+  },
+  Home: {
+    NewChat: "새로운 채팅",
+    DeleteChat: "선택한 대화를 삭제하시겠습니까?",
+    DeleteToast: "채팅이 삭제되었습니다.",
+    Revert: "되돌리기",
+  },
+  Settings: {
+    Title: "설정",
+    SubTitle: "모든 설정",
+    Actions: {
+      ClearAll: "모든 데이터 지우기",
+      ResetAll: "모든 설정 초기화",
+      Close: "닫기",
+      ConfirmResetAll: "모든 설정을 초기화하시겠습니까?",
+      ConfirmClearAll: "모든 데이터를 지우시겠습니까?",
+    },
+    Lang: {
+      Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
+      All: "All Languages",
+      Options: {
+        cn: "简体中文",
+        en: "English",
+        tw: "繁體中文",
+        fr: "Français",
+        es: "Español",
+        it: "Italiano",
+        tr: "Türkçe",
+        jp: "日本語",
+        de: "Deutsch",
+        vi: "Tiếng Việt",
+        ru: "Русский",
+        cs: "Čeština",
+        ko: "한국어",
+      },
+    },
+    Avatar: "아바타",
+    FontSize: {
+    Title: "글꼴 크기",
+    SubTitle: "채팅 내용의 글꼴 크기 조정",
+  },
+    Update: {
+      Version: (x: string) => `버전: ${x}`,
+      IsLatest: "최신 버전",
+      CheckUpdate: "업데이트 확인",
+      IsChecking: "업데이트 확인 중...",
+      FoundUpdate: (x: string) => `새 버전 발견: ${x}`,
+      GoToUpdate: "업데이트",
+    },
+    SendKey: "전송 키",
+    Theme: "테마",
+    TightBorder: "조밀한 테두리",
+    SendPreviewBubble: {
+      Title: "미리 보기 버블 전송",
+      SubTitle: "버블에서 마크다운 미리 보기",
+    },
+    Mask: {
+      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:
+        "미압축 메시지 길이가 임계값을 초과하면 압축됨",
+    },
+    Token: {
+      Title: "API 키",
+      SubTitle: "액세스 코드 제한을 무시하기 위해 키 사용",
+      Placeholder: "OpenAI API 키",
+    },
+    Usage: {
+      Title: "계정 잔액",
+      SubTitle(used: any, total: any) {
+        return `이번 달 사용액 ${used}, 구독액 ${total}`;
+      },
+      IsChecking: "확인 중...",
+      Check: "확인",
+      NoAccess: "잔액 확인을 위해 API 키를 입력하세요.",
+    },
+    AccessCode: {
+      Title: "액세스 코드",
+      SubTitle: "액세스 제어가 활성화됨",
+      Placeholder: "액세스 코드 입력",
+    },
+    Model: "모델",
+    Temperature: {
+      Title: "온도 (temperature)",
+      SubTitle: "값이 클수록 더 무작위한 출력이 생성됩니다.",
+    },
+    MaxTokens: {
+      Title: "최대 토큰 수 (max_tokens)",
+      SubTitle: "입력 토큰과 생성된 토큰의 최대 길이",
+    },  
+    PresencePenalty: {
+      Title: "존재 페널티 (presence_penalty)",
+      SubTitle:
+        "값이 클수록 새로운 주제에 대해 대화할 가능성이 높아집니다.",
+    },
+  },
+  Store: {
+    DefaultTopic: "새 대화",
+    BotHello: "안녕하세요! 오늘 도움이 필요하신가요?",
+    Error: "문제가 발생했습니다. 나중에 다시 시도해주세요.",
+    Prompt: {
+      History: (content: string) =>
+        "이것은 AI와 사용자 간의 대화 기록을 요약한 내용입니다: " +
+        content,
+      Topic:
+        "다음과 같이 대화 내용을 요약하는 4~5단어 제목을 생성해주세요. 따옴표, 구두점, 인용부호, 기호 또는 추가 텍스트를 제거하십시오. 따옴표로 감싸진 부분을 제거하십시오.",
+      Summarize:
+        "200단어 이내로 저희 토론을 간략히 요약하여 앞으로의 맥락으로 사용할 수 있는 프롬프트로 만들어주세요.",
+    },
+  },
+  Copy: {
+    Success: "클립보드에 복사되었습니다.",
+    Failed: "복사 실패, 클립보드 접근 권한을 허용해주세요.",
+  },
+  Context: {
+    Toast: (x: any) => `컨텍스트 프롬프트 ${x}개 사용`,
+    Edit: "컨텍스트 및 메모리 프롬프트",
+    Add: "프롬프트 추가",
+  },
+  Plugin: {
+    Name: "플러그인",
+  },
+  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: "봇 이름",
+    },
+  },
+  NewChat: {
+    Return: "돌아가기",
+    Skip: "건너뛰기",
+    Title: "마스크 선택",
+    SubTitle: "마스크 뒤의 영혼과 대화하세요",
+    More: "더 보기",
+    NotShow: "다시 표시하지 않음",
+    ConfirmNoShow: "비활성화하시겠습니까? 나중에 설정에서 다시 활성화할 수 있습니다.",
+  },
+
+  UI: {
+    Confirm: "확인",
+    Cancel: "취소",
+    Close: "닫기",
+    Create: "생성",
+    Edit: "편집",
+  },
+  };
+
+export default ko;

+ 1 - 0
app/locales/ru.ts

@@ -84,6 +84,7 @@ const ru: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Аватар",

+ 1 - 0
app/locales/tr.ts

@@ -84,6 +84,7 @@ const tr: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/tw.ts

@@ -82,6 +82,7 @@ const tw: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "大頭貼",

+ 1 - 0
app/locales/vi.ts

@@ -84,6 +84,7 @@ const vi: LocaleType = {
         vi: "Tiếng Việt",
         ru: "Русский",
         cs: "Čeština",
+        ko: "한국어",
       },
     },
     Avatar: "Ảnh đại diện",