@lobehub/chat 1.97.16 → 1.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/apps/desktop/package.json +8 -5
  3. package/apps/desktop/src/main/const/store.ts +12 -0
  4. package/apps/desktop/src/main/controllers/NetworkProxyCtr.ts +172 -0
  5. package/apps/desktop/src/main/controllers/__tests__/NetworkProxyCtr.test.ts +401 -0
  6. package/apps/desktop/src/main/core/Browser.ts +2 -0
  7. package/apps/desktop/src/main/modules/networkProxy/dispatcher.ts +116 -0
  8. package/apps/desktop/src/main/modules/networkProxy/index.ts +6 -0
  9. package/apps/desktop/src/main/modules/networkProxy/tester.ts +163 -0
  10. package/apps/desktop/src/main/modules/networkProxy/urlBuilder.ts +25 -0
  11. package/apps/desktop/src/main/modules/networkProxy/validator.ts +80 -0
  12. package/apps/desktop/src/main/types/store.ts +2 -1
  13. package/apps/desktop/src/main/utils/logger.ts +2 -1
  14. package/changelog/v1.json +18 -0
  15. package/locales/ar/electron.json +39 -0
  16. package/locales/ar/setting.json +1 -0
  17. package/locales/bg-BG/electron.json +39 -0
  18. package/locales/bg-BG/setting.json +1 -0
  19. package/locales/de-DE/electron.json +39 -0
  20. package/locales/de-DE/setting.json +1 -0
  21. package/locales/en-US/electron.json +39 -0
  22. package/locales/en-US/setting.json +1 -0
  23. package/locales/es-ES/electron.json +39 -0
  24. package/locales/es-ES/setting.json +1 -0
  25. package/locales/fa-IR/electron.json +39 -0
  26. package/locales/fa-IR/setting.json +1 -0
  27. package/locales/fr-FR/electron.json +39 -0
  28. package/locales/fr-FR/setting.json +1 -0
  29. package/locales/it-IT/electron.json +39 -0
  30. package/locales/it-IT/setting.json +1 -0
  31. package/locales/ja-JP/electron.json +39 -0
  32. package/locales/ja-JP/setting.json +1 -0
  33. package/locales/ko-KR/electron.json +39 -0
  34. package/locales/ko-KR/setting.json +1 -0
  35. package/locales/nl-NL/electron.json +39 -0
  36. package/locales/nl-NL/setting.json +1 -0
  37. package/locales/pl-PL/electron.json +39 -0
  38. package/locales/pl-PL/setting.json +1 -0
  39. package/locales/pt-BR/electron.json +39 -0
  40. package/locales/pt-BR/setting.json +1 -0
  41. package/locales/ru-RU/electron.json +39 -0
  42. package/locales/ru-RU/setting.json +1 -0
  43. package/locales/tr-TR/electron.json +39 -0
  44. package/locales/tr-TR/setting.json +1 -0
  45. package/locales/vi-VN/electron.json +39 -0
  46. package/locales/vi-VN/setting.json +1 -0
  47. package/locales/zh-CN/electron.json +39 -0
  48. package/locales/zh-CN/setting.json +1 -0
  49. package/locales/zh-TW/electron.json +39 -0
  50. package/locales/zh-TW/setting.json +1 -0
  51. package/package.json +3 -3
  52. package/packages/electron-client-ipc/src/events/index.ts +3 -1
  53. package/packages/electron-client-ipc/src/events/settings.ts +12 -0
  54. package/packages/electron-client-ipc/src/types/index.ts +1 -0
  55. package/packages/electron-client-ipc/src/types/proxy.ts +12 -0
  56. package/src/app/[variants]/(main)/settings/hooks/useCategory.tsx +11 -1
  57. package/src/app/[variants]/(main)/settings/proxy/features/ProxyForm.tsx +369 -0
  58. package/src/app/[variants]/(main)/settings/proxy/index.tsx +22 -0
  59. package/src/app/[variants]/(main)/settings/proxy/page.tsx +28 -0
  60. package/src/config/aiModels/google.ts +15 -26
  61. package/src/config/aiModels/groq.ts +0 -16
  62. package/src/config/aiModels/hunyuan.ts +79 -1
  63. package/src/config/aiModels/novita.ts +50 -56
  64. package/src/config/aiModels/qwen.ts +10 -32
  65. package/src/config/aiModels/siliconcloud.ts +111 -86
  66. package/src/config/aiModels/zhipu.ts +74 -12
  67. package/src/config/modelProviders/zhipu.ts +1 -2
  68. package/src/libs/model-runtime/hunyuan/index.ts +9 -1
  69. package/src/locales/default/electron.ts +39 -0
  70. package/src/locales/default/setting.ts +1 -0
  71. package/src/services/electron/settings.ts +33 -0
  72. package/src/store/electron/actions/settings.ts +55 -0
  73. package/src/store/electron/initialState.ts +12 -1
  74. package/src/store/electron/selectors/__tests__/desktopState.test.ts +3 -1
  75. package/src/store/electron/store.ts +4 -1
  76. package/src/store/global/initialState.ts +1 -0
  77. package/apps/desktop/scripts/pglite-server.ts +0 -14
@@ -0,0 +1,25 @@
1
+ import { NetworkProxySettings } from '@lobechat/electron-client-ipc';
2
+
3
+ /**
4
+ * 代理 URL 构建器
5
+ */
6
+ export const ProxyUrlBuilder = {
7
+ /**
8
+ * 构建代理 URL
9
+ */
10
+ build(config: NetworkProxySettings): string {
11
+ const { proxyType, proxyServer, proxyPort, proxyRequireAuth, proxyUsername, proxyPassword } =
12
+ config;
13
+
14
+ let proxyUrl = `${proxyType}://${proxyServer}:${proxyPort}`;
15
+
16
+ // 添加认证信息
17
+ if (proxyRequireAuth && proxyUsername && proxyPassword) {
18
+ const encodedUsername = encodeURIComponent(proxyUsername);
19
+ const encodedPassword = encodeURIComponent(proxyPassword);
20
+ proxyUrl = `${proxyType}://${encodedUsername}:${encodedPassword}@${proxyServer}:${proxyPort}`;
21
+ }
22
+
23
+ return proxyUrl;
24
+ },
25
+ };
@@ -0,0 +1,80 @@
1
+ import { NetworkProxySettings } from '@lobechat/electron-client-ipc';
2
+
3
+ /**
4
+ * 代理配置验证结果
5
+ */
6
+ export interface ProxyValidationResult {
7
+ errors: string[];
8
+ isValid: boolean;
9
+ }
10
+
11
+ /**
12
+ * 代理配置验证器
13
+ */
14
+ export class ProxyConfigValidator {
15
+ private static readonly SUPPORTED_TYPES = ['http', 'https', 'socks5'] as const;
16
+ private static readonly DEFAULT_BYPASS = 'localhost,127.0.0.1,::1';
17
+
18
+ /**
19
+ * 验证代理配置
20
+ */
21
+ static validate(config: NetworkProxySettings): ProxyValidationResult {
22
+ const errors: string[] = [];
23
+
24
+ // 如果未启用代理,跳过验证
25
+ if (!config.enableProxy) {
26
+ return { errors: [], isValid: true };
27
+ }
28
+
29
+ // 验证代理类型
30
+ if (!this.SUPPORTED_TYPES.includes(config.proxyType as any)) {
31
+ errors.push(
32
+ `Unsupported proxy type: ${config.proxyType}. Supported types: ${this.SUPPORTED_TYPES.join(', ')}`,
33
+ );
34
+ }
35
+
36
+ // 验证代理服务器
37
+ if (!config.proxyServer?.trim()) {
38
+ errors.push('Proxy server is required when proxy is enabled');
39
+ } else if (!this.isValidHost(config.proxyServer)) {
40
+ errors.push('Invalid proxy server format');
41
+ }
42
+
43
+ // 验证代理端口
44
+ if (!config.proxyPort?.trim()) {
45
+ errors.push('Proxy port is required when proxy is enabled');
46
+ } else {
47
+ const port = parseInt(config.proxyPort, 10);
48
+ if (isNaN(port) || port < 1 || port > 65_535) {
49
+ errors.push('Proxy port must be a valid number between 1 and 65535');
50
+ }
51
+ }
52
+
53
+ // 验证认证信息
54
+ if (config.proxyRequireAuth) {
55
+ if (!config.proxyUsername?.trim()) {
56
+ errors.push('Proxy username is required when authentication is enabled');
57
+ }
58
+ if (!config.proxyPassword?.trim()) {
59
+ errors.push('Proxy password is required when authentication is enabled');
60
+ }
61
+ }
62
+
63
+ return {
64
+ errors,
65
+ isValid: errors.length === 0,
66
+ };
67
+ }
68
+
69
+ /**
70
+ * 验证主机名格式
71
+ */
72
+ private static isValidHost(host: string): boolean {
73
+ // 简单的主机名验证(IP 地址或域名)
74
+ const ipRegex = /^(\d{1,3}\.){3}\d{1,3}$/;
75
+ const domainRegex =
76
+ /^[\dA-Za-z]([\dA-Za-z-]*[\dA-Za-z])?(\.[\dA-Za-z]([\dA-Za-z-]*[\dA-Za-z])?)*$/;
77
+
78
+ return ipRegex.test(host) || domainRegex.test(host);
79
+ }
80
+ }
@@ -1,4 +1,4 @@
1
- import { DataSyncConfig } from '@lobechat/electron-client-ipc';
1
+ import { DataSyncConfig, NetworkProxySettings } from '@lobechat/electron-client-ipc';
2
2
 
3
3
  export interface ElectronMainStore {
4
4
  dataSyncConfig: DataSyncConfig;
@@ -7,6 +7,7 @@ export interface ElectronMainStore {
7
7
  refreshToken?: string;
8
8
  };
9
9
  locale: string;
10
+ networkProxy: NetworkProxySettings;
10
11
  shortcuts: Record<string, string>;
11
12
  storagePath: string;
12
13
  }
@@ -19,8 +19,9 @@ export const createLogger = (namespace: string) => {
19
19
  error: (message, ...args) => {
20
20
  if (process.env.NODE_ENV === 'production') {
21
21
  electronLog.error(message, ...args);
22
+ } else {
23
+ console.error(message, ...args);
22
24
  }
23
- debugLogger(`ERROR: ${message}`, ...args);
24
25
  },
25
26
  info: (message, ...args) => {
26
27
  if (process.env.NODE_ENV === 'production') {
package/changelog/v1.json CHANGED
@@ -1,4 +1,22 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "features": [
5
+ "Add network proxy for desktop."
6
+ ]
7
+ },
8
+ "date": "2025-07-13",
9
+ "version": "1.98.0"
10
+ },
11
+ {
12
+ "children": {
13
+ "improvements": [
14
+ "Support Hunyuan A13B thinking model."
15
+ ]
16
+ },
17
+ "date": "2025-07-13",
18
+ "version": "1.97.17"
19
+ },
2
20
  {
3
21
  "children": {
4
22
  "improvements": [
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "يتطلب المصادقة",
4
+ "authDesc": "إذا كان خادم الوكيل يتطلب اسم مستخدم وكلمة مرور",
5
+ "authSettings": "إعدادات المصادقة",
6
+ "basicSettings": "إعدادات الوكيل",
7
+ "basicSettingsDesc": "تكوين معلمات اتصال خادم الوكيل",
8
+ "bypass": "العناوين التي لا تستخدم الوكيل",
9
+ "connectionTest": "اختبار الاتصال",
10
+ "enable": "تفعيل الوكيل",
11
+ "enableDesc": "عند التفعيل، سيتم الوصول إلى الشبكة عبر خادم الوكيل",
12
+ "password": "كلمة المرور",
13
+ "password_placeholder": "الرجاء إدخال كلمة المرور",
14
+ "port": "المنفذ",
15
+ "resetButton": "إعادة تعيين",
16
+ "saveButton": "حفظ",
17
+ "saveFailed": "فشل الحفظ: {{error}}",
18
+ "saveSuccess": "تم حفظ إعدادات الوكيل بنجاح",
19
+ "server": "عنوان الخادم",
20
+ "testButton": "اختبار الاتصال",
21
+ "testDescription": "اختبر الاتصال باستخدام إعدادات الوكيل الحالية للتحقق من صحة التكوين",
22
+ "testFailed": "فشل الاتصال",
23
+ "testSuccessWithTime": "تم اختبار الاتصال بنجاح، استغرق {{time}} مللي ثانية",
24
+ "testUrl": "عنوان الاختبار",
25
+ "testUrlPlaceholder": "الرجاء إدخال عنوان URL للاختبار",
26
+ "testing": "جارٍ اختبار الاتصال...",
27
+ "type": "نوع الوكيل",
28
+ "unsavedChanges": "لديك تغييرات غير محفوظة",
29
+ "username": "اسم المستخدم",
30
+ "username_placeholder": "الرجاء إدخال اسم المستخدم",
31
+ "validation": {
32
+ "passwordRequired": "كلمة المرور مطلوبة عند تفعيل المصادقة",
33
+ "portInvalid": "يجب أن يكون المنفذ رقمًا بين 1 و 65535",
34
+ "portRequired": "المنفذ مطلوب عند تفعيل الوكيل",
35
+ "serverInvalid": "يرجى إدخال عنوان خادم صالح (IP أو اسم نطاق)",
36
+ "serverRequired": "عنوان الخادم مطلوب عند تفعيل الوكيل",
37
+ "typeRequired": "نوع الوكيل مطلوب عند تفعيل الوكيل",
38
+ "usernameRequired": "اسم المستخدم مطلوب عند تفعيل المصادقة"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "فشل التفويض: {{error}}",
4
43
  "authPending": "يرجى إكمال التفويض في المتصفح",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "اختصارات لوحة المفاتيح",
521
521
  "llm": "نموذج اللغة",
522
522
  "provider": "مزود خدمة الذكاء الاصطناعي",
523
+ "proxy": "وكيل الشبكة",
523
524
  "storage": "تخزين البيانات",
524
525
  "sync": "مزامنة السحابة",
525
526
  "system-agent": "مساعد النظام",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Необходимо удостоверяване",
4
+ "authDesc": "Ако прокси сървърът изисква потребителско име и парола",
5
+ "authSettings": "Настройки за удостоверяване",
6
+ "basicSettings": "Настройки на прокси",
7
+ "basicSettingsDesc": "Конфигуриране на параметрите за връзка с прокси сървъра",
8
+ "bypass": "Адреси без прокси",
9
+ "connectionTest": "Тест на връзката",
10
+ "enable": "Активиране на прокси",
11
+ "enableDesc": "При активиране достъпът до мрежата ще се осъществява чрез прокси сървъра",
12
+ "password": "Парола",
13
+ "password_placeholder": "Моля, въведете парола",
14
+ "port": "Порт",
15
+ "resetButton": "Нулиране",
16
+ "saveButton": "Запазване",
17
+ "saveFailed": "Грешка при запазване: {{error}}",
18
+ "saveSuccess": "Настройките на прокси сървъра бяха успешно запазени",
19
+ "server": "Адрес на сървъра",
20
+ "testButton": "Тествай връзката",
21
+ "testDescription": "Тествайте връзката с текущата прокси конфигурация, за да проверите дали работи правилно",
22
+ "testFailed": "Връзката неуспешна",
23
+ "testSuccessWithTime": "Връзката е успешна, време за изпълнение {{time}} ms",
24
+ "testUrl": "Тестов адрес",
25
+ "testUrlPlaceholder": "Моля, въведете URL за тест",
26
+ "testing": "Тест на връзката...",
27
+ "type": "Тип прокси",
28
+ "unsavedChanges": "Имате незапазени промени",
29
+ "username": "Потребителско име",
30
+ "username_placeholder": "Моля, въведете потребителско име",
31
+ "validation": {
32
+ "passwordRequired": "Паролата е задължителна при активиране на удостоверяване",
33
+ "portInvalid": "Портът трябва да е число между 1 и 65535",
34
+ "portRequired": "Портът е задължителен при активиране на прокси",
35
+ "serverInvalid": "Моля, въведете валиден адрес на сървъра (IP или домейн)",
36
+ "serverRequired": "Адресът на сървъра е задължителен при активиране на прокси",
37
+ "typeRequired": "Типът прокси е задължителен при активиране на прокси",
38
+ "usernameRequired": "Потребителското име е задължително при активиране на удостоверяване"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Упълномощаването не бе успешно: {{error}}",
4
43
  "authPending": "Моля, завършете упълномощаването в браузъра",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Бързи клавиши",
521
521
  "llm": "Езиков модел",
522
522
  "provider": "AI доставчик",
523
+ "proxy": "Мрежов прокси",
523
524
  "storage": "Данни за хранилище",
524
525
  "sync": "Синхронизиране в облака",
525
526
  "system-agent": "Системен асистент",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Authentifizierung erforderlich",
4
+ "authDesc": "Wenn der Proxy-Server Benutzername und Passwort benötigt",
5
+ "authSettings": "Authentifizierungseinstellungen",
6
+ "basicSettings": "Proxy-Einstellungen",
7
+ "basicSettingsDesc": "Konfigurieren Sie die Verbindungsparameter des Proxy-Servers",
8
+ "bypass": "Adressen ohne Proxy",
9
+ "connectionTest": "Verbindungstest",
10
+ "enable": "Proxy aktivieren",
11
+ "enableDesc": "Wenn aktiviert, wird der Netzwerkzugang über den Proxy-Server geleitet",
12
+ "password": "Passwort",
13
+ "password_placeholder": "Bitte Passwort eingeben",
14
+ "port": "Port",
15
+ "resetButton": "Zurücksetzen",
16
+ "saveButton": "Speichern",
17
+ "saveFailed": "Speichern fehlgeschlagen: {{error}}",
18
+ "saveSuccess": "Proxy-Einstellungen erfolgreich gespeichert",
19
+ "server": "Serveradresse",
20
+ "testButton": "Verbindung testen",
21
+ "testDescription": "Testen Sie die Verbindung mit der aktuellen Proxy-Konfiguration, um die Funktionalität zu überprüfen",
22
+ "testFailed": "Verbindung fehlgeschlagen",
23
+ "testSuccessWithTime": "Verbindung erfolgreich getestet, Dauer {{time}} ms",
24
+ "testUrl": "Test-URL",
25
+ "testUrlPlaceholder": "Bitte die zu testende URL eingeben",
26
+ "testing": "Verbindung wird getestet...",
27
+ "type": "Proxy-Typ",
28
+ "unsavedChanges": "Sie haben ungespeicherte Änderungen",
29
+ "username": "Benutzername",
30
+ "username_placeholder": "Bitte Benutzernamen eingeben",
31
+ "validation": {
32
+ "passwordRequired": "Passwort ist erforderlich, wenn die Authentifizierung aktiviert ist",
33
+ "portInvalid": "Der Port muss eine Zahl zwischen 1 und 65535 sein",
34
+ "portRequired": "Port ist erforderlich, wenn der Proxy aktiviert ist",
35
+ "serverInvalid": "Bitte geben Sie eine gültige Serveradresse (IP oder Domain) ein",
36
+ "serverRequired": "Serveradresse ist erforderlich, wenn der Proxy aktiviert ist",
37
+ "typeRequired": "Proxy-Typ ist erforderlich, wenn der Proxy aktiviert ist",
38
+ "usernameRequired": "Benutzername ist erforderlich, wenn die Authentifizierung aktiviert ist"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Autorisierung fehlgeschlagen: {{error}}",
4
43
  "authPending": "Bitte schließen Sie die Autorisierung im Browser ab",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Tastenkombinationen",
521
521
  "llm": "Sprachmodell",
522
522
  "provider": "KI-Dienstanbieter",
523
+ "proxy": "Netzwerkproxy",
523
524
  "storage": "Datenspeicher",
524
525
  "sync": "Cloud-Synchronisierung",
525
526
  "system-agent": "Systemassistent",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Authentication Required",
4
+ "authDesc": "If the proxy server requires a username and password",
5
+ "authSettings": "Authentication Settings",
6
+ "basicSettings": "Proxy Settings",
7
+ "basicSettingsDesc": "Configure the connection parameters for the proxy server",
8
+ "bypass": "Addresses not using the proxy",
9
+ "connectionTest": "Connection Test",
10
+ "enable": "Enable Proxy",
11
+ "enableDesc": "When enabled, network access will be routed through the proxy server",
12
+ "password": "Password",
13
+ "password_placeholder": "Please enter your password",
14
+ "port": "Port",
15
+ "resetButton": "Reset",
16
+ "saveButton": "Save",
17
+ "saveFailed": "Save failed: {{error}}",
18
+ "saveSuccess": "Proxy settings saved successfully",
19
+ "server": "Server Address",
20
+ "testButton": "Test Connection",
21
+ "testDescription": "Test the connection using the current proxy configuration to verify if it works properly",
22
+ "testFailed": "Connection failed",
23
+ "testSuccessWithTime": "Connection test succeeded, took {{time}} ms",
24
+ "testUrl": "Test URL",
25
+ "testUrlPlaceholder": "Please enter the URL to test",
26
+ "testing": "Testing Connection...",
27
+ "type": "Proxy Type",
28
+ "unsavedChanges": "You have unsaved changes",
29
+ "username": "Username",
30
+ "username_placeholder": "Please enter your username",
31
+ "validation": {
32
+ "passwordRequired": "Password is required when authentication is enabled",
33
+ "portInvalid": "Port must be a number between 1 and 65535",
34
+ "portRequired": "Port is required when proxy is enabled",
35
+ "serverInvalid": "Please enter a valid server address (IP or domain name)",
36
+ "serverRequired": "Server address is required when proxy is enabled",
37
+ "typeRequired": "Proxy type is required when proxy is enabled",
38
+ "usernameRequired": "Username is required when authentication is enabled"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Authorization failed: {{error}}",
4
43
  "authPending": "Please complete the authorization in your browser",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Hotkeys",
521
521
  "llm": "Language Model",
522
522
  "provider": "AI Service Provider",
523
+ "proxy": "Network Proxy",
523
524
  "storage": "Data Storage",
524
525
  "sync": "Cloud Sync",
525
526
  "system-agent": "System Assistant",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Se requiere autenticación",
4
+ "authDesc": "Si el servidor proxy requiere nombre de usuario y contraseña",
5
+ "authSettings": "Configuración de autenticación",
6
+ "basicSettings": "Configuración del proxy",
7
+ "basicSettingsDesc": "Configura los parámetros de conexión del servidor proxy",
8
+ "bypass": "Direcciones sin proxy",
9
+ "connectionTest": "Prueba de conexión",
10
+ "enable": "Habilitar proxy",
11
+ "enableDesc": "Al activarlo, el acceso a la red se realizará a través del servidor proxy",
12
+ "password": "Contraseña",
13
+ "password_placeholder": "Por favor, introduce la contraseña",
14
+ "port": "Puerto",
15
+ "resetButton": "Restablecer",
16
+ "saveButton": "Guardar",
17
+ "saveFailed": "Error al guardar: {{error}}",
18
+ "saveSuccess": "Configuración del proxy guardada correctamente",
19
+ "server": "Dirección del servidor",
20
+ "testButton": "Probar conexión",
21
+ "testDescription": "Prueba la conexión usando la configuración actual del proxy para verificar que funcione correctamente",
22
+ "testFailed": "Conexión fallida",
23
+ "testSuccessWithTime": "Conexión exitosa, tiempo empleado {{time}} ms",
24
+ "testUrl": "URL de prueba",
25
+ "testUrlPlaceholder": "Por favor, introduce la URL a probar",
26
+ "testing": "Probando conexión...",
27
+ "type": "Tipo de proxy",
28
+ "unsavedChanges": "Tiene cambios sin guardar",
29
+ "username": "Nombre de usuario",
30
+ "username_placeholder": "Por favor, introduce el nombre de usuario",
31
+ "validation": {
32
+ "passwordRequired": "La contraseña es obligatoria cuando la autenticación está habilitada",
33
+ "portInvalid": "El puerto debe ser un número entre 1 y 65535",
34
+ "portRequired": "El puerto es obligatorio cuando el proxy está habilitado",
35
+ "serverInvalid": "Por favor, introduzca una dirección de servidor válida (IP o nombre de dominio)",
36
+ "serverRequired": "La dirección del servidor es obligatoria cuando el proxy está habilitado",
37
+ "typeRequired": "El tipo de proxy es obligatorio cuando el proxy está habilitado",
38
+ "usernameRequired": "El nombre de usuario es obligatorio cuando la autenticación está habilitada"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Error de autorización: {{error}}",
4
43
  "authPending": "Complete la autorización en el navegador",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Atajos de teclado",
521
521
  "llm": "Modelo de lenguaje",
522
522
  "provider": "Proveedor de servicios de IA",
523
+ "proxy": "Proxy de red",
523
524
  "storage": "Almacenamiento de datos",
524
525
  "sync": "Sincronización en la nube",
525
526
  "system-agent": "Asistente del sistema",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "نیاز به تأیید هویت",
4
+ "authDesc": "اگر سرور پروکسی به نام کاربری و رمز عبور نیاز دارد",
5
+ "authSettings": "تنظیمات احراز هویت",
6
+ "basicSettings": "تنظیمات پروکسی",
7
+ "basicSettingsDesc": "پیکربندی پارامترهای اتصال به سرور پروکسی",
8
+ "bypass": "آدرس‌هایی که از پروکسی استفاده نمی‌کنند",
9
+ "connectionTest": "آزمایش اتصال",
10
+ "enable": "فعال‌سازی پروکسی",
11
+ "enableDesc": "با فعال‌سازی، دسترسی به شبکه از طریق سرور پروکسی انجام می‌شود",
12
+ "password": "رمز عبور",
13
+ "password_placeholder": "لطفاً رمز عبور را وارد کنید",
14
+ "port": "پورت",
15
+ "resetButton": "بازنشانی",
16
+ "saveButton": "ذخیره",
17
+ "saveFailed": "ذخیره‌سازی ناموفق: {{error}}",
18
+ "saveSuccess": "تنظیمات پروکسی با موفقیت ذخیره شد",
19
+ "server": "آدرس سرور",
20
+ "testButton": "آزمایش اتصال",
21
+ "testDescription": "اتصال را با استفاده از پیکربندی پروکسی فعلی آزمایش کنید تا صحت تنظیمات بررسی شود",
22
+ "testFailed": "اتصال ناموفق بود",
23
+ "testSuccessWithTime": "اتصال با موفقیت آزمایش شد، زمان صرف شده {{time}} میلی‌ثانیه",
24
+ "testUrl": "آدرس آزمایش",
25
+ "testUrlPlaceholder": "لطفاً آدرس URL مورد نظر برای آزمایش را وارد کنید",
26
+ "testing": "در حال آزمایش اتصال...",
27
+ "type": "نوع پروکسی",
28
+ "unsavedChanges": "شما تغییرات ذخیره نشده‌ای دارید",
29
+ "username": "نام کاربری",
30
+ "username_placeholder": "لطفاً نام کاربری را وارد کنید",
31
+ "validation": {
32
+ "passwordRequired": "رمز عبور هنگام فعال‌سازی احراز هویت الزامی است",
33
+ "portInvalid": "پورت باید عددی بین ۱ تا ۶۵۵۳۵ باشد",
34
+ "portRequired": "پورت هنگام فعال‌سازی پروکسی الزامی است",
35
+ "serverInvalid": "لطفاً یک آدرس سرور معتبر (IP یا دامنه) وارد کنید",
36
+ "serverRequired": "آدرس سرور هنگام فعال‌سازی پروکسی الزامی است",
37
+ "typeRequired": "نوع پروکسی هنگام فعال‌سازی الزامی است",
38
+ "usernameRequired": "نام کاربری هنگام فعال‌سازی احراز هویت الزامی است"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "خطای مجوز: {{error}}",
4
43
  "authPending": "لطفاً مجوز را در مرورگر کامل کنید",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "کلیدهای میانبر",
521
521
  "llm": "مدل زبان",
522
522
  "provider": "ارائه دهنده خدمات هوش مصنوعی",
523
+ "proxy": "پروکسی شبکه",
523
524
  "storage": "ذخیره‌سازی داده‌ها",
524
525
  "sync": "همگام‌سازی ابری",
525
526
  "system-agent": "دستیار سیستم",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Authentification requise",
4
+ "authDesc": "Si le serveur proxy nécessite un nom d'utilisateur et un mot de passe",
5
+ "authSettings": "Paramètres d'authentification",
6
+ "basicSettings": "Paramètres du proxy",
7
+ "basicSettingsDesc": "Configurer les paramètres de connexion du serveur proxy",
8
+ "bypass": "Adresses sans proxy",
9
+ "connectionTest": "Test de connexion",
10
+ "enable": "Activer le proxy",
11
+ "enableDesc": "Une fois activé, l'accès au réseau se fera via le serveur proxy",
12
+ "password": "Mot de passe",
13
+ "password_placeholder": "Veuillez entrer le mot de passe",
14
+ "port": "Port",
15
+ "resetButton": "Réinitialiser",
16
+ "saveButton": "Enregistrer",
17
+ "saveFailed": "Échec de l'enregistrement : {{error}}",
18
+ "saveSuccess": "Paramètres du proxy enregistrés avec succès",
19
+ "server": "Adresse du serveur",
20
+ "testButton": "Tester la connexion",
21
+ "testDescription": "Tester la connexion avec la configuration proxy actuelle pour vérifier son bon fonctionnement",
22
+ "testFailed": "Échec de la connexion",
23
+ "testSuccessWithTime": "Connexion réussie, temps écoulé {{time}} ms",
24
+ "testUrl": "Adresse de test",
25
+ "testUrlPlaceholder": "Veuillez entrer l'URL à tester",
26
+ "testing": "Test de la connexion en cours...",
27
+ "type": "Type de proxy",
28
+ "unsavedChanges": "Vous avez des modifications non enregistrées",
29
+ "username": "Nom d'utilisateur",
30
+ "username_placeholder": "Veuillez entrer le nom d'utilisateur",
31
+ "validation": {
32
+ "passwordRequired": "Le mot de passe est obligatoire lorsque l'authentification est activée",
33
+ "portInvalid": "Le port doit être un nombre entre 1 et 65535",
34
+ "portRequired": "Le port est obligatoire lorsque le proxy est activé",
35
+ "serverInvalid": "Veuillez saisir une adresse de serveur valide (IP ou nom de domaine)",
36
+ "serverRequired": "L'adresse du serveur est obligatoire lorsque le proxy est activé",
37
+ "typeRequired": "Le type de proxy est obligatoire lorsque le proxy est activé",
38
+ "usernameRequired": "Le nom d'utilisateur est obligatoire lorsque l'authentification est activée"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Échec de l'autorisation : {{error}}",
4
43
  "authPending": "Veuillez terminer l'autorisation dans le navigateur",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Raccourcis clavier",
521
521
  "llm": "Modèle de langue",
522
522
  "provider": "Fournisseur de services d'IA",
523
+ "proxy": "Proxy réseau",
523
524
  "storage": "Stockage des données",
524
525
  "sync": "Synchronisation cloud",
525
526
  "system-agent": "Agent système",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "Autenticazione necessaria",
4
+ "authDesc": "Se il server proxy richiede nome utente e password",
5
+ "authSettings": "Impostazioni di autenticazione",
6
+ "basicSettings": "Impostazioni proxy",
7
+ "basicSettingsDesc": "Configura i parametri di connessione del server proxy",
8
+ "bypass": "Indirizzi da escludere dal proxy",
9
+ "connectionTest": "Test di connessione",
10
+ "enable": "Abilita proxy",
11
+ "enableDesc": "Se abilitato, l'accesso a Internet avverrà tramite il server proxy",
12
+ "password": "Password",
13
+ "password_placeholder": "Inserisci la password",
14
+ "port": "Porta",
15
+ "resetButton": "Reimposta",
16
+ "saveButton": "Salva",
17
+ "saveFailed": "Salvataggio fallito: {{error}}",
18
+ "saveSuccess": "Impostazioni proxy salvate con successo",
19
+ "server": "Indirizzo del server",
20
+ "testButton": "Testa connessione",
21
+ "testDescription": "Testa la connessione utilizzando la configurazione proxy corrente per verificare che funzioni correttamente",
22
+ "testFailed": "Connessione fallita",
23
+ "testSuccessWithTime": "Connessione testata con successo, tempo impiegato {{time}} ms",
24
+ "testUrl": "Indirizzo di test",
25
+ "testUrlPlaceholder": "Inserisci l'URL da testare",
26
+ "testing": "Testando la connessione...",
27
+ "type": "Tipo di proxy",
28
+ "unsavedChanges": "Hai modifiche non salvate",
29
+ "username": "Nome utente",
30
+ "username_placeholder": "Inserisci il nome utente",
31
+ "validation": {
32
+ "passwordRequired": "La password è obbligatoria quando l'autenticazione è abilitata",
33
+ "portInvalid": "La porta deve essere un numero compreso tra 1 e 65535",
34
+ "portRequired": "La porta è obbligatoria quando il proxy è abilitato",
35
+ "serverInvalid": "Inserisci un indirizzo server valido (IP o nome di dominio)",
36
+ "serverRequired": "L'indirizzo del server è obbligatorio quando il proxy è abilitato",
37
+ "typeRequired": "Il tipo di proxy è obbligatorio quando il proxy è abilitato",
38
+ "usernameRequired": "Il nome utente è obbligatorio quando l'autenticazione è abilitata"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "Autenticazione fallita: {{error}}",
4
43
  "authPending": "Completa l'autenticazione nel browser",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "Scorciatoie",
521
521
  "llm": "Modello linguistico",
522
522
  "provider": "Fornitore di servizi AI",
523
+ "proxy": "Proxy di rete",
523
524
  "storage": "Storage dati",
524
525
  "sync": "云端同步",
525
526
  "system-agent": "Assistente di sistema",
@@ -1,4 +1,43 @@
1
1
  {
2
+ "proxy": {
3
+ "auth": "認証が必要",
4
+ "authDesc": "プロキシサーバーがユーザー名とパスワードを必要とする場合",
5
+ "authSettings": "認証設定",
6
+ "basicSettings": "プロキシ設定",
7
+ "basicSettingsDesc": "プロキシサーバーの接続パラメータを設定します",
8
+ "bypass": "プロキシを使用しないアドレス",
9
+ "connectionTest": "接続テスト",
10
+ "enable": "プロキシを有効にする",
11
+ "enableDesc": "有効にすると、プロキシサーバーを通じてネットワークにアクセスします",
12
+ "password": "パスワード",
13
+ "password_placeholder": "パスワードを入力してください",
14
+ "port": "ポート",
15
+ "resetButton": "リセット",
16
+ "saveButton": "保存",
17
+ "saveFailed": "保存に失敗しました:{{error}}",
18
+ "saveSuccess": "プロキシ設定が正常に保存されました",
19
+ "server": "サーバーアドレス",
20
+ "testButton": "接続テスト",
21
+ "testDescription": "現在のプロキシ設定を使用して接続をテストし、設定が正常に機能しているか確認します",
22
+ "testFailed": "接続に失敗しました",
23
+ "testSuccessWithTime": "接続テストに成功しました。所要時間 {{time}} ms",
24
+ "testUrl": "テストURL",
25
+ "testUrlPlaceholder": "テストするURLを入力してください",
26
+ "testing": "接続をテスト中...",
27
+ "type": "プロキシタイプ",
28
+ "unsavedChanges": "保存されていない変更があります",
29
+ "username": "ユーザー名",
30
+ "username_placeholder": "ユーザー名を入力してください",
31
+ "validation": {
32
+ "passwordRequired": "認証を有効にする場合、パスワードは必須です",
33
+ "portInvalid": "ポートは1から65535の間の数字でなければなりません",
34
+ "portRequired": "プロキシを有効にする場合、ポートは必須です",
35
+ "serverInvalid": "有効なサーバーアドレス(IPまたはドメイン名)を入力してください",
36
+ "serverRequired": "プロキシを有効にする場合、サーバーアドレスは必須です",
37
+ "typeRequired": "プロキシを有効にする場合、プロキシタイプは必須です",
38
+ "usernameRequired": "認証を有効にする場合、ユーザー名は必須です"
39
+ }
40
+ },
2
41
  "remoteServer": {
3
42
  "authError": "認証エラー: {{error}}",
4
43
  "authPending": "ブラウザで認証を完了してください",
@@ -520,6 +520,7 @@
520
520
  "hotkey": "ショートカットキー",
521
521
  "llm": "言語モデル",
522
522
  "provider": "AIサービスプロバイダー",
523
+ "proxy": "ネットワークプロキシ",
523
524
  "storage": "データストレージ",
524
525
  "sync": "クラウド同期",
525
526
  "system-agent": "システムアシスタント",