From 7670b8b73825300ba792d893c3a8b7f442bac8f5 Mon Sep 17 00:00:00 2001 From: aooyoo Date: Mon, 10 Apr 2023 14:01:54 +0000 Subject: [PATCH 1/6] add new language, Japanese --- app/locales/cn.ts | 1 + app/locales/en.ts | 1 + app/locales/es.ts | 1 + app/locales/index.ts | 9 ++- app/locales/it.ts | 1 + app/locales/jp.ts | 182 +++++++++++++++++++++++++++++++++++++++++++ app/locales/tr.ts | 10 ++- app/locales/tw.ts | 1 + 8 files changed, 201 insertions(+), 5 deletions(-) create mode 100644 app/locales/jp.ts diff --git a/app/locales/cn.ts b/app/locales/cn.ts index d3df950b5..fbb418471 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -73,6 +73,7 @@ const cn = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, Avatar: "头像", diff --git a/app/locales/en.ts b/app/locales/en.ts index 6b63f21be..8ffc07816 100644 --- a/app/locales/en.ts +++ b/app/locales/en.ts @@ -76,6 +76,7 @@ const en: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/es.ts b/app/locales/es.ts index eac504dd8..0939cc7a0 100644 --- a/app/locales/es.ts +++ b/app/locales/es.ts @@ -76,6 +76,7 @@ const es: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/index.ts b/app/locales/index.ts index d7a1aefe5..dff1e6614 100644 --- a/app/locales/index.ts +++ b/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() +]; diff --git a/app/locales/it.ts b/app/locales/it.ts index 3c11e708d..0a3cf18d9 100644 --- a/app/locales/it.ts +++ b/app/locales/it.ts @@ -76,6 +76,7 @@ const it: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/jp.ts b/app/locales/jp.ts new file mode 100644 index 000000000..98a62fb0c --- /dev/null +++ b/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", + jr: "日本語", + }, + }, + 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; diff --git a/app/locales/tr.ts b/app/locales/tr.ts index 354786818..d5ac93807 100644 --- a/app/locales/tr.ts +++ b/app/locales/tr.ts @@ -76,6 +76,7 @@ const tr: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, 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ı", diff --git a/app/locales/tw.ts b/app/locales/tw.ts index 89924b726..eadfa275a 100644 --- a/app/locales/tw.ts +++ b/app/locales/tw.ts @@ -74,6 +74,7 @@ const tw: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", + jr: "日本語", }, }, Avatar: "大頭貼", From 042e989ebbefebb28c987114d52d8bc0e6ea7f73 Mon Sep 17 00:00:00 2001 From: aooyoo Date: Mon, 10 Apr 2023 14:12:31 +0000 Subject: [PATCH 2/6] fix spelling errors --- app/locales/cn.ts | 2 +- app/locales/en.ts | 2 +- app/locales/es.ts | 2 +- app/locales/it.ts | 2 +- app/locales/jp.ts | 2 +- app/locales/tr.ts | 2 +- app/locales/tw.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/locales/cn.ts b/app/locales/cn.ts index fbb418471..9973a3c68 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -73,7 +73,7 @@ const cn = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "头像", diff --git a/app/locales/en.ts b/app/locales/en.ts index 8ffc07816..bd417aa84 100644 --- a/app/locales/en.ts +++ b/app/locales/en.ts @@ -76,7 +76,7 @@ const en: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/es.ts b/app/locales/es.ts index 0939cc7a0..88bcd2012 100644 --- a/app/locales/es.ts +++ b/app/locales/es.ts @@ -76,7 +76,7 @@ const es: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/it.ts b/app/locales/it.ts index 0a3cf18d9..3cd768fed 100644 --- a/app/locales/it.ts +++ b/app/locales/it.ts @@ -76,7 +76,7 @@ const it: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/jp.ts b/app/locales/jp.ts index 98a62fb0c..50ac21609 100644 --- a/app/locales/jp.ts +++ b/app/locales/jp.ts @@ -75,7 +75,7 @@ const jp = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "アバター", diff --git a/app/locales/tr.ts b/app/locales/tr.ts index d5ac93807..708d2d7d5 100644 --- a/app/locales/tr.ts +++ b/app/locales/tr.ts @@ -76,7 +76,7 @@ const tr: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "Avatar", diff --git a/app/locales/tw.ts b/app/locales/tw.ts index eadfa275a..77975b896 100644 --- a/app/locales/tw.ts +++ b/app/locales/tw.ts @@ -74,7 +74,7 @@ const tw: LocaleType = { es: "Español", it: "Italiano", tr: "Türkçe", - jr: "日本語", + jp: "日本語", }, }, Avatar: "大頭貼", From f43d936ef0401ca375c144a4c61f8a451ae47a21 Mon Sep 17 00:00:00 2001 From: Yifei Zhang Date: Tue, 11 Apr 2023 11:15:24 +0800 Subject: [PATCH 3/6] Update faq-cn.md --- docs/faq-cn.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/faq-cn.md b/docs/faq-cn.md index 88293b9c6..7a71e75d8 100644 --- a/docs/faq-cn.md +++ b/docs/faq-cn.md @@ -1,7 +1,5 @@ # 常见问题 -> We are sorry that there is currently no English version of the FAQ. English users can use translation tools to access this document. We look forward to receiving your PR for an English version of the documentation. - ## 如何快速获得帮助? 1. 询问ChatGPT / Bing / 百度 / Google等。 2. 询问网友。请提供问题的背景信息和碰到问题的详细描述。高质量的提问容易获得有用的答案。 @@ -121,8 +119,9 @@ OpenAI只接受指定地区的信用卡(中国信用卡无法使用)。一 3. 网上找人代充 ## 如何使用GPT-4的API访问? -(4月6日更新)GPT-4的API访问需要单独申请。到以下地址填写你的信息进入申请队列waitlist(准备好你的OpenAI组织ID):https://openai.com/waitlist/gpt-4-api +- GPT-4的API访问需要单独申请。到以下地址填写你的信息进入申请队列waitlist(准备好你的OpenAI组织ID):https://openai.com/waitlist/gpt-4-api 之后等待邮件消息。 +- 开通 ChatGPT Plus 不代表有 GPT-4 权限,两者毫无关系。 ## 如何使用 Azure OpenAI 接口 请参考:[#371](https://github.com/Yidadaa/ChatGPT-Next-Web/issues/371) From 9f92968b964a40b5d14e28606cc942f647a28679 Mon Sep 17 00:00:00 2001 From: Yifei Zhang Date: Tue, 11 Apr 2023 11:21:05 +0800 Subject: [PATCH 4/6] Update issue templates --- .github/ISSUE_TEMPLATE/反馈问题.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/反馈问题.md b/.github/ISSUE_TEMPLATE/反馈问题.md index 4545721e6..ea56aa6fa 100644 --- a/.github/ISSUE_TEMPLATE/反馈问题.md +++ b/.github/ISSUE_TEMPLATE/反馈问题.md @@ -7,6 +7,11 @@ assignees: '' --- +**反馈须知** +> 请在下方中括号内输入 x 来表示你已经知晓相关内容。 +- [ ] 我确认已经在 [常见问题](https://github.com/Yidadaa/ChatGPT-Next-Web/blob/main/docs/faq-cn.md) 中搜索了此次反馈的问题,没有找到解答; +- [ ] 我确认已经在 [Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) 列表(包括已经 Close 的)中搜索了此次反馈的问题,没有找到解答。 + **描述问题** 请在此描述你遇到了什么问题。 From a1c709bb58ac7d9ccb33637c06df3a097552bde6 Mon Sep 17 00:00:00 2001 From: peanut996 <849421294godw@gmail.com> Date: Tue, 11 Apr 2023 12:06:12 +0800 Subject: [PATCH 5/6] [refactor] rename ChatResponse. --- app/api/openai/typing.ts | 2 +- app/requests.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/openai/typing.ts b/app/api/openai/typing.ts index 8c4218467..b936530c3 100644 --- a/app/api/openai/typing.ts +++ b/app/api/openai/typing.ts @@ -4,4 +4,4 @@ import type { } from "openai"; export type ChatRequest = CreateChatCompletionRequest; -export type ChatReponse = CreateChatCompletionResponse; +export type ChatResponse = CreateChatCompletionResponse; diff --git a/app/requests.ts b/app/requests.ts index 6254c7c78..3d559e369 100644 --- a/app/requests.ts +++ b/app/requests.ts @@ -1,4 +1,4 @@ -import type { ChatRequest, ChatReponse } from "./api/openai/typing"; +import type { ChatRequest, ChatResponse } from "./api/openai/typing"; import { Message, ModelConfig, useAccessStore, useChatStore } from "./store"; import { showToast } from "./components/ui-lib"; @@ -67,7 +67,7 @@ export async function requestChat(messages: Message[]) { const res = await requestOpenaiClient("v1/chat/completions")(req); try { - const response = (await res.json()) as ChatReponse; + const response = (await res.json()) as ChatResponse; return response; } catch (error) { console.error("[Request Chat] ", error, res.body); From 8d2abe36a97e8a75e41e4640d35662f607a15e65 Mon Sep 17 00:00:00 2001 From: Yifei Zhang Date: Tue, 11 Apr 2023 16:04:36 +0800 Subject: [PATCH 6/6] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba4a6dc49..b2d1e48ce 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel. 一键免费部署你的私人 ChatGPT 网页应用。 -[演示 Demo](https://chat-gpt-next-web.vercel.app/) / [反馈 Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [Join Discord](https://discord.gg/zrhvHCr79N) / [QQ 群](https://user-images.githubusercontent.com/16968934/228190818-7dd00845-e9b9-4363-97e5-44c507ac76da.jpeg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg) / [Buy Me a Coffee](https://www.buymeacoffee.com/yidadaa) +[演示 Demo](https://chat-gpt-next-web.vercel.app/) / [反馈 Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [Join Discord](https://discord.gg/zrhvHCr79N) / [QQ 群](https://user-images.githubusercontent.com/16968934/231095592-330adc52-0337-4c13-8452-938ec169e367.jpeg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg) / [Buy Me a Coffee](https://www.buymeacoffee.com/yidadaa) [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web) @@ -20,6 +20,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel. ## Features - **Deploy for free with one-click** on Vercel in under 1 minute +- Privacy first, all data stored locally in the browser - Responsive design, dark mode and PWA - Fast first screen loading speed (~100kb) - 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) @@ -45,6 +46,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel. - 在 1 分钟内使用 Vercel **免费一键部署** - 精心设计的 UI,响应式设计,支持深色模式,支持 PWA - 极快的首屏加载速度(~100kb) +- 隐私安全,所有数据保存在用户浏览器本地 - 海量的内置 prompt 列表,来自[中文](https://github.com/PlexPt/awesome-chatgpt-prompts-zh)和[英文](https://github.com/f/awesome-chatgpt-prompts) - 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话 - 一键导出聊天记录,完整的 Markdown 支持