feat: add password confirmation to register + fix i18n hardcoded strings

- Add confirmPassword field to registration form with Zod validation
- Replace ~30 hardcoded French/English strings in admin-settings-form
  with proper t() i18n calls (Ollama models, Custom models, search test)
- Extract SettingsHeader to client component for i18n support
- Add 15 i18n keys to all 15 locale files (auth + admin.ai + admin.tools)
- Remove debug "Config value" line from embeddings section

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 19:59:38 +02:00
parent bbaae76103
commit e358171c45
20 changed files with 385 additions and 114 deletions

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(تم الحفظ)",
"chatProvider": "مزود الدردشة",
"chatDescription": "مزود الذكاء الاصطناعي لمساعد الدردشة. يستخدم مزود الوسوم إذا لم يتم تكوينه."
"chatDescription": "مزود الذكاء الاصطناعي لمساعد الدردشة. يستخدم مزود الوسوم إذا لم يتم تكوينه.",
"fetchModelsFailed": "فشل في جلب النماذج",
"refreshModels": "تحديث النماذج",
"configured": "مكوّن",
"fetchingModels": "جارٍ جلب النماذج...",
"clickToLoadModels": "انقر على ↺ لتحميل النماذج",
"searchModel": "البحث عن نموذج...",
"noModels": "لا توجد نماذج. انقر على ↺",
"modelsAvailable": "{count} نموذج متاح",
"enterUrlToLoad": "أدخل الرابط وانقر على ↺ لتحميل النماذج",
"currentProvider": "(الحالي: {provider})"
},
"aiTest": {
"description": "اختبر مزودي الذكاء الاصطناعي لتوليد الوسوم وتضمينات البحث الدلالي",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "يُستخدم لاستخراج الويب. يعمل بدون مفتاح ولكن مع حدود معدل.",
"saveSettings": "حفظ إعدادات الأدوات",
"updateSuccess": "تم تحديث إعدادات الأدوات بنجاح",
"updateFailed": "فشل تحديث إعدادات الأدوات"
}
"updateFailed": "فشل تحديث إعدادات الأدوات",
"testing": "جارٍ الاختبار...",
"testSearch": "اختبار البحث على الويب"
},
"settingsDescription": "تكوين الإعدادات العامة للتطبيق"
},
"ai": {
"analyzing": "الذكاء الاصطناعي يحلل...",
@@ -368,7 +381,9 @@
"signIn": "تسجيل الدخول",
"signInToAccount": "سجل الدخول إلى حسابك",
"signOut": "Sign out",
"signUp": "إنشاء حساب"
"signUp": "إنشاء حساب",
"confirmPassword": "تأكيد كلمة المرور",
"confirmPasswordPlaceholder": "أعد إدخال كلمة المرور"
},
"autoLabels": {
"analyzing": "جاري تحليل الملاحظات...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Gespeichert)",
"chatProvider": "Chat-Anbieter",
"chatDescription": "KI-Anbieter für den Chat-Assistenten. Fällt auf den Tags-Anbieter zurück, wenn nicht konfiguriert."
"chatDescription": "KI-Anbieter für den Chat-Assistenten. Fällt auf den Tags-Anbieter zurück, wenn nicht konfiguriert.",
"fetchModelsFailed": "Modelle konnten nicht geladen werden",
"refreshModels": "Modelle aktualisieren",
"configured": "Konfiguriert",
"fetchingModels": "Modelle werden geladen...",
"clickToLoadModels": "Klicken Sie auf ↺ um Modelle zu laden",
"searchModel": "Modell suchen...",
"noModels": "Keine Modelle. Klicken Sie auf ↺",
"modelsAvailable": "{count} Modell(e) verfügbar",
"enterUrlToLoad": "URL eingeben und ↺ klicken",
"currentProvider": "(Aktuell: {provider})"
},
"aiTest": {
"description": "Testen Sie Ihre KI-Anbieter für Tag-Generierung und semantische Such-Embeddings",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Wird für Web-Scraping verwendet. Funktioniert ohne Schlüssel, aber mit Ratenbegrenzung.",
"saveSettings": "Werkzeugeinstellungen speichern",
"updateSuccess": "Werkzeugeinstellungen erfolgreich aktualisiert",
"updateFailed": "Fehler beim Aktualisieren der Werkzeugeinstellungen"
}
"updateFailed": "Fehler beim Aktualisieren der Werkzeugeinstellungen",
"testing": "Test läuft...",
"testSearch": "Websuche testen"
},
"settingsDescription": "Anwendungseinstellungen konfigurieren"
},
"ai": {
"analyzing": "KI analysiert...",
@@ -368,7 +381,9 @@
"signIn": "Anmelden",
"signInToAccount": "Melden Sie sich in Ihrem Konto an",
"signOut": "Sign out",
"signUp": "Registrieren"
"signUp": "Registrieren",
"confirmPassword": "Passwort bestätigen",
"confirmPasswordPlaceholder": "Passwort erneut eingeben"
},
"autoLabels": {
"analyzing": "Notizen werden analysiert...",

View File

@@ -26,7 +26,9 @@
"sending": "Sending...",
"sendResetLink": "Send Reset Link",
"backToLogin": "Back to login",
"signOut": "Sign out"
"signOut": "Sign out",
"confirmPassword": "Confirm Password",
"confirmPasswordPlaceholder": "Confirm your password"
},
"sidebar": {
"notes": "Notes",
@@ -721,7 +723,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"bestValue": "Best value",
"bestQuality": "Best quality",
"saved": "(Saved)"
"saved": "(Saved)",
"fetchModelsFailed": "Failed to fetch models",
"refreshModels": "Refresh Models",
"configured": "Configured",
"fetchingModels": "Fetching models...",
"clickToLoadModels": "Click ↺ to load models",
"searchModel": "Search model...",
"noModels": "No models. Click ↺",
"modelsAvailable": "{count} model(s) available",
"enterUrlToLoad": "Enter URL and click ↺ to load models",
"currentProvider": "(Current: {provider})"
},
"resend": {
"title": "Resend (Recommended)",
@@ -859,8 +871,11 @@
"jinaKeyDescription": "Used for web scraping. Works without a key but with rate limits.",
"saveSettings": "Save Tools Settings",
"updateSuccess": "Tools settings updated successfully",
"updateFailed": "Failed to update tools settings"
}
"updateFailed": "Failed to update tools settings",
"testing": "Testing...",
"testSearch": "Test web search"
},
"settingsDescription": "Configure application-wide settings"
},
"about": {
"title": "About",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Guardado)",
"chatProvider": "Proveedor de chat",
"chatDescription": "Proveedor de IA para el asistente de chat. Usa el proveedor de etiquetas si no está configurado."
"chatDescription": "Proveedor de IA para el asistente de chat. Usa el proveedor de etiquetas si no está configurado.",
"fetchModelsFailed": "Error al obtener modelos",
"refreshModels": "Actualizar modelos",
"configured": "Configurado",
"fetchingModels": "Obteniendo modelos...",
"clickToLoadModels": "Haga clic en ↺ para cargar modelos",
"searchModel": "Buscar modelo...",
"noModels": "Sin modelos. Haga clic en ↺",
"modelsAvailable": "{count} modelo(s) disponible(s)",
"enterUrlToLoad": "Ingrese la URL y haga clic en ↺",
"currentProvider": "(Actual: {provider})"
},
"aiTest": {
"description": "Prueba tus proveedores de IA para generación de etiquetas y embeddings de búsqueda semántica",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Usada para scraping web. Funciona sin clave pero con límites de tasa.",
"saveSettings": "Guardar Configuración de Herramientas",
"updateSuccess": "Configuración de herramientas actualizada exitosamente",
"updateFailed": "Error al actualizar la configuración de herramientas"
}
"updateFailed": "Error al actualizar la configuración de herramientas",
"testing": "Probando...",
"testSearch": "Probar búsqueda web"
},
"settingsDescription": "Configurar ajustes de la aplicación"
},
"ai": {
"analyzing": "IA analizando...",
@@ -368,7 +381,9 @@
"signIn": "Iniciar sesión",
"signInToAccount": "Inicia sesión en tu cuenta",
"signOut": "Sign out",
"signUp": "Registrarse"
"signUp": "Registrarse",
"confirmPassword": "Confirmar contraseña",
"confirmPasswordPlaceholder": "Confirme su contraseña"
},
"autoLabels": {
"analyzing": "Analizando tus notas...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 سفارشی سازگار با OpenAI",
"saved": "(ذخیره شد)",
"chatProvider": "ارائه‌دهنده چت",
"chatDescription": "ارائه‌دهنده هوش مصنوعی برای دستیار چت. در صورت عدم پیکربندی، به ارائه‌دهنده برچسب‌ها بازمی‌گردد."
"chatDescription": "ارائه‌دهنده هوش مصنوعی برای دستیار چت. در صورت عدم پیکربندی، به ارائه‌دهنده برچسب‌ها بازمی‌گردد.",
"fetchModelsFailed": "دریافت مدل‌ها ناموفق بود",
"refreshModels": "بازنشانی مدل‌ها",
"configured": "پیکربندی شده",
"fetchingModels": "در حال دریافت مدل‌ها...",
"clickToLoadModels": "برای بارگذاری مدل‌ها روی ↺ کلیک کنید",
"searchModel": "جستجوی مدل...",
"noModels": "مدلی وجود ندارد. روی ↺ کلیک کنید",
"modelsAvailable": "{count} مدل در دسترس",
"enterUrlToLoad": "آدرس را وارد کرده و روی ↺ کلیک کنید",
"currentProvider": "(فعلی: {provider})"
},
"aiTest": {
"description": "تست ارائه‌دهندگان هوش مصنوعی برای تولید برچسب و تعبیه‌های جستجوی معنایی",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "برای استخراج وب استفاده می‌شود. بدون کلید کار می‌کند اما با محدودیت نرخ.",
"saveSettings": "ذخیره تنظیمات ابزارها",
"updateSuccess": "تنظیمات ابزارها با موفقیت به‌روزرسانی شد",
"updateFailed": "شکست در به‌روزرسانی تنظیمات ابزارها"
}
"updateFailed": "شکست در به‌روزرسانی تنظیمات ابزارها",
"testing": "در حال تست...",
"testSearch": "تست جستجوی وب"
},
"settingsDescription": "پیکربندی تنظیمات کلی برنامه"
},
"ai": {
"analyzing": "در حال تحلیل هوش مصنوعی...",
@@ -368,7 +381,9 @@
"signIn": "ورود",
"signInToAccount": "به حساب کاربری خود وارد شوید",
"signOut": "خروج از حساب",
"signUp": "ثبت‌نام"
"signUp": "ثبت‌نام",
"confirmPassword": "تکرار رمز عبور",
"confirmPasswordPlaceholder": "رمز عبور را دوباره وارد کنید"
},
"autoLabels": {
"aiPowered": "قدرت گرفته از هوش مصنوعی",

View File

@@ -71,7 +71,17 @@
"tagsGenerationProvider": "Fournisseur de génération d'étiquettes",
"title": "Configuration IA",
"updateFailed": "Échec de la mise à jour des paramètres IA",
"updateSuccess": "Paramètres IA mis à jour avec succès"
"updateSuccess": "Paramètres IA mis à jour avec succès",
"fetchModelsFailed": "Failed to fetch models",
"refreshModels": "Refresh Models",
"configured": "Configured",
"fetchingModels": "Fetching models...",
"clickToLoadModels": "Click ↺ to load models",
"searchModel": "Search model...",
"noModels": "No models. Click ↺",
"modelsAvailable": "{count} model(s) available",
"enterUrlToLoad": "Enter URL and click ↺ to load models",
"currentProvider": "(Current: {provider})"
},
"aiTest": {
"description": "Testez vos fournisseurs IA pour la génération d'étiquettes et les embeddings de recherche sémantique",
@@ -138,7 +148,9 @@
"jinaKeyDescription": "Utilisée pour le scraping web. Fonctionne sans clé mais avec des limites de débit.",
"saveSettings": "Enregistrer les paramètres outils",
"updateSuccess": "Paramètres outils mis à jour avec succès",
"updateFailed": "Échec de la mise à jour des paramètres outils"
"updateFailed": "Échec de la mise à jour des paramètres outils",
"testing": "Testing...",
"testSearch": "Test web search"
},
"security": {
"allowPublicRegistration": "Autoriser l'inscription publique",
@@ -221,7 +233,8 @@
"name": "Nom",
"role": "Rôle"
}
}
},
"settingsDescription": "Configure application-wide settings"
},
"ai": {
"analyzing": "Analyse IA en cours...",
@@ -371,7 +384,9 @@
"signIn": "Connexion",
"signInToAccount": "Connectez-vous à votre compte",
"signOut": "Déconnexion",
"signUp": "S'inscrire"
"signUp": "S'inscrire",
"confirmPassword": "Confirm Password",
"confirmPasswordPlaceholder": "Confirm your password"
},
"batch": {
"organize": "Organiser",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(सहेजा गया)",
"chatProvider": "चैट प्रदाता",
"chatDescription": "चैट सहायक के लिए AI प्रदाता। कॉन्फ़िगर नहीं होने पर टैग प्रदाता का उपयोग करता है।"
"chatDescription": "चैट सहायक के लिए AI प्रदाता। कॉन्फ़िगर नहीं होने पर टैग प्रदाता का उपयोग करता है।",
"fetchModelsFailed": "मॉडल लाने में विफल",
"refreshModels": "मॉडल रीफ़्रेश करें",
"configured": "कॉन्फ़िगर किया गया",
"fetchingModels": "मॉडल ला रहे हैं...",
"clickToLoadModels": "मॉडल लोड करने के लिए ↺ पर क्लिक करें",
"searchModel": "मॉडल खोजें...",
"noModels": "कोई मॉडल नहीं। ↺ पर क्लिक करें",
"modelsAvailable": "{count} मॉडल उपलब्ध",
"enterUrlToLoad": "URL दर्ज करें और ↺ पर क्लिक करें",
"currentProvider": "(वर्तमान: {provider})"
},
"aiTest": {
"description": "टैग जनरेशन और सिमेंटिक खोज एम्बेडिंग्स के लिए अपने AI प्रदाताओं का परीक्षण करें",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "वेब स्क्रैपिंग के लिए उपयोग किया जाता है। बिना कुंजी के काम करता है लेकिन दर सीमा के साथ।",
"saveSettings": "टूल सेटिंग्स सहेजें",
"updateSuccess": "टूल सेटिंग्स सफलतापूर्वक अपडेट की गईं",
"updateFailed": "टूल सेटिंग्स अपडेट करने में विफल"
}
"updateFailed": "टूल सेटिंग्स अपडेट करने में विफल",
"testing": "परीक्षण हो रहा है...",
"testSearch": "वेब खोज परीक्षण"
},
"settingsDescription": "एप्लिकेशन-वाइड सेटिंग्स कॉन्फ़िगर करें"
},
"ai": {
"analyzing": "AI विश्लेषण जारी है...",
@@ -368,7 +381,9 @@
"signIn": "साइन इन करें",
"signInToAccount": "अपने खाते में साइन इन करें",
"signOut": "Sign out",
"signUp": "साइन अप करें"
"signUp": "साइन अप करें",
"confirmPassword": "पासवर्ड की पुष्टि करें",
"confirmPasswordPlaceholder": "अपना पासवर्ड दोबारा दर्ज करें"
},
"autoLabels": {
"analyzing": "नोट्स का विश्लेषण जारी है...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Salvato)",
"chatProvider": "Provider chat",
"chatDescription": "Provider IA per l'assistente chat. Usa il provider tag se non configurato."
"chatDescription": "Provider IA per l'assistente chat. Usa il provider tag se non configurato.",
"fetchModelsFailed": "Impossibile recuperare i modelli",
"refreshModels": "Aggiorna modelli",
"configured": "Configurato",
"fetchingModels": "Recupero modelli...",
"clickToLoadModels": "Clicca ↺ per caricare i modelli",
"searchModel": "Cerca modello...",
"noModels": "Nessun modello. Clicca ↺",
"modelsAvailable": "{count} modello/i disponibile/i",
"enterUrlToLoad": "Inserisci URL e clicca ↺ per caricare",
"currentProvider": "(Attuale: {provider})"
},
"aiTest": {
"description": "Test your AI providers for tag generation and semantic search embeddings",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Utilizzato per lo scraping web. Funziona senza chiave ma con limiti di velocità.",
"saveSettings": "Salva Impostazioni Strumenti",
"updateSuccess": "Impostazioni strumenti aggiornate con successo",
"updateFailed": "Impossibile aggiornare le impostazioni strumenti"
}
"updateFailed": "Impossibile aggiornare le impostazioni strumenti",
"testing": "Test in corso...",
"testSearch": "Test ricerca web"
},
"settingsDescription": "Configura le impostazioni dell applicazione"
},
"ai": {
"analyzing": "AI analyzing...",
@@ -368,7 +381,9 @@
"signIn": "Accedi",
"signInToAccount": "Accedi al tuo account",
"signOut": "Sign out",
"signUp": "Registrati"
"signUp": "Registrati",
"confirmPassword": "Conferma password",
"confirmPasswordPlaceholder": "Conferma la tua password"
},
"autoLabels": {
"aiPowered": "Alimentato da AI",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(保存済み)",
"chatProvider": "チャットプロバイダー",
"chatDescription": "チャットアシスタント用のAIプロバイダー。未設定の場合はタグプロバイダーにフォールバックします。"
"chatDescription": "チャットアシスタント用のAIプロバイダー。未設定の場合はタグプロバイダーにフォールバックします。",
"fetchModelsFailed": "モデルの取得に失敗しました",
"refreshModels": "モデルを更新",
"configured": "設定済み",
"fetchingModels": "モデルを取得中...",
"clickToLoadModels": "↺ をクリックしてモデルを読み込む",
"searchModel": "モデルを検索...",
"noModels": "モデルなし。↺ をクリック",
"modelsAvailable": "{count} 件のモデルが利用可能",
"enterUrlToLoad": "URLを入力して↺をクリック",
"currentProvider": "(現在: {provider})"
},
"aiTest": {
"description": "タグ生成とセマンティック検索埋め込みのAIプロバイダーをテストします",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "ウェブスクレイピングに使用されます。キーなしでも動作しますが、レート制限があります。",
"saveSettings": "ツール設定を保存",
"updateSuccess": "ツール設定が正常に更新されました",
"updateFailed": "ツール設定の更新に失敗しました"
}
"updateFailed": "ツール設定の更新に失敗しました",
"testing": "テスト中...",
"testSearch": "ウェブ検索をテスト"
},
"settingsDescription": "アプリケーション設定を構成"
},
"ai": {
"analyzing": "AI分析中...",
@@ -368,7 +381,9 @@
"signIn": "ログイン",
"signInToAccount": "アカウントにログイン",
"signOut": "ログアウト",
"signUp": "新規登録"
"signUp": "新規登録",
"confirmPassword": "パスワードの確認",
"confirmPasswordPlaceholder": "パスワードを再入力"
},
"autoLabels": {
"analyzing": "ノートを分析中...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 사용자 정의 OpenAI 호환",
"saved": "(저장됨)",
"chatProvider": "채팅 공급자",
"chatDescription": "채팅 도우미를 위한 AI 공급자입니다. 구성되지 않은 경우 태그 공급자를 대신 사용합니다."
"chatDescription": "채팅 도우미를 위한 AI 공급자입니다. 구성되지 않은 경우 태그 공급자를 대신 사용합니다.",
"fetchModelsFailed": "모델을 가져오지 못했습니다",
"refreshModels": "모델 새로고침",
"configured": "구성됨",
"fetchingModels": "모델 가져오는 중...",
"clickToLoadModels": "↺ 클릭하여 모델 로드",
"searchModel": "모델 검색...",
"noModels": "모델 없음. ↺ 클릭",
"modelsAvailable": "{count}개 모델 사용 가능",
"enterUrlToLoad": "URL 입력 후 ↺ 클릭",
"currentProvider": "(현재: {provider})"
},
"aiTest": {
"description": "태그 생성 및 의미 검색 임베딩을 위한 AI 공급자 테스트",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "웹 스크랩에 사용됩니다. 키 없이도 작동하지만 속도 제한이 적용됩니다.",
"saveSettings": "도구 설정 저장",
"updateSuccess": "도구 설정이 성공적으로 업데이트되었습니다",
"updateFailed": "도구 설정 업데이트 실패"
}
"updateFailed": "도구 설정 업데이트 실패",
"testing": "테스트 중...",
"testSearch": "웹 검색 테스트"
},
"settingsDescription": "애플리케이션 설정 구성"
},
"ai": {
"analyzing": "AI 분석 중...",
@@ -368,7 +381,9 @@
"signIn": "로그인",
"signInToAccount": "계정에 로그인하세요",
"signOut": "로그아웃",
"signUp": "회원가입"
"signUp": "회원가입",
"confirmPassword": "비밀번호 확인",
"confirmPasswordPlaceholder": "비밀번호를 다시 입력하세요"
},
"autoLabels": {
"analyzing": "메모 분석 중...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Opgeslagen)",
"chatProvider": "Chat Provider",
"chatDescription": "AI-provider voor de chat-assistent. Val terug op Tags-provider indien niet geconfigureerd."
"chatDescription": "AI-provider voor de chat-assistent. Val terug op Tags-provider indien niet geconfigureerd.",
"fetchModelsFailed": "Modellen ophalen mislukt",
"refreshModels": "Modellen vernieuwen",
"configured": "Geconfigureerd",
"fetchingModels": "Modellen ophalen...",
"clickToLoadModels": "Klik op ↺ om modellen te laden",
"searchModel": "Model zoeken...",
"noModels": "Geen modellen. Klik op ↺",
"modelsAvailable": "{count} model(len) beschikbaar",
"enterUrlToLoad": "Voer URL in en klik op ↺",
"currentProvider": "(Huidig: {provider})"
},
"aiTest": {
"description": "Test uw AI-providers voor taggeneratie en semantische zoek-embeddings",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Gebruikt voor web schrapen. Werkt zonder sleutel maar met snelheidslimieten.",
"saveSettings": "Tools-instellingen Opslaan",
"updateSuccess": "Tools-instellingen succesvol bijgewerkt",
"updateFailed": "Tools-instellingen bijwerken mislukt"
}
"updateFailed": "Tools-instellingen bijwerken mislukt",
"testing": "Testen...",
"testSearch": "Zoekfunctie testen"
},
"settingsDescription": "Toepassingsinstellingen configureren"
},
"ai": {
"analyzing": "AI analyseert...",
@@ -368,7 +381,9 @@
"signIn": "Inloggen",
"signInToAccount": "Log in op uw account",
"signOut": "Uitloggen",
"signUp": "Registreren"
"signUp": "Registreren",
"confirmPassword": "Wachtwoord bevestigen",
"confirmPasswordPlaceholder": "Bevestig uw wachtwoord"
},
"autoLabels": {
"aiPowered": "AI-gestuurd",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Niestandardowy (kompatybilny z OpenAI)",
"saved": "(Zapisano)",
"chatProvider": "Dostawca czatu",
"chatDescription": "Dostawca AI dla asystenta czatu. Przechodzi do dostawcy tagów, jeśli nie jest skonfigurowany."
"chatDescription": "Dostawca AI dla asystenta czatu. Przechodzi do dostawcy tagów, jeśli nie jest skonfigurowany.",
"fetchModelsFailed": "Nie udało się pobrać modeli",
"refreshModels": "Odśwież modele",
"configured": "Skonfigurowany",
"fetchingModels": "Pobieranie modeli...",
"clickToLoadModels": "Kliknij ↺ aby załadować modele",
"searchModel": "Szukaj modelu...",
"noModels": "Brak modeli. Kliknij ↺",
"modelsAvailable": "{count} model(i) dostępny(e)",
"enterUrlToLoad": "Podaj URL i kliknij ↺",
"currentProvider": "(Bieżący: {provider})"
},
"aiTest": {
"description": "Przetestuj swoich dostawców AI pod kątem generowania tagów i embeddingów wyszukiwania semantycznego",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Używany do pobierania stron. Działa bez klucza, ale z limitami zapytań.",
"saveSettings": "Zapisz Ustawienia Narzędzi",
"updateSuccess": "Ustawienia narzędzi zaktualizowane pomyślnie",
"updateFailed": "Nie udało się zaktualizować ustawień narzędzi"
}
"updateFailed": "Nie udało się zaktualizować ustawień narzędzi",
"testing": "Testowanie...",
"testSearch": "Testuj wyszukiwanie"
},
"settingsDescription": "Konfiguruj ustawienia aplikacji"
},
"ai": {
"analyzing": "Analiza AI...",
@@ -368,7 +381,9 @@
"signIn": "Zaloguj się",
"signInToAccount": "Zaloguj się na swoje konto",
"signOut": "Wyloguj się",
"signUp": "Zarejestruj się"
"signUp": "Zarejestruj się",
"confirmPassword": "Potwierdź hasło",
"confirmPasswordPlaceholder": "Potwierdź swoje hasło"
},
"autoLabels": {
"aiPowered": "Wspierane przez AI",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Compatível com OpenAI (Personalizado)",
"saved": "(Salvo)",
"chatProvider": "Provedor de Chat",
"chatDescription": "Provedor de IA para o assistente de chat. Usa o provedor de Etiquetas como alternativa se não configurado."
"chatDescription": "Provedor de IA para o assistente de chat. Usa o provedor de Etiquetas como alternativa se não configurado.",
"fetchModelsFailed": "Falha ao buscar modelos",
"refreshModels": "Atualizar modelos",
"configured": "Configurado",
"fetchingModels": "Buscando modelos...",
"clickToLoadModels": "Clique em ↺ para carregar modelos",
"searchModel": "Buscar modelo...",
"noModels": "Sem modelos. Clique em ↺",
"modelsAvailable": "{count} modelo(s) disponível(is)",
"enterUrlToLoad": "Insira a URL e clique em ↺",
"currentProvider": "(Atual: {provider})"
},
"aiTest": {
"description": "Teste seus provedores de IA para geração de etiquetas e embeddings de pesquisa semântica",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Usado para extração web. Funciona sem chave, mas com limites de taxa.",
"saveSettings": "Salvar Configurações de Ferramentas",
"updateSuccess": "Configurações de ferramentas atualizadas com sucesso",
"updateFailed": "Falha ao atualizar configurações de ferramentas"
}
"updateFailed": "Falha ao atualizar configurações de ferramentas",
"testing": "Testando...",
"testSearch": "Testar pesquisa web"
},
"settingsDescription": "Configurar definições da aplicação"
},
"ai": {
"analyzing": "IA analisando...",
@@ -368,7 +381,9 @@
"signIn": "Entrar",
"signInToAccount": "Entre na sua conta",
"signOut": "Sair",
"signUp": "Cadastrar-se"
"signUp": "Cadastrar-se",
"confirmPassword": "Confirmar senha",
"confirmPasswordPlaceholder": "Confirme sua senha"
},
"autoLabels": {
"analyzing": "Analisando suas notas...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Пользовательский (совместимый с OpenAI)",
"saved": "(Сохранено)",
"chatProvider": "Провайдер чата",
"chatDescription": "Провайдер ИИ для чат-ассистента. Если не настроен, используется провайдер тегов."
"chatDescription": "Провайдер ИИ для чат-ассистента. Если не настроен, используется провайдер тегов.",
"fetchModelsFailed": "Не удалось получить модели",
"refreshModels": "Обновить модели",
"configured": "Настроен",
"fetchingModels": "Загрузка моделей...",
"clickToLoadModels": "Нажмите ↺ для загрузки моделей",
"searchModel": "Поиск модели...",
"noModels": "Нет моделей. Нажмите ↺",
"modelsAvailable": "{count} модел(ей) доступно",
"enterUrlToLoad": "Введите URL и нажмите ↺",
"currentProvider": "(Текущий: {provider})"
},
"aiTest": {
"description": "Протестируйте провайдеров ИИ для генерации тегов и эмбеддингов семантического поиска",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "Используется для веб-скрейпинга. Работает без ключа, но с ограничениями скорости.",
"saveSettings": "Сохранить Настройки Инструментов",
"updateSuccess": "Настройки инструментов успешно обновлены",
"updateFailed": "Не удалось обновить настройки инструментов"
}
"updateFailed": "Не удалось обновить настройки инструментов",
"testing": "Тестирование...",
"testSearch": "Тестировать веб-поиск"
},
"settingsDescription": "Настройки приложения"
},
"ai": {
"analyzing": "ИИ анализирует...",
@@ -368,7 +381,9 @@
"signIn": "Войти",
"signInToAccount": "Войдите в свой аккаунт",
"signOut": "Выйти",
"signUp": "Зарегистрироваться"
"signUp": "Зарегистрироваться",
"confirmPassword": "Подтвердите пароль",
"confirmPasswordPlaceholder": "Подтвердите пароль"
},
"autoLabels": {
"analyzing": "Анализ ваших заметок...",

View File

@@ -71,7 +71,17 @@
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(已保存)",
"chatProvider": "聊天提供商",
"chatDescription": "用于聊天助手的 AI 提供商。如果未配置,将回退到标签提供商。"
"chatDescription": "用于聊天助手的 AI 提供商。如果未配置,将回退到标签提供商。",
"fetchModelsFailed": "获取模型失败",
"refreshModels": "刷新模型",
"configured": "已配置",
"fetchingModels": "正在获取模型...",
"clickToLoadModels": "点击 ↺ 加载模型",
"searchModel": "搜索模型...",
"noModels": "无模型。点击 ↺",
"modelsAvailable": "{count} 个模型可用",
"enterUrlToLoad": "输入URL并点击↺加载模型",
"currentProvider": "(当前: {provider})"
},
"aiTest": {
"description": "测试您的 AI 提供商的标签生成和语义搜索嵌入",
@@ -217,8 +227,11 @@
"jinaKeyDescription": "用于网页抓取。无密钥也可使用,但有速率限制。",
"saveSettings": "保存工具设置",
"updateSuccess": "工具设置更新成功",
"updateFailed": "更新工具设置失败"
}
"updateFailed": "更新工具设置失败",
"testing": "测试中...",
"testSearch": "测试网络搜索"
},
"settingsDescription": "配置应用程序设置"
},
"ai": {
"analyzing": "AI 分析中...",
@@ -368,7 +381,9 @@
"signIn": "登录",
"signInToAccount": "登录您的账户",
"signOut": "退出登录",
"signUp": "注册"
"signUp": "注册",
"confirmPassword": "确认密码",
"confirmPasswordPlaceholder": "再次输入密码"
},
"autoLabels": {
"analyzing": "分析您的笔记...",