encrypt conversation history with vault password, add vault and unsandbox translations to all 26 languages
This commit is contained in:
parent
f0db6d9589
commit
3f190723b4
27 changed files with 1076 additions and 19 deletions
|
|
@ -115,4 +115,42 @@ export const ar = {
|
|||
remoteUrlInfo: "أدخل رابط لجلبه وترجمته:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 جلب وترجمة",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "استخدم مفاتيح API من unsandbox.com لتنفيذ الأكواد.",
|
||||
unsandboxPublicKey: "المفتاح العام (unsb-pk-...)",
|
||||
unsandboxSecretKey: "المفتاح السري (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "تم تسجيل الدخول",
|
||||
vaultLocked: "الإعدادات مقفلة",
|
||||
vaultUnlocked: "الإعدادات غير مقفلة",
|
||||
vaultCreate: "حفظ الإعدادات",
|
||||
vaultUnlock: "فتح الإعدادات",
|
||||
vaultLock: "قفل",
|
||||
vaultLockTooltip: "قفل إعداداتك (تسجيل الخروج)",
|
||||
vaultPassword: "كلمة المرور",
|
||||
vaultPasswordPlaceholder: "اختر كلمة مرور...",
|
||||
vaultConfirmPassword: "تأكيد كلمة المرور",
|
||||
vaultConfirmPlaceholder: "أكد كلمة المرور...",
|
||||
vaultWrongPassword: "كلمة المرور غير صحيحة. يرجى المحاولة مرة أخرى.",
|
||||
vaultPasswordMismatch: "كلمتا المرور غير متطابقتين.",
|
||||
vaultPasswordTooShort: "كلمة المرور تحتاج إلى 8 أحرف على الأقل.",
|
||||
vaultCreated: "تم حفظ الإعدادات!",
|
||||
vaultUnlockedMsg: "مرحباً بعودتك!",
|
||||
vaultLockedMsg: "تم قفل الإعدادات.",
|
||||
vaultRequired: "أدخل كلمة المرور للوصول إلى الإعدادات.",
|
||||
vaultWelcome: "إعداداتك (النموذج، الصوت، مفاتيح API) ومحادثات الدردشة مشفرة بكلمة مرور من اختيارك. هذا يحافظ على خصوصيتها على هذا الجهاز.",
|
||||
vaultLine1: "إعداداتك ومحادثاتك مشفرة بكلمة مرور.",
|
||||
vaultLine2: "هذا يحافظ على خصوصيتها على هذا الجهاز.",
|
||||
vaultWelcomeBack: "مرحباً بعودتك! أدخل كلمة المرور للوصول إلى إعداداتك ومحادثاتك المحفوظة.",
|
||||
vaultCreateInfo: "اختر كلمة مرور لحماية إعداداتك ومحادثاتك. سيتم تشفير تفضيلاتك ومفاتيح API وسجل الدردشة وتخزينها محلياً.",
|
||||
vaultSessionInfo: "ستبقى مسجل الدخول حتى تقفل إعداداتك.",
|
||||
vaultChangePassword: "تغيير كلمة المرور",
|
||||
vaultDeleteVault: "حذف الإعدادات",
|
||||
vaultDeleteConfirm: "هل أنت متأكد؟ سيؤدي هذا إلى إزالة جميع إعداداتك المحفوظة من هذا الجهاز.",
|
||||
vaultCurrentPassword: "كلمة المرور الحالية",
|
||||
vaultNewPassword: "كلمة المرور الجديدة",
|
||||
vaultPasswordChanged: "تم تغيير كلمة المرور!",
|
||||
vaultDeleted: "تم حذف الإعدادات.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const bn = {
|
|||
remoteUrlInfo: "একটি URL প্রবেশ করান যা আনতে এবং অনুবাদ করতে:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 আনুন এবং অনুবাদ করুন",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "কোড এক্সিকিউশনের জন্য unsandbox.com API কী ব্যবহার করুন।",
|
||||
unsandboxPublicKey: "পাবলিক কী (unsb-pk-...)",
|
||||
unsandboxSecretKey: "সিক্রেট কী (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "লগ ইন",
|
||||
vaultLocked: "সেটিংস লক",
|
||||
vaultUnlocked: "সেটিংস আনলক",
|
||||
vaultCreate: "সেটিংস সংরক্ষণ করুন",
|
||||
vaultUnlock: "সেটিংস আনলক করুন",
|
||||
vaultLock: "লক করুন",
|
||||
vaultLockTooltip: "আপনার সেটিংস লক করুন (লগ আউট)",
|
||||
vaultPassword: "পাসওয়ার্ড",
|
||||
vaultPasswordPlaceholder: "একটি পাসওয়ার্ড বেছে নিন...",
|
||||
vaultConfirmPassword: "পাসওয়ার্ড নিশ্চিত করুন",
|
||||
vaultConfirmPlaceholder: "আপনার পাসওয়ার্ড নিশ্চিত করুন...",
|
||||
vaultWrongPassword: "সেই পাসওয়ার্ড কাজ করেনি। অনুগ্রহ করে আবার চেষ্টা করুন।",
|
||||
vaultPasswordMismatch: "পাসওয়ার্ড মিলছে না।",
|
||||
vaultPasswordTooShort: "পাসওয়ার্ডে কমপক্ষে ৮টি অক্ষর প্রয়োজন।",
|
||||
vaultCreated: "সেটিংস সংরক্ষিত হয়েছে!",
|
||||
vaultUnlockedMsg: "ফিরে আসার জন্য স্বাগতম!",
|
||||
vaultLockedMsg: "সেটিংস লক করা হয়েছে।",
|
||||
vaultRequired: "সেটিংস অ্যাক্সেস করতে আপনার পাসওয়ার্ড দিন।",
|
||||
vaultWelcome: "আপনার সেটিংস (মডেল, ভয়েস, API কী) এবং চ্যাট কথোপকথন আপনার পছন্দের একটি পাসওয়ার্ডের পিছনে এনক্রিপ্ট করা আছে। এটি এই ডিভাইসে সেগুলো ব্যক্তিগত রাখে।",
|
||||
vaultLine1: "আপনার সেটিংস এবং কথোপকথন একটি পাসওয়ার্ডের পিছনে এনক্রিপ্ট করা আছে।",
|
||||
vaultLine2: "এটি এই ডিভাইসে সেগুলো ব্যক্তিগত রাখে।",
|
||||
vaultWelcomeBack: "ফিরে আসার জন্য স্বাগতম! আপনার সংরক্ষিত সেটিংস এবং কথোপকথন অ্যাক্সেস করতে আপনার পাসওয়ার্ড দিন।",
|
||||
vaultCreateInfo: "আপনার সেটিংস এবং কথোপকথন সুরক্ষিত করতে একটি পাসওয়ার্ড বেছে নিন। আপনার পছন্দ, API কী এবং চ্যাট ইতিহাস এনক্রিপ্ট করে স্থানীয়ভাবে সংরক্ষণ করা হবে।",
|
||||
vaultSessionInfo: "আপনি আপনার সেটিংস লক না করা পর্যন্ত লগ ইন থাকবেন।",
|
||||
vaultChangePassword: "পাসওয়ার্ড পরিবর্তন করুন",
|
||||
vaultDeleteVault: "সেটিংস মুছুন",
|
||||
vaultDeleteConfirm: "আপনি কি নিশ্চিত? এটি এই ডিভাইস থেকে আপনার সমস্ত সংরক্ষিত সেটিংস মুছে ফেলবে।",
|
||||
vaultCurrentPassword: "বর্তমান পাসওয়ার্ড",
|
||||
vaultNewPassword: "নতুন পাসওয়ার্ড",
|
||||
vaultPasswordChanged: "পাসওয়ার্ড পরিবর্তন হয়েছে!",
|
||||
vaultDeleted: "সেটিংস মুছে ফেলা হয়েছে।",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const de = {
|
|||
remoteUrlInfo: "Geben Sie eine URL ein, um sie abzurufen und zu übersetzen:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 Abrufen & Übersetzen",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "unsandbox.com API-Schlüssel für die Codeausführung verwenden.",
|
||||
unsandboxPublicKey: "Öffentlicher Schlüssel (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Geheimer Schlüssel (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Angemeldet",
|
||||
vaultLocked: "Einstellungen gesperrt",
|
||||
vaultUnlocked: "Einstellungen entsperrt",
|
||||
vaultCreate: "Einstellungen speichern",
|
||||
vaultUnlock: "Einstellungen entsperren",
|
||||
vaultLock: "Sperren",
|
||||
vaultLockTooltip: "Einstellungen sperren (abmelden)",
|
||||
vaultPassword: "Passwort",
|
||||
vaultPasswordPlaceholder: "Wähle ein Passwort...",
|
||||
vaultConfirmPassword: "Passwort bestätigen",
|
||||
vaultConfirmPlaceholder: "Bestätige dein Passwort...",
|
||||
vaultWrongPassword: "Dieses Passwort hat nicht funktioniert. Bitte versuche es erneut.",
|
||||
vaultPasswordMismatch: "Passwörter stimmen nicht überein.",
|
||||
vaultPasswordTooShort: "Das Passwort muss mindestens 8 Zeichen lang sein.",
|
||||
vaultCreated: "Einstellungen gespeichert!",
|
||||
vaultUnlockedMsg: "Willkommen zurück!",
|
||||
vaultLockedMsg: "Einstellungen gesperrt.",
|
||||
vaultRequired: "Gib dein Passwort ein, um auf die Einstellungen zuzugreifen.",
|
||||
vaultWelcome: "Deine Einstellungen (Modell, Stimme, API-Schlüssel) und Chat-Unterhaltungen sind mit einem Passwort deiner Wahl verschlüsselt. So bleiben sie auf diesem Gerät privat.",
|
||||
vaultLine1: "Deine Einstellungen und Unterhaltungen sind mit einem Passwort verschlüsselt.",
|
||||
vaultLine2: "So bleiben sie auf diesem Gerät privat.",
|
||||
vaultWelcomeBack: "Willkommen zurück! Gib dein Passwort ein, um auf deine gespeicherten Einstellungen und Unterhaltungen zuzugreifen.",
|
||||
vaultCreateInfo: "Wähle ein Passwort, um deine Einstellungen und Unterhaltungen zu schützen. Deine Voreinstellungen, API-Schlüssel und der Chatverlauf werden verschlüsselt und lokal gespeichert.",
|
||||
vaultSessionInfo: "Du bleibst angemeldet, bis du deine Einstellungen sperrst.",
|
||||
vaultChangePassword: "Passwort ändern",
|
||||
vaultDeleteVault: "Einstellungen löschen",
|
||||
vaultDeleteConfirm: "Bist du sicher? Dadurch werden alle gespeicherten Einstellungen von diesem Gerät entfernt.",
|
||||
vaultCurrentPassword: "Aktuelles Passwort",
|
||||
vaultNewPassword: "Neues Passwort",
|
||||
vaultPasswordChanged: "Passwort geändert!",
|
||||
vaultDeleted: "Einstellungen gelöscht.",
|
||||
};
|
||||
|
|
@ -141,11 +141,11 @@ export const en = {
|
|||
vaultUnlockedMsg: "Welcome back!",
|
||||
vaultLockedMsg: "Settings locked.",
|
||||
vaultRequired: "Enter your password to access settings.",
|
||||
vaultWelcome: "Your settings (model, voice, API keys) are saved safely behind a password of your choice. This keeps them private on this device.",
|
||||
vaultLine1: "Your settings are saved behind a password.",
|
||||
vaultWelcome: "Your settings (model, voice, API keys) and chat conversations are encrypted behind a password of your choice. This keeps them private on this device.",
|
||||
vaultLine1: "Your settings and conversations are encrypted behind a password.",
|
||||
vaultLine2: "This keeps them private on this device.",
|
||||
vaultWelcomeBack: "Welcome back! Enter your password to access your saved settings.",
|
||||
vaultCreateInfo: "Choose a password to protect your settings. Your preferences and API keys will be encrypted and stored locally.",
|
||||
vaultWelcomeBack: "Welcome back! Enter your password to access your saved settings and conversations.",
|
||||
vaultCreateInfo: "Choose a password to protect your settings and conversations. Your preferences, API keys, and chat history will be encrypted and stored locally.",
|
||||
vaultSessionInfo: "You'll stay logged in until you lock your settings.",
|
||||
vaultChangePassword: "Change Password",
|
||||
vaultDeleteVault: "Delete Settings",
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const es = {
|
|||
pleaseEnterTranslateText: "¡Por favor ingresa algo de texto para traducir!",
|
||||
aiModalNotAvailable: "El modal de IA no está disponible en este contexto",
|
||||
useCustomAPI: "Utilizar un endpoint personalizado compatible con OpenAI.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Usar claves API de unsandbox.com para la ejecución de código.",
|
||||
unsandboxPublicKey: "Clave pública (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Clave secreta (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Sesión iniciada",
|
||||
vaultLocked: "Configuración bloqueada",
|
||||
vaultUnlocked: "Configuración desbloqueada",
|
||||
vaultCreate: "Guardar configuración",
|
||||
vaultUnlock: "Desbloquear configuración",
|
||||
vaultLock: "Bloquear",
|
||||
vaultLockTooltip: "Bloquear tu configuración (cerrar sesión)",
|
||||
vaultPassword: "Contraseña",
|
||||
vaultPasswordPlaceholder: "Elige una contraseña...",
|
||||
vaultConfirmPassword: "Confirmar contraseña",
|
||||
vaultConfirmPlaceholder: "Confirma tu contraseña...",
|
||||
vaultWrongPassword: "Esa contraseña no funcionó. Por favor, inténtalo de nuevo.",
|
||||
vaultPasswordMismatch: "Las contraseñas no coinciden.",
|
||||
vaultPasswordTooShort: "La contraseña necesita al menos 8 caracteres.",
|
||||
vaultCreated: "¡Configuración guardada!",
|
||||
vaultUnlockedMsg: "¡Bienvenido de vuelta!",
|
||||
vaultLockedMsg: "Configuración bloqueada.",
|
||||
vaultRequired: "Introduce tu contraseña para acceder a la configuración.",
|
||||
vaultWelcome: "Tu configuración (modelo, voz, claves API) y las conversaciones del chat están cifradas con una contraseña de tu elección. Esto las mantiene privadas en este dispositivo.",
|
||||
vaultLine1: "Tu configuración y conversaciones están cifradas con una contraseña.",
|
||||
vaultLine2: "Esto las mantiene privadas en este dispositivo.",
|
||||
vaultWelcomeBack: "¡Bienvenido de vuelta! Introduce tu contraseña para acceder a tu configuración y conversaciones guardadas.",
|
||||
vaultCreateInfo: "Elige una contraseña para proteger tu configuración y conversaciones. Tus preferencias, claves API e historial de chat se cifrarán y almacenarán localmente.",
|
||||
vaultSessionInfo: "Mantendrás la sesión iniciada hasta que bloquees tu configuración.",
|
||||
vaultChangePassword: "Cambiar contraseña",
|
||||
vaultDeleteVault: "Eliminar configuración",
|
||||
vaultDeleteConfirm: "¿Estás seguro? Esto eliminará toda tu configuración guardada de este dispositivo.",
|
||||
vaultCurrentPassword: "Contraseña actual",
|
||||
vaultNewPassword: "Nueva contraseña",
|
||||
vaultPasswordChanged: "¡Contraseña cambiada!",
|
||||
vaultDeleted: "Configuración eliminada.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const fr = {
|
|||
remoteUrlInfo: "Entrez une URL à récupérer et traduire:",
|
||||
remoteUrlPlaceholder: "https://exemple.com",
|
||||
fetchAndTranslate: "🌐 Récupérer et Traduire",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Utiliser les clés API unsandbox.com pour l'exécution de code.",
|
||||
unsandboxPublicKey: "Clé publique (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Clé secrète (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Connecté",
|
||||
vaultLocked: "Paramètres verrouillés",
|
||||
vaultUnlocked: "Paramètres déverrouillés",
|
||||
vaultCreate: "Enregistrer les paramètres",
|
||||
vaultUnlock: "Déverrouiller les paramètres",
|
||||
vaultLock: "Verrouiller",
|
||||
vaultLockTooltip: "Verrouiller vos paramètres (se déconnecter)",
|
||||
vaultPassword: "Mot de passe",
|
||||
vaultPasswordPlaceholder: "Choisissez un mot de passe...",
|
||||
vaultConfirmPassword: "Confirmer le mot de passe",
|
||||
vaultConfirmPlaceholder: "Confirmez votre mot de passe...",
|
||||
vaultWrongPassword: "Ce mot de passe n'a pas fonctionné. Veuillez réessayer.",
|
||||
vaultPasswordMismatch: "Les mots de passe ne correspondent pas.",
|
||||
vaultPasswordTooShort: "Le mot de passe doit contenir au moins 8 caractères.",
|
||||
vaultCreated: "Paramètres enregistrés !",
|
||||
vaultUnlockedMsg: "Bon retour !",
|
||||
vaultLockedMsg: "Paramètres verrouillés.",
|
||||
vaultRequired: "Entrez votre mot de passe pour accéder aux paramètres.",
|
||||
vaultWelcome: "Vos paramètres (modèle, voix, clés API) et vos conversations sont chiffrés avec un mot de passe de votre choix. Cela les garde privés sur cet appareil.",
|
||||
vaultLine1: "Vos paramètres et conversations sont chiffrés avec un mot de passe.",
|
||||
vaultLine2: "Cela les garde privés sur cet appareil.",
|
||||
vaultWelcomeBack: "Bon retour ! Entrez votre mot de passe pour accéder à vos paramètres et conversations enregistrés.",
|
||||
vaultCreateInfo: "Choisissez un mot de passe pour protéger vos paramètres et conversations. Vos préférences, clés API et historique de chat seront chiffrés et stockés localement.",
|
||||
vaultSessionInfo: "Vous resterez connecté jusqu'à ce que vous verrouilliez vos paramètres.",
|
||||
vaultChangePassword: "Changer le mot de passe",
|
||||
vaultDeleteVault: "Supprimer les paramètres",
|
||||
vaultDeleteConfirm: "Êtes-vous sûr ? Cela supprimera tous vos paramètres enregistrés de cet appareil.",
|
||||
vaultCurrentPassword: "Mot de passe actuel",
|
||||
vaultNewPassword: "Nouveau mot de passe",
|
||||
vaultPasswordChanged: "Mot de passe changé !",
|
||||
vaultDeleted: "Paramètres supprimés.",
|
||||
};
|
||||
|
|
@ -114,4 +114,42 @@ export const hi = {
|
|||
remoteUrlInfo: "लाने और अनुवाद करने के लिए एक URL दर्ज करें:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 लाएं और अनुवाद करें",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "कोड निष्पादन के लिए unsandbox.com API कुंजियों का उपयोग करें।",
|
||||
unsandboxPublicKey: "सार्वजनिक कुंजी (unsb-pk-...)",
|
||||
unsandboxSecretKey: "गुप्त कुंजी (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "लॉग इन",
|
||||
vaultLocked: "सेटिंग्स लॉक",
|
||||
vaultUnlocked: "सेटिंग्स अनलॉक",
|
||||
vaultCreate: "सेटिंग्स सहेजें",
|
||||
vaultUnlock: "सेटिंग्स अनलॉक करें",
|
||||
vaultLock: "लॉक करें",
|
||||
vaultLockTooltip: "अपनी सेटिंग्स लॉक करें (लॉग आउट)",
|
||||
vaultPassword: "पासवर्ड",
|
||||
vaultPasswordPlaceholder: "पासवर्ड चुनें...",
|
||||
vaultConfirmPassword: "पासवर्ड की पुष्टि करें",
|
||||
vaultConfirmPlaceholder: "अपने पासवर्ड की पुष्टि करें...",
|
||||
vaultWrongPassword: "वह पासवर्ड काम नहीं आया। कृपया पुनः प्रयास करें।",
|
||||
vaultPasswordMismatch: "पासवर्ड मेल नहीं खाते।",
|
||||
vaultPasswordTooShort: "पासवर्ड में कम से कम 8 अक्षर होने चाहिए।",
|
||||
vaultCreated: "सेटिंग्स सहेजी गईं!",
|
||||
vaultUnlockedMsg: "वापसी पर स्वागत है!",
|
||||
vaultLockedMsg: "सेटिंग्स लॉक की गईं।",
|
||||
vaultRequired: "सेटिंग्स तक पहुँचने के लिए अपना पासवर्ड दर्ज करें।",
|
||||
vaultWelcome: "आपकी सेटिंग्स (मॉडल, आवाज़, API कुंजियाँ) और चैट वार्तालाप एक पासवर्ड के पीछे एन्क्रिप्ट किए गए हैं जो आप चुनते हैं। यह उन्हें इस उपकरण पर निजी रखता है।",
|
||||
vaultLine1: "आपकी सेटिंग्स और वार्तालाप एक पासवर्ड के पीछे एन्क्रिप्ट किए गए हैं।",
|
||||
vaultLine2: "यह उन्हें इस उपकरण पर निजी रखता है।",
|
||||
vaultWelcomeBack: "वापसी पर स्वागत है! अपनी सहेजी गई सेटिंग्स और वार्तालाप तक पहुँचने के लिए अपना पासवर्ड दर्ज करें।",
|
||||
vaultCreateInfo: "अपनी सेटिंग्स और वार्तालापों की सुरक्षा के लिए एक पासवर्ड चुनें। आपकी प्राथमिकताएँ, API कुंजियाँ और चैट इतिहास एन्क्रिप्ट होकर स्थानीय रूप से संग्रहीत होंगे।",
|
||||
vaultSessionInfo: "जब तक आप अपनी सेटिंग्स लॉक नहीं करते, आप लॉग इन रहेंगे।",
|
||||
vaultChangePassword: "पासवर्ड बदलें",
|
||||
vaultDeleteVault: "सेटिंग्स हटाएं",
|
||||
vaultDeleteConfirm: "क्या आप सुनिश्चित हैं? यह इस उपकरण से आपकी सभी सहेजी गई सेटिंग्स हटा देगा।",
|
||||
vaultCurrentPassword: "वर्तमान पासवर्ड",
|
||||
vaultNewPassword: "नया पासवर्ड",
|
||||
vaultPasswordChanged: "पासवर्ड बदल दिया गया!",
|
||||
vaultDeleted: "सेटिंग्स हटा दी गईं।",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const id = {
|
|||
remoteUrlInfo: "Masukkan URL untuk diambil dan diterjemahkan:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 Ambil & Terjemahkan",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Gunakan kunci API unsandbox.com untuk eksekusi kode.",
|
||||
unsandboxPublicKey: "Kunci Publik (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Kunci Rahasia (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Masuk",
|
||||
vaultLocked: "Pengaturan Terkunci",
|
||||
vaultUnlocked: "Pengaturan Terbuka",
|
||||
vaultCreate: "Simpan Pengaturan",
|
||||
vaultUnlock: "Buka Pengaturan",
|
||||
vaultLock: "Kunci",
|
||||
vaultLockTooltip: "Kunci pengaturan Anda (keluar)",
|
||||
vaultPassword: "Kata sandi",
|
||||
vaultPasswordPlaceholder: "Pilih kata sandi...",
|
||||
vaultConfirmPassword: "Konfirmasi kata sandi",
|
||||
vaultConfirmPlaceholder: "Konfirmasi kata sandi Anda...",
|
||||
vaultWrongPassword: "Kata sandi tersebut tidak cocok. Silakan coba lagi.",
|
||||
vaultPasswordMismatch: "Kata sandi tidak cocok.",
|
||||
vaultPasswordTooShort: "Kata sandi memerlukan minimal 8 karakter.",
|
||||
vaultCreated: "Pengaturan tersimpan!",
|
||||
vaultUnlockedMsg: "Selamat datang kembali!",
|
||||
vaultLockedMsg: "Pengaturan terkunci.",
|
||||
vaultRequired: "Masukkan kata sandi Anda untuk mengakses pengaturan.",
|
||||
vaultWelcome: "Pengaturan Anda (model, suara, kunci API) dan percakapan chat dienkripsi dengan kata sandi pilihan Anda. Ini menjaganya tetap privat di perangkat ini.",
|
||||
vaultLine1: "Pengaturan dan percakapan Anda dienkripsi dengan kata sandi.",
|
||||
vaultLine2: "Ini menjaganya tetap privat di perangkat ini.",
|
||||
vaultWelcomeBack: "Selamat datang kembali! Masukkan kata sandi Anda untuk mengakses pengaturan dan percakapan yang tersimpan.",
|
||||
vaultCreateInfo: "Pilih kata sandi untuk melindungi pengaturan dan percakapan Anda. Preferensi, kunci API, dan riwayat chat Anda akan dienkripsi dan disimpan secara lokal.",
|
||||
vaultSessionInfo: "Anda akan tetap masuk sampai Anda mengunci pengaturan Anda.",
|
||||
vaultChangePassword: "Ubah Kata Sandi",
|
||||
vaultDeleteVault: "Hapus Pengaturan",
|
||||
vaultDeleteConfirm: "Apakah Anda yakin? Ini akan menghapus semua pengaturan tersimpan Anda dari perangkat ini.",
|
||||
vaultCurrentPassword: "Kata sandi saat ini",
|
||||
vaultNewPassword: "Kata sandi baru",
|
||||
vaultPasswordChanged: "Kata sandi diubah!",
|
||||
vaultDeleted: "Pengaturan dihapus.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const it = {
|
|||
pleaseEnterTranslateText: "Per favore inserisci del testo da tradurre!",
|
||||
aiModalNotAvailable: "Modal IA non disponibile in questo contesto",
|
||||
useCustomAPI: "Usa un endpoint personalizzato compatibile con openai.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Usa le chiavi API di unsandbox.com per l'esecuzione del codice.",
|
||||
unsandboxPublicKey: "Chiave pubblica (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Chiave segreta (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Connesso",
|
||||
vaultLocked: "Impostazioni bloccate",
|
||||
vaultUnlocked: "Impostazioni sbloccate",
|
||||
vaultCreate: "Salva impostazioni",
|
||||
vaultUnlock: "Sblocca impostazioni",
|
||||
vaultLock: "Blocca",
|
||||
vaultLockTooltip: "Blocca le tue impostazioni (disconnetti)",
|
||||
vaultPassword: "Password",
|
||||
vaultPasswordPlaceholder: "Scegli una password...",
|
||||
vaultConfirmPassword: "Conferma password",
|
||||
vaultConfirmPlaceholder: "Conferma la tua password...",
|
||||
vaultWrongPassword: "Quella password non ha funzionato. Per favore riprova.",
|
||||
vaultPasswordMismatch: "Le password non corrispondono.",
|
||||
vaultPasswordTooShort: "La password deve contenere almeno 8 caratteri.",
|
||||
vaultCreated: "Impostazioni salvate!",
|
||||
vaultUnlockedMsg: "Bentornato!",
|
||||
vaultLockedMsg: "Impostazioni bloccate.",
|
||||
vaultRequired: "Inserisci la tua password per accedere alle impostazioni.",
|
||||
vaultWelcome: "Le tue impostazioni (modello, voce, chiavi API) e le conversazioni della chat sono crittografate con una password a tua scelta. Questo le mantiene private su questo dispositivo.",
|
||||
vaultLine1: "Le tue impostazioni e conversazioni sono crittografate con una password.",
|
||||
vaultLine2: "Questo le mantiene private su questo dispositivo.",
|
||||
vaultWelcomeBack: "Bentornato! Inserisci la tua password per accedere alle tue impostazioni e conversazioni salvate.",
|
||||
vaultCreateInfo: "Scegli una password per proteggere le tue impostazioni e conversazioni. Le tue preferenze, chiavi API e cronologia chat saranno crittografate e archiviate localmente.",
|
||||
vaultSessionInfo: "Rimarrai connesso fino a quando non bloccherai le tue impostazioni.",
|
||||
vaultChangePassword: "Cambia password",
|
||||
vaultDeleteVault: "Elimina impostazioni",
|
||||
vaultDeleteConfirm: "Sei sicuro? Questo rimuoverà tutte le tue impostazioni salvate da questo dispositivo.",
|
||||
vaultCurrentPassword: "Password attuale",
|
||||
vaultNewPassword: "Nuova password",
|
||||
vaultPasswordChanged: "Password cambiata!",
|
||||
vaultDeleted: "Impostazioni eliminate.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const ja = {
|
|||
remoteUrlInfo: "取得して翻訳するURLを入力してください:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 取得して翻訳",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "コード実行にunsandbox.comのAPIキーを使用する。",
|
||||
unsandboxPublicKey: "公開キー (unsb-pk-...)",
|
||||
unsandboxSecretKey: "秘密キー (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "ログイン中",
|
||||
vaultLocked: "設定がロックされています",
|
||||
vaultUnlocked: "設定がロック解除されました",
|
||||
vaultCreate: "設定を保存",
|
||||
vaultUnlock: "設定をロック解除",
|
||||
vaultLock: "ロック",
|
||||
vaultLockTooltip: "設定をロック(ログアウト)",
|
||||
vaultPassword: "パスワード",
|
||||
vaultPasswordPlaceholder: "パスワードを選択...",
|
||||
vaultConfirmPassword: "パスワードの確認",
|
||||
vaultConfirmPlaceholder: "パスワードを確認...",
|
||||
vaultWrongPassword: "パスワードが正しくありません。もう一度お試しください。",
|
||||
vaultPasswordMismatch: "パスワードが一致しません。",
|
||||
vaultPasswordTooShort: "パスワードは8文字以上必要です。",
|
||||
vaultCreated: "設定を保存しました!",
|
||||
vaultUnlockedMsg: "おかえりなさい!",
|
||||
vaultLockedMsg: "設定がロックされました。",
|
||||
vaultRequired: "設定にアクセスするにはパスワードを入力してください。",
|
||||
vaultWelcome: "設定(モデル、音声、APIキー)とチャット会話はパスワードで暗号化されます。この端末でプライバシーを守ります。",
|
||||
vaultLine1: "設定と会話はパスワードで暗号化されます。",
|
||||
vaultLine2: "この端末でプライバシーを守ります。",
|
||||
vaultWelcomeBack: "おかえりなさい!保存した設定と会話にアクセスするにはパスワードを入力してください。",
|
||||
vaultCreateInfo: "設定と会話を保護するパスワードを選択してください。環境設定、APIキー、チャット履歴は暗号化されてローカルに保存されます。",
|
||||
vaultSessionInfo: "設定をロックするまでログインが維持されます。",
|
||||
vaultChangePassword: "パスワード変更",
|
||||
vaultDeleteVault: "設定を削除",
|
||||
vaultDeleteConfirm: "よろしいですか?この端末からすべての保存済み設定が削除されます。",
|
||||
vaultCurrentPassword: "現在のパスワード",
|
||||
vaultNewPassword: "新しいパスワード",
|
||||
vaultPasswordChanged: "パスワードが変更されました!",
|
||||
vaultDeleted: "設定が削除されました。",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const ko = {
|
|||
remoteUrlInfo: "가져와서 번역할 URL을 입력하세요:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 가져와서 번역",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "코드 실행을 위해 unsandbox.com API 키를 사용합니다.",
|
||||
unsandboxPublicKey: "공개 키 (unsb-pk-...)",
|
||||
unsandboxSecretKey: "비밀 키 (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "로그인됨",
|
||||
vaultLocked: "설정 잠김",
|
||||
vaultUnlocked: "설정 잠금 해제됨",
|
||||
vaultCreate: "설정 저장",
|
||||
vaultUnlock: "설정 잠금 해제",
|
||||
vaultLock: "잠금",
|
||||
vaultLockTooltip: "설정 잠금 (로그아웃)",
|
||||
vaultPassword: "비밀번호",
|
||||
vaultPasswordPlaceholder: "비밀번호를 선택하세요...",
|
||||
vaultConfirmPassword: "비밀번호 확인",
|
||||
vaultConfirmPlaceholder: "비밀번호를 확인하세요...",
|
||||
vaultWrongPassword: "비밀번호가 올바르지 않습니다. 다시 시도하세요.",
|
||||
vaultPasswordMismatch: "비밀번호가 일치하지 않습니다.",
|
||||
vaultPasswordTooShort: "비밀번호는 최소 8자 이상이어야 합니다.",
|
||||
vaultCreated: "설정이 저장되었습니다!",
|
||||
vaultUnlockedMsg: "다시 오신 것을 환영합니다!",
|
||||
vaultLockedMsg: "설정이 잠겼습니다.",
|
||||
vaultRequired: "설정에 접근하려면 비밀번호를 입력하세요.",
|
||||
vaultWelcome: "설정(모델, 음성, API 키)과 채팅 대화는 비밀번호로 암호화됩니다. 이 기기에서 프라이버시를 보호합니다.",
|
||||
vaultLine1: "설정과 대화는 비밀번호로 암호화됩니다.",
|
||||
vaultLine2: "이 기기에서 프라이버시를 보호합니다.",
|
||||
vaultWelcomeBack: "다시 오신 것을 환영합니다! 저장된 설정과 대화에 접근하려면 비밀번호를 입력하세요.",
|
||||
vaultCreateInfo: "설정과 대화를 보호할 비밀번호를 선택하세요. 환경설정, API 키, 채팅 기록이 암호화되어 로컬에 저장됩니다.",
|
||||
vaultSessionInfo: "설정을 잠글 때까지 로그인 상태가 유지됩니다.",
|
||||
vaultChangePassword: "비밀번호 변경",
|
||||
vaultDeleteVault: "설정 삭제",
|
||||
vaultDeleteConfirm: "정말로 삭제하시겠습니까? 이 기기에서 저장된 모든 설정이 제거됩니다.",
|
||||
vaultCurrentPassword: "현재 비밀번호",
|
||||
vaultNewPassword: "새 비밀번호",
|
||||
vaultPasswordChanged: "비밀번호가 변경되었습니다!",
|
||||
vaultDeleted: "설정이 삭제되었습니다.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const mr = {
|
|||
remoteUrlInfo: "आणण्यासाठी आणि भाषांतर करण्यासाठी URL प्रविष्ट करा:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 आणा आणि भाषांतर करा",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "कोड चालविण्यासाठी unsandbox.com API कळा वापरा.",
|
||||
unsandboxPublicKey: "सार्वजनिक कळ (unsb-pk-...)",
|
||||
unsandboxSecretKey: "गुप्त कळ (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "लॉग इन",
|
||||
vaultLocked: "सेटिंग्ज लॉक",
|
||||
vaultUnlocked: "सेटिंग्ज अनलॉक",
|
||||
vaultCreate: "सेटिंग्ज जतन करा",
|
||||
vaultUnlock: "सेटिंग्ज अनलॉक करा",
|
||||
vaultLock: "लॉक करा",
|
||||
vaultLockTooltip: "तुमच्या सेटिंग्ज लॉक करा (लॉग आउट)",
|
||||
vaultPassword: "पासवर्ड",
|
||||
vaultPasswordPlaceholder: "पासवर्ड निवडा...",
|
||||
vaultConfirmPassword: "पासवर्डची पुष्टी करा",
|
||||
vaultConfirmPlaceholder: "तुमच्या पासवर्डची पुष्टी करा...",
|
||||
vaultWrongPassword: "तो पासवर्ड काम करत नाही. कृपया पुन्हा प्रयत्न करा.",
|
||||
vaultPasswordMismatch: "पासवर्ड जुळत नाहीत.",
|
||||
vaultPasswordTooShort: "पासवर्डमध्ये किमान 8 अक्षरे असणे आवश्यक आहे.",
|
||||
vaultCreated: "सेटिंग्ज जतन झाल्या!",
|
||||
vaultUnlockedMsg: "पुन्हा स्वागत आहे!",
|
||||
vaultLockedMsg: "सेटिंग्ज लॉक झाल्या.",
|
||||
vaultRequired: "सेटिंग्ज अॅक्सेस करण्यासाठी तुमचा पासवर्ड प्रविष्ट करा.",
|
||||
vaultWelcome: "तुमच्या सेटिंग्ज (मॉडेल, आवाज, API कळा) आणि चॅट संभाषणे तुम्ही निवडलेल्या पासवर्डच्या मागे एन्क्रिप्ट केलेली आहेत. हे त्यांना या उपकरणावर खाजगी ठेवते.",
|
||||
vaultLine1: "तुमच्या सेटिंग्ज आणि संभाषणे पासवर्डच्या मागे एन्क्रिप्ट केलेली आहेत.",
|
||||
vaultLine2: "हे त्यांना या उपकरणावर खाजगी ठेवते.",
|
||||
vaultWelcomeBack: "पुन्हा स्वागत आहे! तुमच्या जतन केलेल्या सेटिंग्ज आणि संभाषणांमध्ये प्रवेश करण्यासाठी तुमचा पासवर्ड प्रविष्ट करा.",
|
||||
vaultCreateInfo: "तुमच्या सेटिंग्ज आणि संभाषणांचे रक्षण करण्यासाठी पासवर्ड निवडा. तुमच्या प्राधान्ये, API कळा आणि चॅट इतिहास एन्क्रिप्ट करून स्थानिक पातळीवर संग्रहित केले जातील.",
|
||||
vaultSessionInfo: "तुम्ही तुमच्या सेटिंग्ज लॉक करेपर्यंत लॉग इन राहाल.",
|
||||
vaultChangePassword: "पासवर्ड बदला",
|
||||
vaultDeleteVault: "सेटिंग्ज हटवा",
|
||||
vaultDeleteConfirm: "तुम्हाला खात्री आहे का? हे या उपकरणावरून तुमच्या सर्व जतन केलेल्या सेटिंग्ज काढून टाकेल.",
|
||||
vaultCurrentPassword: "सध्याचा पासवर्ड",
|
||||
vaultNewPassword: "नवीन पासवर्ड",
|
||||
vaultPasswordChanged: "पासवर्ड बदलला!",
|
||||
vaultDeleted: "सेटिंग्ज हटवल्या.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const nl = {
|
|||
pleaseEnterTranslateText: "Voer tekst in om te vertalen!",
|
||||
aiModalNotAvailable: "AI modal niet beschikbaar in deze context",
|
||||
useCustomAPI: "Gebruik een aangepast openai-compatibel endpoint.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Gebruik unsandbox.com API-sleutels voor code-uitvoering.",
|
||||
unsandboxPublicKey: "Publieke Sleutel (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Geheime Sleutel (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Ingelogd",
|
||||
vaultLocked: "Instellingen Vergrendeld",
|
||||
vaultUnlocked: "Instellingen Ontgrendeld",
|
||||
vaultCreate: "Instellingen Opslaan",
|
||||
vaultUnlock: "Instellingen Ontgrendelen",
|
||||
vaultLock: "Vergrendelen",
|
||||
vaultLockTooltip: "Vergrendel je instellingen (uitloggen)",
|
||||
vaultPassword: "Wachtwoord",
|
||||
vaultPasswordPlaceholder: "Kies een wachtwoord...",
|
||||
vaultConfirmPassword: "Bevestig wachtwoord",
|
||||
vaultConfirmPlaceholder: "Bevestig je wachtwoord...",
|
||||
vaultWrongPassword: "Dat wachtwoord werkte niet. Probeer het opnieuw.",
|
||||
vaultPasswordMismatch: "Wachtwoorden komen niet overeen.",
|
||||
vaultPasswordTooShort: "Wachtwoord moet minimaal 8 tekens bevatten.",
|
||||
vaultCreated: "Instellingen opgeslagen!",
|
||||
vaultUnlockedMsg: "Welkom terug!",
|
||||
vaultLockedMsg: "Instellingen vergrendeld.",
|
||||
vaultRequired: "Voer je wachtwoord in om toegang te krijgen tot instellingen.",
|
||||
vaultWelcome: "Je instellingen (model, stem, API-sleutels) en chatgesprekken worden versleuteld achter een wachtwoord naar keuze. Dit houdt ze privé op dit apparaat.",
|
||||
vaultLine1: "Je instellingen en gesprekken worden versleuteld achter een wachtwoord.",
|
||||
vaultLine2: "Dit houdt ze privé op dit apparaat.",
|
||||
vaultWelcomeBack: "Welkom terug! Voer je wachtwoord in om toegang te krijgen tot je opgeslagen instellingen en gesprekken.",
|
||||
vaultCreateInfo: "Kies een wachtwoord om je instellingen en gesprekken te beschermen. Je voorkeuren, API-sleutels en chatgeschiedenis worden versleuteld en lokaal opgeslagen.",
|
||||
vaultSessionInfo: "Je blijft ingelogd totdat je je instellingen vergrendelt.",
|
||||
vaultChangePassword: "Wachtwoord Wijzigen",
|
||||
vaultDeleteVault: "Instellingen Verwijderen",
|
||||
vaultDeleteConfirm: "Weet je het zeker? Dit verwijdert al je opgeslagen instellingen van dit apparaat.",
|
||||
vaultCurrentPassword: "Huidig wachtwoord",
|
||||
vaultNewPassword: "Nieuw wachtwoord",
|
||||
vaultPasswordChanged: "Wachtwoord gewijzigd!",
|
||||
vaultDeleted: "Instellingen verwijderd.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const pl = {
|
|||
pleaseEnterTranslateText: "Wprowadź tekst do przetłumaczenia!",
|
||||
aiModalNotAvailable: "Modal AI niedostępny w tym kontekście",
|
||||
useCustomAPI: "Użyj niestandardowego endpointu kompatybilnego z openai.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Użyj kluczy API unsandbox.com do wykonywania kodu.",
|
||||
unsandboxPublicKey: "Klucz Publiczny (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Klucz Tajny (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Zalogowano",
|
||||
vaultLocked: "Ustawienia Zablokowane",
|
||||
vaultUnlocked: "Ustawienia Odblokowane",
|
||||
vaultCreate: "Zapisz Ustawienia",
|
||||
vaultUnlock: "Odblokuj Ustawienia",
|
||||
vaultLock: "Zablokuj",
|
||||
vaultLockTooltip: "Zablokuj swoje ustawienia (wyloguj się)",
|
||||
vaultPassword: "Hasło",
|
||||
vaultPasswordPlaceholder: "Wybierz hasło...",
|
||||
vaultConfirmPassword: "Potwierdź hasło",
|
||||
vaultConfirmPlaceholder: "Potwierdź swoje hasło...",
|
||||
vaultWrongPassword: "To hasło nie zadziałało. Spróbuj ponownie.",
|
||||
vaultPasswordMismatch: "Hasła nie pasują do siebie.",
|
||||
vaultPasswordTooShort: "Hasło musi mieć co najmniej 8 znaków.",
|
||||
vaultCreated: "Ustawienia zapisane!",
|
||||
vaultUnlockedMsg: "Witaj ponownie!",
|
||||
vaultLockedMsg: "Ustawienia zablokowane.",
|
||||
vaultRequired: "Wprowadź hasło, aby uzyskać dostęp do ustawień.",
|
||||
vaultWelcome: "Twoje ustawienia (model, głos, klucze API) i rozmowy na czacie są szyfrowane za pomocą wybranego przez Ciebie hasła. Dzięki temu pozostają prywatne na tym urządzeniu.",
|
||||
vaultLine1: "Twoje ustawienia i rozmowy są szyfrowane za pomocą hasła.",
|
||||
vaultLine2: "Dzięki temu pozostają prywatne na tym urządzeniu.",
|
||||
vaultWelcomeBack: "Witaj ponownie! Wprowadź hasło, aby uzyskać dostęp do zapisanych ustawień i rozmów.",
|
||||
vaultCreateInfo: "Wybierz hasło, aby chronić swoje ustawienia i rozmowy. Twoje preferencje, klucze API i historia czatu zostaną zaszyfrowane i zapisane lokalnie.",
|
||||
vaultSessionInfo: "Pozostaniesz zalogowany, dopóki nie zablokujesz swoich ustawień.",
|
||||
vaultChangePassword: "Zmień Hasło",
|
||||
vaultDeleteVault: "Usuń Ustawienia",
|
||||
vaultDeleteConfirm: "Czy na pewno? Spowoduje to usunięcie wszystkich zapisanych ustawień z tego urządzenia.",
|
||||
vaultCurrentPassword: "Bieżące hasło",
|
||||
vaultNewPassword: "Nowe hasło",
|
||||
vaultPasswordChanged: "Hasło zmienione!",
|
||||
vaultDeleted: "Ustawienia usunięte.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const pt = {
|
|||
remoteUrlInfo: "Digite uma URL para buscar e traduzir:",
|
||||
remoteUrlPlaceholder: "https://exemplo.com",
|
||||
fetchAndTranslate: "🌐 Buscar e Traduzir",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Usar chaves API do unsandbox.com para execução de código.",
|
||||
unsandboxPublicKey: "Chave pública (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Chave secreta (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Conectado",
|
||||
vaultLocked: "Configurações bloqueadas",
|
||||
vaultUnlocked: "Configurações desbloqueadas",
|
||||
vaultCreate: "Salvar configurações",
|
||||
vaultUnlock: "Desbloquear configurações",
|
||||
vaultLock: "Bloquear",
|
||||
vaultLockTooltip: "Bloquear suas configurações (sair)",
|
||||
vaultPassword: "Senha",
|
||||
vaultPasswordPlaceholder: "Escolha uma senha...",
|
||||
vaultConfirmPassword: "Confirmar senha",
|
||||
vaultConfirmPlaceholder: "Confirme sua senha...",
|
||||
vaultWrongPassword: "Essa senha não funcionou. Por favor, tente novamente.",
|
||||
vaultPasswordMismatch: "As senhas não coincidem.",
|
||||
vaultPasswordTooShort: "A senha precisa de pelo menos 8 caracteres.",
|
||||
vaultCreated: "Configurações salvas!",
|
||||
vaultUnlockedMsg: "Bem-vindo de volta!",
|
||||
vaultLockedMsg: "Configurações bloqueadas.",
|
||||
vaultRequired: "Digite sua senha para acessar as configurações.",
|
||||
vaultWelcome: "Suas configurações (modelo, voz, chaves API) e conversas do chat são criptografadas com uma senha de sua escolha. Isso as mantém privadas neste dispositivo.",
|
||||
vaultLine1: "Suas configurações e conversas são criptografadas com uma senha.",
|
||||
vaultLine2: "Isso as mantém privadas neste dispositivo.",
|
||||
vaultWelcomeBack: "Bem-vindo de volta! Digite sua senha para acessar suas configurações e conversas salvas.",
|
||||
vaultCreateInfo: "Escolha uma senha para proteger suas configurações e conversas. Suas preferências, chaves API e histórico de chat serão criptografados e armazenados localmente.",
|
||||
vaultSessionInfo: "Você permanecerá conectado até bloquear suas configurações.",
|
||||
vaultChangePassword: "Alterar senha",
|
||||
vaultDeleteVault: "Excluir configurações",
|
||||
vaultDeleteConfirm: "Tem certeza? Isso removerá todas as suas configurações salvas deste dispositivo.",
|
||||
vaultCurrentPassword: "Senha atual",
|
||||
vaultNewPassword: "Nova senha",
|
||||
vaultPasswordChanged: "Senha alterada!",
|
||||
vaultDeleted: "Configurações excluídas.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const ru = {
|
|||
remoteUrlInfo: "Введите URL для загрузки и перевода:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 Загрузить и Перевести",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Использовать API-ключи unsandbox.com для выполнения кода.",
|
||||
unsandboxPublicKey: "Публичный ключ (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Секретный ключ (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Выполнен вход",
|
||||
vaultLocked: "Настройки заблокированы",
|
||||
vaultUnlocked: "Настройки разблокированы",
|
||||
vaultCreate: "Сохранить настройки",
|
||||
vaultUnlock: "Разблокировать настройки",
|
||||
vaultLock: "Заблокировать",
|
||||
vaultLockTooltip: "Заблокировать настройки (выйти)",
|
||||
vaultPassword: "Пароль",
|
||||
vaultPasswordPlaceholder: "Выберите пароль...",
|
||||
vaultConfirmPassword: "Подтвердите пароль",
|
||||
vaultConfirmPlaceholder: "Подтвердите ваш пароль...",
|
||||
vaultWrongPassword: "Этот пароль не подошёл. Попробуйте ещё раз.",
|
||||
vaultPasswordMismatch: "Пароли не совпадают.",
|
||||
vaultPasswordTooShort: "Пароль должен содержать не менее 8 символов.",
|
||||
vaultCreated: "Настройки сохранены!",
|
||||
vaultUnlockedMsg: "С возвращением!",
|
||||
vaultLockedMsg: "Настройки заблокированы.",
|
||||
vaultRequired: "Введите пароль для доступа к настройкам.",
|
||||
vaultWelcome: "Ваши настройки (модель, голос, ключи API) и переписки в чате зашифрованы паролем на ваш выбор. Это сохраняет их конфиденциальность на данном устройстве.",
|
||||
vaultLine1: "Ваши настройки и переписки зашифрованы паролем.",
|
||||
vaultLine2: "Это сохраняет их конфиденциальность на данном устройстве.",
|
||||
vaultWelcomeBack: "С возвращением! Введите пароль для доступа к сохранённым настройкам и перепискам.",
|
||||
vaultCreateInfo: "Выберите пароль для защиты ваших настроек и переписок. Ваши предпочтения, ключи API и история чатов будут зашифрованы и сохранены локально.",
|
||||
vaultSessionInfo: "Вы останетесь в системе, пока не заблокируете настройки.",
|
||||
vaultChangePassword: "Изменить пароль",
|
||||
vaultDeleteVault: "Удалить настройки",
|
||||
vaultDeleteConfirm: "Вы уверены? Это удалит все ваши сохранённые настройки с данного устройства.",
|
||||
vaultCurrentPassword: "Текущий пароль",
|
||||
vaultNewPassword: "Новый пароль",
|
||||
vaultPasswordChanged: "Пароль изменён!",
|
||||
vaultDeleted: "Настройки удалены.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const sv = {
|
|||
pleaseEnterTranslateText: "Vänligen ange text att översätta!",
|
||||
aiModalNotAvailable: "AI-modal inte tillgänglig i detta sammanhang",
|
||||
useCustomAPI: "Använd en anpassad openai-kompatibel endpoint.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Använd unsandbox.com API-nycklar för kodexekvering.",
|
||||
unsandboxPublicKey: "Publik Nyckel (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Hemlig Nyckel (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Inloggad",
|
||||
vaultLocked: "Inställningar Låsta",
|
||||
vaultUnlocked: "Inställningar Upplåsta",
|
||||
vaultCreate: "Spara Inställningar",
|
||||
vaultUnlock: "Lås Upp Inställningar",
|
||||
vaultLock: "Lås",
|
||||
vaultLockTooltip: "Lås dina inställningar (logga ut)",
|
||||
vaultPassword: "Lösenord",
|
||||
vaultPasswordPlaceholder: "Välj ett lösenord...",
|
||||
vaultConfirmPassword: "Bekräfta lösenord",
|
||||
vaultConfirmPlaceholder: "Bekräfta ditt lösenord...",
|
||||
vaultWrongPassword: "Det lösenordet fungerade inte. Försök igen.",
|
||||
vaultPasswordMismatch: "Lösenorden matchar inte.",
|
||||
vaultPasswordTooShort: "Lösenordet behöver minst 8 tecken.",
|
||||
vaultCreated: "Inställningar sparade!",
|
||||
vaultUnlockedMsg: "Välkommen tillbaka!",
|
||||
vaultLockedMsg: "Inställningar låsta.",
|
||||
vaultRequired: "Ange ditt lösenord för att komma åt inställningar.",
|
||||
vaultWelcome: "Dina inställningar (modell, röst, API-nycklar) och chattkonversationer krypteras bakom ett lösenord du väljer. Detta håller dem privata på denna enhet.",
|
||||
vaultLine1: "Dina inställningar och konversationer krypteras bakom ett lösenord.",
|
||||
vaultLine2: "Detta håller dem privata på denna enhet.",
|
||||
vaultWelcomeBack: "Välkommen tillbaka! Ange ditt lösenord för att komma åt dina sparade inställningar och konversationer.",
|
||||
vaultCreateInfo: "Välj ett lösenord för att skydda dina inställningar och konversationer. Dina preferenser, API-nycklar och chatthistorik krypteras och lagras lokalt.",
|
||||
vaultSessionInfo: "Du förblir inloggad tills du låser dina inställningar.",
|
||||
vaultChangePassword: "Byt Lösenord",
|
||||
vaultDeleteVault: "Radera Inställningar",
|
||||
vaultDeleteConfirm: "Är du säker? Detta tar bort alla dina sparade inställningar från denna enhet.",
|
||||
vaultCurrentPassword: "Nuvarande lösenord",
|
||||
vaultNewPassword: "Nytt lösenord",
|
||||
vaultPasswordChanged: "Lösenord ändrat!",
|
||||
vaultDeleted: "Inställningar raderade.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const sw = {
|
|||
remoteUrlInfo: "Ingiza URL ya kuleta na kutafsiri:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 Leta na Tafsiri",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Tumia funguo za API za unsandbox.com kwa utekelezaji wa msimbo.",
|
||||
unsandboxPublicKey: "Ufunguo wa Umma (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Ufunguo wa Siri (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Umeingia",
|
||||
vaultLocked: "Mipangilio Imefungwa",
|
||||
vaultUnlocked: "Mipangilio Imefunguliwa",
|
||||
vaultCreate: "Hifadhi Mipangilio",
|
||||
vaultUnlock: "Fungua Mipangilio",
|
||||
vaultLock: "Funga",
|
||||
vaultLockTooltip: "Funga mipangilio yako (ondoka)",
|
||||
vaultPassword: "Nywila",
|
||||
vaultPasswordPlaceholder: "Chagua nywila...",
|
||||
vaultConfirmPassword: "Thibitisha nywila",
|
||||
vaultConfirmPlaceholder: "Thibitisha nywila yako...",
|
||||
vaultWrongPassword: "Nywila hiyo haikufanya kazi. Tafadhali jaribu tena.",
|
||||
vaultPasswordMismatch: "Nywila hazifanani.",
|
||||
vaultPasswordTooShort: "Nywila inahitaji angalau herufi 8.",
|
||||
vaultCreated: "Mipangilio imehifadhiwa!",
|
||||
vaultUnlockedMsg: "Karibu tena!",
|
||||
vaultLockedMsg: "Mipangilio imefungwa.",
|
||||
vaultRequired: "Ingiza nywila yako ili kufikia mipangilio.",
|
||||
vaultWelcome: "Mipangilio yako (mfano, sauti, funguo za API) na mazungumzo ya soga yamefichwa nyuma ya nywila ya chaguo lako. Hii inayaweka faragha kwenye kifaa hiki.",
|
||||
vaultLine1: "Mipangilio na mazungumzo yako yamefichwa nyuma ya nywila.",
|
||||
vaultLine2: "Hii inayaweka faragha kwenye kifaa hiki.",
|
||||
vaultWelcomeBack: "Karibu tena! Ingiza nywila yako ili kufikia mipangilio na mazungumzo yako yaliyohifadhiwa.",
|
||||
vaultCreateInfo: "Chagua nywila ili kulinda mipangilio na mazungumzo yako. Mapendeleo yako, funguo za API, na historia ya soga zitafichwa na kuhifadhiwa ndani ya kifaa.",
|
||||
vaultSessionInfo: "Utabaki umeingia hadi ufunge mipangilio yako.",
|
||||
vaultChangePassword: "Badilisha Nywila",
|
||||
vaultDeleteVault: "Futa Mipangilio",
|
||||
vaultDeleteConfirm: "Una uhakika? Hii itaondoa mipangilio yako yote iliyohifadhiwa kutoka kwenye kifaa hiki.",
|
||||
vaultCurrentPassword: "Nywila ya sasa",
|
||||
vaultNewPassword: "Nywila mpya",
|
||||
vaultPasswordChanged: "Nywila imebadilishwa!",
|
||||
vaultDeleted: "Mipangilio imefutwa.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const te = {
|
|||
remoteUrlInfo: "తీసుకురావడానికి మరియు అనువదించడానికి URL ని నమోదు చేయండి:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 తీసుకురండి & అనువదించండి",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "కోడ్ ఎగ్జిక్యూషన్ కోసం unsandbox.com API కీలను ఉపయోగించండి.",
|
||||
unsandboxPublicKey: "పబ్లిక్ కీ (unsb-pk-...)",
|
||||
unsandboxSecretKey: "సీక్రెట్ కీ (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "లాగిన్ అయ్యారు",
|
||||
vaultLocked: "సెట్టింగ్లు లాక్ చేయబడ్డాయి",
|
||||
vaultUnlocked: "సెట్టింగ్లు అన్లాక్ చేయబడ్డాయి",
|
||||
vaultCreate: "సెట్టింగ్లు సేవ్ చేయండి",
|
||||
vaultUnlock: "సెట్టింగ్లు అన్లాక్ చేయండి",
|
||||
vaultLock: "లాక్ చేయండి",
|
||||
vaultLockTooltip: "మీ సెట్టింగ్లను లాక్ చేయండి (లాగ్ అవుట్)",
|
||||
vaultPassword: "పాస్వర్డ్",
|
||||
vaultPasswordPlaceholder: "పాస్వర్డ్ ఎంచుకోండి...",
|
||||
vaultConfirmPassword: "పాస్వర్డ్ నిర్ధారించండి",
|
||||
vaultConfirmPlaceholder: "మీ పాస్వర్డ్ నిర్ధారించండి...",
|
||||
vaultWrongPassword: "ఆ పాస్వర్డ్ పని చేయలేదు. దయచేసి మళ్ళీ ప్రయత్నించండి.",
|
||||
vaultPasswordMismatch: "పాస్వర్డ్లు సరిపోలడం లేదు.",
|
||||
vaultPasswordTooShort: "పాస్వర్డ్లో కనీసం 8 అక్షరాలు ఉండాలి.",
|
||||
vaultCreated: "సెట్టింగ్లు సేవ్ అయ్యాయి!",
|
||||
vaultUnlockedMsg: "తిరిగి స్వాగతం!",
|
||||
vaultLockedMsg: "సెట్టింగ్లు లాక్ చేయబడ్డాయి.",
|
||||
vaultRequired: "సెట్టింగ్లను యాక్సెస్ చేయడానికి మీ పాస్వర్డ్ నమోదు చేయండి.",
|
||||
vaultWelcome: "మీ సెట్టింగ్లు (మోడల్, వాయిస్, API కీలు) మరియు చాట్ సంభాషణలు మీరు ఎంచుకున్న పాస్వర్డ్ వెనుక ఎన్క్రిప్ట్ చేయబడ్డాయి. ఇది వాటిని ఈ పరికరంలో ప్రైవేట్గా ఉంచుతుంది.",
|
||||
vaultLine1: "మీ సెట్టింగ్లు మరియు సంభాషణలు పాస్వర్డ్ వెనుక ఎన్క్రిప్ట్ చేయబడ్డాయి.",
|
||||
vaultLine2: "ఇది వాటిని ఈ పరికరంలో ప్రైవేట్గా ఉంచుతుంది.",
|
||||
vaultWelcomeBack: "తిరిగి స్వాగతం! మీ సేవ్ చేసిన సెట్టింగ్లు మరియు సంభాషణలను యాక్సెస్ చేయడానికి మీ పాస్వర్డ్ నమోదు చేయండి.",
|
||||
vaultCreateInfo: "మీ సెట్టింగ్లు మరియు సంభాషణలను రక్షించడానికి పాస్వర్డ్ ఎంచుకోండి. మీ ప్రాధాన్యతలు, API కీలు మరియు చాట్ చరిత్ర ఎన్క్రిప్ట్ చేయబడి స్థానికంగా నిల్వ చేయబడతాయి.",
|
||||
vaultSessionInfo: "మీరు మీ సెట్టింగ్లను లాక్ చేసే వరకు లాగిన్ అయి ఉంటారు.",
|
||||
vaultChangePassword: "పాస్వర్డ్ మార్చండి",
|
||||
vaultDeleteVault: "సెట్టింగ్లు తొలగించండి",
|
||||
vaultDeleteConfirm: "మీకు ఖచ్చితంగా తెలుసా? ఇది ఈ పరికరం నుండి మీ సేవ్ చేసిన సెట్టింగ్లన్నింటినీ తొలగిస్తుంది.",
|
||||
vaultCurrentPassword: "ప్రస్తుత పాస్వర్డ్",
|
||||
vaultNewPassword: "కొత్త పాస్వర్డ్",
|
||||
vaultPasswordChanged: "పాస్వర్డ్ మార్చబడింది!",
|
||||
vaultDeleted: "సెట్టింగ్లు తొలగించబడ్డాయి.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const th = {
|
|||
pleaseEnterTranslateText: "กรุณาป้อนข้อความเพื่อแปล!",
|
||||
aiModalNotAvailable: "Modal AI ไม่พร้อมใช้งานในบริบทนี้",
|
||||
useCustomAPI: "ใช้ endpoint ที่กำหนดเองที่เข้ากันได้กับ openai",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "ใช้คีย์ API ของ unsandbox.com สำหรับการรันโค้ด",
|
||||
unsandboxPublicKey: "คีย์สาธารณะ (unsb-pk-...)",
|
||||
unsandboxSecretKey: "คีย์ลับ (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "เข้าสู่ระบบแล้ว",
|
||||
vaultLocked: "การตั้งค่าถูกล็อก",
|
||||
vaultUnlocked: "การตั้งค่าถูกปลดล็อก",
|
||||
vaultCreate: "บันทึกการตั้งค่า",
|
||||
vaultUnlock: "ปลดล็อกการตั้งค่า",
|
||||
vaultLock: "ล็อก",
|
||||
vaultLockTooltip: "ล็อกการตั้งค่าของคุณ (ออกจากระบบ)",
|
||||
vaultPassword: "รหัสผ่าน",
|
||||
vaultPasswordPlaceholder: "เลือกรหัสผ่าน...",
|
||||
vaultConfirmPassword: "ยืนยันรหัสผ่าน",
|
||||
vaultConfirmPlaceholder: "ยืนยันรหัสผ่านของคุณ...",
|
||||
vaultWrongPassword: "รหัสผ่านนั้นไม่ถูกต้อง กรุณาลองอีกครั้ง",
|
||||
vaultPasswordMismatch: "รหัสผ่านไม่ตรงกัน",
|
||||
vaultPasswordTooShort: "รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร",
|
||||
vaultCreated: "บันทึกการตั้งค่าแล้ว!",
|
||||
vaultUnlockedMsg: "ยินดีต้อนรับกลับ!",
|
||||
vaultLockedMsg: "การตั้งค่าถูกล็อกแล้ว",
|
||||
vaultRequired: "ป้อนรหัสผ่านของคุณเพื่อเข้าถึงการตั้งค่า",
|
||||
vaultWelcome: "การตั้งค่าของคุณ (โมเดล, เสียง, คีย์ API) และการสนทนาในแชทถูกเข้ารหัสด้วยรหัสผ่านที่คุณเลือก ซึ่งจะรักษาความเป็นส่วนตัวบนอุปกรณ์นี้",
|
||||
vaultLine1: "การตั้งค่าและการสนทนาของคุณถูกเข้ารหัสด้วยรหัสผ่าน",
|
||||
vaultLine2: "ซึ่งจะรักษาความเป็นส่วนตัวบนอุปกรณ์นี้",
|
||||
vaultWelcomeBack: "ยินดีต้อนรับกลับ! ป้อนรหัสผ่านของคุณเพื่อเข้าถึงการตั้งค่าและการสนทนาที่บันทึกไว้",
|
||||
vaultCreateInfo: "เลือกรหัสผ่านเพื่อปกป้องการตั้งค่าและการสนทนาของคุณ การตั้งค่า, คีย์ API และประวัติแชทจะถูกเข้ารหัสและจัดเก็บในเครื่อง",
|
||||
vaultSessionInfo: "คุณจะยังคงเข้าสู่ระบบจนกว่าจะล็อกการตั้งค่า",
|
||||
vaultChangePassword: "เปลี่ยนรหัสผ่าน",
|
||||
vaultDeleteVault: "ลบการตั้งค่า",
|
||||
vaultDeleteConfirm: "คุณแน่ใจหรือไม่? การดำเนินการนี้จะลบการตั้งค่าทั้งหมดที่บันทึกไว้จากอุปกรณ์นี้",
|
||||
vaultCurrentPassword: "รหัสผ่านปัจจุบัน",
|
||||
vaultNewPassword: "รหัสผ่านใหม่",
|
||||
vaultPasswordChanged: "เปลี่ยนรหัสผ่านแล้ว!",
|
||||
vaultDeleted: "ลบการตั้งค่าแล้ว",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const tr = {
|
|||
remoteUrlInfo: "Getirmek ve çevirmek için bir URL girin:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 Getir ve Çevir",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Kod yürütmek için unsandbox.com API anahtarlarını kullanın.",
|
||||
unsandboxPublicKey: "Genel Anahtar (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Gizli Anahtar (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Giriş yapıldı",
|
||||
vaultLocked: "Ayarlar Kilitli",
|
||||
vaultUnlocked: "Ayarlar Kilitsiz",
|
||||
vaultCreate: "Ayarları Kaydet",
|
||||
vaultUnlock: "Ayarları Aç",
|
||||
vaultLock: "Kilitle",
|
||||
vaultLockTooltip: "Ayarlarınızı kilitleyin (çıkış yapın)",
|
||||
vaultPassword: "Şifre",
|
||||
vaultPasswordPlaceholder: "Bir şifre seçin...",
|
||||
vaultConfirmPassword: "Şifreyi onayla",
|
||||
vaultConfirmPlaceholder: "Şifrenizi onaylayın...",
|
||||
vaultWrongPassword: "Bu şifre çalışmadı. Lütfen tekrar deneyin.",
|
||||
vaultPasswordMismatch: "Şifreler eşleşmiyor.",
|
||||
vaultPasswordTooShort: "Şifre en az 8 karakter olmalıdır.",
|
||||
vaultCreated: "Ayarlar kaydedildi!",
|
||||
vaultUnlockedMsg: "Tekrar hoş geldiniz!",
|
||||
vaultLockedMsg: "Ayarlar kilitlendi.",
|
||||
vaultRequired: "Ayarlara erişmek için şifrenizi girin.",
|
||||
vaultWelcome: "Ayarlarınız (model, ses, API anahtarları) ve sohbet konuşmalarınız seçtiğiniz bir şifre ile şifrelenir. Bu, onları bu cihazda gizli tutar.",
|
||||
vaultLine1: "Ayarlarınız ve konuşmalarınız bir şifre ile şifrelenir.",
|
||||
vaultLine2: "Bu, onları bu cihazda gizli tutar.",
|
||||
vaultWelcomeBack: "Tekrar hoş geldiniz! Kayıtlı ayarlarınıza ve konuşmalarınıza erişmek için şifrenizi girin.",
|
||||
vaultCreateInfo: "Ayarlarınızı ve konuşmalarınızı korumak için bir şifre seçin. Tercihleriniz, API anahtarlarınız ve sohbet geçmişiniz şifrelenerek yerel olarak saklanacaktır.",
|
||||
vaultSessionInfo: "Ayarlarınızı kilitleyene kadar oturumunuz açık kalacaktır.",
|
||||
vaultChangePassword: "Şifre Değiştir",
|
||||
vaultDeleteVault: "Ayarları Sil",
|
||||
vaultDeleteConfirm: "Emin misiniz? Bu, tüm kayıtlı ayarlarınızı bu cihazdan kaldıracaktır.",
|
||||
vaultCurrentPassword: "Mevcut şifre",
|
||||
vaultNewPassword: "Yeni şifre",
|
||||
vaultPasswordChanged: "Şifre değiştirildi!",
|
||||
vaultDeleted: "Ayarlar silindi.",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const uk = {
|
|||
pleaseEnterTranslateText: "Будь ласка, введіть текст для перекладу!",
|
||||
aiModalNotAvailable: "Модальне вікно ШІ недоступне в цьому контексті",
|
||||
useCustomAPI: "Використовувати власний openai-сумісний endpoint.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Використовуйте API-ключі unsandbox.com для виконання коду.",
|
||||
unsandboxPublicKey: "Публічний Ключ (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Секретний Ключ (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Увійшли",
|
||||
vaultLocked: "Налаштування Заблоковано",
|
||||
vaultUnlocked: "Налаштування Розблоковано",
|
||||
vaultCreate: "Зберегти Налаштування",
|
||||
vaultUnlock: "Розблокувати Налаштування",
|
||||
vaultLock: "Заблокувати",
|
||||
vaultLockTooltip: "Заблокувати налаштування (вийти)",
|
||||
vaultPassword: "Пароль",
|
||||
vaultPasswordPlaceholder: "Оберіть пароль...",
|
||||
vaultConfirmPassword: "Підтвердіть пароль",
|
||||
vaultConfirmPlaceholder: "Підтвердіть ваш пароль...",
|
||||
vaultWrongPassword: "Цей пароль не підійшов. Спробуйте ще раз.",
|
||||
vaultPasswordMismatch: "Паролі не збігаються.",
|
||||
vaultPasswordTooShort: "Пароль повинен містити щонайменше 8 символів.",
|
||||
vaultCreated: "Налаштування збережено!",
|
||||
vaultUnlockedMsg: "З поверненням!",
|
||||
vaultLockedMsg: "Налаштування заблоковано.",
|
||||
vaultRequired: "Введіть пароль для доступу до налаштувань.",
|
||||
vaultWelcome: "Ваші налаштування (модель, голос, API-ключі) та розмови в чаті зашифровані за допомогою обраного вами пароля. Це забезпечує їхню конфіденційність на цьому пристрої.",
|
||||
vaultLine1: "Ваші налаштування та розмови зашифровані за допомогою пароля.",
|
||||
vaultLine2: "Це забезпечує їхню конфіденційність на цьому пристрої.",
|
||||
vaultWelcomeBack: "З поверненням! Введіть пароль для доступу до збережених налаштувань та розмов.",
|
||||
vaultCreateInfo: "Оберіть пароль для захисту налаштувань та розмов. Ваші вподобання, API-ключі та історія чату будуть зашифровані та збережені локально.",
|
||||
vaultSessionInfo: "Ви залишитеся увійденими, доки не заблокуєте свої налаштування.",
|
||||
vaultChangePassword: "Змінити Пароль",
|
||||
vaultDeleteVault: "Видалити Налаштування",
|
||||
vaultDeleteConfirm: "Ви впевнені? Це видалить усі ваші збережені налаштування з цього пристрою.",
|
||||
vaultCurrentPassword: "Поточний пароль",
|
||||
vaultNewPassword: "Новий пароль",
|
||||
vaultPasswordChanged: "Пароль змінено!",
|
||||
vaultDeleted: "Налаштування видалено.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -115,4 +115,42 @@ export const ur = {
|
|||
remoteUrlInfo: "لانے اور ترجمہ کرنے کے لیے URL داخل کریں:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 لائیں اور ترجمہ کریں",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "کوڈ چلانے کے لیے unsandbox.com API کلیدیں استعمال کریں۔",
|
||||
unsandboxPublicKey: "عوامی کلید (unsb-pk-...)",
|
||||
unsandboxSecretKey: "خفیہ کلید (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "لاگ ان",
|
||||
vaultLocked: "سیٹنگز لاک",
|
||||
vaultUnlocked: "سیٹنگز ان لاک",
|
||||
vaultCreate: "سیٹنگز محفوظ کریں",
|
||||
vaultUnlock: "سیٹنگز ان لاک کریں",
|
||||
vaultLock: "لاک کریں",
|
||||
vaultLockTooltip: "اپنی سیٹنگز لاک کریں (لاگ آؤٹ)",
|
||||
vaultPassword: "پاس ورڈ",
|
||||
vaultPasswordPlaceholder: "پاس ورڈ منتخب کریں...",
|
||||
vaultConfirmPassword: "پاس ورڈ کی تصدیق کریں",
|
||||
vaultConfirmPlaceholder: "اپنے پاس ورڈ کی تصدیق کریں...",
|
||||
vaultWrongPassword: "وہ پاس ورڈ کام نہیں آیا۔ براہ کرم دوبارہ کوشش کریں۔",
|
||||
vaultPasswordMismatch: "پاس ورڈ مماثل نہیں ہیں۔",
|
||||
vaultPasswordTooShort: "پاس ورڈ میں کم از کم 8 حروف ہونے چاہئیں۔",
|
||||
vaultCreated: "سیٹنگز محفوظ ہو گئیں!",
|
||||
vaultUnlockedMsg: "واپسی پر خوش آمدید!",
|
||||
vaultLockedMsg: "سیٹنگز لاک ہو گئیں۔",
|
||||
vaultRequired: "سیٹنگز تک رسائی کے لیے اپنا پاس ورڈ درج کریں۔",
|
||||
vaultWelcome: "آپ کی سیٹنگز (ماڈل، آواز، API کلیدیں) اور چیٹ گفتگو آپ کے منتخب کردہ پاس ورڈ کے پیچھے خفیہ کاری شدہ ہیں۔ یہ انہیں اس آلے پر نجی رکھتا ہے۔",
|
||||
vaultLine1: "آپ کی سیٹنگز اور گفتگو پاس ورڈ کے پیچھے خفیہ کاری شدہ ہیں۔",
|
||||
vaultLine2: "یہ انہیں اس آلے پر نجی رکھتا ہے۔",
|
||||
vaultWelcomeBack: "واپسی پر خوش آمدید! اپنی محفوظ شدہ سیٹنگز اور گفتگو تک رسائی کے لیے اپنا پاس ورڈ درج کریں۔",
|
||||
vaultCreateInfo: "اپنی سیٹنگز اور گفتگو کی حفاظت کے لیے پاس ورڈ منتخب کریں۔ آپ کی ترجیحات، API کلیدیں اور چیٹ تاریخ خفیہ کاری کے ساتھ مقامی طور پر محفوظ ہوں گی۔",
|
||||
vaultSessionInfo: "جب تک آپ اپنی سیٹنگز لاک نہیں کرتے، آپ لاگ ان رہیں گے۔",
|
||||
vaultChangePassword: "پاس ورڈ تبدیل کریں",
|
||||
vaultDeleteVault: "سیٹنگز حذف کریں",
|
||||
vaultDeleteConfirm: "کیا آپ کو یقین ہے؟ یہ اس آلے سے آپ کی تمام محفوظ شدہ سیٹنگز ہٹا دے گا۔",
|
||||
vaultCurrentPassword: "موجودہ پاس ورڈ",
|
||||
vaultNewPassword: "نیا پاس ورڈ",
|
||||
vaultPasswordChanged: "پاس ورڈ تبدیل ہو گیا!",
|
||||
vaultDeleted: "سیٹنگز حذف ہو گئیں۔",
|
||||
};
|
||||
|
|
@ -115,4 +115,42 @@ export const vi = {
|
|||
pleaseEnterTranslateText: "Vui lòng nhập văn bản để dịch!",
|
||||
aiModalNotAvailable: "Modal AI không khả dụng trong ngữ cảnh này",
|
||||
useCustomAPI: "Sử dụng endpoint tùy chỉnh tương thích với openai.",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "Sử dụng khóa API unsandbox.com để thực thi mã.",
|
||||
unsandboxPublicKey: "Khóa Công Khai (unsb-pk-...)",
|
||||
unsandboxSecretKey: "Khóa Bí Mật (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "Đã đăng nhập",
|
||||
vaultLocked: "Cài Đặt Đã Khóa",
|
||||
vaultUnlocked: "Cài Đặt Đã Mở Khóa",
|
||||
vaultCreate: "Lưu Cài Đặt",
|
||||
vaultUnlock: "Mở Khóa Cài Đặt",
|
||||
vaultLock: "Khóa",
|
||||
vaultLockTooltip: "Khóa cài đặt của bạn (đăng xuất)",
|
||||
vaultPassword: "Mật khẩu",
|
||||
vaultPasswordPlaceholder: "Chọn mật khẩu...",
|
||||
vaultConfirmPassword: "Xác nhận mật khẩu",
|
||||
vaultConfirmPlaceholder: "Xác nhận mật khẩu của bạn...",
|
||||
vaultWrongPassword: "Mật khẩu đó không đúng. Vui lòng thử lại.",
|
||||
vaultPasswordMismatch: "Mật khẩu không khớp.",
|
||||
vaultPasswordTooShort: "Mật khẩu cần ít nhất 8 ký tự.",
|
||||
vaultCreated: "Đã lưu cài đặt!",
|
||||
vaultUnlockedMsg: "Chào mừng trở lại!",
|
||||
vaultLockedMsg: "Cài đặt đã khóa.",
|
||||
vaultRequired: "Nhập mật khẩu để truy cập cài đặt.",
|
||||
vaultWelcome: "Cài đặt của bạn (mô hình, giọng nói, khóa API) và các cuộc trò chuyện được mã hóa bằng mật khẩu do bạn chọn. Điều này giữ chúng riêng tư trên thiết bị này.",
|
||||
vaultLine1: "Cài đặt và các cuộc trò chuyện của bạn được mã hóa bằng mật khẩu.",
|
||||
vaultLine2: "Điều này giữ chúng riêng tư trên thiết bị này.",
|
||||
vaultWelcomeBack: "Chào mừng trở lại! Nhập mật khẩu để truy cập cài đặt và các cuộc trò chuyện đã lưu.",
|
||||
vaultCreateInfo: "Chọn mật khẩu để bảo vệ cài đặt và các cuộc trò chuyện của bạn. Tùy chọn, khóa API và lịch sử trò chuyện sẽ được mã hóa và lưu trữ cục bộ.",
|
||||
vaultSessionInfo: "Bạn sẽ duy trì đăng nhập cho đến khi bạn khóa cài đặt.",
|
||||
vaultChangePassword: "Đổi Mật Khẩu",
|
||||
vaultDeleteVault: "Xóa Cài Đặt",
|
||||
vaultDeleteConfirm: "Bạn có chắc không? Thao tác này sẽ xóa tất cả cài đặt đã lưu khỏi thiết bị này.",
|
||||
vaultCurrentPassword: "Mật khẩu hiện tại",
|
||||
vaultNewPassword: "Mật khẩu mới",
|
||||
vaultPasswordChanged: "Đã đổi mật khẩu!",
|
||||
vaultDeleted: "Đã xóa cài đặt.",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -113,4 +113,42 @@ export const zhTw = {
|
|||
remoteUrlInfo: "輸入要擷取和翻譯的網址:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 擷取並翻譯",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "使用unsandbox.com API金鑰進行程式碼執行。",
|
||||
unsandboxPublicKey: "公鑰 (unsb-pk-...)",
|
||||
unsandboxSecretKey: "密鑰 (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "已登入",
|
||||
vaultLocked: "設定已鎖定",
|
||||
vaultUnlocked: "設定已解鎖",
|
||||
vaultCreate: "儲存設定",
|
||||
vaultUnlock: "解鎖設定",
|
||||
vaultLock: "鎖定",
|
||||
vaultLockTooltip: "鎖定您的設定(登出)",
|
||||
vaultPassword: "密碼",
|
||||
vaultPasswordPlaceholder: "選擇一個密碼...",
|
||||
vaultConfirmPassword: "確認密碼",
|
||||
vaultConfirmPlaceholder: "確認您的密碼...",
|
||||
vaultWrongPassword: "密碼不正確,請重試。",
|
||||
vaultPasswordMismatch: "兩次輸入的密碼不一致。",
|
||||
vaultPasswordTooShort: "密碼至少需要8個字元。",
|
||||
vaultCreated: "設定已儲存!",
|
||||
vaultUnlockedMsg: "歡迎回來!",
|
||||
vaultLockedMsg: "設定已鎖定。",
|
||||
vaultRequired: "請輸入密碼以存取設定。",
|
||||
vaultWelcome: "您的設定(模型、語音、API金鑰)和聊天對話透過您選擇的密碼加密保護。這確保它們在此裝置上的隱私安全。",
|
||||
vaultLine1: "您的設定和對話透過密碼加密保護。",
|
||||
vaultLine2: "這確保它們在此裝置上的隱私安全。",
|
||||
vaultWelcomeBack: "歡迎回來!請輸入密碼以存取您儲存的設定和對話。",
|
||||
vaultCreateInfo: "選擇一個密碼來保護您的設定和對話。您的偏好設定、API金鑰和聊天記錄將被加密並儲存在本機。",
|
||||
vaultSessionInfo: "在您鎖定設定之前,您將保持登入狀態。",
|
||||
vaultChangePassword: "變更密碼",
|
||||
vaultDeleteVault: "刪除設定",
|
||||
vaultDeleteConfirm: "確定要刪除嗎?這將從此裝置上移除所有已儲存的設定。",
|
||||
vaultCurrentPassword: "目前密碼",
|
||||
vaultNewPassword: "新密碼",
|
||||
vaultPasswordChanged: "密碼已變更!",
|
||||
vaultDeleted: "設定已刪除。",
|
||||
};
|
||||
|
|
@ -113,4 +113,42 @@ export const zh = {
|
|||
remoteUrlInfo: "输入要获取和翻译的网址:",
|
||||
remoteUrlPlaceholder: "https://example.com",
|
||||
fetchAndTranslate: "🌐 获取并翻译",
|
||||
|
||||
// Unsandbox code execution settings
|
||||
useUnsandbox: "使用unsandbox.com API密钥进行代码执行。",
|
||||
unsandboxPublicKey: "公钥 (unsb-pk-...)",
|
||||
unsandboxSecretKey: "密钥 (unsb-sk-...)",
|
||||
|
||||
// Vault settings
|
||||
vaultLoggedIn: "已登录",
|
||||
vaultLocked: "设置已锁定",
|
||||
vaultUnlocked: "设置已解锁",
|
||||
vaultCreate: "保存设置",
|
||||
vaultUnlock: "解锁设置",
|
||||
vaultLock: "锁定",
|
||||
vaultLockTooltip: "锁定您的设置(退出登录)",
|
||||
vaultPassword: "密码",
|
||||
vaultPasswordPlaceholder: "选择一个密码...",
|
||||
vaultConfirmPassword: "确认密码",
|
||||
vaultConfirmPlaceholder: "确认您的密码...",
|
||||
vaultWrongPassword: "密码不正确,请重试。",
|
||||
vaultPasswordMismatch: "两次输入的密码不一致。",
|
||||
vaultPasswordTooShort: "密码至少需要8个字符。",
|
||||
vaultCreated: "设置已保存!",
|
||||
vaultUnlockedMsg: "欢迎回来!",
|
||||
vaultLockedMsg: "设置已锁定。",
|
||||
vaultRequired: "请输入密码以访问设置。",
|
||||
vaultWelcome: "您的设置(模型、语音、API密钥)和聊天对话通过您选择的密码加密保护。这确保它们在此设备上的隐私安全。",
|
||||
vaultLine1: "您的设置和对话通过密码加密保护。",
|
||||
vaultLine2: "这确保它们在此设备上的隐私安全。",
|
||||
vaultWelcomeBack: "欢迎回来!请输入密码以访问您保存的设置和对话。",
|
||||
vaultCreateInfo: "选择一个密码来保护您的设置和对话。您的偏好设置、API密钥和聊天记录将被加密并存储在本地。",
|
||||
vaultSessionInfo: "在您锁定设置之前,您将保持登录状态。",
|
||||
vaultChangePassword: "更改密码",
|
||||
vaultDeleteVault: "删除设置",
|
||||
vaultDeleteConfirm: "确定要删除吗?这将从此设备上移除所有已保存的设置。",
|
||||
vaultCurrentPassword: "当前密码",
|
||||
vaultNewPassword: "新密码",
|
||||
vaultPasswordChanged: "密码已更改!",
|
||||
vaultDeleted: "设置已删除。",
|
||||
};
|
||||
|
|
@ -3,8 +3,46 @@
|
|||
// https://www.permacomputer.com
|
||||
|
||||
// Conversation history and localStorage functionality
|
||||
// Supports automatic AES-256 encryption when vault is unlocked
|
||||
import { getSystemMessage } from "./config.js";
|
||||
|
||||
// Encrypted storage format version
|
||||
const ENCRYPTED_STORAGE_VERSION = 1;
|
||||
|
||||
// Check if vault is available and unlocked (uses window global, no import needed)
|
||||
function getVault() {
|
||||
if (
|
||||
typeof window !== "undefined" &&
|
||||
window.UncloseVault &&
|
||||
window.UncloseVault.isUnlocked()
|
||||
) {
|
||||
return window.UncloseVault;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Parse stored data to determine format (plaintext array vs encrypted wrapper)
|
||||
function parseStoredData(raw) {
|
||||
if (!raw) return { type: "empty", data: null };
|
||||
try {
|
||||
const parsed = JSON.parse(raw);
|
||||
if (
|
||||
parsed &&
|
||||
typeof parsed === "object" &&
|
||||
!Array.isArray(parsed) &&
|
||||
parsed._encrypted === true
|
||||
) {
|
||||
return { type: "encrypted", data: parsed._data, version: parsed._v };
|
||||
}
|
||||
if (Array.isArray(parsed)) {
|
||||
return { type: "plaintext", data: parsed };
|
||||
}
|
||||
return { type: "unknown", data: null };
|
||||
} catch (e) {
|
||||
return { type: "corrupted", data: null };
|
||||
}
|
||||
}
|
||||
|
||||
// Helper function to generate a page-specific key for localStorage
|
||||
export function getPageSpecificKey(baseKey) {
|
||||
// Use the current page's URL to create a unique key
|
||||
|
|
@ -16,26 +54,85 @@ export function getPageSpecificKey(baseKey) {
|
|||
// Functions for conversation history persistence
|
||||
export function saveConversationHistory(chatHistory) {
|
||||
const historyToSave = chatHistory.filter((msg) => msg.role !== "system");
|
||||
localStorage.setItem(
|
||||
getPageSpecificKey("hermes-conversation-history"),
|
||||
JSON.stringify(historyToSave),
|
||||
);
|
||||
const storageKey = getPageSpecificKey("hermes-conversation-history");
|
||||
|
||||
const vault = getVault();
|
||||
if (vault) {
|
||||
const encrypted = vault.encrypt(historyToSave, vault._password);
|
||||
if (encrypted) {
|
||||
const wrapper = {
|
||||
_encrypted: true,
|
||||
_v: ENCRYPTED_STORAGE_VERSION,
|
||||
_data: encrypted,
|
||||
};
|
||||
localStorage.setItem(storageKey, JSON.stringify(wrapper));
|
||||
return;
|
||||
}
|
||||
console.warn("Conversation encryption failed, saving as plaintext");
|
||||
}
|
||||
|
||||
// Guard: do not overwrite encrypted data with plaintext
|
||||
const existing = parseStoredData(localStorage.getItem(storageKey));
|
||||
if (existing.type === "encrypted") {
|
||||
console.warn(
|
||||
"Vault locked: cannot save conversation (data is encrypted). Unlock vault to save.",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
localStorage.setItem(storageKey, JSON.stringify(historyToSave));
|
||||
}
|
||||
|
||||
export function loadConversationHistory() {
|
||||
const saved = localStorage.getItem(
|
||||
getPageSpecificKey("hermes-conversation-history"),
|
||||
);
|
||||
if (saved) {
|
||||
try {
|
||||
const parsedHistory = JSON.parse(saved);
|
||||
// Filter out any system messages that might have been saved before our fix
|
||||
return parsedHistory.filter((msg) => msg.role !== "system");
|
||||
} catch (e) {
|
||||
console.error("Error parsing conversation history:", e);
|
||||
const storageKey = getPageSpecificKey("hermes-conversation-history");
|
||||
const raw = localStorage.getItem(storageKey);
|
||||
const stored = parseStoredData(raw);
|
||||
|
||||
switch (stored.type) {
|
||||
case "empty":
|
||||
return [];
|
||||
|
||||
case "plaintext": {
|
||||
const history = stored.data.filter((msg) => msg.role !== "system");
|
||||
// Auto-migrate to encrypted if vault is unlocked
|
||||
const vault = getVault();
|
||||
if (vault && history.length > 0) {
|
||||
const encrypted = vault.encrypt(history, vault._password);
|
||||
if (encrypted) {
|
||||
const wrapper = {
|
||||
_encrypted: true,
|
||||
_v: ENCRYPTED_STORAGE_VERSION,
|
||||
_data: encrypted,
|
||||
};
|
||||
localStorage.setItem(storageKey, JSON.stringify(wrapper));
|
||||
console.log("Migrated plaintext conversation to encrypted storage");
|
||||
}
|
||||
}
|
||||
return history;
|
||||
}
|
||||
|
||||
case "encrypted": {
|
||||
const vault = getVault();
|
||||
if (!vault) {
|
||||
console.log("Encrypted conversation found but vault is locked");
|
||||
return [];
|
||||
}
|
||||
const decrypted = vault.decrypt(stored.data, vault._password);
|
||||
if (decrypted && Array.isArray(decrypted)) {
|
||||
return decrypted.filter((msg) => msg.role !== "system");
|
||||
}
|
||||
console.warn("Failed to decrypt conversation history");
|
||||
return [];
|
||||
}
|
||||
|
||||
case "unknown":
|
||||
case "corrupted":
|
||||
default:
|
||||
console.error(
|
||||
"Corrupted conversation history data, treating as empty",
|
||||
);
|
||||
return [];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
// Get just the custom prompt for attention echo (not full system message with page content)
|
||||
|
|
@ -63,3 +160,13 @@ export async function initializeChatHistory() {
|
|||
...loadConversationHistory(),
|
||||
];
|
||||
}
|
||||
|
||||
// Auto-migrate plaintext conversations when vault is unlocked
|
||||
if (typeof window !== "undefined") {
|
||||
window.addEventListener("uncloseai-vault-unlocked", () => {
|
||||
const history = loadConversationHistory();
|
||||
if (history.length > 0) {
|
||||
console.log("Vault unlocked: conversation encryption verified");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue