Skip to content

Commit bf51ee1

Browse files
committed
Merge branch 'release/2.3'
2 parents 61cee77 + 2e5c364 commit bf51ee1

File tree

13 files changed

+351
-70
lines changed

13 files changed

+351
-70
lines changed

README.md

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,13 @@ OpenAI ChatGPT app for iOS, iPadOS, macoS
1111
#### 更新说明
1212

1313
最新版本 v2.3
14-
- Create new conversations.(创建新的对话)
15-
- Save conversation records.(保存对话记录)
16-
- Toggle history conversations.(切换历史对话)
17-
- Support multi-line text input.(创建新的对话)
18-
- scroll to the top of the conversation list.(滚动到对话列表的顶部)
19-
- Automatically scroll to the bottom of the conversation list.(自动滚动到对话列表的底部)
20-
- Conversations can be recorded without context (Click the icon on the left of the input box to switch).(请求时可不带历史对话记录(点击输入框左边图标切换))
21-
22-
v2.2:
23-
- Increased request timeout from 30 seconds to 60 seconds.(请求超时从 30 秒增加到 60 秒。)
24-
- When sending dialog context, only send the first three Q&A rounds, and submit only the first 100 characters of the answer.(发送对话上下文时,只发送提问的前三轮问答,且答案只提交前100个字。)
25-
- Fixed Chinese Pinyin input method typing interruption problem (thanks to @ypwhs/@coder-free/@0xfeedface1993).(修复中文拼音输入法打字中断的问题(感谢 @ypwhs@coder-free@0xfeedface1993))
26-
27-
v2.1:
28-
- support GPT-4 Model(支持 GPT-4 模型)
29-
- support English language(支持英文语言)
30-
- display configured API Key(显示已配置的 API Key)
31-
32-
33-
v2.0:
34-
- support OpenAI API key
35-
- base GPT3.5 Turbo
36-
37-
> 注意:需要填写自己的 OpenAI API key,app 不提供 key!
14+
- Create new conversation. (创建新的对话)
15+
- Save conversation records. (保存对话记录)
16+
- Switch to historical conversations. (切换历史对话)
17+
- Scroll to the top of the conversation list. (滚动到对话列表的顶部)
18+
- Auto-scroll to the bottom of the conversation list. (自动滚动到对话列表的底部)
19+
- Option to request conversations without historical records (click on the icon on the left side of the input box to toggle). (请求时可不带历史对话记录)
20+
- Support for additional languages (Traditional Chinese, Korean, Japanese, French, German, Russian, etc.). (支持更多语言(繁体中文、韩文、日文、法语、德语、俄语等))
3821

3922
**支持功能**
4023

@@ -55,7 +38,7 @@ v2.0:
5538
* ~~显示个人头像~~
5639
* ~~请求失败重试等~~
5740
* ~~支持多语言,如英文~~
58-
* 保存对话
41+
* ~~保存对话~~
5942
* 代码没有高亮
6043
* 悬浮窗模式
6144
* 保存 pdf 文件
@@ -116,6 +99,25 @@ TestFlight 下载地址:[https://testflight.apple.com/join/GR4BOt2M](https://t
11699
- [New Issue](https://github.com/37iOS/iChatGPT/issues/new/choose)
117100

118101

102+
#### 3.4 历史更新功能
103+
104+
v2.2:
105+
- Increased request timeout from 30 seconds to 60 seconds.(请求超时从 30 秒增加到 60 秒。)
106+
- When sending dialog context, only send the first three Q&A rounds, and submit only the first 100 characters of the answer.(发送对话上下文时,只发送提问的前三轮问答,且答案只提交前100个字。)
107+
- Fixed Chinese Pinyin input method typing interruption problem (thanks to @ypwhs/@coder-free/@0xfeedface1993).(修复中文拼音输入法打字中断的问题(感谢 @ypwhs@coder-free@0xfeedface1993))
108+
109+
v2.1:
110+
- support GPT-4 Model(支持 GPT-4 模型)
111+
- support English language(支持英文语言)
112+
- display configured API Key(显示已配置的 API Key)
113+
114+
115+
v2.0:
116+
- support OpenAI API key
117+
- base GPT3.5 Turbo
118+
119+
> 注意:需要填写自己的 OpenAI API key,app 不提供 key!
120+
119121
### 四、Contributors
120122

121123
* [@iHTCboy](https://github.com/iHTCboy)

iChatGPT.xcodeproj/project.pbxproj

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@
5656
/* Begin PBXFileReference section */
5757
6D37A73C29C6D76800EF1F7B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
5858
6D37A73E29C6D76B00EF1F7B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
59+
6D4D38A529DA746700505FE3 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
60+
6D4D38A629DA754A00505FE3 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
61+
6D4D38A729DA755100505FE3 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
62+
6D4D38A829DA765E00505FE3 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
63+
6D4D38A929DA767100505FE3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
64+
6D4D38AA29DA767B00505FE3 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
5965
6D5C55682944317300FCF891 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6066
6D5C556A2944408700FCF891 /* ImageLoaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLoaderView.swift; sourceTree = "<group>"; };
6167
6D7C1A202945809C008EB1CA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@@ -308,6 +314,12 @@
308314
"zh-Hans",
309315
en,
310316
Base,
317+
"zh-Hant",
318+
ja,
319+
ko,
320+
fr,
321+
ru,
322+
de,
311323
);
312324
mainGroup = 6DC88AD12942C8AD00DA6C55;
313325
packageReferences = (
@@ -417,6 +429,12 @@
417429
children = (
418430
6D37A73C29C6D76800EF1F7B /* zh-Hans */,
419431
6D37A73E29C6D76B00EF1F7B /* en */,
432+
6D4D38A529DA746700505FE3 /* zh-Hant */,
433+
6D4D38A629DA754A00505FE3 /* ja */,
434+
6D4D38A729DA755100505FE3 /* ko */,
435+
6D4D38A829DA765E00505FE3 /* fr */,
436+
6D4D38A929DA767100505FE3 /* ru */,
437+
6D4D38AA29DA767B00505FE3 /* de */,
420438
);
421439
name = Localizable.strings;
422440
sourceTree = "<group>";
@@ -549,8 +567,9 @@
549567
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
550568
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
551569
CODE_SIGN_IDENTITY = "Apple Development";
570+
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
552571
CODE_SIGN_STYLE = Manual;
553-
CURRENT_PROJECT_VERSION = 2023.4.22;
572+
CURRENT_PROJECT_VERSION = 2023.4.03;
554573
DEVELOPMENT_ASSET_PATHS = "\"iChatGPT/Preview Content\"";
555574
DEVELOPMENT_TEAM = "";
556575
ENABLE_PREVIEWS = YES;
@@ -588,8 +607,9 @@
588607
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
589608
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
590609
CODE_SIGN_IDENTITY = "Apple Development";
610+
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
591611
CODE_SIGN_STYLE = Manual;
592-
CURRENT_PROJECT_VERSION = 2023.4.22;
612+
CURRENT_PROJECT_VERSION = 2023.4.03;
593613
DEVELOPMENT_ASSET_PATHS = "\"iChatGPT/Preview Content\"";
594614
DEVELOPMENT_TEAM = "";
595615
ENABLE_PREVIEWS = YES;

iChatGPT/AIChatView.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ extension AIChatView {
146146

147147
func CreateNewChatRoom() -> Alert {
148148
Alert(
149-
title: Text("打开一个新的对话"),
150-
message: Text("当前的对话记录将会保存和关闭,并创建一个新的聊天对话。"),
151-
primaryButton: .default(Text("创建")) {
149+
title: Text("Open a new conversation".localized()),
150+
message: Text("The current chat log will be saved and closed, and a new chat session will be created.".localized()),
151+
primaryButton: .default(Text("Create".localized())) {
152152
chatModel.resetRoom(nil)
153153
},
154154
secondaryButton: .cancel()
@@ -157,9 +157,9 @@ extension AIChatView {
157157

158158
func ReloadLastQuestion() -> Alert {
159159
Alert(
160-
title: Text("重新提问"),
161-
message: Text("重新请求最后一个问题。"),
162-
primaryButton: .default(Text("确定")) {
160+
title: Text("Re-ask".localized()),
161+
message: Text("Re-request the last question.".localized()),
162+
primaryButton: .default(Text("OK".localized())) {
163163
if let issue = chatModel.contents.last?.issue {
164164
chatModel.getChatResponse(prompt: issue)
165165
}
@@ -170,9 +170,9 @@ extension AIChatView {
170170

171171
func ClearAllQuestion() -> Alert {
172172
Alert(
173-
title: Text("清空当前对话"),
174-
message: Text("清空当前对话和删除保存的对话记录。"),
175-
primaryButton: .destructive(Text("清空")) {
173+
title: Text("Clear current conversation".localized()),
174+
message: Text("Clears the current conversation and deletes the saved conversation history.".localized()),
175+
primaryButton: .destructive(Text("Clear".localized())) {
176176
chatModel.contents.removeAll()
177177
},
178178
secondaryButton: .cancel()

iChatGPT/ChatHistoryListView.swift

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ struct ChatHistoryListView: View {
2727
}
2828
.alert(isPresented: $showingDeleteAlert) {
2929
Alert(
30-
title: Text("Delete Chat"),
31-
message: Text("Are you sure you want to delete this chat?"),
32-
primaryButton: .destructive(Text("Delete")) {
30+
title: Text("Delete Chat".localized()),
31+
message: Text("Are you sure you want to delete this chat?".localized()),
32+
primaryButton: .destructive(Text("Delete".localized())) {
3333
if let item = itemToDelete {
3434
deleteChat(item: item)
3535
}
@@ -38,7 +38,7 @@ struct ChatHistoryListView: View {
3838
)
3939
}
4040
.listStyle(PlainListStyle())
41-
.navigationTitle("Chat History")
41+
.navigationTitle("Chat History".localized())
4242
.toolbar {
4343
Button(action: onCloseButtonTapped) {
4444
Image(systemName: "xmark.circle").imageScale(.large)
@@ -57,7 +57,7 @@ struct ChatHistoryListView: View {
5757
itemToDelete = item
5858
showingDeleteAlert = true
5959
} label: {
60-
Label("Delete", systemImage: "trash")
60+
Label("Delete".localized(), systemImage: "trash")
6161
}
6262
.tint(.red)
6363
}
@@ -81,34 +81,33 @@ struct ChatHistoryListView: View {
8181
.padding(.trailing, 10)
8282

8383
VStack(alignment: .leading) {
84-
Text(item.roomID.formatTimestamp())
85-
.font(.headline)
86-
.padding(.bottom, 5)
87-
88-
Text(ChatMessageStore.shared.lastMessage(item.roomID)?.issue ?? "无对话记录")
89-
.font(.subheadline)
90-
.foregroundColor(.gray)
91-
}
92-
93-
Spacer()
94-
95-
VStack(alignment: .trailing) {
96-
97-
Spacer().height(10)
98-
99-
Text(" \(ChatMessageStore.shared.messages(forRoom: item.roomID).count) ")
100-
.font(.footnote)
101-
.foregroundColor(.white)
102-
.padding(5)
103-
.background(Color.blue.opacity(0.8))
104-
.clipShape(Capsule())
105-
106-
Spacer()
84+
85+
HStack() {
86+
Text(item.roomID.formatTimestamp())
87+
.font(.headline)
88+
89+
Spacer()
90+
91+
Text(" \(ChatMessageStore.shared.messages(forRoom: item.roomID).count) ")
92+
.font(.footnote)
93+
.foregroundColor(.white)
94+
.padding(5)
95+
.background(Color.blue.opacity(0.8))
96+
.clipShape(Capsule())
97+
}
98+
.padding(.bottom, 5)
10799

108-
Text(ChatMessageStore.shared.lastMessage(item.roomID)?.datetime ?? "")
109-
.font(.caption)
110-
.foregroundColor(.gray)
111-
.padding(.bottom, 5)
100+
HStack() {
101+
Text(ChatMessageStore.shared.lastMessage(item.roomID)?.issue ?? "No conversations".localized())
102+
.font(.subheadline)
103+
.foregroundColor(.gray)
104+
105+
Spacer()
106+
107+
Text(ChatMessageStore.shared.lastMessage(item.roomID)?.datetime ?? "")
108+
.font(.caption)
109+
.foregroundColor(.gray)
110+
}
112111
}
113112
}
114113
.contentShape(Rectangle())

iChatGPT/ChatRoomConfigView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ struct ChatRoomConfigView: View {
1515
var body: some View {
1616
NavigationView {
1717
VStack {
18-
Text("Coming soon..").font(.title2)
18+
Text("Coming soon..".localized()).font(.title2)
1919
}
20-
.navigationTitle("Room Settings")
20+
.navigationTitle("Room Settings".localized())
2121
.toolbar {
2222
Button(action: onCloseButtonTapped) {
2323
Image(systemName: "xmark.circle").imageScale(.large)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
Localizable.strings
3+
iChatGPT
4+
5+
Created by HTC on 2023/3/19.
6+
Copyright © 2023 37 Mobile Games. All rights reserved.
7+
*/
8+
9+
"Loading.." = "Laden..";
10+
"Just ask.." = "Fragen Sie einfach..";
11+
"Re-question" = "Frage erneut stellen";
12+
"Copy Question" = "Frage kopieren";
13+
"Copy Answer" = "Antwort kopieren";
14+
"Copy Question and Answer" = "Frage und Antwort kopieren";
15+
"Copy Question to Inputbox" = "Frage in Eingabefeld kopieren";
16+
"Delete Question" = "Frage löschen";
17+
"Delete All" = "Alle löschen";
18+
"Settings" = "Einstellungen";
19+
"Please enter OpenAI Key" = "Bitte geben Sie den OpenAI-Schlüssel ein";
20+
"OpenAI Key cannot be empty" = "OpenAI-Schlüssel darf nicht leer sein";
21+
"Save Key" = "Schlüssel speichern";
22+
"Developer: 37 Mobile iOS Tech Team\nGitHub: https://github.com/37iOS/iChatGPT" = "Entwickler: 37 Mobile iOS Tech Team\nGitHub: https://github.com/37iOS/iChatGPT";
23+
"Open a new conversation" = "Ein neues Gespräch öffnen";
24+
"The current chat log will be saved and closed, and a new chat session will be created." = "Das aktuelle Chat-Protokoll wird gespeichert und geschlossen, und eine neue Chat-Sitzung wird erstellt.";
25+
"Create" = "Erstellen";
26+
"Re-ask" = "Erneut fragen";
27+
"Re-request the last question." = "Die letzte Frage erneut anfordern.";
28+
"OK" = "OK";
29+
"Clear current conversation" = "Aktuelles Gespräch löschen";
30+
"Clears the current conversation and deletes the saved conversation history." = "Löscht das aktuelle Gespräch und löscht den gespeicherten Gesprächsverlauf.";
31+
"Clear" = "Löschen";
32+
"No conversations" = "Keine Gespräche";
33+
"Delete Chat" = "Chat löschen";
34+
"Are you sure you want to delete this chat?" = "Möchten Sie diesen Chat wirklich löschen?";
35+
"Delete" = "Löschen";
36+
"Chat History" = "Chat-Verlauf";
37+
"Coming soon.." = "In Kürze verfügbar..";
38+
"Room Settings" = "Raumeinstellungen";

iChatGPT/en.lproj/Localizable.strings

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,19 @@
2020
"OpenAI Key cannot be empty" = "OpenAI Key cannot be empty";
2121
"Save Key" = "Save Key";
2222
"Developer: 37 Mobile iOS Tech Team\nGitHub: https://github.com/37iOS/iChatGPT" = "Developer: 37 Mobile iOS Tech Team\nGitHub: https://github.com/37iOS/iChatGPT";
23+
"Open a new conversation" = "Open a new conversation";
24+
"The current chat log will be saved and closed, and a new chat session will be created." = "The current chat log will be saved and closed, and a new chat session will be created.";
25+
"Create" = "Create";
26+
"Re-ask" = "Re-ask";
27+
"Re-request the last question." = "Re-request the last question.";
28+
"OK" = "OK";
29+
"Clear current conversation" = "Clear current conversation";
30+
"Clears the current conversation and deletes the saved conversation history." = "Clears the current conversation and deletes the saved conversation history.";
31+
"Clear" = "Clear";
32+
"No conversations" = "No conversations";
33+
"Delete Chat" = "Delete Chat";
34+
"Are you sure you want to delete this chat?" = "Are you sure you want to delete this chat?";
35+
"Delete" = "Delete";
36+
"Chat History" = "Chat History";
37+
"Coming soon.." = "Coming soon..";
38+
"Room Settings" = "Room Settings";
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
Localizable.strings
3+
iChatGPT
4+
5+
Created by HTC on 2023/3/19.
6+
Copyright © 2023 37 Mobile Games. All rights reserved.
7+
*/
8+
9+
"Loading.." = "Chargement..";
10+
"Just ask.." = "Demandez simplement..";
11+
"Re-question" = "Reposer la question";
12+
"Copy Question" = "Copier la question";
13+
"Copy Answer" = "Copier la réponse";
14+
"Copy Question and Answer" = "Copier la question et la réponse";
15+
"Copy Question to Inputbox" = "Copier la question dans la zone de saisie";
16+
"Delete Question" = "Supprimer la question";
17+
"Delete All" = "Tout supprimer";
18+
"Settings" = "Paramètres";
19+
"Please enter OpenAI Key" = "Veuillez entrer la clé OpenAI";
20+
"OpenAI Key cannot be empty" = "La clé OpenAI ne peut pas être vide";
21+
"Save Key" = "Enregistrer la clé";
22+
"Developer: 37 Mobile iOS Tech Team\nGitHub: https://github.com/37iOS/iChatGPT" = "Développeur : 37 Mobile iOS Tech Team\nGitHub : https://github.com/37iOS/iChatGPT";
23+
"Open a new conversation" = "Ouvrir une nouvelle conversation";
24+
"The current chat log will be saved and closed, and a new chat session will be created." = "Le journal de chat actuel sera enregistré et fermé, et une nouvelle session de chat sera créée.";
25+
"Create" = "Créer";
26+
"Re-ask" = "Redemander";
27+
"Re-request the last question." = "Re-demandez la dernière question.";
28+
"OK" = "OK";
29+
"Clear current conversation" = "Effacer la conversation en cours";
30+
"Clears the current conversation and deletes the saved conversation history." = "Efface la conversation en cours et supprime l'historique des conversations enregistrées.";
31+
"Clear" = "Effacer";
32+
"No conversations" = "Aucune conversation";
33+
"Delete Chat" = "Supprimer le chat";
34+
"Are you sure you want to delete this chat?" = "Êtes-vous sûr de vouloir supprimer ce chat ?";
35+
"Delete" = "Supprimer";
36+
"Chat History" = "Historique du chat";
37+
"Coming soon.." = "Bientôt disponible..";
38+
"Room Settings" = "Paramètres de la salle";

0 commit comments

Comments
 (0)