Browse Source

Merge pull request #688 from aooyoo/main

add Japanese
Yifei Zhang 1 year ago
parent
commit
5a56bc3465
8 changed files with 201 additions and 5 deletions
  1. 1 0
      app/locales/cn.ts
  2. 1 0
      app/locales/en.ts
  3. 1 0
      app/locales/es.ts
  4. 7 2
      app/locales/index.ts
  5. 1 0
      app/locales/it.ts
  6. 182 0
      app/locales/jp.ts
  7. 7 3
      app/locales/tr.ts
  8. 1 0
      app/locales/tw.ts

+ 1 - 0
app/locales/cn.ts

@@ -73,6 +73,7 @@ const cn = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "头像",

+ 1 - 0
app/locales/en.ts

@@ -76,6 +76,7 @@ const en: LocaleType = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "Avatar",

+ 1 - 0
app/locales/es.ts

@@ -76,6 +76,7 @@ const es: LocaleType = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "Avatar",

+ 7 - 2
app/locales/index.ts

@@ -4,10 +4,11 @@ import TW from "./tw";
 import ES from "./es";
 import IT from "./it";
 import TR from "./tr";
+import JP from "./jp";
 
 export type { LocaleType } from "./cn";
 
-export const AllLangs = ["en", "cn", "tw", "es", "it", "tr"] as const;
+export const AllLangs = ["en", "cn", "tw", "es", "it", "tr", "jp"] as const;
 type Lang = (typeof AllLangs)[number];
 
 const LANG_KEY = "lang";
@@ -53,6 +54,8 @@ export function getLang(): Lang {
     return "it";
   } else if (lang.includes("tr")) {
     return "tr";
+  } else if (lang.includes("jp")) {
+    return "jp";
   } else {
     return "en";
   }
@@ -63,4 +66,6 @@ export function changeLang(lang: Lang) {
   location.reload();
 }
 
-export default { en: EN, cn: CN, tw: TW, es: ES, it: IT, tr: TR }[getLang()];
+export default { en: EN, cn: CN, tw: TW, es: ES, it: IT, tr: TR, jp: JP }[
+  getLang()
+];

+ 1 - 0
app/locales/it.ts

@@ -76,6 +76,7 @@ const it: LocaleType = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "Avatar",

+ 182 - 0
app/locales/jp.ts

@@ -0,0 +1,182 @@
+import { SubmitKey } from "../store/app";
+
+const jp = {
+  WIP: "この機能は開発中です……",
+  Error: {
+    Unauthorized:
+      "現在は未承認状態です。左下の設定ボタンをクリックし、アクセスパスワードを入力してください。",
+  },
+  ChatItem: {
+    ChatItemCount: (count: number) => `${count} 通のチャット`,
+  },
+  Chat: {
+    SubTitle: (count: number) => `ChatGPTとの ${count} 通のチャット`,
+    Actions: {
+      ChatList: "メッセージリストを表示",
+      CompressedHistory: "圧縮された履歴プロンプトを表示",
+      Export: "チャット履歴をエクスポート",
+      Copy: "コピー",
+      Stop: "停止",
+      Retry: "リトライ",
+    },
+    Rename: "チャットの名前を変更",
+    Typing: "入力中…",
+    Input: (submitKey: string) => {
+      var inputHints = `${submitKey} で送信`;
+      if (submitKey === String(SubmitKey.Enter)) {
+        inputHints += ",Shift + Enter で改行";
+      }
+      return inputHints + ",/ で自動補完をトリガー";
+    },
+    Send: "送信",
+  },
+  Export: {
+    Title: "チャット履歴をMarkdown形式でエクスポート",
+    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: {
+        Confirm: "すべての設定をリセットしてもよろしいですか?",
+      },
+      ConfirmClearAll: {
+        Confirm: "すべてのチャットをリセットしてもよろしいですか?",
+      },
+    },
+    Lang: {
+      Name: "Language",
+      Options: {
+        cn: "简体中文",
+        en: "English",
+        tw: "繁體中文",
+        es: "Español",
+        it: "Italiano",
+        tr: "Türkçe",
+        jp: "日本語",
+      },
+    },
+    Avatar: "アバター",
+    FontSize: {
+      Title: "フォントサイズ",
+      SubTitle: "チャット内容のフォントサイズ",
+    },
+
+    Update: {
+      Version: (x: string) => `現在のバージョン:${x}`,
+      IsLatest: "最新バージョンです",
+      CheckUpdate: "アップデートを確認",
+      IsChecking: "アップデートを確認しています...",
+      FoundUpdate: (x: string) => `新しいバージョンが見つかりました:${x}`,
+      GoToUpdate: "更新する",
+    },
+    SendKey: "送信キー",
+    Theme: "テーマ",
+    TightBorder: "ボーダーレスモード",
+    SendPreviewBubble: "プレビューバブルの送信",
+    Prompt: {
+      Disable: {
+        Title: "プロンプトの自動補完を無効にする",
+        SubTitle:
+          "入力フィールドの先頭に / を入力すると、自動補完がトリガーされます。",
+      },
+      List: "カスタムプロンプトリスト",
+      ListCount: (builtin: number, custom: number) =>
+        `組み込み ${builtin} 件、ユーザー定義 ${custom} 件`,
+      Edit: "編集",
+    },
+    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: "モデル (model)",
+    Temperature: {
+      Title: "ランダム性 (temperature)",
+      SubTitle:
+        "値が大きいほど、回答がランダムになります。1以上の値には文字化けが含まれる可能性があります。",
+    },
+    MaxTokens: {
+      Title: "シングルレスポンス制限 (max_tokens)",
+      SubTitle: "1回のインタラクションで使用される最大トークン数",
+    },
+    PresencePenlty: {
+      Title: "トピックの新鮮度 (presence_penalty)",
+      SubTitle: "値が大きいほど、新しいトピックへの展開が可能になります。",
+    },
+  },
+  Store: {
+    DefaultTopic: "新しいチャット",
+    BotHello: "何かお手伝いできることはありますか",
+    Error: "エラーが発生しました。しばらくしてからやり直してください。",
+    Prompt: {
+      History: (content: string) =>
+        "これは、AI とユーザの過去のチャットを要約した前提となるストーリーです:" +
+        content,
+      Topic:
+        "4~5文字でこの文章の簡潔な主題を返してください。説明、句読点、感嘆詞、余分なテキストは無しで。もし主題がない場合は、「おしゃべり」を返してください",
+      Summarize:
+        "あなたとユーザの会話を簡潔にまとめて、後続のコンテキストプロンプトとして使ってください。200字以内に抑えてください。",
+    },
+    ConfirmClearAll:
+      "すべてのチャット、設定データをクリアしてもよろしいですか?",
+  },
+  Copy: {
+    Success: "クリップボードに書き込みました",
+    Failed: "コピーに失敗しました。クリップボード許可を与えてください。",
+  },
+  Context: {
+    Toast: (x: any) => `前置コンテキストが ${x} 件設定されました`,
+    Edit: "前置コンテキストと履歴メモリ",
+    Add: "新規追加",
+  },
+};
+
+export type LocaleType = typeof jp;
+
+export default jp;

+ 7 - 3
app/locales/tr.ts

@@ -76,6 +76,7 @@ const tr: LocaleType = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "Avatar",
@@ -136,11 +137,13 @@ const tr: LocaleType = {
     Model: "Model",
     Temperature: {
       Title: "Gerçeklik",
-      SubTitle: "Daha büyük bir değer girildiğinde gerçeklik oranı düşer ve daha rastgele çıktılar üretir",
+      SubTitle:
+        "Daha büyük bir değer girildiğinde gerçeklik oranı düşer ve daha rastgele çıktılar üretir",
     },
     MaxTokens: {
       Title: "Maksimum Belirteç",
-      SubTitle: "Girdi belirteçlerinin ve oluşturulan belirteçlerin maksimum uzunluğu",
+      SubTitle:
+        "Girdi belirteçlerinin ve oluşturulan belirteçlerin maksimum uzunluğu",
     },
     PresencePenlty: {
       Title: "Varlık Cezası",
@@ -161,7 +164,8 @@ const tr: LocaleType = {
       Summarize:
         "Gelecekteki bağlam için bir bilgi istemi olarak kullanmak üzere tartışmamızı en fazla 200 kelimeyle özetleyin.",
     },
-    ConfirmClearAll: "Tüm sohbet ve ayar verilerini temizlemeyi onaylıyor musunuz?",
+    ConfirmClearAll:
+      "Tüm sohbet ve ayar verilerini temizlemeyi onaylıyor musunuz?",
   },
   Copy: {
     Success: "Panoya kopyalandı",

+ 1 - 0
app/locales/tw.ts

@@ -74,6 +74,7 @@ const tw: LocaleType = {
         es: "Español",
         it: "Italiano",
         tr: "Türkçe",
+        jp: "日本語",
       },
     },
     Avatar: "大頭貼",