From cd245fc806b96249168ec8f19112c5a326afe10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=BF=9E=E8=BE=B0?= Date: Mon, 24 Apr 2023 23:39:28 +0800 Subject: [PATCH] Localization --- .../DataProvider/AIPromptViewMdoel.swift | 4 +- .../DataProvider/ChatGPTManager.swift | 4 +- .../DataProvider/KeyboardMonitor.swift | 4 +- .../DataProvider/Localization.swift | 15 +++ .../DataProvider/ServerManager.swift | 10 +- .../OSXChatGPT/DataProvider/ViewModel.swift | 4 +- .../OSXChatGPT/Interface/OSXChatGPTApp.swift | 7 +- .../WindowView/AIPromptInputView.swift | 7 +- .../WindowView/AIPromptPopView.swift | 107 ++++++++++-------- .../OSXChatGPT/WindowView/AIPromptView.swift | 5 +- .../WindowView/ChatRoomToolBar.swift | 1 - .../OSXChatGPT/WindowView/ChatRoomView.swift | 10 +- .../OSXChatGPT/WindowView/SessionsView.swift | 8 +- .../WindowView/UserInitializeView.swift | 15 +-- OSXChatGPT/OSXChatGPT/WindowView/View.swift | 2 +- .../OSXChatGPT/en.lproj/Localizable.strings | 14 ++- .../zh-Hans.lproj/Localizable.strings | 26 +++-- 17 files changed, 143 insertions(+), 100 deletions(-) diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/AIPromptViewMdoel.swift b/OSXChatGPT/OSXChatGPT/DataProvider/AIPromptViewMdoel.swift index 693a546..88c7041 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/AIPromptViewMdoel.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/AIPromptViewMdoel.swift @@ -140,7 +140,7 @@ extension AIPromptViewMdoel { // 获取云端数据 HTTPClient.getPrompt { [weak self] datas, err in - print("云端数据请求成功") +// print("云端数据请求成功") guard let self = self else { return } var temp: [Prompt] = [] datas.forEach { json in @@ -190,7 +190,7 @@ extension AIPromptViewMdoel { self.allPrompts += temp } }else { - print("获取云端数据失败!!!需要更新token") +// print("获取云端数据失败!!!需要更新token") } } } diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/ChatGPTManager.swift b/OSXChatGPT/OSXChatGPT/DataProvider/ChatGPTManager.swift index bf81854..b07f8a6 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/ChatGPTManager.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/ChatGPTManager.swift @@ -294,8 +294,8 @@ extension ChatGPTManager { for try await line in stream { await tempMessagePool.append(line: line) let newMessage = await tempMessagePool.message - print("回复1:\(line)") - print("回复2:\(newMessage)") +// print("回复1:\(line)") +// print("回复2:\(newMessage)") newMsg += newMessage let res = ChatGPTResponse(request: request ,state: .replying, text: newMessage, stream: line) complete?(res) diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/KeyboardMonitor.swift b/OSXChatGPT/OSXChatGPT/DataProvider/KeyboardMonitor.swift index d761414..54e15b9 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/KeyboardMonitor.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/KeyboardMonitor.swift @@ -24,10 +24,10 @@ class KeyboardMonitor { } shiftKeyMonitor = NSEvent.addLocalMonitorForEvents(matching: .flagsChanged, handler: { event in if event.modifierFlags.contains(.shift) { - print("按下shift健") +// print("按下shift健") self.shiftKeyPressed = true }else { - print("松开shift健") +// print("松开shift健") self.shiftKeyPressed = false } return event diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/Localization.swift b/OSXChatGPT/OSXChatGPT/DataProvider/Localization.swift index 3b2d634..94f79b1 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/Localization.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/Localization.swift @@ -62,6 +62,11 @@ enum Localization { case ShareOrNot case AnswerStream case AnswerOneTime + case Setting + case HideDynamicBackground + case DisplayDynamicBackground + case Displayed + case Hidden var localized: String { switch self { @@ -169,6 +174,16 @@ enum Localization { return String(format: NSLocalizedString("AnswerStream", comment: "")) case .AnswerOneTime: return String(format: NSLocalizedString("AnswerOneTime", comment: "")) + case .Setting: + return String(format: NSLocalizedString("Setting", comment: "")) + case .HideDynamicBackground: + return String(format: NSLocalizedString("HideDynamicBackground", comment: "")) + case .DisplayDynamicBackground: + return String(format: NSLocalizedString("DisplayDynamicBackground", comment: "")) + case .Displayed: + return String(format: NSLocalizedString("Displayed", comment: "")) + case .Hidden: + return String(format: NSLocalizedString("Hidden", comment: "")) } } diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/ServerManager.swift b/OSXChatGPT/OSXChatGPT/DataProvider/ServerManager.swift index 6e26802..51b6a50 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/ServerManager.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/ServerManager.swift @@ -35,17 +35,17 @@ class ServerManager { let da = NSData(base64Encoded: getDataBase64, options: NSData.Base64DecodingOptions.init(rawValue: 0)), let dataString = String(data: da as Data, encoding: .utf8) { self.getDataToken = dataString - print("获取getDataToken成功") +// print("获取getDataToken成功") }else { - print("获取getDataToken失败") +// print("获取getDataToken失败") } if let uploadDataBase64 = json["uploadData"] as? String, let da = NSData(base64Encoded: uploadDataBase64, options: NSData.Base64DecodingOptions.init(rawValue: 0)), let dataString = String(data: da as Data, encoding: .utf8) { self.uploadDataToken = dataString - print("获取uploadDataToken成功") +// print("获取uploadDataToken成功") }else { - print("获取uploadDataToken失败") +// print("获取uploadDataToken失败") } self.loading = false if self.uploadDataToken.isEmpty || self.getDataToken.isEmpty { @@ -54,7 +54,7 @@ class ServerManager { } } }else { - print("获取Token失败") +// print("获取Token失败") self.loading = false DispatchQueue.global().asyncAfter(deadline: .now() + 3) { self.checkToken() diff --git a/OSXChatGPT/OSXChatGPT/DataProvider/ViewModel.swift b/OSXChatGPT/OSXChatGPT/DataProvider/ViewModel.swift index f7840cf..4460415 100644 --- a/OSXChatGPT/OSXChatGPT/DataProvider/ViewModel.swift +++ b/OSXChatGPT/OSXChatGPT/DataProvider/ViewModel.swift @@ -312,13 +312,13 @@ extension ViewModel { self.showStopAnswerBtn = true } - var stream: String = "" +// var stream: String = "" ChatGPTManager.shared.askChatGPTStream(messages: messages, prompt: prompt, chatGpt: currentConversation?.chatGPT) { rsp in if rsp.request.answerType == .stream { isFeedback = true //流式请求 if rsp.state == .replyStart { - stream = "" +// stream = "" DispatchQueue.main.async { self.removeGptThinkMessage() newMsg = Message(context: CoreDataManager.shared.container.viewContext) diff --git a/OSXChatGPT/OSXChatGPT/Interface/OSXChatGPTApp.swift b/OSXChatGPT/OSXChatGPT/Interface/OSXChatGPTApp.swift index 199e70b..31be589 100644 --- a/OSXChatGPT/OSXChatGPT/Interface/OSXChatGPTApp.swift +++ b/OSXChatGPT/OSXChatGPT/Interface/OSXChatGPTApp.swift @@ -26,12 +26,13 @@ struct OSXChatGPTApp: App { .commands { SidebarCommands() } .commands { CommandGroup(replacing: CommandGroupPlacement.newItem) {} } .commands { - CommandMenu("Setting") { - Menu(viewModel.showDynamicBackground ? "隐藏动态背景" : "显示动态背景") { - Text(viewModel.showDynamicBackground ? "已显示" : "已隐藏") + CommandMenu(Localization.Setting.localized) { + Menu(viewModel.showDynamicBackground ? Localization.HideDynamicBackground.localized : Localization.DisplayDynamicBackground.localized) { + Text(viewModel.showDynamicBackground ? Localization.Displayed.localized : Localization.Hidden.localized) } primaryAction: { viewModel.showDynamicBackground.toggle() ProjectSettingManager.shared.showDynamicBackground = viewModel.showDynamicBackground + viewModel.showDynamicBackground = viewModel.showDynamicBackground } } } diff --git a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptInputView.swift b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptInputView.swift index 53fbbc0..7dcc5dd 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptInputView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptInputView.swift @@ -90,11 +90,6 @@ struct AIPromptInputView: View { .padding(.leading, 20) .padding(.bottom, 0) .frame(height: 18) -// Text("(选填)") -// .font(Font.system(size: 11)) -// .padding(.top, 5) -// .foregroundColor(.gray.opacity(0.6)) -// .frame(height: 18) Text(Localization.ShareYourPromptToLibrary.localized) .font(Font.system(size: 10)) .padding(.top, 5) @@ -133,7 +128,7 @@ struct AIPromptInputView: View { Button { if title.isEmpty || content.isEmpty { - self.isPresented = false + return } viewModel.addPrompt(title: title, content: content, author: author, isToggleOn: isToggleOn) diff --git a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptPopView.swift b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptPopView.swift index 8d1e9d6..0733bd2 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptPopView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptPopView.swift @@ -84,59 +84,74 @@ struct AIPromptPopCellView: View { let item: Prompt let isSelected: Bool var body: some View { - HStack { - if self.isSelected { - Image(systemName: "checkmark.square.fill") - .resizable() - .scaledToFit() - .frame(width: 20, height: 20) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) - .background(Color.blue) - .clipShape(Circle()) - .padding(5) + ZStack { + HStack { + if self.isSelected { + Image(systemName: "checkmark.square.fill") + .resizable() + .scaledToFit() + .frame(width: 20, height: 20) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) + .background(Color.blue) + .clipShape(Circle()) + .padding(5) + + } else { + Circle() + .stroke(Color.blue, lineWidth: 1) + .frame(width: 20, height: 20) + .padding(5) + } + if item.promptType == .hint { + VStack(alignment: .leading, spacing: 4) { + HStack { + Text(Localization.DefaultNoPrompt.localized) + .font(Font.system(size: 15)) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) + .padding(.trailing, 6) + .padding(.bottom, 6) + Text(Localization.CurrentSelectPrompt.localized) + .font(Font.system(size: 14)) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) + .padding(.bottom, 6) + Spacer() + Text(Localization.NoPromptToLibraryAdd.localized) + .font(Font.system(size: 11)) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) + .padding(.bottom, 6) + } + Text(Localization.SelectOnlyOnePromptPerSession.localized) + .font(.subheadline) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.6) : .white) + }.padding(.leading, 2) + }else { + VStack(alignment: .leading, spacing: 4) { + Text(item.title ?? "") + .font(.headline) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) + .foregroundColor(.primary) + .padding(.bottom, 5) + Text(item.prompt ?? "") + .font(.subheadline) + .foregroundColor((colorScheme == .dark) ? .white.opacity(0.6) : .white.opacity(0.9)) + }.padding(.leading, 2) + } + + Spacer() - } else { - Circle() - .stroke(Color.blue, lineWidth: 1) - .frame(width: 20, height: 20) - .padding(5) } - if item.promptType == .hint { - VStack(alignment: .leading, spacing: 4) { + if let author = item.author, !author.isEmpty { + VStack { HStack { - Text(Localization.DefaultNoPrompt.localized) - .font(Font.system(size: 15)) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) - .padding(.trailing, 6) - .padding(.bottom, 6) - Text(Localization.CurrentSelectPrompt.localized) - .font(Font.system(size: 14)) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) - .padding(.bottom, 6) Spacer() - Text(Localization.NoPromptToLibraryAdd.localized) - .font(Font.system(size: 11)) + Text("@\(author)") .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) - .padding(.bottom, 6) + .font(.system(size: 11)) + .padding(.top, 5) } - Text(Localization.SelectOnlyOnePromptPerSession.localized) - .font(.subheadline) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.6) : .white) - }.padding(.leading, 2) - }else { - VStack(alignment: .leading, spacing: 4) { - Text(item.title ?? "") - .font(.headline) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) - .foregroundColor(.primary) - .padding(.bottom, 6) - Text(item.prompt ?? "") - .font(.subheadline) - .foregroundColor((colorScheme == .dark) ? .white.opacity(0.6) : .white) - }.padding(.leading, 2) + Spacer() + } } - - Spacer() } .frame(height: 60) .padding(.vertical, 5) diff --git a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptView.swift b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptView.swift index ead4c93..ea20e35 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/AIPromptView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/AIPromptView.swift @@ -167,6 +167,7 @@ struct AIPromptView: View { .background(Color.clear) .padding(.leading, 16) .padding(.trailing, 16) + .padding(.bottom, 16) } .frame(width: geometry.size.width, height: geometry.size.height) @@ -239,11 +240,11 @@ struct AIPromptCellView: View { } - if let author = item.author { + if let author = item.author, !author.isEmpty { VStack { HStack { Spacer() - Text("\(author)") + Text("@\(author)") .foregroundColor((colorScheme == .dark) ? .white.opacity(0.8) : .white) .font(.system(size: 11)) .padding(.top, 5) diff --git a/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomToolBar.swift b/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomToolBar.swift index 00afad8..3dbf712 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomToolBar.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomToolBar.swift @@ -159,7 +159,6 @@ struct TemperatureSliderView: View { .padding(.top, 10) .padding(.bottom, 10) .onChange(of: progress) { newValue in - print("aaaa\(newValue)") let formattedValue = String(format: "%.1f", newValue * 2) change = formattedValue diff --git a/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomView.swift b/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomView.swift index b789f59..1d6f13b 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/ChatRoomView.swift @@ -84,7 +84,7 @@ struct ChatRoomView: View { .onAppear { - print("View appeared!") +// print("View appeared!") newMessageText = conversation?.lastInputText ?? "" KeyboardMonitor.shared.startMonitorPasteboard() KeyboardMonitor.shared.startMonitorShiftKey() @@ -103,7 +103,7 @@ struct ChatRoomView: View { ServerManager.shared.checkToken()//获取最新teton } .onDisappear { - print("View disappeared!") +// print("View disappeared!") self.isOnAppear = false conversation?.lastInputText = newMessageText @@ -159,6 +159,12 @@ struct ChatRoomCellView: View { }) { Text(Localization.deleteMessage.localized) } + Button(action: { + NSPasteboard.general.prepareForNewContents() + NSPasteboard.general.setString(message.text ?? "", forType: .string) + }) { + Text(Localization.copyMessage.localized) + } } // VStack { diff --git a/OSXChatGPT/OSXChatGPT/WindowView/SessionsView.swift b/OSXChatGPT/OSXChatGPT/WindowView/SessionsView.swift index 078310d..2a161e3 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/SessionsView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/SessionsView.swift @@ -145,10 +145,10 @@ struct ChatRowView: View { .font(.headline) .foregroundColor(NSColor(r: 224, g: 87, b: 114).toColor()) }else { - if chat.prompt?.title != nil { + if chat.prompt?.title != nil && !chat.prompt!.title!.isEmpty { Text(chat.prompt?.title ?? "") .font(.headline) - }else if chat.remark != nil { + }else if chat.remark != nil && !chat.remark!.isEmpty { Text(chat.remark ?? "") .font(.headline) }else if chat.lastMessage?.text != nil { @@ -211,7 +211,6 @@ struct ChatRowContentNSView: NSViewRepresentable { @objc func handleRightClick(_ sender: NSClickGestureRecognizer) { if sender.state == .ended { - print("右键鼠标") let menu = NSMenu(title: "") menu.delegate = self let editMenuItem = NSMenuItem(title: Localization.editRemark.localized, action: #selector(edit), keyEquivalent: "") @@ -227,14 +226,13 @@ struct ChatRowContentNSView: NSViewRepresentable { @MainActor @objc func handleLeftClick(_ sender: NSClickGestureRecognizer) { if sender.state == .ended { - print("左边键鼠标") parent.viewModel.currentConversation = parent.chat; parent.viewModel.showUserInitialize = false } } func menuDidClose(_ menu: NSMenu) { - print("menu menuDidClose!") + } @MainActor @objc func edit() { diff --git a/OSXChatGPT/OSXChatGPT/WindowView/UserInitializeView.swift b/OSXChatGPT/OSXChatGPT/WindowView/UserInitializeView.swift index ae80e5d..53814b1 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/UserInitializeView.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/UserInitializeView.swift @@ -23,6 +23,7 @@ struct UserInitializeView: View { .resizable() .aspectRatio(contentMode: .fit) .frame(width: 80, height: 80) + .padding(.top, 50) HStack(spacing: 0) { Text("OSXChatGPT") @@ -40,7 +41,7 @@ struct UserInitializeView: View { .foregroundColor(.white) ) } - + .padding(.bottom, 20) VStack(alignment: .leading, spacing: 10){ HStack { Text(Localization.fasterResponse.localized) @@ -71,9 +72,9 @@ struct UserInitializeView: View { Image("github-fill 1") Text(Localization.BetterApplication.localized) .foregroundColor(.blue) - .frame(maxWidth: 250, alignment: .leading) + .frame(maxWidth: 300, alignment: .leading) .padding(.horizontal, 5) - }) + }).padding(.leading, 60) }.buttonStyle(PlainButtonStyle())//删除背景色 Button(action: { @@ -85,9 +86,9 @@ struct UserInitializeView: View { Image(systemName: "play.tv.fill") Text(Localization.adMovie.localized) .foregroundColor(.blue) - .frame(maxWidth: 250, alignment: .leading) + .frame(maxWidth: 300, alignment: .leading) .padding(.horizontal, 5) - }) + }).padding(.leading, 60) }.buttonStyle(PlainButtonStyle())//删除背景色 Button(action: { @@ -99,9 +100,9 @@ struct UserInitializeView: View { Image(systemName: "desktopcomputer.and.arrow.down") Text(Localization.adWebsite.localized) .foregroundColor(.blue) - .frame(maxWidth: 250, alignment: .leading) + .frame(maxWidth: 300, alignment: .leading) .padding(.horizontal, 5) - }) + }).padding(.leading, 60) }.buttonStyle(PlainButtonStyle())//删除背景色 }) diff --git a/OSXChatGPT/OSXChatGPT/WindowView/View.swift b/OSXChatGPT/OSXChatGPT/WindowView/View.swift index fac3e4f..6f94708 100644 --- a/OSXChatGPT/OSXChatGPT/WindowView/View.swift +++ b/OSXChatGPT/OSXChatGPT/WindowView/View.swift @@ -32,6 +32,6 @@ extension NSTableView { super.viewDidMoveToWindow() backgroundColor = NSColor.clear - enclosingScrollView!.drawsBackground = false + enclosingScrollView?.drawsBackground = false } } diff --git a/OSXChatGPT/OSXChatGPT/en.lproj/Localizable.strings b/OSXChatGPT/OSXChatGPT/en.lproj/Localizable.strings index 1d70b0f..f9e877f 100644 --- a/OSXChatGPT/OSXChatGPT/en.lproj/Localizable.strings +++ b/OSXChatGPT/OSXChatGPT/en.lproj/Localizable.strings @@ -14,10 +14,10 @@ "EditConversationRemark" = "Edit Conversation Remark:"; "EnterRemark" = "Enter remark"; -"FasterResponse" = "✅ Faster response ✅ Local Chat History"; -"PromptLibrary" = "✅ Prompt Library ✅ Run locally on desktop"; +"FasterResponse" = "✅ Faster response ✅ Local Chat History"; +"PromptLibrary" = "✅ Prompt Library ✅ Run locally on desktop"; "NoLoginRequired" = "✅ No login required ✅ Use your own API key"; -"NoMonthlyFee" = "✅ No monthly fee and more soon..."; +"NoMonthlyFee" = "✅ No monthly fee and more soon..."; "BetterApplication" = "A Better macOS application for ChatGPT"; "adMovie" = "湖畔机械厂电影院"; "adWebsite" = "湖畔机械厂员工搬运Mac软件资源网"; @@ -54,7 +54,7 @@ "CurrentSelectPrompt" = "Current select prompt"; "NoPromptToLibraryAdd" = "(No prompt, please add to library)"; "SelectOnlyOnePromptPerSession" = "You can select only one prompt per session, or you can add custom prompt"; -"CustomAdd" = "Custom add"; +"CustomAdd" = "Add a custom"; "Title" = "Title"; "Required" = "*Required"; "Author" = "Author"; @@ -63,3 +63,9 @@ "AnswerStream" = "Stream"; "AnswerOneTime" = "OneTime"; + +"Setting" = "Setting"; +"HideDynamicBackground" = "Hide dynamic background"; +"DisplayDynamicBackground" = "Display dynamic background"; +"Displayed" = "Displayed"; +"Hidden" = "Hidden"; diff --git a/OSXChatGPT/OSXChatGPT/zh-Hans.lproj/Localizable.strings b/OSXChatGPT/OSXChatGPT/zh-Hans.lproj/Localizable.strings index 55ab356..1bfb90f 100644 --- a/OSXChatGPT/OSXChatGPT/zh-Hans.lproj/Localizable.strings +++ b/OSXChatGPT/OSXChatGPT/zh-Hans.lproj/Localizable.strings @@ -6,28 +6,28 @@ */ -"newChat" = "新会话 "; +"newChat" = "新会话 "; "Prompt" = "[修饰]%@"; "editRemark" = "编辑备注"; "deleteSession" = "删除会话"; "EditConversationRemark" = "编辑会话备注:"; "EnterRemark" = "输入备注"; -"FasterResponse" = "✅ 更快的响应 ✅ 本地聊天记录"; -"PromptLibrary" = "✅ 修饰词库 ✅ 在桌面上本地运行"; -"NoLoginRequired" = "✅ 无需登陆 ✅ 使用您的API密钥"; -"NoMonthlyFee" = "✅ 没有任何费用 还有更多..."; -"BetterApplication" = "一个优秀的macOS应用程序的ChatGPT"; +"FasterResponse" = "✅ 快速响应 ✅ 本地保存记录"; +"PromptLibrary" = "✅ 修饰词库 ✅ 随意参数调节"; +"NoLoginRequired" = "✅ 无需登陆 ✅ 一键清空会话"; +"NoMonthlyFee" = "✅ 没有费用 更多敬请期待..."; +"BetterApplication" = "OSXChatGPT应用程序唯一官方地址"; "adMovie" = "湖畔机械厂电影院"; "adWebsite" = "湖畔机械厂员工搬运Mac软件资源网"; "UpdateAPIKey" = "更新 API Key"; "EnterAPIKey" = "填入 API Key"; "EnterYourAPIKey" = "填入你的 API Key:"; -"YouNeedApiKey" = "使用OSXChatGPT之前你需要OpenAI的Api Key"; -"GetYourAPIKey" = "🌏 去OpenAI官网获取Api Key"; +"YouNeedApiKey" = "使用OSXChatGPT之前你需要填入OpenAI的Api Key"; +"GetYourAPIKey" = "🌏 OpenAI官网获取Api Key"; "Cancel" = "取消"; "Save" = "保存"; -"TheAppWillConnectOpenAIServer" = "该应用程序将连接到OpenAI API服务器,需要检查您的API密钥是否正常工作。"; +"TheAppWillConnectOpenAIServer" = "该应用程序将请求OpenAI API服务器,请确保您的API密钥是否正常工作。"; "deleteMessage" = "删除消息"; "copyMessage" = "复制消息"; @@ -43,7 +43,7 @@ "CurrentTemperature" = "当前温度:"; "RemoveShortcuts" = "删除快捷方式"; -"AddShortcuts" = "移除快捷方式"; +"AddShortcuts" = "添加快捷方式"; "DeleteData" = "删除数据"; "PleaseClickUpperRightAddCustomPrompt" = "请点击右上角自定义添加新的修饰语"; "SelectPrompt" = "选择修饰语"; @@ -62,3 +62,9 @@ "AnswerStream" = "流式"; "AnswerOneTime" = "单式"; + +"Setting" = "设置"; +"HideDynamicBackground" = "隐藏动态背景"; +"DisplayDynamicBackground" = "显示动态背景"; +"Displayed" = "已显示"; +"Hidden" = "已隐藏";