@@ -15,15 +15,13 @@ export const GeneralSettings: React.FC<GeneralSettingsProps> = ({
15
15
startWithSystem,
16
16
startupToTray,
17
17
closeToTray,
18
- proxyMode,
19
- sendErrorReports,
20
18
onSettingChange,
21
19
onSaveSettings
22
20
} ) => {
23
- const { t } = useTranslation ( ) ;
24
- const [ customProxyUrl , setCustomProxyUrl ] = useState < string > ( '' ) ;
21
+ const { t, i18n } = useTranslation ( ) ;
25
22
// eslint-disable-next-line @typescript-eslint/no-unused-vars
26
23
const [ isWindows , setIsWindows ] = useState ( false ) ;
24
+ const [ currentLanguage , setCurrentLanguage ] = useState ( i18n . language ) ;
27
25
28
26
// Check if running on Windows platform
29
27
useEffect ( ( ) => {
@@ -37,16 +35,35 @@ export const GeneralSettings: React.FC<GeneralSettingsProps> = ({
37
35
checkPlatform ( ) ;
38
36
} , [ ] ) ;
39
37
40
- const handleProxyModeChange = ( mode : 'system' | 'custom' | 'none' ) => {
41
- onSettingChange ( 'proxyMode' , mode ) ;
42
- onSaveSettings ( ) ;
43
- } ;
38
+ // Update currentLanguage when i18n.language changes
39
+ useEffect ( ( ) => {
40
+ setCurrentLanguage ( i18n . language ) ;
41
+ } , [ i18n . language ] ) ;
42
+
43
+ // const handleProxyModeChange = (mode: 'system' | 'custom' | 'none') => {
44
+ // onSettingChange('proxyMode', mode);
45
+ // onSaveSettings();
46
+ // };
44
47
45
48
const handleToggleChange = ( key : string ) => ( e : React . ChangeEvent < HTMLInputElement > ) => {
46
49
onSettingChange ( key , e . target . checked ) ;
47
50
onSaveSettings ( ) ;
48
51
} ;
49
52
53
+ const handleLanguageChange = ( langCode : string ) => {
54
+ i18n . changeLanguage ( langCode ) ;
55
+ setCurrentLanguage ( langCode ) ;
56
+ } ;
57
+
58
+ const languages = [
59
+ { code : 'en' , name : 'English' } ,
60
+ { code : 'zh_CN' , name : '简体中文' } ,
61
+ { code : 'zh_TW' , name : '繁體中文' } ,
62
+ { code : 'ja' , name : '日本語' } ,
63
+ { code : 'ko' , name : '한국어' } ,
64
+ { code : 'es' , name : 'Español' }
65
+ ] ;
66
+
50
67
return (
51
68
< div className = "flex flex-col h-full p-4" >
52
69
< div className = "flex-1" >
@@ -105,93 +122,31 @@ export const GeneralSettings: React.FC<GeneralSettingsProps> = ({
105
122
</ div >
106
123
</ div >
107
124
108
- { /* Network Settings */ }
125
+ { /* Language Settings */ }
109
126
< div className = "p-4 mb-4 settings-section" >
110
- < h3 className = "mb-4 text-lg font-medium settings-section-title" > { t ( 'settings.networkProxy ' ) } </ h3 >
127
+ < h3 className = "mb-4 text-lg font-medium settings-section-title" > { t ( 'settings.language ' ) } </ h3 >
111
128
112
- < div className = "p-3 space-y-4 settings-radio-group" >
113
- < div className = "flex items-center" >
114
- < input
115
- type = "radio"
116
- id = "proxy-system"
117
- name = "proxy-mode"
118
- checked = { proxyMode === 'system' }
119
- onChange = { ( ) => handleProxyModeChange ( 'system' ) }
120
- className = "w-4 h-4 text-blue-600 form-radio"
121
- />
122
- < label htmlFor = "proxy-system" className = { `ml-2 text-sm font-medium ${ proxyMode === 'system' ? 'settings-radio-item-active' : 'settings-radio-item' } ` } >
123
- { t ( 'settings.systemProxy' ) }
124
- </ label >
125
- </ div >
126
-
127
- < div className = "flex items-center" >
128
- < input
129
- type = "radio"
130
- id = "proxy-custom"
131
- name = "proxy-mode"
132
- checked = { proxyMode === 'custom' }
133
- onChange = { ( ) => handleProxyModeChange ( 'custom' ) }
134
- className = "w-4 h-4 text-blue-600 form-radio"
135
- />
136
- < label htmlFor = "proxy-custom" className = { `ml-2 text-sm font-medium ${ proxyMode === 'custom' ? 'settings-radio-item-active' : 'settings-radio-item' } ` } >
137
- { t ( 'settings.customProxy' ) }
138
- </ label >
139
- </ div >
140
-
141
- { proxyMode === 'custom' && (
142
- < div className = "pl-6 mt-2" >
129
+ < div className = "space-y-4" >
130
+ { languages . map ( ( lang ) => (
131
+ < div key = { lang . code } className = "flex items-center" >
143
132
< input
144
- type = "text"
145
- value = { customProxyUrl }
146
- onChange = { ( e ) => setCustomProxyUrl ( e . target . value ) }
147
- onBlur = { ( ) => {
148
- onSettingChange ( 'customProxyUrl' , customProxyUrl ) ;
149
- onSaveSettings ( ) ;
150
- } }
151
- placeholder = "http://proxy.example.com:8080"
152
- className = "w-full p-2 input-box"
133
+ type = "radio"
134
+ id = { `lang-${ lang . code } ` }
135
+ name = "language"
136
+ value = { lang . code }
137
+ checked = { currentLanguage === lang . code }
138
+ onChange = { ( ) => handleLanguageChange ( lang . code ) }
139
+ className = "w-4 h-4 text-blue-600 form-radio"
153
140
/>
141
+ < label htmlFor = { `lang-${ lang . code } ` } className = "ml-2 text-sm font-medium settings-toggle-label" >
142
+ { lang . name }
143
+ </ label >
154
144
</ div >
155
- ) }
156
-
157
- < div className = "flex items-center" >
158
- < input
159
- type = "radio"
160
- id = "proxy-none"
161
- name = "proxy-mode"
162
- checked = { proxyMode === 'none' }
163
- onChange = { ( ) => handleProxyModeChange ( 'none' ) }
164
- className = "w-4 h-4 text-blue-600 form-radio"
165
- />
166
- < label htmlFor = "proxy-none" className = { `ml-2 text-sm font-medium ${ proxyMode === 'none' ? 'settings-radio-item-active' : 'settings-radio-item' } ` } >
167
- { t ( 'settings.noProxy' ) }
168
- </ label >
169
- </ div >
145
+ ) ) }
170
146
</ div >
171
147
</ div >
172
148
173
- { /* Privacy Settings */ }
174
- < div className = "p-4 mb-4 settings-section" >
175
- < h3 className = "mb-4 text-lg font-medium settings-section-title" > { t ( 'settings.privacy' ) } </ h3 >
176
-
177
- < div className = "space-y-4" >
178
- < div className = "flex items-center" >
179
- < input
180
- type = "checkbox"
181
- id = "send-error-reports"
182
- checked = { sendErrorReports }
183
- onChange = { handleToggleChange ( 'sendErrorReports' ) }
184
- className = "w-4 h-4 checkbox-input"
185
- />
186
- < label htmlFor = "send-error-reports" className = "ml-2 text-sm font-medium settings-toggle-label" >
187
- { t ( 'settings.sendErrorReports' ) }
188
- </ label >
189
- </ div >
190
- < p className = "text-xs settings-toggle-description" >
191
- { t ( 'settings.sendErrorReports_description' ) }
192
- </ p >
193
- </ div >
194
- </ div >
149
+ { /* Network Proxy and Privacy sections are hidden as requested */ }
195
150
</ div >
196
151
</ div >
197
152
) ;
0 commit comments