From d62d0be00465b13fe2e1a71f7c778a5b2f376a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Toledo?= Date: Thu, 8 Jan 2026 20:54:18 -0300 Subject: [PATCH] Commit changes from oxy worktree --- .chainlit/assets/custom.css | 151 +++++++ .chainlit/config.toml | 13 + .chainlit/translations/bn.json | 245 ++++++++++++ .chainlit/translations/de-DE.json | 245 ++++++++++++ .chainlit/translations/el-GR.json | 245 ++++++++++++ .chainlit/translations/en-US.json | 245 ++++++++++++ .chainlit/translations/es.json | 245 ++++++++++++ .chainlit/translations/fr-FR.json | 245 ++++++++++++ .chainlit/translations/gu.json | 245 ++++++++++++ .chainlit/translations/he-IL.json | 245 ++++++++++++ .chainlit/translations/hi.json | 245 ++++++++++++ .chainlit/translations/it.json | 245 ++++++++++++ .chainlit/translations/ja.json | 244 ++++++++++++ .chainlit/translations/kn.json | 245 ++++++++++++ .chainlit/translations/ko.json | 245 ++++++++++++ .chainlit/translations/ml.json | 245 ++++++++++++ .chainlit/translations/mr.json | 245 ++++++++++++ .chainlit/translations/nl.json | 245 ++++++++++++ .chainlit/translations/ta.json | 245 ++++++++++++ .chainlit/translations/te.json | 245 ++++++++++++ .chainlit/translations/zh-CN.json | 245 ++++++++++++ .chainlit/translations/zh-TW.json | 245 ++++++++++++ .cursor/worktrees.json | 5 + .gitignore | 5 +- Dockerfile | 3 + README.md | 13 +- chainlit.md | 36 +- docker-compose.yml | 33 +- docs/ANALISE_VETOR_GRAFO.md | 0 docs/HYBRID_MEMORY_USAGE.md | 294 ++++++++++++++ package-lock.json | 6 + requirements.txt | 2 + src/agents/personas/persona-react-expert.md | 15 + src/app.py | 24 +- src/config.py | 15 +- src/integrations/telegram_bot.py | 3 + src/memory/entity_search_tool.py | 68 ++++ src/memory/graph_wrapper.py | 415 ++++++++++++++++++++ src/memory/wrapper.py | 189 ++++++++- 39 files changed, 6147 insertions(+), 42 deletions(-) create mode 100644 .chainlit/assets/custom.css create mode 100644 .chainlit/config.toml create mode 100644 .chainlit/translations/bn.json create mode 100644 .chainlit/translations/de-DE.json create mode 100644 .chainlit/translations/el-GR.json create mode 100644 .chainlit/translations/en-US.json create mode 100644 .chainlit/translations/es.json create mode 100644 .chainlit/translations/fr-FR.json create mode 100644 .chainlit/translations/gu.json create mode 100644 .chainlit/translations/he-IL.json create mode 100644 .chainlit/translations/hi.json create mode 100644 .chainlit/translations/it.json create mode 100644 .chainlit/translations/ja.json create mode 100644 .chainlit/translations/kn.json create mode 100644 .chainlit/translations/ko.json create mode 100644 .chainlit/translations/ml.json create mode 100644 .chainlit/translations/mr.json create mode 100644 .chainlit/translations/nl.json create mode 100644 .chainlit/translations/ta.json create mode 100644 .chainlit/translations/te.json create mode 100644 .chainlit/translations/zh-CN.json create mode 100644 .chainlit/translations/zh-TW.json create mode 100644 .cursor/worktrees.json create mode 100644 docs/ANALISE_VETOR_GRAFO.md create mode 100644 docs/HYBRID_MEMORY_USAGE.md create mode 100644 package-lock.json create mode 100644 src/agents/personas/persona-react-expert.md create mode 100644 src/memory/entity_search_tool.py create mode 100644 src/memory/graph_wrapper.py diff --git a/.chainlit/assets/custom.css b/.chainlit/assets/custom.css new file mode 100644 index 0000000..2170e94 --- /dev/null +++ b/.chainlit/assets/custom.css @@ -0,0 +1,151 @@ +/* Custom CSS para Antigravity Brain - ITGuys */ +/* Ajuste as cores conforme a identidade visual da empresa */ + +:root { + /* Cores da empresa ITGuys - Ajuste estes valores */ + --primary-color: #0066CC; + --primary-hover: #0052A3; + --secondary-color: #4A90E2; + --background-color: #FFFFFF; + --chat-background: #F5F7FA; + --text-primary: #1A1A1A; + --text-secondary: #6B7280; + --border-color: #E5E7EB; + --success-color: #10B981; + --error-color: #EF4444; + --warning-color: #F59E0B; +} + +/* Estilo geral da interface */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; +} + +/* Mensagens do sistema com indicador de loading */ +.cl-message[data-author="Sistema"] { + background: linear-gradient(90deg, var(--primary-color) 0%, var(--secondary-color) 100%); + color: white; + padding: 12px 16px; + border-radius: 8px; + margin: 8px 0; + position: relative; +} + +/* Animação de loading para mensagens de processamento */ +.cl-message[data-author="Sistema"]::after { + content: ''; + display: inline-block; + width: 12px; + height: 12px; + border: 2px solid rgba(255, 255, 255, 0.3); + border-top-color: white; + border-radius: 50%; + animation: spin 0.8s linear infinite; + margin-left: 8px; + vertical-align: middle; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* Melhorar a aparência das mensagens do usuário */ +.cl-message[data-author="user"] { + background-color: var(--primary-color); + color: white; + border-radius: 12px 12px 4px 12px; +} + +/* Melhorar a aparência das mensagens do assistente */ +.cl-message[data-author="assistant"] { + background-color: var(--assistant-message-background-color, var(--chat-background)); + color: var(--text-primary); + border-radius: 12px 12px 12px 4px; + border: 1px solid var(--border-color); +} + +/* Botões e elementos interativos */ +button { + background-color: var(--primary-color); + color: white; + border: none; + border-radius: 6px; + padding: 8px 16px; + cursor: pointer; + transition: background-color 0.2s ease; +} + +button:hover { + background-color: var(--primary-hover); +} + +/* Input de texto */ +input[type="text"], textarea { + border: 1px solid var(--border-color); + border-radius: 6px; + padding: 10px 12px; + font-size: 14px; + transition: border-color 0.2s ease; +} + +input[type="text"]:focus, textarea:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1); +} + +/* Indicador de digitação/processamento */ +.typing-indicator { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 8px 12px; + background-color: var(--chat-background); + border-radius: 12px; + margin: 8px 0; +} + +.typing-indicator span { + width: 6px; + height: 6px; + background-color: var(--text-secondary); + border-radius: 50%; + animation: typing 1.4s infinite; +} + +.typing-indicator span:nth-child(2) { + animation-delay: 0.2s; +} + +.typing-indicator span:nth-child(3) { + animation-delay: 0.4s; +} + +@keyframes typing { + 0%, 60%, 100% { + transform: translateY(0); + opacity: 0.7; + } + 30% { + transform: translateY(-8px); + opacity: 1; + } +} + +/* Scrollbar customizada */ +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: var(--chat-background); +} + +::-webkit-scrollbar-thumb { + background: var(--border-color); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-secondary); +} diff --git a/.chainlit/config.toml b/.chainlit/config.toml new file mode 100644 index 0000000..8b3c74f --- /dev/null +++ b/.chainlit/config.toml @@ -0,0 +1,13 @@ +[project] +name = "Antigravity Brain" +description = "Sistema de IA Corporativo da ITGuys" + +[UI] +name = "Antigravity Brain" +show_readme_as_default = true +hide_cot = false +default_collapse_content = false +default_expand_messages = false + +[meta] +generated_by = "1.0.0" diff --git a/.chainlit/translations/bn.json b/.chainlit/translations/bn.json new file mode 100644 index 0000000..50353d9 --- /dev/null +++ b/.chainlit/translations/bn.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8", + "confirm": "\u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8", + "continue": "\u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8", + "goBack": "\u09aa\u09bf\u099b\u09a8\u09c7 \u09af\u09be\u09a8", + "reset": "\u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8", + "submit": "\u099c\u09ae\u09be \u09a6\u09bf\u09a8" + }, + "status": { + "loading": "\u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7...", + "error": { + "default": "\u098f\u0995\u099f\u09bf \u09a4\u09cd\u09b0\u09c1\u099f\u09bf \u0998\u099f\u09c7\u099b\u09c7", + "serverConnection": "\u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be" + } + } + }, + "auth": { + "login": { + "title": "\u0985\u09cd\u09af\u09be\u09aa\u09cd\u09b2\u09bf\u0995\u09c7\u09b6\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09b2\u0997\u0987\u09a8 \u0995\u09b0\u09c1\u09a8", + "form": { + "email": { + "label": "\u0987\u09ae\u09c7\u0987\u09b2 \u09a0\u09bf\u0995\u09be\u09a8\u09be", + "required": "\u0987\u09ae\u09c7\u0987\u09b2 \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1", + "required": "\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u098f\u0995\u099f\u09bf \u0986\u09ac\u09b6\u09cd\u09af\u0995 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0" + }, + "actions": { + "signin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8" + }, + "alternativeText": { + "or": "\u0985\u09a5\u09ac\u09be" + } + }, + "errors": { + "default": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be \u09b8\u09ae\u09cd\u09ad\u09ac \u09b9\u099a\u09cd\u099b\u09c7 \u09a8\u09be", + "signin": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "oauthSignin": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "redirectUriMismatch": "\u09b0\u09bf\u09a1\u09be\u0987\u09b0\u09c7\u0995\u09cd\u099f URI \u0993\u0986\u09a5 \u0985\u09cd\u09af\u09be\u09aa \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09ae\u09bf\u09b2\u099b\u09c7 \u09a8\u09be", + "oauthCallback": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "oauthCreateAccount": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "emailCreateAccount": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "callback": "\u0985\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09c1\u09a8", + "oauthAccountNotLinked": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09b0\u09bf\u099a\u09af\u09bc \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09a4\u09c7, \u0986\u09aa\u09a8\u09bf \u09af\u09c7 \u0985\u09cd\u09af\u09be\u0995\u09be\u0989\u09a8\u09cd\u099f\u099f\u09bf \u09ae\u09c2\u09b2\u09a4 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7\u099b\u09bf\u09b2\u09c7\u09a8 \u09b8\u09c7\u099f\u09bf \u09a6\u09bf\u09af\u09bc\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8", + "emailSignin": "\u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf", + "emailVerify": "\u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u0987\u09ae\u09c7\u0987\u09b2 \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8, \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u0987\u09ae\u09c7\u0987\u09b2 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09b9\u09af\u09bc\u09c7\u099b\u09c7", + "credentialsSignin": "\u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u0964 \u0986\u09aa\u09a8\u09be\u09b0 \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09a4\u09a5\u09cd\u09af \u09b8\u09a0\u09bf\u0995 \u0995\u09bf\u09a8\u09be \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8", + "sessionRequired": "\u098f\u0987 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09a6\u09c7\u0996\u09a4\u09c7 \u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u09b8\u09be\u0987\u09a8 \u0987\u09a8 \u0995\u09b0\u09c1\u09a8" + } + }, + "provider": { + "continue": "{{provider}} \u09a6\u09bf\u09af\u09bc\u09c7 \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8" + } + }, + "chat": { + "input": { + "placeholder": "\u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u098f\u0996\u09be\u09a8\u09c7 \u099f\u09be\u0987\u09aa \u0995\u09b0\u09c1\u09a8...", + "actions": { + "send": "\u09ac\u09be\u09b0\u09cd\u09a4\u09be \u09aa\u09be\u09a0\u09be\u09a8", + "stop": "\u0995\u09be\u099c \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8", + "attachFiles": "\u09ab\u09be\u0987\u09b2 \u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8" + } + }, + "speech": { + "start": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8", + "stop": "\u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8", + "connecting": "\u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7" + }, + "commands": { + "button": "\u099f\u09c1\u09b2\u09b8", + "changeTool": "\u099f\u09c1\u09b2 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8", + "availableTools": "\u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u099f\u09c1\u09b2\u09b8" + }, + "fileUpload": { + "dragDrop": "\u098f\u0996\u09be\u09a8\u09c7 \u09ab\u09be\u0987\u09b2 \u099f\u09c7\u09a8\u09c7 \u0986\u09a8\u09c1\u09a8", + "browse": "\u09ab\u09be\u0987\u09b2 \u09ac\u09cd\u09b0\u09be\u0989\u099c \u0995\u09b0\u09c1\u09a8", + "sizeLimit": "\u09b8\u09c0\u09ae\u09be:", + "errors": { + "failed": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7", + "cancelled": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7" + }, + "actions": { + "cancelUpload": "\u0986\u09aa\u09b2\u09cb\u09a1 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8", + "removeAttachment": "\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4\u09bf \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09c1\u09a8" + } + }, + "messages": { + "status": { + "using": "\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u099b\u09c7", + "used": "\u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4" + }, + "actions": { + "copy": { + "button": "\u0995\u09cd\u09b2\u09bf\u09aa\u09ac\u09cb\u09b0\u09cd\u09a1\u09c7 \u0995\u09aa\u09bf \u0995\u09b0\u09c1\u09a8", + "success": "\u0995\u09aa\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7!" + } + }, + "feedback": { + "positive": "\u09b8\u09b9\u09be\u09af\u09bc\u0995", + "negative": "\u09b8\u09b9\u09be\u09af\u09bc\u0995 \u09a8\u09af\u09bc", + "edit": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09b8\u09ae\u09cd\u09aa\u09be\u09a6\u09a8\u09be \u0995\u09b0\u09c1\u09a8", + "dialog": { + "title": "\u09ae\u09a8\u09cd\u09a4\u09ac\u09cd\u09af \u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8", + "submit": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u099c\u09ae\u09be \u09a6\u09bf\u09a8", + "yourFeedback": "\u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be..." + }, + "status": { + "updating": "\u09b9\u09be\u09b2\u09a8\u09be\u0997\u09be\u09a6 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7", + "updated": "\u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09b9\u09be\u09b2\u09a8\u09be\u0997\u09be\u09a6 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7" + } + } + }, + "history": { + "title": "\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0987\u09a8\u09aa\u09c1\u099f", + "empty": "\u0995\u09cb\u09a8\u09cb \u09a4\u09a5\u09cd\u09af \u09a8\u09c7\u0987...", + "show": "\u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8" + }, + "settings": { + "title": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2", + "customize": "\u098f\u0996\u09be\u09a8\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u099a\u09cd\u09af\u09be\u099f \u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u0995\u09be\u09b8\u09cd\u099f\u09ae\u09be\u0987\u099c \u0995\u09b0\u09c1\u09a8" + }, + "watermark": "\u098f\u09b2\u098f\u09b2\u098f\u09ae \u09ad\u09c1\u09b2 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 \u0997\u09c1\u09b0\u09c1\u09a4\u09cd\u09ac\u09aa\u09c2\u09b0\u09cd\u09a3 \u09a4\u09a5\u09cd\u09af \u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09be\u09b0 \u0995\u09a5\u09be \u09ac\u09bf\u09ac\u09c7\u099a\u09a8\u09be \u0995\u09b0\u09c1\u09a8\u0964" + }, + "threadHistory": { + "sidebar": { + "title": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099a\u09cd\u09af\u09be\u099f", + "filters": { + "search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0986\u099c", + "yesterday": "\u0997\u09a4\u0995\u09be\u09b2", + "previous7days": "\u0997\u09a4 \u09ed \u09a6\u09bf\u09a8", + "previous30days": "\u0997\u09a4 \u09e9\u09e6 \u09a6\u09bf\u09a8" + }, + "empty": "\u0995\u09cb\u09a8\u09cb \u09a5\u09cd\u09b0\u09c7\u09a1 \u09aa\u09be\u0993\u09af\u09bc\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf", + "actions": { + "close": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8", + "open": "\u09b8\u09be\u0987\u09a1\u09ac\u09be\u09b0 \u0996\u09c1\u09b2\u09c1\u09a8" + } + }, + "thread": { + "untitled": "\u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae\u09b9\u09c0\u09a8 \u0986\u09b2\u09cb\u099a\u09a8\u09be", + "menu": { + "rename": "\u09aa\u09c1\u09a8\u0983\u09a8\u09be\u09ae\u0995\u09b0\u09a3", + "share": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0", + "delete": "Delete" + }, + "actions": { + "share": { + "title": "\u099a\u09cd\u09af\u09be\u099f\u09c7\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u0995\u09b0\u09c1\u09a8", + "button": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0", + "status": { + "copied": "\u09b2\u09bf\u0999\u09cd\u0995 \u0995\u09aa\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7", + "created": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09a4\u09c8\u09b0\u09bf \u09b9\u09af\u09bc\u09c7\u099b\u09c7!", + "unshared": "\u098f\u0987 \u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b6\u09c7\u09af\u09bc\u09be\u09b0\u09bf\u0982 \u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7" + }, + "error": { + "create": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u09b2\u09bf\u0999\u09cd\u0995 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5", + "unshare": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09b6\u09c7\u09af\u09bc\u09be\u09b0\u09bf\u0982 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5" + } + }, + "delete": { + "title": "\u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u0995\u09b0\u09c1\u09a8", + "description": "\u098f\u099f\u09bf \u09a5\u09cd\u09b0\u09c7\u09a1 \u098f\u09ac\u0982 \u098f\u09b0 \u09ac\u09be\u09b0\u09cd\u09a4\u09be \u0993 \u0989\u09aa\u09be\u09a6\u09be\u09a8\u0997\u09c1\u09b2\u09bf \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09ac\u09c7\u0964 \u098f\u0987 \u0995\u09be\u099c\u099f\u09bf \u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09ac\u09b8\u09cd\u09a5\u09be\u09af\u09bc \u09ab\u09c7\u09b0\u09be\u09a8\u09cb \u09af\u09be\u09ac\u09c7 \u09a8\u09be", + "success": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7", + "inProgress": "\u099a\u09cd\u09af\u09be\u099f \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09be \u09b9\u099a\u09cd\u099b\u09c7" + }, + "rename": { + "title": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8", + "description": "\u098f\u0987 \u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u09a8\u09a4\u09c1\u09a8 \u09a8\u09be\u09ae \u09a6\u09bf\u09a8", + "form": { + "name": { + "label": "\u09a8\u09be\u09ae", + "placeholder": "\u09a8\u09a4\u09c1\u09a8 \u09a8\u09be\u09ae \u09b2\u09bf\u0996\u09c1\u09a8" + } + }, + "success": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7!", + "inProgress": "\u09a5\u09cd\u09b0\u09c7\u09a1\u09c7\u09b0 \u09a8\u09be\u09ae \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u099a\u09cd\u099b\u09c7" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u099a\u09cd\u09af\u09be\u099f", + "readme": "\u09b0\u09bf\u09a1\u09ae\u09bf", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f", + "dialog": { + "title": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09c1\u09a8", + "description": "\u098f\u099f\u09bf \u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09b0\u09cd\u09a4\u09ae\u09be\u09a8 \u099a\u09cd\u09af\u09be\u099f \u0987\u09a4\u09bf\u09b9\u09be\u09b8 \u09ae\u09c1\u099b\u09c7 \u09ab\u09c7\u09b2\u09ac\u09c7\u0964 \u0986\u09aa\u09a8\u09bf \u0995\u09bf \u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09c7\u09a4\u09c7 \u099a\u09be\u09a8?", + "tooltip": "\u09a8\u09a4\u09c1\u09a8 \u099a\u09cd\u09af\u09be\u099f" + } + }, + "user": { + "menu": { + "settings": "\u09b8\u09c7\u099f\u09bf\u0982\u09b8", + "settingsKey": "S", + "apiKeys": "\u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0", + "logout": "\u09b2\u0997\u0986\u0989\u099f" + } + } + }, + "apiKeys": { + "title": "\u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u09c0\u09af\u09bc \u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0", + "description": "\u098f\u0987 \u0985\u09cd\u09af\u09be\u09aa\u09cd\u09b2\u09bf\u0995\u09c7\u09b6\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a8\u09bf\u09ae\u09cd\u09a8\u09b2\u09bf\u0996\u09bf\u09a4 \u098f\u09aa\u09bf\u0986\u0987 \u0995\u09c0 \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8\u0964 \u0995\u09c0\u0997\u09c1\u09b2\u09bf \u0986\u09aa\u09a8\u09be\u09b0 \u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09b2\u09cb\u0995\u09be\u09b2 \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u099c\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09a5\u09be\u0995\u09c7\u0964", + "success": { + "saved": "\u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09a8..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/de-DE.json b/.chainlit/translations/de-DE.json new file mode 100644 index 0000000..5153df6 --- /dev/null +++ b/.chainlit/translations/de-DE.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Abbrechen", + "confirm": "Best\u00e4tigen", + "continue": "Fortfahren", + "goBack": "Zur\u00fcck", + "reset": "Zur\u00fccksetzen", + "submit": "Absenden" + }, + "status": { + "loading": "L\u00e4dt...", + "error": { + "default": "Ein Fehler ist aufgetreten", + "serverConnection": "Server konnte nicht erreicht werden" + } + } + }, + "auth": { + "login": { + "title": "Melde dich an, um auf die App zuzugreifen", + "form": { + "email": { + "label": "E-Mail Adresse", + "required": "E-Mail Adresse ist ein Pflichtfeld", + "placeholder": "me@example.com" + }, + "password": { + "label": "Passwort", + "required": "Passwort ist ein Pflichtfeld" + }, + "actions": { + "signin": "Anmelden" + }, + "alternativeText": { + "or": "ODER" + } + }, + "errors": { + "default": "Anmeldung fehlgeschlagen", + "signin": "Versuche dich mit einem anderen Konto anzumelden", + "oauthSignin": "Versuche dich mit einem anderen Konto anzumelden", + "redirectUriMismatch": "Der Redirect-URI stimmt nicht mit der Konfiguration der Oauth-Anwendung \u00fcberein", + "oauthCallback": "Versuche dich mit einem anderen Konto anzumelden", + "oauthCreateAccount": "Versuche dich mit einem anderen Konto anzumelden", + "emailCreateAccount": "Versuche dich mit einem anderen Konto anzumelden", + "callback": "Versuche dich mit einem anderen Konto anzumelden", + "oauthAccountNotLinked": "Um die Identit\u00e4t zu best\u00e4tigen, melde dich mit demselben Konto an, das du urspr\u00fcnglich verwendet hast", + "emailSignin": "Die E-Mail konnte nicht gesendet werden", + "emailVerify": "Es wurde eine neue E-Mail versandt. Bitte \u00fcberpr\u00fcfe dein E-Mail Postfach", + "credentialsSignin": "Anmeldung fehlgeschlagen. \u00dcberpr\u00fcfe, ob die angegebenen Benutzerdaten korrekt sind", + "sessionRequired": "Bitte melde dich an, um auf diese Seite zuzugreifen" + } + }, + "provider": { + "continue": "Fortfahren mit {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Nachricht eingeben...", + "actions": { + "send": "Nachricht senden", + "stop": "Aufgabe stoppen", + "attachFiles": "Dateien anh\u00e4ngen" + } + }, + "commands": { + "button": "Tools", + "changeTool": "Tool wechseln", + "availableTools": "Verf\u00fcgbare Tools" + }, + "speech": { + "start": "Aufnahme starten", + "stop": "Aufnahme stoppen", + "connecting": "Verbinde" + }, + "fileUpload": { + "dragDrop": "Ziehe deine Dateien hierher", + "browse": "Dateien durchsuchen", + "sizeLimit": "Limit:", + "errors": { + "failed": "Hochladen fehlgeschlagen", + "cancelled": "Abbruch des hochladens von" + }, + "actions": { + "cancelUpload": "Upload abbrechen", + "removeAttachment": "Anhang entfernen" + } + }, + "messages": { + "status": { + "using": "Verwendet", + "used": "Verwendete" + }, + "actions": { + "copy": { + "button": "In Zwischenablage kopieren", + "success": "Kopiert!" + } + }, + "feedback": { + "positive": "Hilfreich", + "negative": "Nicht hilfreich", + "edit": "Feedback editieren", + "dialog": { + "title": "F\u00fcge einen Kommentar hinzu", + "submit": "Feedback absenden", + "yourFeedback": "Dein Feedback..." + }, + "status": { + "updating": "Aktualisiert", + "updated": "Feedback aktualisiert" + } + } + }, + "history": { + "title": "Vergangene Eingaben", + "empty": "Leer...", + "show": "Historie anzeigen" + }, + "settings": { + "title": "Einstellungen", + "customize": "Passe die Chat Einstellungen hier an" + }, + "watermark": "LLMs k\u00f6nnen Fehler machen. \u00dcberpr\u00fcfe bitte stets die Inhalte." + }, + "threadHistory": { + "sidebar": { + "title": "Vergangene Chats", + "filters": { + "search": "Suche", + "placeholder": "Suche konversationen..." + }, + "timeframes": { + "today": "Heute", + "yesterday": "Gestern", + "previous7days": "Vor 7 Tagen", + "previous30days": "Vor 30 Tagen" + }, + "empty": "Kein Chat gefunden", + "actions": { + "close": "Seitenleiste schlie\u00dfen", + "open": "Seitenleiste \u00f6ffnen" + } + }, + "thread": { + "untitled": "Unbenannter Thread", + "menu": { + "rename": "Umbenennen", + "share": "Teilen", + "delete": "L\u00f6schen" + }, + "actions": { + "share": { + "title": "Thread l\u00f6schen best\u00e4tigen", + "button": "Teilen", + "status": { + "copied": "Link kopiert", + "created": "Freigabelink erstellt!", + "unshared": "Teilen ist f\u00fcr diesen Thread deaktiviert" + }, + "error": { + "create": "Fehler beim Erstellen des Freigabelinks", + "unshare": "Freigabe des Threads konnte nicht aufgehoben werden" + } + }, + "delete": { + "title": "L\u00f6schen best\u00e4tigen", + "description": "Dies wird den Thread sowie seine Nachrichten und Elemente l\u00f6schen. Dies kann nicht r\u00fcckg\u00e4ngig gemacht werden", + "success": "Chat gel\u00f6scht", + "inProgress": "Chat wird gel\u00f6scht" + }, + "rename": { + "title": "Thread umbenennen", + "description": "Gebe einen neuen Namen f\u00fcr den Thread ein", + "form": { + "name": { + "label": "Name", + "placeholder": "Neuen Namen eingeben" + } + }, + "success": "Thread umbenannt!", + "inProgress": "Thread wird umbenannt" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "Anleitung", + "theme": { + "light": "Helles Design", + "dark": "Dunkles Design", + "system": "System Design" + } + }, + "newChat": { + "button": "Neuer Chat", + "dialog": { + "title": "M\u00f6chtest du einen neuen Chat erstellen?", + "description": "Es werden die aktuellen Nachrichten gel\u00f6scht und ein neuer Chat ge\u00f6ffnet.", + "tooltip": "Neuer Chat" + } + }, + "user": { + "menu": { + "settings": "Einstellungen", + "settingsKey": "S", + "apiKeys": "API Schl\u00fcssel", + "logout": "Abmelden" + } + } + }, + "apiKeys": { + "title": "Ben\u00f6tigte API Schl\u00fcssel", + "description": "Um diese App zu nutzen, werden die folgenden API Schl\u00fcssel ben\u00f6tigt. Die Schl\u00fcssel werden im lokalen Speicher Ihres Ger\u00e4ts gespeichert.", + "success": { + "saved": "Erfolgreich gespeichert" + } + }, + "alerts": { + "info": "Info", + "note": "Hinweis", + "tip": "Tipp", + "important": "Wichtig", + "warning": "Warnung", + "caution": "Vorsicht", + "debug": "Debug", + "example": "Beispiel", + "success": "Erfolg", + "help": "Hilfe", + "idea": "Idee", + "pending": "Ausstehend", + "security": "Sicherheit", + "beta": "Beta", + "best-practice": "Bew\u00e4hrte Praxis" + }, + "components": { + "MultiSelectInput": { + "placeholder": "W\u00e4hle aus..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/el-GR.json b/.chainlit/translations/el-GR.json new file mode 100644 index 0000000..103963b --- /dev/null +++ b/.chainlit/translations/el-GR.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0386\u03ba\u03c5\u03c1\u03bf", + "confirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7", + "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1", + "goBack": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae", + "reset": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac", + "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae" + }, + "status": { + "loading": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7...", + "error": { + "default": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1", + "serverConnection": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae" + } + } + }, + "auth": { + "login": { + "title": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae", + "form": { + "email": { + "label": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5", + "required": "\u03a4\u03bf email \u03b5\u03af\u03bd\u03b1\u03b9 \u03c5\u03c0\u03bf\u03c7\u03c1\u03b5\u03c9\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03b4\u03af\u03bf", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "required": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c5\u03c0\u03bf\u03c7\u03c1\u03b5\u03c9\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03b4\u03af\u03bf" + }, + "actions": { + "signin": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + }, + "alternativeText": { + "or": "\u03ae" + } + }, + "errors": { + "default": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7", + "signin": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "oauthSignin": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "redirectUriMismatch": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03b1\u03bd\u03b1\u03ba\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03c5\u03b8\u03b5\u03bd\u03c4\u03b9\u03ba\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2", + "oauthCallback": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "oauthCreateAccount": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "emailCreateAccount": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "callback": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc", + "oauthAccountNotLinked": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03ac \u03c3\u03b1\u03c2, \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03af\u03b4\u03b9\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ac", + "emailSignin": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03c4\u03bf\u03c5 email", + "emailVerify": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03c3\u03b1\u03c2, \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf email \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03c3\u03c4\u03b1\u03bb\u03b5\u03af", + "credentialsSignin": "\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03ce\u03c3\u03b1\u03c4\u03b5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03ac", + "sessionRequired": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1" + } + }, + "provider": { + "continue": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1 \u03bc\u03b5 {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "\u03a0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03bc\u03ae\u03bd\u03c5\u03bc\u03ac \u03c3\u03b1\u03c2 \u03b5\u03b4\u03ce...", + "actions": { + "send": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2", + "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "attachFiles": "\u0395\u03c0\u03b9\u03c3\u03cd\u03bd\u03b1\u03c8\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd" + } + }, + "commands": { + "button": "\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1", + "changeTool": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03bf\u03c5", + "availableTools": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1" + }, + "speech": { + "start": "\u0388\u03bd\u03b1\u03c1\u03be\u03b7 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "stop": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "connecting": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + }, + "fileUpload": { + "dragDrop": "\u03a3\u03cd\u03c1\u03b5\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03b5\u03b4\u03ce", + "browse": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd", + "sizeLimit": "\u038c\u03c1\u03b9\u03bf:", + "errors": { + "failed": "\u0397 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5", + "cancelled": "\u0391\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5 \u03b7 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5" + }, + "actions": { + "cancelUpload": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7\u03c2", + "removeAttachment": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03cd\u03bd\u03b1\u03c8\u03b7\u03c2" + } + }, + "messages": { + "status": { + "using": "\u039c\u03b5 \u03c4\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7", + "used": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5" + }, + "actions": { + "copy": { + "button": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf", + "success": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5!" + } + }, + "feedback": { + "positive": "\u03a7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2", + "negative": "\u039c\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf\u03c2", + "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd", + "dialog": { + "title": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c7\u03bf\u03bb\u03af\u03bf\u03c5", + "submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae \u03c3\u03c7\u03bf\u03bb\u03af\u03c9\u03bd", + "yourFeedback": "\u0397 \u03b3\u03bd\u03ce\u03bc\u03b7 \u03c3\u03b1\u03c2" + }, + "status": { + "updating": "\u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9", + "updated": "\u03a4\u03b1 \u03c3\u03c7\u03cc\u03bb\u03b9\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b1\u03bd" + } + } + }, + "history": { + "title": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ad\u03c2", + "empty": "\u03a4\u03cc\u03c3\u03bf \u03ac\u03b4\u03b5\u03b9\u03bf...", + "show": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03bf\u03cd" + }, + "settings": { + "title": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd", + "customize": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae" + }, + "watermark": "\u03a4\u03b1 \u039c\u0393\u039c \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03ba\u03ac\u03bd\u03bf\u03c5\u03bd \u03bb\u03ac\u03b8\u03b7. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2." + }, + "threadHistory": { + "sidebar": { + "title": "\u03a0\u03b1\u03bb\u03b1\u03b9\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b5\u03c2", + "filters": { + "search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", + "placeholder": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03b9\u03ce\u03bd..." + }, + "timeframes": { + "today": "\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1", + "yesterday": "\u03a7\u03b8\u03b5\u03c2", + "previous7days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", + "previous30days": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2" + }, + "empty": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bd\u03ae\u03bc\u03b1\u03c4\u03b1", + "actions": { + "close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2", + "open": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2" + } + }, + "thread": { + "untitled": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c4\u03af\u03c4\u03bb\u03bf", + "menu": { + "rename": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1", + "share": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7", + "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae" + }, + "actions": { + "share": { + "title": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2", + "button": "\u039a\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7", + "status": { + "copied": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5", + "created": "\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5!", + "unshared": "\u0397 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1" + }, + "error": { + "create": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2", + "unshare": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae\u03c2 \u03ba\u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03bd\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2" + } + }, + "delete": { + "title": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "description": "\u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03b1 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5. \u0391\u03c5\u03c4\u03ae \u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b9\u03c1\u03b5\u03b8\u03b5\u03af.", + "success": "\u0397 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5", + "inProgress": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2" + }, + "rename": { + "title": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "description": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03bd\u03ae\u03bc\u03b1", + "form": { + "name": { + "label": "\u038c\u03bd\u03bf\u03bc\u03b1", + "placeholder": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03bd\u03ad\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1" + } + }, + "success": "\u03a4\u03bf \u03bd\u03ae\u03bc\u03b1 \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5!", + "inProgress": "\u039c\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u039d\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1", + "readme": "\u0394\u03b9\u03ac\u03b2\u03b1\u03c3\u03ad \u03bc\u03b5", + "theme": { + "light": "\u03a6\u03c9\u03c4\u03b5\u03b9\u03bd\u03cc \u0398\u03ad\u03bc\u03b1", + "dark": "\u03a3\u03ba\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc \u03b8\u03ad\u03bc\u03b1", + "system": "\u0391\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1" + } + }, + "newChat": { + "button": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1", + "dialog": { + "title": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u039d\u03ad\u03b1\u03c2 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2", + "description": "\u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03bf \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03cc \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5;", + "tooltip": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1" + } + }, + "user": { + "menu": { + "settings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", + "settingsKey": "S", + "apiKeys": "\u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API", + "logout": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + } + } + }, + "apiKeys": { + "title": "\u0391\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API", + "description": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae, \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac API. \u03a4\u03b1 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b1 \u03c3\u03c4\u03bf\u03bd \u03c4\u03bf\u03c0\u03b9\u03ba\u03cc \u03c7\u03ce\u03c1\u03bf \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03c3\u03b1\u03c2.", + "success": { + "saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1" + } + }, + "alerts": { + "info": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2", + "note": "\u03a3\u03b7\u03bc\u03b5\u03af\u03c9\u03c3\u03b7", + "tip": "\u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03ae", + "important": "\u03a3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03cc", + "warning": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7", + "caution": "\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae", + "debug": "\u0395\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd", + "example": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1", + "success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1", + "help": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1", + "idea": "\u0399\u03b4\u03ad\u03b1", + "pending": "\u03a3\u03b5 \u03b5\u03ba\u03ba\u03c1\u03b5\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1", + "security": "\u0391\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1", + "beta": "Beta", + "best-practice": "\u0392\u03ad\u03bb\u03c4\u03b9\u03c3\u03c4\u03b7 \u03a0\u03c1\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/en-US.json b/.chainlit/translations/en-US.json new file mode 100644 index 0000000..9205429 --- /dev/null +++ b/.chainlit/translations/en-US.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Cancel", + "confirm": "Confirm", + "continue": "Continue", + "goBack": "Go Back", + "reset": "Reset", + "submit": "Submit" + }, + "status": { + "loading": "Loading...", + "error": { + "default": "An error occurred", + "serverConnection": "Could not reach the server" + } + } + }, + "auth": { + "login": { + "title": "Login to access the app", + "form": { + "email": { + "label": "Email address", + "required": "email is a required field", + "placeholder": "me@example.com" + }, + "password": { + "label": "Password", + "required": "password is a required field" + }, + "actions": { + "signin": "Sign In" + }, + "alternativeText": { + "or": "OR" + } + }, + "errors": { + "default": "Unable to sign in", + "signin": "Try signing in with a different account", + "oauthSignin": "Try signing in with a different account", + "redirectUriMismatch": "The redirect URI is not matching the oauth app configuration", + "oauthCallback": "Try signing in with a different account", + "oauthCreateAccount": "Try signing in with a different account", + "emailCreateAccount": "Try signing in with a different account", + "callback": "Try signing in with a different account", + "oauthAccountNotLinked": "To confirm your identity, sign in with the same account you used originally", + "emailSignin": "The e-mail could not be sent", + "emailVerify": "Please verify your email, a new email has been sent", + "credentialsSignin": "Sign in failed. Check the details you provided are correct", + "sessionRequired": "Please sign in to access this page" + } + }, + "provider": { + "continue": "Continue with {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Type your message here...", + "actions": { + "send": "Send message", + "stop": "Stop Task", + "attachFiles": "Attach files" + } + }, + "commands": { + "button": "Tools", + "changeTool": "Change Tool", + "availableTools": "Available Tools" + }, + "speech": { + "start": "Start recording", + "stop": "Stop recording", + "connecting": "Connecting" + }, + "fileUpload": { + "dragDrop": "Drag and drop files here", + "browse": "Browse Files", + "sizeLimit": "Limit:", + "errors": { + "failed": "Failed to upload", + "cancelled": "Cancelled upload of" + }, + "actions": { + "cancelUpload": "Cancel upload", + "removeAttachment": "Remove attachment" + } + }, + "messages": { + "status": { + "using": "Using", + "used": "Used" + }, + "actions": { + "copy": { + "button": "Copy to clipboard", + "success": "Copied!" + } + }, + "feedback": { + "positive": "Helpful", + "negative": "Not helpful", + "edit": "Edit feedback", + "dialog": { + "title": "Add a comment", + "submit": "Submit feedback", + "yourFeedback": "Your feedback..." + }, + "status": { + "updating": "Updating", + "updated": "Feedback updated" + } + } + }, + "history": { + "title": "Last Inputs", + "empty": "Such empty...", + "show": "Show history" + }, + "settings": { + "title": "Settings panel", + "customize": "Customize your chat settings here" + }, + "watermark": "LLMs can make mistakes. Check important info." + }, + "threadHistory": { + "sidebar": { + "title": "Past Chats", + "filters": { + "search": "Search", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "Today", + "yesterday": "Yesterday", + "previous7days": "Previous 7 days", + "previous30days": "Previous 30 days" + }, + "empty": "No threads found", + "actions": { + "close": "Close sidebar", + "open": "Open sidebar" + } + }, + "thread": { + "untitled": "Untitled Conversation", + "menu": { + "rename": "Rename", + "share": "Share", + "delete": "Delete" + }, + "actions": { + "share": { + "title": "Share link to chat", + "button": "Share", + "status": { + "copied": "Link copied", + "created": "Share link created!", + "unshared": "Sharing disabled for this thread" + }, + "error": { + "create": "Failed to create share link", + "unshare": "Failed to unshare thread" + } + }, + "delete": { + "title": "Confirm deletion", + "description": "This will delete the thread as well as its messages and elements. This action cannot be undone", + "success": "Chat deleted", + "inProgress": "Deleting chat" + }, + "rename": { + "title": "Rename Thread", + "description": "Enter a new name for this thread", + "form": { + "name": { + "label": "Name", + "placeholder": "Enter new name" + } + }, + "success": "Thread renamed!", + "inProgress": "Renaming thread" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "Readme", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "New Chat", + "dialog": { + "title": "Create New Chat", + "description": "This will clear your current chat history. Are you sure you want to continue?", + "tooltip": "New Chat" + } + }, + "user": { + "menu": { + "settings": "Settings", + "settingsKey": "S", + "apiKeys": "API Keys", + "logout": "Logout" + } + } + }, + "apiKeys": { + "title": "Required API Keys", + "description": "To use this app, the following API keys are required. The keys are stored on your device's local storage.", + "success": { + "saved": "Saved successfully" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "Select..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/es.json b/.chainlit/translations/es.json new file mode 100644 index 0000000..eb23fc2 --- /dev/null +++ b/.chainlit/translations/es.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Cancelar", + "confirm": "Confirmar", + "continue": "Continuar", + "goBack": "Volver", + "reset": "Restablecer", + "submit": "Enviar" + }, + "status": { + "loading": "Cargando...", + "error": { + "default": "Ocurri\u00f3 un error", + "serverConnection": "No se pudo conectar con el servidor" + } + } + }, + "auth": { + "login": { + "title": "Inicia sesi\u00f3n para acceder a la aplicaci\u00f3n", + "form": { + "email": { + "label": "Correo electr\u00f3nico", + "required": "el correo electr\u00f3nico es obligatorio", + "placeholder": "me@example.com" + }, + "password": { + "label": "Contrase\u00f1a", + "required": "la contrase\u00f1a es obligatoria" + }, + "actions": { + "signin": "Iniciar sesi\u00f3n" + }, + "alternativeText": { + "or": "O" + } + }, + "errors": { + "default": "No se pudo iniciar sesi\u00f3n", + "signin": "Intenta iniciar sesi\u00f3n con otra cuenta", + "oauthSignin": "Intenta iniciar sesi\u00f3n con otra cuenta", + "redirectUriMismatch": "El URI de redirecci\u00f3n no coincide con la configuraci\u00f3n de la aplicaci\u00f3n OAuth", + "oauthCallback": "Intenta iniciar sesi\u00f3n con otra cuenta", + "oauthCreateAccount": "Intenta iniciar sesi\u00f3n con otra cuenta", + "emailCreateAccount": "Intenta iniciar sesi\u00f3n con otra cuenta", + "callback": "Intenta iniciar sesi\u00f3n con otra cuenta", + "oauthAccountNotLinked": "Para confirmar tu identidad, inicia sesi\u00f3n con la misma cuenta que usaste originalmente", + "emailSignin": "No se pudo enviar el correo electr\u00f3nico", + "emailVerify": "Por favor verifica tu correo, se ha enviado un nuevo correo", + "credentialsSignin": "Error al iniciar sesi\u00f3n. Verifica que los datos proporcionados sean correctos", + "sessionRequired": "Por favor inicia sesi\u00f3n para acceder a esta p\u00e1gina" + } + }, + "provider": { + "continue": "Continuar con {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Escribe tu mensaje aqu\u00ed...", + "actions": { + "send": "Enviar mensaje", + "stop": "Detener tarea", + "attachFiles": "Adjuntar archivos" + } + }, + "commands": { + "button": "Herramientas", + "changeTool": "Cambiar herramienta", + "availableTools": "Herramientas disponibles" + }, + "speech": { + "start": "Comenzar grabaci\u00f3n", + "stop": "Detener grabaci\u00f3n", + "connecting": "Conectando" + }, + "fileUpload": { + "dragDrop": "Arrastra y suelta archivos aqu\u00ed", + "browse": "Buscar archivos", + "sizeLimit": "L\u00edmite:", + "errors": { + "failed": "Error al subir", + "cancelled": "Carga cancelada de" + }, + "actions": { + "cancelUpload": "Cancelar subida", + "removeAttachment": "Eliminar adjunto" + } + }, + "messages": { + "status": { + "using": "Usando", + "used": "Usado" + }, + "actions": { + "copy": { + "button": "Copiar al portapapeles", + "success": "\u00a1Copiado!" + } + }, + "feedback": { + "positive": "\u00datil", + "negative": "No \u00fatil", + "edit": "Editar comentario", + "dialog": { + "title": "Agregar un comentario", + "submit": "Enviar comentario", + "yourFeedback": "Tu comentario..." + }, + "status": { + "updating": "Actualizando", + "updated": "Comentario actualizado" + } + } + }, + "history": { + "title": "\u00daltimas entradas", + "empty": "Tan vac\u00edo...", + "show": "Mostrar historial" + }, + "settings": { + "title": "Panel de configuraci\u00f3n", + "customize": "Personaliza la configuraci\u00f3n de tu chat aqu\u00ed" + }, + "watermark": "Los LLM pueden cometer errores. Verifica la informaci\u00f3n importante." + }, + "threadHistory": { + "sidebar": { + "title": "Chats anteriores", + "filters": { + "search": "Buscar", + "placeholder": "Buscar conversaciones..." + }, + "timeframes": { + "today": "Hoy", + "yesterday": "Ayer", + "previous7days": "\u00daltimos 7 d\u00edas", + "previous30days": "\u00daltimos 30 d\u00edas" + }, + "empty": "No se encontraron conversaciones", + "actions": { + "close": "Cerrar barra lateral", + "open": "Abrir barra lateral" + } + }, + "thread": { + "untitled": "Conversaci\u00f3n sin t\u00edtulo", + "menu": { + "rename": "Renombrar", + "share": "Compartir", + "delete": "Eliminar" + }, + "actions": { + "share": { + "title": "Compartir enlace del chat", + "button": "Compartir", + "status": { + "copied": "Enlace copiado", + "created": "\u00a1Enlace de uso compartido creado!", + "unshared": "Uso compartido deshabilitado para este hilo" + }, + "error": { + "create": "Error al crear el enlace de uso compartido", + "unshare": "Error al dejar de compartir el hilo" + } + }, + "delete": { + "title": "Confirmar eliminaci\u00f3n", + "description": "Esto eliminar\u00e1 la conversaci\u00f3n, sus mensajes y elementos. Esta acci\u00f3n no se puede deshacer", + "success": "Chat eliminado", + "inProgress": "Eliminando chat" + }, + "rename": { + "title": "Renombrar conversaci\u00f3n", + "description": "Ingresa un nuevo nombre para esta conversaci\u00f3n", + "form": { + "name": { + "label": "Nombre", + "placeholder": "Ingresa nuevo nombre" + } + }, + "success": "\u00a1Conversaci\u00f3n renombrada!", + "inProgress": "Renombrando conversaci\u00f3n" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "L\u00e9eme", + "theme": { + "light": "Tema claro", + "dark": "Tema oscuro", + "system": "Seguir sistema" + } + }, + "newChat": { + "button": "Nuevo chat", + "dialog": { + "title": "Crear nuevo chat", + "description": "Esto borrar\u00e1 tu historial de chat actual. \u00bfSeguro que quieres continuar?", + "tooltip": "Nuevo chat" + } + }, + "user": { + "menu": { + "settings": "Configuraci\u00f3n", + "settingsKey": "S", + "apiKeys": "Claves API", + "logout": "Cerrar sesi\u00f3n" + } + } + }, + "apiKeys": { + "title": "Claves API requeridas", + "description": "Para usar esta aplicaci\u00f3n, se requieren las siguientes claves API. Las claves se almacenan en el almacenamiento local de tu dispositivo.", + "success": { + "saved": "Guardado exitosamente" + } + }, + "alerts": { + "info": "Informaci\u00f3n", + "note": "Nota", + "tip": "Consejo", + "important": "Importante", + "warning": "Advertencia", + "caution": "Precauci\u00f3n", + "debug": "Depuraci\u00f3n", + "example": "Ejemplo", + "success": "\u00c9xito", + "help": "Ayuda", + "idea": "Idea", + "pending": "Pendiente", + "security": "Seguridad", + "beta": "Beta", + "best-practice": "Mejor pr\u00e1ctica" + }, + "components": { + "MultiSelectInput": { + "placeholder": "Seleccionar..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/fr-FR.json b/.chainlit/translations/fr-FR.json new file mode 100644 index 0000000..a3000fd --- /dev/null +++ b/.chainlit/translations/fr-FR.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Annuler", + "confirm": "Confirmer", + "continue": "Continuer", + "goBack": "Retour", + "reset": "R\u00e9initialiser", + "submit": "Envoyer" + }, + "status": { + "loading": "Chargement...", + "error": { + "default": "Une erreur est survenue", + "serverConnection": "Impossible de joindre le serveur" + } + } + }, + "auth": { + "login": { + "title": "Connectez-vous pour acc\u00e9der \u00e0 l'application", + "form": { + "email": { + "label": "Adresse e-mail", + "required": "l'e-mail est un champ obligatoire", + "placeholder": "me@example.com" + }, + "password": { + "label": "Mot de passe", + "required": "le mot de passe est un champ obligatoire" + }, + "actions": { + "signin": "Se connecter" + }, + "alternativeText": { + "or": "OU" + } + }, + "errors": { + "default": "Impossible de se connecter", + "signin": "Essayez de vous connecter avec un autre compte", + "oauthSignin": "Essayez de vous connecter avec un autre compte", + "redirectUriMismatch": "L'URI de redirection ne correspond pas \u00e0 la configuration de l'application oauth", + "oauthCallback": "Essayez de vous connecter avec un autre compte", + "oauthCreateAccount": "Essayez de vous connecter avec un autre compte", + "emailCreateAccount": "Essayez de vous connecter avec un autre compte", + "callback": "Essayez de vous connecter avec un autre compte", + "oauthAccountNotLinked": "Pour confirmer votre identit\u00e9, connectez-vous avec le m\u00eame compte que vous avez utilis\u00e9 \u00e0 l'origine", + "emailSignin": "L'e-mail n'a pas pu \u00eatre envoy\u00e9", + "emailVerify": "Veuillez v\u00e9rifier votre e-mail, un nouvel e-mail a \u00e9t\u00e9 envoy\u00e9", + "credentialsSignin": "La connexion a \u00e9chou\u00e9. V\u00e9rifiez que les informations que vous avez fournies sont correctes", + "sessionRequired": "Veuillez vous connecter pour acc\u00e9der \u00e0 cette page" + } + }, + "provider": { + "continue": "Continuer avec {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Tapez votre message ici...", + "actions": { + "send": "Envoyer le message", + "stop": "Arr\u00eater la t\u00e2che", + "attachFiles": "Joindre des fichiers" + } + }, + "commands": { + "button": "Outils", + "changeTool": "Changer d'outil", + "availableTools": "Outils disponibles" + }, + "speech": { + "start": "D\u00e9marrer l'enregistrement", + "stop": "Arr\u00eater l'enregistrement", + "connecting": "Connexion en cours" + }, + "fileUpload": { + "dragDrop": "Glissez et d\u00e9posez des fichiers ici", + "browse": "Parcourir les fichiers", + "sizeLimit": "Limite :", + "errors": { + "failed": "\u00c9chec du t\u00e9l\u00e9versement", + "cancelled": "T\u00e9l\u00e9versement annul\u00e9 de" + }, + "actions": { + "cancelUpload": "Annuler le t\u00e9l\u00e9versement", + "removeAttachment": "Supprimer la pi\u00e8ce jointe" + } + }, + "messages": { + "status": { + "using": "Utilise", + "used": "Utilis\u00e9" + }, + "actions": { + "copy": { + "button": "Copier dans le presse-papiers", + "success": "Copi\u00e9 !" + } + }, + "feedback": { + "positive": "Utile", + "negative": "Pas utile", + "edit": "Modifier le commentaire", + "dialog": { + "title": "Ajouter un commentaire", + "submit": "Envoyer le commentaire", + "yourFeedback": "Votre avis..." + }, + "status": { + "updating": "Mise \u00e0 jour", + "updated": "Commentaire mis \u00e0 jour" + } + } + }, + "history": { + "title": "Derni\u00e8res entr\u00e9es", + "empty": "Tellement vide...", + "show": "Afficher l'historique" + }, + "settings": { + "title": "Panneau des param\u00e8tres", + "customize": "Personnalisez vos param\u00e8tres de chat ici" + }, + "watermark": "Les LLMs peuvent se tromper. V\u00e9rifiez les r\u00e9ponses." + }, + "threadHistory": { + "sidebar": { + "title": "Discussions pass\u00e9es", + "filters": { + "search": "Rechercher", + "placeholder": "Rechercher des conversations..." + }, + "timeframes": { + "today": "Aujourd'hui", + "yesterday": "Hier", + "previous7days": "Les 7 derniers jours", + "previous30days": "Les 30 derniers jours" + }, + "empty": "Aucun fil de discussion trouv\u00e9", + "actions": { + "close": "Fermer la barre lat\u00e9rale", + "open": "Ouvrir la barre lat\u00e9rale" + } + }, + "thread": { + "untitled": "Conversation sans titre", + "menu": { + "rename": "Renommer", + "share": "Partager", + "delete": "Supprimer" + }, + "actions": { + "share": { + "title": "Partager le lien de la discussion", + "button": "Partager", + "status": { + "copied": "Lien copi\u00e9", + "created": "Lien de partage cr\u00e9\u00e9 !", + "unshared": "Partage d\u00e9sactiv\u00e9 pour ce fil" + }, + "error": { + "create": "\u00c9chec de la cr\u00e9ation du lien de partage", + "unshare": "\u00c9chec de la d\u00e9sactivation du partage du fil" + } + }, + "delete": { + "title": "Confirmer la suppression", + "description": "Cela supprimera le fil de discussion ainsi que ses messages et \u00e9l\u00e9ments. Cette action ne peut pas \u00eatre annul\u00e9e", + "success": "Discussion supprim\u00e9e", + "inProgress": "Suppression de la discussion" + }, + "rename": { + "title": "Renommer le fil de discussion", + "description": "Entrez un nouveau nom pour ce fil de discussion", + "form": { + "name": { + "label": "Nom", + "placeholder": "Entrez le nouveau nom" + } + }, + "success": "Fil de discussion renomm\u00e9 !", + "inProgress": "Renommage du fil de discussion" + } + } + } + }, + "navigation": { + "header": { + "chat": "Discussion", + "readme": "Lisez-moi", + "theme": { + "light": "Th\u00e8me clair", + "dark": "Th\u00e8me sombre", + "system": "Suivre le syst\u00e8me" + } + }, + "newChat": { + "button": "Nouvelle discussion", + "dialog": { + "title": "Cr\u00e9er une nouvelle discussion", + "description": "Cela effacera votre historique de discussion actuel. \u00cates-vous s\u00fbr de vouloir continuer ?", + "tooltip": "Nouvelle discussion" + } + }, + "user": { + "menu": { + "settings": "Param\u00e8tres", + "settingsKey": "S", + "apiKeys": "Cl\u00e9s API", + "logout": "Se d\u00e9connecter" + } + } + }, + "apiKeys": { + "title": "Cl\u00e9s API requises", + "description": "Pour utiliser cette application, les cl\u00e9s API suivantes sont requises. Les cl\u00e9s sont stock\u00e9es dans le stockage local de votre appareil.", + "success": { + "saved": "Enregistr\u00e9 avec succ\u00e8s" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Astuce", + "important": "Important", + "warning": "Avertissement", + "caution": "Attention", + "debug": "D\u00e9bogage", + "example": "Exemple", + "success": "Succ\u00e8s", + "help": "Aide", + "idea": "Id\u00e9e", + "pending": "En attente", + "security": "S\u00e9curit\u00e9", + "beta": "B\u00eata", + "best-practice": "Meilleure pratique" + }, + "components": { + "MultiSelectInput": { + "placeholder": "S\u00e9lectionner..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/gu.json b/.chainlit/translations/gu.json new file mode 100644 index 0000000..2cd12fd --- /dev/null +++ b/.chainlit/translations/gu.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0ab0\u0aa6 \u0a95\u0ab0\u0acb", + "confirm": "\u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb", + "continue": "\u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb", + "goBack": "\u0aaa\u0abe\u0a9b\u0abe \u0a9c\u0abe\u0a93", + "reset": "\u0ab0\u0ac0\u0ab8\u0ac7\u0a9f \u0a95\u0ab0\u0acb", + "submit": "\u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb" + }, + "status": { + "loading": "\u0ab2\u0acb\u0aa1 \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7...", + "error": { + "default": "\u0a8f\u0a95 \u0aad\u0ac2\u0ab2 \u0aa5\u0a88", + "serverConnection": "\u0ab8\u0ab0\u0acd\u0ab5\u0ab0 \u0ab8\u0ac1\u0aa7\u0ac0 \u0aaa\u0ab9\u0acb\u0a82\u0a9a\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0ac1\u0a82 \u0aa8\u0aa5\u0ac0" + } + } + }, + "auth": { + "login": { + "title": "\u0a8f\u0aaa\u0acd\u0ab2\u0abf\u0a95\u0ac7\u0ab6\u0aa8 \u0a8d\u0a95\u0acd\u0ab8\u0ac7\u0ab8 \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7 \u0ab2\u0ac9\u0a97\u0abf\u0aa8 \u0a95\u0ab0\u0acb", + "form": { + "email": { + "label": "\u0a88\u0aae\u0ac7\u0ab2 \u0a8f\u0aa1\u0acd\u0ab0\u0ac7\u0ab8", + "required": "\u0a88\u0aae\u0ac7\u0ab2 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1", + "required": "\u0aaa\u0abe\u0ab8\u0ab5\u0ab0\u0acd\u0aa1 \u0a86\u0ab5\u0ab6\u0acd\u0aaf\u0a95 \u0a9b\u0ac7" + }, + "actions": { + "signin": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb" + }, + "alternativeText": { + "or": "\u0a85\u0aa5\u0ab5\u0abe" + } + }, + "errors": { + "default": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0ac1\u0a82 \u0aa8\u0aa5\u0ac0", + "signin": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "oauthSignin": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "redirectUriMismatch": "\u0ab0\u0ac0\u0aa1\u0abe\u0aaf\u0ab0\u0ac7\u0a95\u0acd\u0a9f URI oauth \u0a8d\u0aaa \u0a95\u0aa8\u0acd\u0aab\u0abf\u0a97\u0ab0\u0ac7\u0ab6\u0aa8 \u0ab8\u0abe\u0aa5\u0ac7 \u0aae\u0ac7\u0ab3 \u0a96\u0abe\u0aa4\u0acb \u0aa8\u0aa5\u0ac0", + "oauthCallback": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "oauthCreateAccount": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "emailCreateAccount": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "callback": "\u0a85\u0ab2\u0a97 \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0ab5\u0abe\u0aa8\u0acb \u0aaa\u0acd\u0ab0\u0aaf\u0abe\u0ab8 \u0a95\u0ab0\u0acb", + "oauthAccountNotLinked": "\u0aa4\u0aae\u0abe\u0ab0\u0ac0 \u0a93\u0ab3\u0a96\u0aa8\u0ac0 \u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7, \u0aae\u0ac2\u0ab3 \u0ab0\u0ac2\u0aaa\u0ac7 \u0ab5\u0abe\u0aaa\u0ab0\u0ac7\u0ab2\u0abe \u0a8f\u0a95\u0abe\u0a89\u0aa8\u0acd\u0a9f\u0aa5\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb", + "emailSignin": "\u0a88\u0aae\u0ac7\u0ab2 \u0aae\u0acb\u0a95\u0ab2\u0ac0 \u0ab6\u0a95\u0abe\u0aaf\u0acb \u0aa8\u0aa5\u0ac0", + "emailVerify": "\u0a95\u0ac3\u0aaa\u0abe \u0a95\u0ab0\u0ac0 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0a88\u0aae\u0ac7\u0ab2 \u0a9a\u0a95\u0abe\u0ab8\u0acb, \u0aa8\u0ab5\u0acb \u0a88\u0aae\u0ac7\u0ab2 \u0aae\u0acb\u0a95\u0ab2\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0a86\u0ab5\u0acd\u0aaf\u0acb \u0a9b\u0ac7", + "credentialsSignin": "\u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3. \u0a86\u0aaa\u0ac7\u0ab2\u0ac0 \u0ab5\u0abf\u0a97\u0aa4\u0acb \u0ab8\u0abe\u0a9a\u0ac0 \u0a9b\u0ac7 \u0a95\u0ac7 \u0aa8\u0ab9\u0ac0\u0a82 \u0aa4\u0ac7 \u0a9a\u0a95\u0abe\u0ab8\u0acb", + "sessionRequired": "\u0a86 \u0aaa\u0ac7\u0a9c\u0aa8\u0ac7 \u0a8d\u0a95\u0acd\u0ab8\u0ac7\u0ab8 \u0a95\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7 \u0a95\u0ac3\u0aaa\u0abe \u0a95\u0ab0\u0ac0 \u0ab8\u0abe\u0a87\u0aa8 \u0a87\u0aa8 \u0a95\u0ab0\u0acb" + } + }, + "provider": { + "continue": "{{provider}} \u0ab8\u0abe\u0aa5\u0ac7 \u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0acb" + } + }, + "chat": { + "input": { + "placeholder": "\u0a85\u0ab9\u0ac0\u0a82 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0ab2\u0a96\u0acb...", + "actions": { + "send": "\u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0aae\u0acb\u0a95\u0ab2\u0acb", + "stop": "\u0a95\u0abe\u0ab0\u0acd\u0aaf \u0ab0\u0acb\u0a95\u0acb", + "attachFiles": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a9c\u0acb\u0aa1\u0acb" + } + }, + "speech": { + "start": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0ab6\u0ab0\u0ac2 \u0a95\u0ab0\u0acb", + "stop": "\u0ab0\u0ac7\u0a95\u0acb\u0ab0\u0acd\u0aa1\u0abf\u0a82\u0a97 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb", + "connecting": "\u0a95\u0aa8\u0ac7\u0a95\u0acd\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7" + }, + "commands": { + "button": "\u0a9f\u0ac2\u0ab2\u0acd\u0ab8", + "changeTool": "\u0a9f\u0ac2\u0ab2 \u0aac\u0aa6\u0ab2\u0acb", + "availableTools": "\u0a89\u0aaa\u0ab2\u0aac\u0acd\u0aa7 \u0a9f\u0ac2\u0ab2\u0acd\u0ab8" + }, + "fileUpload": { + "dragDrop": "\u0a85\u0ab9\u0ac0\u0a82 \u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0a96\u0ac7\u0a82\u0a9a\u0acb \u0a85\u0aa8\u0ac7 \u0a9b\u0acb\u0aa1\u0acb", + "browse": "\u0aab\u0abe\u0a87\u0ab2\u0acd\u0ab8 \u0aac\u0acd\u0ab0\u0abe\u0a89\u0a9d \u0a95\u0ab0\u0acb", + "sizeLimit": "\u0aae\u0ab0\u0acd\u0aaf\u0abe\u0aa6\u0abe:", + "errors": { + "failed": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0a95\u0ab0\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3", + "cancelled": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0ab0\u0aa6 \u0a95\u0ab0\u0acd\u0aaf\u0ac1\u0a82" + }, + "actions": { + "cancelUpload": "\u0a85\u0aaa\u0ab2\u0acb\u0aa1 \u0ab0\u0aa6 \u0a95\u0ab0\u0acb", + "removeAttachment": "\u0a9c\u0acb\u0aa1\u0abe\u0aa3 \u0aa6\u0ac2\u0ab0 \u0a95\u0ab0\u0acb" + } + }, + "messages": { + "status": { + "using": "\u0ab5\u0abe\u0aaa\u0ab0\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac7", + "used": "\u0ab5\u0aaa\u0ab0\u0abe\u0aaf\u0ac7\u0ab2" + }, + "actions": { + "copy": { + "button": "\u0a95\u0acd\u0ab2\u0abf\u0aaa\u0aac\u0acb\u0ab0\u0acd\u0aa1 \u0aaa\u0ab0 \u0a95\u0ac9\u0aaa\u0abf \u0a95\u0ab0\u0acb", + "success": "\u0a95\u0ac9\u0aaa\u0abf \u0aa5\u0aaf\u0ac1\u0a82!" + } + }, + "feedback": { + "positive": "\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0", + "negative": "\u0aac\u0abf\u0aa8\u0a89\u0aaa\u0aaf\u0acb\u0a97\u0ac0", + "edit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0a82\u0aaa\u0abe\u0aa6\u0abf\u0aa4 \u0a95\u0ab0\u0acb", + "dialog": { + "title": "\u0a9f\u0abf\u0aaa\u0acd\u0aaa\u0aa3\u0ac0 \u0a89\u0aae\u0ac7\u0ab0\u0acb", + "submit": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0ab8\u0aac\u0aae\u0abf\u0a9f \u0a95\u0ab0\u0acb", + "yourFeedback": "\u0aa4\u0aae\u0abe\u0ab0\u0acb \u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6..." + }, + "status": { + "updating": "\u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0a88 \u0ab0\u0ab9\u0acd\u0aaf\u0ac1\u0a82 \u0a9b\u0ac7", + "updated": "\u0aaa\u0acd\u0ab0\u0aa4\u0abf\u0ab8\u0abe\u0aa6 \u0a85\u0aaa\u0aa1\u0ac7\u0a9f \u0aa5\u0aaf\u0acb" + } + } + }, + "history": { + "title": "\u0a9b\u0ac7\u0ab2\u0acd\u0ab2\u0abe \u0a87\u0aa8\u0aaa\u0ac1\u0a9f\u0acd\u0ab8", + "empty": "\u0a96\u0abe\u0ab2\u0ac0 \u0a9b\u0ac7...", + "show": "\u0a87\u0aa4\u0abf\u0ab9\u0abe\u0ab8 \u0aac\u0aa4\u0abe\u0ab5\u0acb" + }, + "settings": { + "title": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8 \u0aaa\u0ac7\u0aa8\u0ab2", + "customize": "\u0aa4\u0aae\u0abe\u0ab0\u0abe \u0a9a\u0ac7\u0a9f \u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8 \u0a85\u0ab9\u0ac0\u0a82 \u0a95\u0ab8\u0acd\u0a9f\u0aae\u0abe\u0a87\u0a9d \u0a95\u0ab0\u0acb" + }, + "watermark": "LLM \u0aad\u0ac2\u0ab2\u0acb \u0a95\u0ab0\u0ac0 \u0ab6\u0a95\u0ac7 \u0a9b\u0ac7. \u0aae\u0ab9\u0aa4\u0acd\u0ab5\u0aaa\u0ac2\u0ab0\u0acd\u0aa3 \u0aae\u0abe\u0ab9\u0abf\u0aa4\u0ac0 \u0aa4\u0aaa\u0abe\u0ab8\u0ab5\u0abe\u0aa8\u0ac1\u0a82 \u0ab5\u0abf\u0a9a\u0abe\u0ab0\u0acb." + }, + "threadHistory": { + "sidebar": { + "title": "\u0aaa\u0abe\u0a9b\u0ab2\u0ac0 \u0a9a\u0ac7\u0a9f\u0acd\u0ab8", + "filters": { + "search": "\u0ab6\u0acb\u0aa7\u0acb", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0a86\u0a9c\u0ac7", + "yesterday": "\u0a97\u0a88\u0a95\u0abe\u0ab2\u0ac7", + "previous7days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 7 \u0aa6\u0abf\u0ab5\u0ab8", + "previous30days": "\u0aaa\u0abe\u0a9b\u0ab2\u0abe 30 \u0aa6\u0abf\u0ab5\u0ab8" + }, + "empty": "\u0a95\u0acb\u0a88 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0acd\u0ab8 \u0aae\u0ab3\u0acd\u0aaf\u0abe \u0aa8\u0aa5\u0ac0", + "actions": { + "close": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0aac\u0a82\u0aa7 \u0a95\u0ab0\u0acb", + "open": "\u0ab8\u0abe\u0a87\u0aa1\u0aac\u0abe\u0ab0 \u0a96\u0acb\u0ab2\u0acb" + } + }, + "thread": { + "untitled": "\u0ab6\u0ac0\u0ab0\u0acd\u0ab7\u0a95 \u0ab5\u0a97\u0ab0\u0aa8\u0ac0 \u0ab5\u0abe\u0aa4\u0a9a\u0ac0\u0aa4", + "menu": { + "rename": "\u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0acb", + "share": "\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb", + "delete": "Delete" + }, + "actions": { + "share": { + "title": "\u0a9a\u0ac7\u0a9f\u0aa8\u0ac0 \u0ab2\u0abf\u0a82\u0a95 \u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb", + "button": "\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0acb", + "status": { + "copied": "\u0ab2\u0abf\u0a82\u0a95 \u0a95\u0ac9\u0aaa\u0abf \u0aa5\u0a88", + "created": "\u0ab6\u0ac7\u0ab0 \u0ab2\u0abf\u0a82\u0a95 \u0aac\u0aa8\u0abe\u0ab5\u0abe\u0a88!", + "unshared": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0aae\u0abe\u0a9f\u0ac7 \u0ab6\u0ac7\u0ab0\u0abf\u0a82\u0a97 \u0aa8\u0abf\u0ab7\u0acd\u0a95\u0acd\u0ab0\u0abf\u0aaf \u0a9b\u0ac7" + }, + "error": { + "create": "\u0ab6\u0ac7\u0ab0 \u0ab2\u0abf\u0a82\u0a95 \u0aac\u0aa8\u0abe\u0ab5\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3", + "unshare": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0a85\u0aa8\u0ab6\u0ac7\u0ab0 \u0a95\u0ab0\u0ab5\u0abe\u0aae\u0abe\u0a82 \u0aa8\u0abf\u0ab7\u0acd\u0aab\u0ab3" + } + }, + "delete": { + "title": "\u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ab5\u0abe\u0aa8\u0ac0 \u0aaa\u0ac1\u0ab7\u0acd\u0a9f\u0abf \u0a95\u0ab0\u0acb", + "description": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0a85\u0aa8\u0ac7 \u0aa4\u0ac7\u0aa8\u0abe \u0ab8\u0a82\u0aa6\u0ac7\u0ab6\u0abe\u0a93 \u0a85\u0aa8\u0ac7 \u0aa4\u0aa4\u0acd\u0ab5\u0acb\u0aa8\u0ac7 \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ab6\u0ac7. \u0a86 \u0a95\u0acd\u0ab0\u0abf\u0aaf\u0abe \u0aaa\u0abe\u0a9b\u0ac0 \u0aab\u0ac7\u0ab0\u0ab5\u0ac0 \u0ab6\u0a95\u0abe\u0ab6\u0ac7 \u0aa8\u0ab9\u0ac0\u0a82", + "success": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0", + "inProgress": "\u0a9a\u0ac7\u0a9f \u0a95\u0abe\u0aa2\u0ac0 \u0aa8\u0abe\u0a96\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f" + }, + "rename": { + "title": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0acb", + "description": "\u0a86 \u0aa5\u0acd\u0ab0\u0ac7\u0aa1 \u0aae\u0abe\u0a9f\u0ac7 \u0aa8\u0ab5\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aa6\u0abe\u0a96\u0ab2 \u0a95\u0ab0\u0acb", + "form": { + "name": { + "label": "\u0aa8\u0abe\u0aae", + "placeholder": "\u0aa8\u0ab5\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aa6\u0abe\u0a96\u0ab2 \u0a95\u0ab0\u0acb" + } + }, + "success": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0abe\u0aaf\u0ac1\u0a82!", + "inProgress": "\u0aa5\u0acd\u0ab0\u0ac7\u0aa1\u0aa8\u0ac1\u0a82 \u0aa8\u0abe\u0aae \u0aac\u0aa6\u0ab2\u0ac0 \u0ab0\u0ab9\u0acd\u0aaf\u0abe \u0a9b\u0ac0\u0a8f" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0a9a\u0ac7\u0a9f", + "readme": "\u0ab5\u0abe\u0a82\u0a9a\u0acb", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f", + "dialog": { + "title": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f \u0aac\u0aa8\u0abe\u0ab5\u0acb", + "description": "\u0a86 \u0aa4\u0aae\u0abe\u0ab0\u0acb \u0ab5\u0ab0\u0acd\u0aa4\u0aae\u0abe\u0aa8 \u0a9a\u0ac7\u0a9f \u0a87\u0aa4\u0abf\u0ab9\u0abe\u0ab8 \u0ab8\u0abe\u0aab \u0a95\u0ab0\u0ab6\u0ac7. \u0ab6\u0ac1\u0a82 \u0aa4\u0aae\u0ac7 \u0a9a\u0abe\u0ab2\u0ac1 \u0ab0\u0abe\u0a96\u0ab5\u0abe \u0aae\u0abe\u0a82\u0a97\u0acb \u0a9b\u0acb?", + "tooltip": "\u0aa8\u0ab5\u0ac0 \u0a9a\u0ac7\u0a9f" + } + }, + "user": { + "menu": { + "settings": "\u0ab8\u0ac7\u0a9f\u0abf\u0a82\u0a97\u0acd\u0ab8", + "settingsKey": "S", + "apiKeys": "API \u0a95\u0ac0", + "logout": "\u0ab2\u0ac9\u0a97\u0a86\u0a89\u0a9f" + } + } + }, + "apiKeys": { + "title": "\u0a9c\u0ab0\u0ac2\u0ab0\u0ac0 API \u0a95\u0ac0", + "description": "\u0a86 \u0a8f\u0aaa\u0acd\u0ab2\u0abf\u0a95\u0ac7\u0ab6\u0aa8 \u0ab5\u0abe\u0aaa\u0ab0\u0ab5\u0abe \u0aae\u0abe\u0a9f\u0ac7, \u0aa8\u0ac0\u0a9a\u0ac7\u0aa8\u0ac0 API \u0a95\u0ac0 \u0a9c\u0ab0\u0ac2\u0ab0\u0ac0 \u0a9b\u0ac7. \u0a95\u0ac0 \u0aa4\u0aae\u0abe\u0ab0\u0abe \u0aa1\u0abf\u0ab5\u0abe\u0a87\u0ab8\u0aa8\u0abe \u0ab2\u0acb\u0a95\u0ab2 \u0ab8\u0acd\u0a9f\u0acb\u0ab0\u0ac7\u0a9c\u0aae\u0abe\u0a82 \u0ab8\u0a82\u0a97\u0acd\u0ab0\u0ab9\u0abf\u0aa4 \u0aa5\u0ab6\u0ac7.", + "success": { + "saved": "\u0ab8\u0aab\u0ab3\u0aa4\u0abe\u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0a95 \u0ab8\u0abe\u0a9a\u0ab5\u0acd\u0aaf\u0ac1\u0a82" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0aac\u0ac7\u0a82\u0a9a\u0ac0 \u0ab2\u0acb..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/he-IL.json b/.chainlit/translations/he-IL.json new file mode 100644 index 0000000..8f6b0b3 --- /dev/null +++ b/.chainlit/translations/he-IL.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u05d1\u05d9\u05d8\u05d5\u05dc", + "confirm": "\u05d0\u05d9\u05e9\u05d5\u05e8", + "continue": "\u05d4\u05de\u05e9\u05da", + "goBack": "\u05d7\u05d6\u05d5\u05e8", + "reset": "\u05d0\u05d9\u05e4\u05d5\u05e1", + "submit": "\u05e9\u05dc\u05d7" + }, + "status": { + "loading": "\u05d8\u05d5\u05e2\u05df...", + "error": { + "default": "\u05d0\u05d9\u05e8\u05e2\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4", + "serverConnection": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05dc\u05e9\u05e8\u05ea" + } + } + }, + "auth": { + "login": { + "title": "\u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4", + "form": { + "email": { + "label": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05d9\u05de\u05d9\u05d9\u05dc", + "required": "\u05e9\u05d3\u05d4 \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u05e1\u05d9\u05e1\u05de\u05d4", + "required": "\u05e9\u05d3\u05d4 \u05d4\u05e1\u05d9\u05e1\u05de\u05d4 \u05d4\u05d5\u05d0 \u05e9\u05d3\u05d4 \u05d7\u05d5\u05d1\u05d4" + }, + "actions": { + "signin": "\u05d4\u05ea\u05d7\u05d1\u05e8" + }, + "alternativeText": { + "or": "\u05d0\u05d5" + } + }, + "errors": { + "default": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8", + "signin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "oauthSignin": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "redirectUriMismatch": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05d4\u05e4\u05e0\u05d9\u05d4 \u05d0\u05d9\u05e0\u05d4 \u05ea\u05d5\u05d0\u05de\u05ea \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d9\u05ea OAuth", + "oauthCallback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "oauthCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "emailCreateAccount": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "callback": "\u05e0\u05e1\u05d4 \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d7\u05e9\u05d1\u05d5\u05df \u05d0\u05d7\u05e8", + "oauthAccountNotLinked": "\u05db\u05d3\u05d9 \u05dc\u05d0\u05de\u05ea \u05d0\u05ea \u05d6\u05d4\u05d5\u05ea\u05da, \u05d4\u05ea\u05d7\u05d1\u05e8 \u05e2\u05dd \u05d0\u05d5\u05ea\u05d5 \u05d7\u05e9\u05d1\u05d5\u05df \u05d1\u05d5 \u05d4\u05e9\u05ea\u05de\u05e9\u05ea \u05d1\u05de\u05e7\u05d5\u05e8", + "emailSignin": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05e9\u05dc\u05d5\u05d7 \u05d0\u05ea \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc", + "emailVerify": "\u05d0\u05e0\u05d0 \u05d0\u05de\u05ea \u05d0\u05ea \u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05e9\u05dc\u05da, \u05e0\u05e9\u05dc\u05d7 \u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05d7\u05d3\u05e9", + "credentialsSignin": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4. \u05d1\u05d3\u05d5\u05e7 \u05e9\u05d4\u05e4\u05e8\u05d8\u05d9\u05dd \u05e9\u05d4\u05d6\u05e0\u05ea \u05e0\u05db\u05d5\u05e0\u05d9\u05dd", + "sessionRequired": "\u05d0\u05e0\u05d0 \u05d4\u05ea\u05d7\u05d1\u05e8 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05d3\u05e3 \u05d6\u05d4" + } + }, + "provider": { + "continue": "\u05d4\u05de\u05e9\u05da \u05e2\u05dd {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "\u05d4\u05e7\u05dc\u05d3 \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d4 \u05e9\u05dc\u05da \u05db\u05d0\u05df...", + "actions": { + "send": "\u05e9\u05dc\u05d7 \u05d4\u05d5\u05d3\u05e2\u05d4", + "stop": "\u05e2\u05e6\u05d5\u05e8 \u05de\u05e9\u05d9\u05de\u05d4", + "attachFiles": "\u05e6\u05e8\u05e3 \u05e7\u05d1\u05e6\u05d9\u05dd" + } + }, + "speech": { + "start": "\u05d4\u05ea\u05d7\u05dc \u05d4\u05e7\u05dc\u05d8\u05d4", + "stop": "\u05e2\u05e6\u05d5\u05e8 \u05d4\u05e7\u05dc\u05d8\u05d4", + "connecting": "\u05de\u05ea\u05d7\u05d1\u05e8" + }, + "commands": { + "button": "\u05db\u05dc\u05d9\u05dd", + "changeTool": "\u05e9\u05e0\u05d4 \u05db\u05dc\u05d9", + "availableTools": "\u05db\u05dc\u05d9\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd" + }, + "fileUpload": { + "dragDrop": "\u05d2\u05e8\u05d5\u05e8 \u05d5\u05e9\u05d7\u05e8\u05e8 \u05e7\u05d1\u05e6\u05d9\u05dd \u05db\u05d0\u05df", + "browse": "\u05e2\u05d9\u05d9\u05df \u05d1\u05e7\u05d1\u05e6\u05d9\u05dd", + "sizeLimit": "\u05de\u05d2\u05d1\u05dc\u05d4:", + "errors": { + "failed": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4", + "cancelled": "\u05d4\u05e2\u05dc\u05d0\u05d4 \u05d1\u05d5\u05d8\u05dc\u05d4 \u05e9\u05dc" + }, + "actions": { + "cancelUpload": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05d4\u05e2\u05dc\u05d0\u05d4", + "removeAttachment": "\u05d4\u05e1\u05e8\u05ea \u05e7\u05d5\u05d1\u05e5 \u05de\u05e6\u05d5\u05e8\u05e3" + } + }, + "messages": { + "status": { + "using": "\u05de\u05e9\u05ea\u05de\u05e9 \u05d1", + "used": "\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1" + }, + "actions": { + "copy": { + "button": "\u05d4\u05e2\u05ea\u05e7 \u05dc\u05dc\u05d5\u05d7", + "success": "\u05d4\u05d5\u05e2\u05ea\u05e7!" + } + }, + "feedback": { + "positive": "\u05de\u05d5\u05e2\u05d9\u05dc", + "negative": "\u05dc\u05d0 \u05de\u05d5\u05e2\u05d9\u05dc", + "edit": "\u05e2\u05e8\u05d5\u05da \u05de\u05e9\u05d5\u05d1", + "dialog": { + "title": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d2\u05d5\u05d1\u05d4", + "submit": "\u05e9\u05dc\u05d7 \u05de\u05e9\u05d5\u05d1", + "yourFeedback": "\u05d4\u05de\u05e9\u05d5\u05d1 \u05e9\u05dc\u05da..." + }, + "status": { + "updating": "\u05de\u05e2\u05d3\u05db\u05df", + "updated": "\u05d4\u05de\u05e9\u05d5\u05d1 \u05e2\u05d5\u05d3\u05db\u05df" + } + } + }, + "history": { + "title": "\u05e7\u05dc\u05d8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "empty": "\u05db\u05dc \u05db\u05da \u05e8\u05d9\u05e7...", + "show": "\u05d4\u05e6\u05d2 \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d4" + }, + "settings": { + "title": "\u05e4\u05d0\u05e0\u05dc \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", + "customize": "\u05d4\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05d0\u05ea \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d4\u05e6'\u05d0\u05d8 \u05e9\u05dc\u05da \u05db\u05d0\u05df" + }, + "watermark": "\u05de\u05d5\u05d3\u05dc\u05d9 \u05e9\u05e4\u05d4 \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05e2\u05dc\u05d5\u05dc\u05d9\u05dd \u05dc\u05e2\u05e9\u05d5\u05ea \u05d8\u05e2\u05d5\u05d9\u05d5\u05ea. \u05db\u05d3\u05d0\u05d9 \u05dc\u05d1\u05d3\u05d5\u05e7 \u05de\u05d9\u05d3\u05e2 \u05d7\u05e9\u05d5\u05d1." + }, + "threadHistory": { + "sidebar": { + "title": "\u05e6'\u05d0\u05d8\u05d9\u05dd \u05e7\u05d5\u05d3\u05de\u05d9\u05dd", + "filters": { + "search": "\u05d7\u05d9\u05e4\u05d5\u05e9", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u05d4\u05d9\u05d5\u05dd", + "yesterday": "\u05d0\u05ea\u05de\u05d5\u05dc", + "previous7days": "7 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "previous30days": "30 \u05d9\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd" + }, + "empty": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05e9\u05d9\u05d7\u05d5\u05ea", + "actions": { + "close": "\u05e1\u05d2\u05d5\u05e8 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", + "open": "\u05e4\u05ea\u05d7 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3" + } + }, + "thread": { + "untitled": "\u05e9\u05d9\u05d7\u05d4 \u05dc\u05dc\u05d0 \u05db\u05d5\u05ea\u05e8\u05ea", + "menu": { + "rename": "\u05e9\u05d9\u05e0\u05d5\u05d9 \u05e9\u05dd", + "share": "\u05e9\u05d9\u05ea\u05d5\u05e3", + "delete": "Delete" + }, + "actions": { + "share": { + "title": "\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e9\u05d9\u05d7\u05d4", + "button": "\u05e9\u05d9\u05ea\u05d5\u05e3", + "status": { + "copied": "\u05d4\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05d5\u05e2\u05ea\u05e7", + "created": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e0\u05d5\u05e6\u05e8!", + "unshared": "\u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05d1\u05d5\u05d8\u05dc \u05e2\u05d1\u05d5\u05e8 \u05e9\u05d9\u05d7\u05d4 \u05d6\u05d5" + }, + "error": { + "create": "\u05d9\u05e6\u05d9\u05e8\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e0\u05db\u05e9\u05dc\u05d4", + "unshare": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05d4\u05e9\u05d9\u05ea\u05d5\u05e3 \u05e9\u05dc \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e0\u05db\u05e9\u05dc" + } + }, + "delete": { + "title": "\u05d0\u05e9\u05e8 \u05de\u05d7\u05d9\u05e7\u05d4", + "description": "\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05ea\u05de\u05d7\u05e7 \u05d0\u05ea \u05d4\u05e9\u05d9\u05d7\u05d4 \u05d5\u05db\u05df \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d5\u05ea \u05d5\u05d4\u05d0\u05dc\u05de\u05e0\u05d8\u05d9\u05dd \u05e9\u05dc\u05d4. \u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05dc\u05d1\u05d8\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5", + "success": "\u05d4\u05e6'\u05d0\u05d8 \u05e0\u05de\u05d7\u05e7", + "inProgress": "\u05de\u05d5\u05d7\u05e7 \u05e6'\u05d0\u05d8" + }, + "rename": { + "title": "\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4", + "description": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9 \u05dc\u05e9\u05d9\u05d7\u05d4 \u05d6\u05d5", + "form": { + "name": { + "label": "\u05e9\u05dd", + "placeholder": "\u05d4\u05d6\u05df \u05e9\u05dd \u05d7\u05d3\u05e9" + } + }, + "success": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e9\u05d5\u05e0\u05d4!", + "inProgress": "\u05de\u05e9\u05e0\u05d4 \u05e9\u05dd \u05e9\u05d9\u05d7\u05d4" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u05e6'\u05d0\u05d8", + "readme": "\u05e7\u05e8\u05d0 \u05d0\u05d5\u05ea\u05d9", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9", + "dialog": { + "title": "\u05e6\u05d5\u05e8 \u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9", + "description": "\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05ea\u05e0\u05e7\u05d4 \u05d0\u05ea \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d9\u05ea \u05d4\u05e6'\u05d0\u05d8 \u05d4\u05e0\u05d5\u05db\u05d7\u05d9\u05ea \u05e9\u05dc\u05da. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05de\u05e9\u05d9\u05da?", + "tooltip": "\u05e6'\u05d0\u05d8 \u05d7\u05d3\u05e9" + } + }, + "user": { + "menu": { + "settings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", + "settingsKey": "\u05d4", + "apiKeys": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API", + "logout": "\u05d4\u05ea\u05e0\u05ea\u05e7" + } + } + }, + "apiKeys": { + "title": "\u05de\u05e4\u05ea\u05d7\u05d5\u05ea API \u05e0\u05d3\u05e8\u05e9\u05d9\u05dd", + "description": "\u05db\u05d3\u05d9 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4 \u05d6\u05d5, \u05e0\u05d3\u05e8\u05e9\u05d9\u05dd \u05de\u05e4\u05ea\u05d7\u05d5\u05ea API \u05d4\u05d1\u05d0\u05d9\u05dd. \u05d4\u05de\u05e4\u05ea\u05d7\u05d5\u05ea \u05de\u05d0\u05d5\u05d7\u05e1\u05e0\u05d9\u05dd \u05d1\u05d0\u05d7\u05e1\u05d5\u05df \u05d4\u05de\u05e7\u05d5\u05de\u05d9 \u05e9\u05dc \u05d4\u05de\u05db\u05e9\u05d9\u05e8 \u05e9\u05dc\u05da.", + "success": { + "saved": "\u05e0\u05e9\u05de\u05e8 \u05d1\u05d4\u05e6\u05dc\u05d7\u05d4" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u05d1\u05d7\u05e8..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/hi.json b/.chainlit/translations/hi.json new file mode 100644 index 0000000..5642f15 --- /dev/null +++ b/.chainlit/translations/hi.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902", + "confirm": "\u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902", + "continue": "\u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902", + "goBack": "\u0935\u093e\u092a\u0938 \u091c\u093e\u090f\u0902", + "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902", + "submit": "\u091c\u092e\u093e \u0915\u0930\u0947\u0902" + }, + "status": { + "loading": "\u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u093e \u0939\u0948...", + "error": { + "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u093f \u0939\u0941\u0908", + "serverConnection": "\u0938\u0930\u094d\u0935\u0930 \u0938\u0947 \u0938\u0902\u092a\u0930\u094d\u0915 \u0928\u0939\u0940\u0902 \u0939\u094b \u092a\u093e \u0930\u0939\u093e" + } + } + }, + "auth": { + "login": { + "title": "\u0910\u092a \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u0947\u0902", + "form": { + "email": { + "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u093e", + "required": "\u0908\u092e\u0947\u0932 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921", + "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u090f\u0915 \u0906\u0935\u0936\u094d\u092f\u0915 \u092b\u093c\u0940\u0932\u094d\u0921 \u0939\u0948" + }, + "actions": { + "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902" + }, + "alternativeText": { + "or": "\u092f\u093e" + } + }, + "errors": { + "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925", + "signin": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "oauthSignin": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "redirectUriMismatch": "\u0930\u0940\u0921\u093e\u092f\u0930\u0947\u0915\u094d\u091f URI oauth \u0910\u092a \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0938\u0947 \u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u0916\u093e \u0930\u0939\u093e", + "oauthCallback": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "oauthCreateAccount": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "emailCreateAccount": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "callback": "\u0915\u093f\u0938\u0940 \u0926\u0942\u0938\u0930\u0947 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0902", + "oauthAccountNotLinked": "\u0905\u092a\u0928\u0940 \u092a\u0939\u091a\u093e\u0928 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f, \u0909\u0938\u0940 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902 \u091c\u093f\u0938\u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0906\u092a\u0928\u0947 \u092e\u0942\u0932 \u0930\u0942\u092a \u0938\u0947 \u0915\u093f\u092f\u093e \u0925\u093e", + "emailSignin": "\u0908\u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u092d\u0947\u091c\u093e \u091c\u093e \u0938\u0915\u093e", + "emailVerify": "\u0915\u0943\u092a\u092f\u093e \u0905\u092a\u0928\u093e \u0908\u092e\u0947\u0932 \u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902, \u090f\u0915 \u0928\u092f\u093e \u0908\u092e\u0947\u0932 \u092d\u0947\u091c\u093e \u0917\u092f\u093e \u0939\u0948", + "credentialsSignin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0935\u093f\u092b\u0932\u0964 \u0906\u092a\u0915\u0947 \u0926\u094d\u0935\u093e\u0930\u093e \u092a\u094d\u0930\u0926\u093e\u0928 \u0915\u093f\u090f \u0917\u090f \u0935\u093f\u0935\u0930\u0923 \u0915\u0940 \u091c\u093e\u0902\u091a \u0915\u0930\u0947\u0902", + "sessionRequired": "\u0907\u0938 \u092a\u0943\u0937\u094d\u0920 \u0924\u0915 \u092a\u0939\u0941\u0902\u091a\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u0943\u092a\u092f\u093e \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902" + } + }, + "provider": { + "continue": "{{provider}} \u0915\u0947 \u0938\u093e\u0925 \u091c\u093e\u0930\u0940 \u0930\u0916\u0947\u0902" + } + }, + "chat": { + "input": { + "placeholder": "\u0905\u092a\u0928\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0939\u093e\u0902 \u091f\u093e\u0907\u092a \u0915\u0930\u0947\u0902...", + "actions": { + "send": "\u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902", + "stop": "\u0915\u093e\u0930\u094d\u092f \u0930\u094b\u0915\u0947\u0902", + "attachFiles": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u0938\u0902\u0932\u0917\u094d\u0928 \u0915\u0930\u0947\u0902" + } + }, + "speech": { + "start": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902", + "stop": "\u0930\u093f\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0930\u094b\u0915\u0947\u0902", + "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948" + }, + "fileUpload": { + "dragDrop": "\u092b\u093c\u093e\u0907\u0932\u094b\u0902 \u0915\u094b \u092f\u0939\u093e\u0902 \u0916\u0940\u0902\u091a\u0947\u0902 \u0914\u0930 \u091b\u094b\u0921\u093c\u0947\u0902", + "browse": "\u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u092c\u094d\u0930\u093e\u0909\u091c\u093c \u0915\u0930\u0947\u0902", + "sizeLimit": "\u0938\u0940\u092e\u093e:", + "errors": { + "failed": "\u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932", + "cancelled": "\u0915\u093e \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u093f\u092f\u093e \u0917\u092f\u093e" + }, + "actions": { + "cancelUpload": "\u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902", + "removeAttachment": "\u0938\u0902\u0932\u0917\u094d\u0928\u0915 \u0939\u091f\u093e\u090f\u0902" + } + }, + "commands": { + "button": "\u0909\u092a\u0915\u0930\u0923", + "changeTool": "\u0909\u092a\u0915\u0930\u0923 \u092c\u0926\u0932\u0947\u0902", + "availableTools": "\u0909\u092a\u0932\u092c\u094d\u0927 \u0909\u092a\u0915\u0930\u0923" + }, + "messages": { + "status": { + "using": "\u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902", + "used": "\u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e" + }, + "actions": { + "copy": { + "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921 \u092a\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u0947\u0902", + "success": "\u0915\u0949\u092a\u0940 \u0915\u093f\u092f\u093e \u0917\u092f\u093e!" + } + }, + "feedback": { + "positive": "\u0938\u0939\u093e\u092f\u0915", + "negative": "\u0938\u0939\u093e\u092f\u0915 \u0928\u0939\u0940\u0902", + "edit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902", + "dialog": { + "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093c\u0947\u0902", + "submit": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u091c\u092e\u093e \u0915\u0930\u0947\u0902", + "yourFeedback": "\u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e..." + }, + "status": { + "updating": "\u0905\u092a\u0921\u0947\u091f \u0939\u094b \u0930\u0939\u093e \u0939\u0948", + "updated": "\u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0905\u092a\u0921\u0947\u091f \u0915\u0940 \u0917\u0908" + } + } + }, + "history": { + "title": "\u092a\u093f\u091b\u0932\u0947 \u0907\u0928\u092a\u0941\u091f", + "empty": "\u0915\u0941\u091b \u092d\u0940 \u0928\u0939\u0940\u0902 \u0939\u0948...", + "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093f\u0916\u093e\u090f\u0902" + }, + "settings": { + "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u092a\u0948\u0928\u0932", + "customize": "\u0905\u092a\u0928\u0947 \u091a\u0948\u091f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0915\u094b \u092f\u0939\u093e\u0902 \u0905\u0928\u0941\u0915\u0942\u0932\u093f\u0924 \u0915\u0930\u0947\u0902" + }, + "watermark": "\u090f\u0932\u090f\u0932\u090f\u092e \u0917\u0932\u0924\u093f\u092f\u093e\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 \u092e\u0939\u0924\u094d\u0935\u092a\u0942\u0930\u094d\u0923 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0915\u0940 \u091c\u093e\u0902\u091a \u0915\u0930\u0928\u0947 \u092a\u0930 \u0935\u093f\u091a\u093e\u0930 \u0915\u0930\u0947\u0902\u0964" + }, + "threadHistory": { + "sidebar": { + "title": "\u092a\u093f\u091b\u0932\u0940 \u091a\u0948\u091f", + "filters": { + "search": "\u0916\u094b\u091c\u0947\u0902", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0906\u091c", + "yesterday": "\u0915\u0932", + "previous7days": "\u092a\u093f\u091b\u0932\u0947 7 \u0926\u093f\u0928", + "previous30days": "\u092a\u093f\u091b\u0932\u0947 30 \u0926\u093f\u0928" + }, + "empty": "\u0915\u094b\u0908 \u0925\u094d\u0930\u0947\u0921 \u0928\u0939\u0940\u0902 \u092e\u093f\u0932\u093e", + "actions": { + "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u0947\u0902", + "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0916\u094b\u0932\u0947\u0902" + } + }, + "thread": { + "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0939\u0940\u0928 \u0935\u093e\u0930\u094d\u0924\u093e\u0932\u093e\u092a", + "menu": { + "rename": "\u0928\u093e\u092e \u092c\u0926\u0932\u0947\u0902", + "share": "\u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902", + "delete": "Delete" + }, + "actions": { + "share": { + "title": "\u091a\u0948\u091f \u0915\u093e \u0932\u093f\u0902\u0915 \u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902", + "button": "\u0938\u093e\u091d\u093e \u0915\u0930\u0947\u0902", + "status": { + "copied": "\u0932\u093f\u0902\u0915 \u0915\u0949\u092a\u0940 \u0915\u093f\u092f\u093e \u0917\u092f\u093e", + "created": "\u0936\u0947\u092f\u0930 \u0932\u093f\u0902\u0915 \u092c\u0928\u093e\u092f\u093e \u0917\u092f\u093e!", + "unshared": "\u0907\u0938 \u0925\u094d\u0930\u0947\u0921 \u0915\u0947 \u0932\u093f\u090f \u0938\u093e\u091d\u093e \u0915\u0930\u0928\u093e \u0928\u093f\u0937\u094d\u0915\u094d\u0930\u093f\u092f \u0939\u0948" + }, + "error": { + "create": "\u0936\u0947\u092f\u0930 \u0932\u093f\u0902\u0915 \u092c\u0928\u093e\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932", + "unshare": "\u0925\u094d\u0930\u0947\u0921 \u0915\u094b \u0905\u0928\u0936\u0947\u092f\u0930 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932" + } + }, + "delete": { + "title": "\u0939\u091f\u093e\u0928\u0947 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902", + "description": "\u092f\u0939 \u0925\u094d\u0930\u0947\u0921 \u0914\u0930 \u0907\u0938\u0915\u0947 \u0938\u0902\u0926\u0947\u0936\u094b\u0902 \u0914\u0930 \u0924\u0924\u094d\u0935\u094b\u0902 \u0915\u094b \u0939\u091f\u093e \u0926\u0947\u0917\u093e\u0964 \u092f\u0939 \u0915\u094d\u0930\u093f\u092f\u093e \u0935\u093e\u092a\u0938 \u0928\u0939\u0940\u0902 \u0915\u0940 \u091c\u093e \u0938\u0915\u0924\u0940", + "success": "\u091a\u0948\u091f \u0939\u091f\u093e \u0926\u0940 \u0917\u0908", + "inProgress": "\u091a\u0948\u091f \u0939\u091f\u093e\u0908 \u091c\u093e \u0930\u0939\u0940 \u0939\u0948" + }, + "rename": { + "title": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u0947\u0902", + "description": "\u0907\u0938 \u0925\u094d\u0930\u0947\u0921 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0928\u092f\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902", + "form": { + "name": { + "label": "\u0928\u093e\u092e", + "placeholder": "\u0928\u092f\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902" + } + }, + "success": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932 \u0926\u093f\u092f\u093e \u0917\u092f\u093e!", + "inProgress": "\u0925\u094d\u0930\u0947\u0921 \u0915\u093e \u0928\u093e\u092e \u092c\u0926\u0932\u093e \u091c\u093e \u0930\u0939\u093e \u0939\u0948" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u091a\u0948\u091f", + "readme": "\u0930\u0940\u0921\u092e\u0940", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0928\u0908 \u091a\u0948\u091f", + "dialog": { + "title": "\u0928\u0908 \u091a\u0948\u091f \u092c\u0928\u093e\u090f\u0902", + "description": "\u092f\u0939 \u0906\u092a\u0915\u093e \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u091a\u0948\u091f \u0907\u0924\u093f\u0939\u093e\u0938 \u0938\u093e\u092b\u093c \u0915\u0930 \u0926\u0947\u0917\u093e\u0964 \u0915\u094d\u092f\u093e \u0906\u092a \u091c\u093e\u0930\u0940 \u0930\u0916\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902?", + "tooltip": "\u0928\u0908 \u091a\u0948\u091f" + } + }, + "user": { + "menu": { + "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938", + "settingsKey": "S", + "apiKeys": "API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902", + "logout": "\u0932\u0949\u0917\u0906\u0909\u091f" + } + } + }, + "apiKeys": { + "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902", + "description": "\u0907\u0938 \u0910\u092a \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f, \u0928\u093f\u092e\u094d\u0928\u0932\u093f\u0916\u093f\u0924 API \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902 \u0906\u0935\u0936\u094d\u092f\u0915 \u0939\u0948\u0902\u0964 \u0915\u0941\u0902\u091c\u093f\u092f\u093e\u0902 \u0906\u092a\u0915\u0947 \u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u0947 \u0938\u094d\u0925\u093e\u0928\u0940\u092f \u0938\u0902\u0917\u094d\u0930\u0939\u0923 \u092e\u0947\u0902 \u0938\u0902\u0917\u094d\u0930\u0939\u0940\u0924 \u0915\u0940 \u091c\u093e\u0924\u0940 \u0939\u0948\u0902\u0964", + "success": { + "saved": "\u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u091a\u0941\u0928\u0947\u0902..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/it.json b/.chainlit/translations/it.json new file mode 100644 index 0000000..5ce0340 --- /dev/null +++ b/.chainlit/translations/it.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Cancella", + "confirm": "Conferma", + "continue": "Continua", + "goBack": "Ritorna", + "reset": "Reset", + "submit": "Invia" + }, + "status": { + "loading": "Caricamento...", + "error": { + "default": "Si \u00e8 verificato un errore", + "serverConnection": "Impossibile connettersi al server" + } + } + }, + "auth": { + "login": { + "title": "Accedi per utilizzare l'app", + "form": { + "email": { + "label": "Indirizzo email", + "required": "l'email \u00e8 un campo obbligatorio", + "placeholder": "me@example.com" + }, + "password": { + "label": "Password", + "required": "la password \u00e8 un campo obbligatorio" + }, + "actions": { + "signin": "Accedi" + }, + "alternativeText": { + "or": "O" + } + }, + "errors": { + "default": "Impossibile effettuare l'accesso", + "signin": "Prova ad accedere con un account diverso", + "oauthSignin": "Prova ad accedere con un account diverso", + "redirectUriMismatch": "L'URI di reindirizzamento non corrisponde alla configurazione dell'app OAuth", + "oauthCallback": "Prova ad accedere con un account diverso", + "oauthCreateAccount": "Prova ad accedere con un account diverso", + "emailCreateAccount": "Prova ad accedere con un account diverso", + "callback": "Prova ad accedere con un account diverso", + "oauthAccountNotLinked": "Per confermare la tua identit\u00e0, accedi con lo stesso account che hai usato in precedenza", + "emailSignin": "Impossibile inviare l'email", + "emailVerify": "Verifica la tua email, \u00e8 stata inviata una nuova email", + "credentialsSignin": "Accesso non riuscito. Verifica che i dati forniti siano corretti", + "sessionRequired": "Accedi per visualizzare questa pagina" + } + }, + "provider": { + "continue": "Continua con {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Scrivi un messaggio...", + "actions": { + "send": "Invia messaggio", + "stop": "Interrompi attivit\u00e0", + "attachFiles": "Allega file" + } + }, + "commands": { + "button": "Strumenti", + "changeTool": "Cambia strumento", + "availableTools": "Strumenti disponibili" + }, + "speech": { + "start": "Inizia registrazione", + "stop": "Interrompi registrazione", + "connecting": "Connettendo" + }, + "fileUpload": { + "dragDrop": "Trascina e rilascia i file qui", + "browse": "Sfoglia file", + "sizeLimit": "Limite:", + "errors": { + "failed": "Caricamento file non riuscito", + "cancelled": "Caricamento annullato di" + }, + "actions": { + "cancelUpload": "Annulla caricamento", + "removeAttachment": "Rimuovi allegato" + } + }, + "messages": { + "status": { + "using": "In uso", + "used": "Utilizzato" + }, + "actions": { + "copy": { + "button": "Copia negli appunti", + "success": "Copiato!" + } + }, + "feedback": { + "positive": "Utile", + "negative": "Non utile", + "edit": "Modifica feedback", + "dialog": { + "title": "Aggiungi un commento", + "submit": "Invia feedback", + "yourFeedback": "Il tuo feedback..." + }, + "status": { + "updating": "Aggiornamento", + "updated": "Feedback aggiornato" + } + } + }, + "history": { + "title": "Cronologia chat", + "empty": "Cos\u00ec vuoto...", + "show": "Mostra cronologia" + }, + "settings": { + "title": "Impostazioni", + "customize": "Personalizza le impostazioni della tua chat qui" + }, + "watermark": "Gli LLMS possono commettere errori. Verifica le info importanti." + }, + "threadHistory": { + "sidebar": { + "title": "Chat precedenti", + "filters": { + "search": "Cerca", + "placeholder": "Cerca conversazioni..." + }, + "timeframes": { + "today": "Oggi", + "yesterday": "Ieri", + "previous7days": "Ultimi 7 giorni", + "previous30days": "Ultimi 30 giorni" + }, + "empty": "Nessuna chat trovata", + "actions": { + "close": "Chiudi barra laterale", + "open": "Apri barra laterale" + } + }, + "thread": { + "untitled": "Conversazione senza titolo", + "menu": { + "rename": "Rinomina", + "share": "Condividi", + "delete": "Elimina" + }, + "actions": { + "share": { + "title": "Condividi link conversazione", + "button": "Condividi", + "status": { + "copied": "Link copiato", + "created": "Link di condivisione creato!", + "unshared": "Condivisione disabilitata per questa chat" + }, + "error": { + "create": "Impossibile creare il link di condivisione", + "unshare": "Impossibile annullare la condivisione della chat" + } + }, + "delete": { + "title": "Conferma eliminazione", + "description": "Stai per eliminare la chat insieme ai suoi messaggi ed elementi. Questa azione non pu\u00f2 essere annullata", + "success": "Chat eliminata", + "inProgress": "Eliminazione chat" + }, + "rename": { + "title": "Rinomina chat", + "description": "Inserisci un nuovo nome per questa conversazione", + "form": { + "name": { + "label": "Nome", + "placeholder": "Inserisci nuovo nome" + } + }, + "success": "Chat rinominata!", + "inProgress": "Rinomina chat" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "Leggimi", + "theme": { + "light": "Tema Chiaro", + "dark": "Tema Scuro", + "system": "Usa tema di sistema" + } + }, + "newChat": { + "button": "Nuova Chat", + "dialog": { + "title": "Crea Nuova Chat", + "description": "Sei sicuro di voler creare una nuova chat? La chat corrente verr\u00e0 chiusa.", + "tooltip": "Nuova Chat" + } + }, + "user": { + "menu": { + "settings": "Impostazioni", + "settingsKey": "S", + "apiKeys": "Chiavi API", + "logout": "Disconnettiti" + } + } + }, + "apiKeys": { + "title": "Chiavi API richieste", + "description": "Per utilizzare l'app, sono necessarie le seguenti chiavi API. Le chiavi sono salvate nella memoria locale del tuo dispositivo.", + "success": { + "saved": "Salvataggio riuscito" + } + }, + "alerts": { + "info": "Info", + "note": "Nota", + "tip": "Suggerimento", + "important": "Importante", + "warning": "Avviso", + "caution": "Attenzione", + "debug": "Debug", + "example": "Esempio", + "success": "Successo", + "help": "Aiuto", + "idea": "Idea", + "pending": "In sospeso", + "security": "Sicurezza", + "beta": "Beta", + "best-practice": "Miglior Soluzione" + }, + "components": { + "MultiSelectInput": { + "placeholder": "Seleziona..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/ja.json b/.chainlit/translations/ja.json new file mode 100644 index 0000000..a70e692 --- /dev/null +++ b/.chainlit/translations/ja.json @@ -0,0 +1,244 @@ +{ + "common": { + "actions": { + "cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb", + "confirm": "\u78ba\u8a8d", + "continue": "\u7d9a\u3051\u308b", + "goBack": "\u623b\u308b", + "reset": "\u30ea\u30bb\u30c3\u30c8", + "submit": "\u9001\u4fe1" + }, + "status": { + "loading": "\u8aad\u307f\u8fbc\u307f\u4e2d...", + "error": { + "default": "\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f", + "serverConnection": "\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f" + } + } + }, + "auth": { + "login": { + "title": "\u30a2\u30d7\u30ea\u306b\u30ed\u30b0\u30a4\u30f3", + "form": { + "email": { + "label": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + "required": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "required": "\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059" + }, + "actions": { + "signin": "\u30b5\u30a4\u30f3\u30a4\u30f3" + }, + "alternativeText": { + "or": "\u307e\u305f\u306f" + } + }, + "errors": { + "default": "\u30b5\u30a4\u30f3\u30a4\u30f3\u3067\u304d\u307e\u305b\u3093", + "signin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "oauthSignin": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "redirectUriMismatch": "\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URI\u304cOAuth\u30a2\u30d7\u30ea\u306e\u8a2d\u5b9a\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093", + "oauthCallback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "oauthCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "emailCreateAccount": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "callback": "\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "oauthAccountNotLinked": "\u672c\u4eba\u78ba\u8a8d\u306e\u305f\u3081\u3001\u6700\u521d\u306b\u4f7f\u7528\u3057\u305f\u306e\u3068\u540c\u3058\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044", + "emailSignin": "\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f", + "emailVerify": "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u65b0\u3057\u3044\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3055\u308c\u307e\u3057\u305f", + "credentialsSignin": "\u30b5\u30a4\u30f3\u30a4\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u5165\u529b\u3057\u305f\u60c5\u5831\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044", + "sessionRequired": "\u3053\u306e\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044" + } + }, + "provider": { + "continue": "{{provider}}\u3067\u7d9a\u3051\u308b" + } + }, + "chat": { + "input": { + "placeholder": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044...", + "actions": { + "send": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1", + "stop": "\u30bf\u30b9\u30af\u3092\u505c\u6b62", + "attachFiles": "\u30d5\u30a1\u30a4\u30eb\u3092\u6dfb\u4ed8" + } + }, + "speech": { + "start": "\u9332\u97f3\u958b\u59cb", + "stop": "\u9332\u97f3\u505c\u6b62", + "connecting": "\u63a5\u7d9a\u4e2d" + }, + "commands": { + "button": "\u30c4\u30fc\u30eb", + "changeTool": "\u30c4\u30fc\u30eb\u3092\u5909\u66f4", + "availableTools": "\u5229\u7528\u53ef\u80fd\u306a\u30c4\u30fc\u30eb" + }, + "fileUpload": { + "dragDrop": "\u3053\u3053\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7", + "sizeLimit": "\u5236\u9650\uff1a", + "errors": { + "failed": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "cancelled": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u307e\u3057\u305f\uff1a" + }, + "actions": { + "cancelUpload": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb", + "removeAttachment": "\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664" + } + }, + "messages": { + "status": { + "using": "\u4f7f\u7528\u4e2d", + "used": "\u4f7f\u7528\u6e08\u307f" + }, + "actions": { + "copy": { + "button": "\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc", + "success": "\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\uff01" + } + }, + "feedback": { + "positive": "\u5f79\u306b\u7acb\u3063\u305f", + "negative": "\u5f79\u306b\u7acb\u305f\u306a\u304b\u3063\u305f", + "edit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u7de8\u96c6", + "dialog": { + "title": "\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0", + "submit": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u9001\u4fe1", + "yourFeedback": "\u3042\u306a\u305f\u306e\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af..." + }, + "status": { + "updating": "\u66f4\u65b0\u4e2d", + "updated": "\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f" + } + } + }, + "history": { + "title": "\u6700\u8fd1\u306e\u5165\u529b", + "empty": "\u4f55\u3082\u3042\u308a\u307e\u305b\u3093...", + "show": "\u5c65\u6b74\u3092\u8868\u793a" + }, + "settings": { + "title": "\u8a2d\u5b9a\u30d1\u30cd\u30eb", + "customize": "\u3053\u3053\u3067\u30c1\u30e3\u30c3\u30c8\u8a2d\u5b9a\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059" + }, + "watermark": "\u5927\u898f\u6a21\u8a00\u8a9e\u30e2\u30c7\u30eb\u306f\u9593\u9055\u3044\u3092\u72af\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u91cd\u8981\u306a\u60c5\u5831\u306b\u3064\u3044\u3066\u306f\u78ba\u8a8d\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002" + }, + "threadHistory": { + "sidebar": { + "title": "\u904e\u53bb\u306e\u30c1\u30e3\u30c3\u30c8", + "filters": { + "search": "\u691c\u7d22", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u4eca\u65e5", + "yesterday": "\u6628\u65e5", + "previous7days": "\u904e\u53bb7\u65e5\u9593", + "previous30days": "\u904e\u53bb30\u65e5\u9593" + }, + "empty": "\u30b9\u30ec\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093", + "actions": { + "close": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u9589\u3058\u308b", + "open": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u958b\u304f" + } + }, + "thread": { + "untitled": "\u7121\u984c\u306e\u4f1a\u8a71", + "menu": { + "rename": "\u540d\u524d\u3092\u5909\u66f4", + "share": "\u5171\u6709", + "delete": "\u524a\u9664" + }, + "actions": { + "share": { + "title": "\u30c1\u30e3\u30c3\u30c8\u306e\u30ea\u30f3\u30af\u3092\u5171\u6709", + "button": "\u5171\u6709", + "status": { + "copied": "\u30ea\u30f3\u30af\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f", + "created": "\u5171\u6709\u30ea\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\uff01", + "unshared": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u5171\u6709\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f" + }, + "error": { + "create": "\u5171\u6709\u30ea\u30f3\u30af\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f", + "unshare": "\u30b9\u30ec\u30c3\u30c9\u306e\u5171\u6709\u89e3\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f" + } + }, + "delete": { + "title": "\u524a\u9664\u306e\u78ba\u8a8d", + "description": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u3068\u305d\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u8981\u7d20\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u64cd\u4f5c\u306f\u53d6\u308a\u6d88\u305b\u307e\u305b\u3093", + "success": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u3057\u307e\u3057\u305f", + "inProgress": "\u30c1\u30e3\u30c3\u30c8\u3092\u524a\u9664\u4e2d" + }, + "rename": { + "title": "\u30b9\u30ec\u30c3\u30c9\u306e\u540d\u524d\u3092\u5909\u66f4", + "description": "\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044", + "form": { + "name": { + "label": "\u540d\u524d", + "placeholder": "\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b" + } + }, + "success": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\uff01", + "inProgress": "\u30b9\u30ec\u30c3\u30c9\u540d\u3092\u5909\u66f4\u4e2d" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u30c1\u30e3\u30c3\u30c8", + "readme": "\u8aac\u660e\u66f8", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8", + "dialog": { + "title": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8\u306e\u4f5c\u6210", + "description": "\u73fe\u5728\u306e\u30c1\u30e3\u30c3\u30c8\u5c65\u6b74\u304c\u30af\u30ea\u30a2\u3055\u308c\u307e\u3059\u3002\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f", + "tooltip": "\u65b0\u898f\u30c1\u30e3\u30c3\u30c8" + } + }, + "user": { + "menu": { + "settings": "\u8a2d\u5b9a", + "settingsKey": "S", + "apiKeys": "API\u30ad\u30fc", + "logout": "\u30ed\u30b0\u30a2\u30a6\u30c8" + } + } + }, + "apiKeys": { + "title": "\u5fc5\u8981\u306aAPI\u30ad\u30fc", + "description": "\u3053\u306e\u30a2\u30d7\u30ea\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306eAPI\u30ad\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002\u30ad\u30fc\u306f\u304a\u4f7f\u3044\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002", + "success": { + "saved": "\u4fdd\u5b58\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u9078\u629e..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/kn.json b/.chainlit/translations/kn.json new file mode 100644 index 0000000..0742757 --- /dev/null +++ b/.chainlit/translations/kn.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0cae\u0cbe\u0ca1\u0cbf", + "confirm": "\u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf", + "continue": "\u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf", + "goBack": "\u0cb9\u0cbf\u0c82\u0ca6\u0cc6 \u0cb9\u0ccb\u0c97\u0cbf", + "reset": "\u0cae\u0cb0\u0cc1\u0cb9\u0cca\u0c82\u0ca6\u0cbf\u0cb8\u0cbf", + "submit": "\u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf" + }, + "status": { + "loading": "\u0cb2\u0ccb\u0ca1\u0ccd \u0c86\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6...", + "error": { + "default": "\u0ca6\u0ccb\u0cb7 \u0cb8\u0c82\u0cad\u0cb5\u0cbf\u0cb8\u0cbf\u0ca6\u0cc6", + "serverConnection": "\u0cb8\u0cb0\u0ccd\u0cb5\u0cb0\u0ccd\u200c \u0c85\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca4\u0cb2\u0cc1\u0caa\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2" + } + } + }, + "auth": { + "login": { + "title": "\u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd\u200c\u0c97\u0cc6 \u0caa\u0ccd\u0cb0\u0cb5\u0cc7\u0cb6\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb2\u0cbe\u0c97\u0cbf\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf", + "form": { + "email": { + "label": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0cb5\u0cbf\u0cb3\u0cbe\u0cb8", + "required": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c95\u0ccd\u0cb7\u0cc7\u0ca4\u0ccd\u0cb0", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0caa\u0cbe\u0cb8\u0ccd\u200c\u0cb5\u0cb0\u0ccd\u0ca1\u0ccd", + "required": "\u0caa\u0cbe\u0cb8\u0ccd\u200c\u0cb5\u0cb0\u0ccd\u0ca1\u0ccd \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c95\u0ccd\u0cb7\u0cc7\u0ca4\u0ccd\u0cb0" + }, + "actions": { + "signin": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf" + }, + "alternativeText": { + "or": "\u0c85\u0ca5\u0cb5\u0cbe" + } + }, + "errors": { + "default": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2", + "signin": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "oauthSignin": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "redirectUriMismatch": "\u0cb0\u0cc0\u0ca1\u0cc8\u0cb0\u0cc6\u0c95\u0ccd\u0c9f\u0ccd URI \u0c93\u0ca5\u0ccd \u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd \u0c95\u0cbe\u0ca8\u0ccd\u0cab\u0cbf\u0c97\u0cb0\u0cc7\u0cb6\u0ca8\u0ccd\u200c\u0c97\u0cc6 \u0cb9\u0cca\u0c82\u0ca6\u0cbf\u0c95\u0cc6\u0caf\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0cb2\u0ccd\u0cb2", + "oauthCallback": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "oauthCreateAccount": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "emailCreateAccount": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "callback": "\u0cac\u0cc7\u0cb0\u0cc6 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0caa\u0ccd\u0cb0\u0caf\u0ca4\u0ccd\u0ca8\u0cbf\u0cb8\u0cbf", + "oauthAccountNotLinked": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c97\u0cc1\u0cb0\u0cc1\u0ca4\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cc1, \u0ca8\u0cc0\u0cb5\u0cc1 \u0cae\u0cca\u0ca6\u0cb2\u0cc1 \u0cac\u0cb3\u0cb8\u0cbf\u0ca6 \u0c85\u0ca6\u0cc7 \u0c96\u0cbe\u0ca4\u0cc6\u0caf\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf", + "emailSignin": "\u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbe\u0c97\u0cb2\u0cbf\u0cb2\u0ccd\u0cb2", + "emailVerify": "\u0ca6\u0caf\u0cb5\u0cbf\u0c9f\u0ccd\u0c9f\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cbf, \u0cb9\u0cca\u0cb8 \u0c87\u0cae\u0cc7\u0cb2\u0ccd \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "credentialsSignin": "\u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6. \u0ca8\u0cc0\u0cb5\u0cc1 \u0c92\u0ca6\u0c97\u0cbf\u0cb8\u0cbf\u0ca6 \u0cb5\u0cbf\u0cb5\u0cb0\u0c97\u0cb3\u0cc1 \u0cb8\u0cb0\u0cbf\u0caf\u0cbe\u0c97\u0cbf\u0cb5\u0cc6\u0caf\u0cc7 \u0c8e\u0c82\u0ca6\u0cc1 \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cbf", + "sessionRequired": "\u0c88 \u0caa\u0cc1\u0c9f\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0ccd\u0cb0\u0cb5\u0cc7\u0cb6\u0cbf\u0cb8\u0cb2\u0cc1 \u0ca6\u0caf\u0cb5\u0cbf\u0c9f\u0ccd\u0c9f\u0cc1 \u0cb8\u0cc8\u0ca8\u0ccd \u0c87\u0ca8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf" + } + }, + "provider": { + "continue": "{{provider}} \u0ca8\u0cca\u0c82\u0ca6\u0cbf\u0c97\u0cc6 \u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cbf\u0cb8\u0cbf" + } + }, + "chat": { + "input": { + "placeholder": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0c87\u0cb2\u0ccd\u0cb2\u0cbf \u0c9f\u0cc8\u0caa\u0ccd \u0cae\u0cbe\u0ca1\u0cbf...", + "actions": { + "send": "\u0cb8\u0c82\u0ca6\u0cc7\u0cb6 \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cbf", + "stop": "\u0c95\u0cbe\u0cb0\u0ccd\u0caf \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf", + "attachFiles": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb2\u0c97\u0ca4\u0ccd\u0ca4\u0cbf\u0cb8\u0cbf" + } + }, + "commands": { + "button": "\u0c89\u0caa\u0c95\u0cb0\u0ca3\u0c97\u0cb3\u0cc1", + "changeTool": "\u0c89\u0caa\u0c95\u0cb0\u0ca3\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0ca6\u0cb2\u0cbf\u0cb8\u0cbf", + "availableTools": "\u0cb2\u0cad\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 \u0c89\u0caa\u0c95\u0cb0\u0ca3\u0c97\u0cb3\u0cc1" + }, + "speech": { + "start": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0caa\u0ccd\u0cb0\u0cbe\u0cb0\u0c82\u0cad\u0cbf\u0cb8\u0cbf", + "stop": "\u0cb0\u0cc6\u0c95\u0cbe\u0cb0\u0ccd\u0ca1\u0cbf\u0c82\u0c97\u0ccd \u0ca8\u0cbf\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf", + "connecting": "\u0cb8\u0c82\u0caa\u0cb0\u0ccd\u0c95\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6" + }, + "fileUpload": { + "dragDrop": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c87\u0cb2\u0ccd\u0cb2\u0cbf \u0c8e\u0cb3\u0cc6\u0ca6\u0cc1 \u0cac\u0cbf\u0ca1\u0cbf", + "browse": "\u0cab\u0cc8\u0cb2\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0ccd\u0cb0\u0ccc\u0cb8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf", + "sizeLimit": "\u0cae\u0cbf\u0ca4\u0cbf:", + "errors": { + "failed": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "cancelled": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + }, + "actions": { + "cancelUpload": "\u0c85\u0caa\u0ccd\u200c\u0cb2\u0ccb\u0ca1\u0ccd \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cbf", + "removeAttachment": "\u0c85\u0c9f\u0ccd\u0caf\u0cbe\u0c9a\u0ccd\u200c\u0cae\u0cc6\u0c82\u0c9f\u0ccd \u0c85\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca4\u0cc6\u0c97\u0cc6\u0ca6\u0cc1\u0cb9\u0cbe\u0c95\u0cbf" + } + }, + "messages": { + "status": { + "using": "\u0cac\u0cb3\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0cb0\u0cc1\u0cb5\u0cc1\u0ca6\u0cc1", + "used": "\u0cac\u0cb3\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + }, + "actions": { + "copy": { + "button": "\u0c95\u0ccd\u0cb2\u0cbf\u0caa\u0ccd\u200c\u0cac\u0ccb\u0cb0\u0ccd\u0ca1\u0ccd\u200c\u0c97\u0cc6 \u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cbf", + "success": "\u0ca8\u0c95\u0cb2\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!" + } + }, + "feedback": { + "positive": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "negative": "\u0cb8\u0cb9\u0cbe\u0caf\u0c95\u0cb5\u0cbe\u0c97\u0cbf\u0cb2\u0ccd\u0cb2", + "edit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0c82\u0caa\u0cbe\u0ca6\u0cbf\u0cb8\u0cbf", + "dialog": { + "title": "\u0c95\u0cbe\u0cae\u0cc6\u0c82\u0c9f\u0ccd \u0cb8\u0cc7\u0cb0\u0cbf\u0cb8\u0cbf", + "submit": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0cb8\u0cb2\u0ccd\u0cb2\u0cbf\u0cb8\u0cbf", + "yourFeedback": "\u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6..." + }, + "status": { + "updating": "\u0ca8\u0cb5\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6", + "updated": "\u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6 \u0ca8\u0cb5\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + } + } + }, + "history": { + "title": "\u0c95\u0cca\u0ca8\u0cc6\u0caf \u0c87\u0ca8\u0ccd\u200c\u0caa\u0cc1\u0c9f\u0ccd\u200c\u0c97\u0cb3\u0cc1", + "empty": "\u0c96\u0cbe\u0cb2\u0cbf\u0caf\u0cbe\u0c97\u0cbf\u0ca6\u0cc6...", + "show": "\u0c87\u0ca4\u0cbf\u0cb9\u0cbe\u0cb8 \u0ca4\u0ccb\u0cb0\u0cbf\u0cb8\u0cbf" + }, + "settings": { + "title": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3 \u0caa\u0ccd\u0caf\u0cbe\u0ca8\u0cc6\u0cb2\u0ccd", + "customize": "\u0c88\u0c97 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0c9a\u0cbe\u0c9f\u0ccd \u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c95\u0cb8\u0ccd\u0c9f\u0cae\u0cc8\u0cb8\u0ccd \u0cae\u0cbe\u0ca1\u0cbf" + }, + "watermark": "LLM \u0c97\u0cb3\u0cc1 \u0ca4\u0caa\u0ccd\u0caa\u0cc1\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0cae\u0cbe\u0ca1\u0cac\u0cb9\u0cc1\u0ca6\u0cc1. \u0caa\u0ccd\u0cb0\u0cae\u0cc1\u0c96 \u0cae\u0cbe\u0cb9\u0cbf\u0ca4\u0cbf\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0cb0\u0cbf\u0cb6\u0cc0\u0cb2\u0cbf\u0cb8\u0cc1\u0cb5\u0cc1\u0ca6\u0ca8\u0ccd\u0ca8\u0cc1 \u0caa\u0cb0\u0cbf\u0c97\u0ca3\u0cbf\u0cb8\u0cbf." + }, + "threadHistory": { + "sidebar": { + "title": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cb3\u0cc1", + "filters": { + "search": "\u0cb9\u0cc1\u0ca1\u0cc1\u0c95\u0cbf", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0c87\u0c82\u0ca6\u0cc1", + "yesterday": "\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6", + "previous7days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 7 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1", + "previous30days": "\u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 30 \u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1" + }, + "empty": "\u0caf\u0cbe\u0cb5\u0cc1\u0ca6\u0cc7 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cb3\u0cc1 \u0c95\u0c82\u0ca1\u0cc1\u0cac\u0c82\u0ca6\u0cbf\u0cb2\u0ccd\u0cb2", + "actions": { + "close": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0cae\u0cc1\u0c9a\u0ccd\u0c9a\u0cbf", + "open": "\u0caa\u0c95\u0ccd\u0c95\u0ca6 \u0caa\u0c9f\u0ccd\u0c9f\u0cbf \u0ca4\u0cc6\u0cb0\u0cc6\u0caf\u0cbf\u0cb0\u0cbf" + } + }, + "thread": { + "untitled": "\u0cb6\u0cc0\u0cb0\u0ccd\u0cb7\u0cbf\u0c95\u0cc6\u0cb0\u0cb9\u0cbf\u0ca4 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6", + "menu": { + "rename": "\u0cae\u0cb0\u0cc1\u0cb9\u0cc6\u0cb8\u0cb0\u0cbf\u0cb8\u0cbf", + "share": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf", + "delete": "\u0c85\u0cb3\u0cbf\u0cb8\u0cbf" + }, + "actions": { + "share": { + "title": "\u0c9a\u0cbe\u0c9f\u0ccd\u200c\u0c97\u0cc6 \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf", + "button": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cca\u0cb3\u0ccd\u0cb3\u0cbf", + "status": { + "copied": "\u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0caa\u0ccd\u0cb0\u0ca4\u0cbf\u0cb2\u0cbf\u0caa\u0cbf \u0cae\u0cbe\u0ca1\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "created": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb0\u0c9a\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!", + "unshared": "\u0c88 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cc6 \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6 \u0ca8\u0cbf\u0cb7\u0ccd\u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + }, + "error": { + "create": "\u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf \u0cb2\u0cbf\u0c82\u0c95\u0ccd \u0cb0\u0c9a\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "unshare": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0cb9\u0c82\u0c9a\u0cbf\u0c95\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1 \u0cae\u0cbe\u0ca1\u0cb2\u0cc1 \u0cb5\u0cbf\u0cab\u0cb2\u0cb5\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + } + }, + "delete": { + "title": "\u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0cb5\u0cbf\u0c95\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca6\u0cc3\u0ca2\u0cc0\u0c95\u0cb0\u0cbf\u0cb8\u0cbf", + "description": "\u0c87\u0ca6\u0cc1 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb9\u0cbe\u0c97\u0cc2 \u0c85\u0ca6\u0cb0 \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0c97\u0cb3\u0cc1 \u0cae\u0ca4\u0ccd\u0ca4\u0cc1 \u0c85\u0c82\u0cb6\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6. \u0c88 \u0c95\u0ccd\u0cb0\u0cbf\u0caf\u0cc6\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0cb0\u0ca6\u0ccd\u0ca6\u0cc1\u0c97\u0cca\u0cb3\u0cbf\u0cb8\u0cb2\u0cc1 \u0cb8\u0cbe\u0ca7\u0ccd\u0caf\u0cb5\u0cbf\u0cb2\u0ccd\u0cb2", + "success": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6", + "inProgress": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0c85\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6" + }, + "rename": { + "title": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cbf", + "description": "\u0c88 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0c97\u0cc6 \u0cb9\u0cca\u0cb8 \u0cb9\u0cc6\u0cb8\u0cb0\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cae\u0cc2\u0ca6\u0cbf\u0cb8\u0cbf", + "form": { + "name": { + "label": "\u0cb9\u0cc6\u0cb8\u0cb0\u0cc1", + "placeholder": "\u0cb9\u0cca\u0cb8 \u0cb9\u0cc6\u0cb8\u0cb0\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cae\u0cc2\u0ca6\u0cbf\u0cb8\u0cbf" + } + }, + "success": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6!", + "inProgress": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0cb9\u0cc6\u0cb8\u0cb0\u0cc1 \u0cac\u0ca6\u0cb2\u0cbe\u0caf\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6", + "readme": "\u0c93\u0ca6\u0cbf", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6", + "dialog": { + "title": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6 \u0cb0\u0c9a\u0cbf\u0cb8\u0cbf", + "description": "\u0c87\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0caa\u0ccd\u0cb0\u0cb8\u0ccd\u0ca4\u0cc1\u0ca4 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6\u0caf \u0c87\u0ca4\u0cbf\u0cb9\u0cbe\u0cb8\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0c85\u0cb3\u0cbf\u0cb8\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6. \u0ca8\u0cc0\u0cb5\u0cc1 \u0cae\u0cc1\u0c82\u0ca6\u0cc1\u0cb5\u0cb0\u0cc6\u0caf\u0cb2\u0cc1 \u0cac\u0caf\u0cb8\u0cc1\u0cb5\u0cbf\u0cb0\u0cbe?", + "tooltip": "\u0cb9\u0cca\u0cb8 \u0cb8\u0c82\u0cad\u0cbe\u0cb7\u0ca3\u0cc6" + } + }, + "user": { + "menu": { + "settings": "\u0cb8\u0cc6\u0c9f\u0ccd\u0c9f\u0cbf\u0c82\u0c97\u0ccd\u200c\u0c97\u0cb3\u0cc1", + "settingsKey": "S", + "apiKeys": "API \u0c95\u0cc0\u0c97\u0cb3\u0cc1", + "logout": "\u0cb2\u0cbe\u0c97\u0ccd \u0c94\u0c9f\u0ccd" + } + } + }, + "apiKeys": { + "title": "\u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0cb5 API \u0c95\u0cc0\u0c97\u0cb3\u0cc1", + "description": "\u0c88 \u0c85\u0caa\u0ccd\u0cb2\u0cbf\u0c95\u0cc7\u0cb6\u0ca8\u0ccd \u0cac\u0cb3\u0cb8\u0cb2\u0cc1, \u0c88 \u0c95\u0cc6\u0cb3\u0c97\u0cbf\u0ca8 API \u0c95\u0cc0\u0c97\u0cb3\u0cc1 \u0c85\u0c97\u0ca4\u0ccd\u0caf\u0cb5\u0cbf\u0cb0\u0cc1\u0ca4\u0ccd\u0ca4\u0cb5\u0cc6. \u0c95\u0cc0\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca8\u0cbf\u0cae\u0ccd\u0cae \u0cb8\u0cbe\u0ca7\u0ca8\u0ca6 \u0cb8\u0ccd\u0ca5\u0cb3\u0cc0\u0caf \u0cb8\u0c82\u0c97\u0ccd\u0cb0\u0cb9\u0ca3\u0cc6\u0caf\u0cb2\u0ccd\u0cb2\u0cbf \u0cb8\u0c82\u0c97\u0ccd\u0cb0\u0cb9\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0ca6\u0cc6.", + "success": { + "saved": "\u0caf\u0cb6\u0cb8\u0ccd\u0cb5\u0cbf\u0caf\u0cbe\u0c97\u0cbf \u0c89\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0ca6\u0cc6" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0c9a\u0cc1\u0ca8\u0cbe\u0caf\u0cbf\u0cb8\u0cbf..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/ko.json b/.chainlit/translations/ko.json new file mode 100644 index 0000000..6367776 --- /dev/null +++ b/.chainlit/translations/ko.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\ucde8\uc18c", + "confirm": "\ud655\uc778", + "continue": "\uacc4\uc18d", + "goBack": "\ub4a4\ub85c \uac00\uae30", + "reset": "\ucd08\uae30\ud654", + "submit": "\uc81c\ucd9c" + }, + "status": { + "loading": "\ub85c\ub529 \uc911...", + "error": { + "default": "\uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4", + "serverConnection": "\uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4" + } + } + }, + "auth": { + "login": { + "title": "\uc571\uc5d0 \uc811\uadfc\ud558\ub824\uba74 \ub85c\uadf8\uc778\ud558\uc138\uc694", + "form": { + "email": { + "label": "\uc774\uba54\uc77c \uc8fc\uc18c", + "required": "\uc774\uba54\uc77c\uc740 \ud544\uc218 \uc785\ub825 \ud56d\ubaa9\uc785\ub2c8\ub2e4", + "placeholder": "me@example.com" + }, + "password": { + "label": "\ube44\ubc00\ubc88\ud638", + "required": "\ube44\ubc00\ubc88\ud638\ub294 \ud544\uc218 \uc785\ub825 \ud56d\ubaa9\uc785\ub2c8\ub2e4" + }, + "actions": { + "signin": "\ub85c\uadf8\uc778" + }, + "alternativeText": { + "or": "\ub610\ub294" + } + }, + "errors": { + "default": "\ub85c\uadf8\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", + "signin": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "oauthSignin": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "redirectUriMismatch": "\ub9ac\ub2e4\uc774\ub809\ud2b8 URI\uac00 OAuth \uc571 \uc124\uc815\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4", + "oauthCallback": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "oauthCreateAccount": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "emailCreateAccount": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "callback": "\ub2e4\ub978 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud574\ubcf4\uc138\uc694", + "oauthAccountNotLinked": "\uc2e0\uc6d0\uc744 \ud655\uc778\ud558\ub824\uba74 \uc6d0\ub798 \uc0ac\uc6a9\ud588\ub358 \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud558\uc138\uc694", + "emailSignin": "\uc774\uba54\uc77c\uc744 \ubcf4\ub0bc \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", + "emailVerify": "\uc774\uba54\uc77c\uc744 \ud655\uc778\ud574\uc8fc\uc138\uc694. \uc0c8\ub85c\uc6b4 \uc774\uba54\uc77c\uc774 \ubc1c\uc1a1\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "credentialsSignin": "\ub85c\uadf8\uc778 \uc2e4\ud328. \uc81c\uacf5\ud55c \uc815\ubcf4\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc138\uc694", + "sessionRequired": "\uc774 \ud398\uc774\uc9c0\uc5d0 \uc811\uadfc\ud558\ub824\uba74 \ub85c\uadf8\uc778\ud574\uc8fc\uc138\uc694" + } + }, + "provider": { + "continue": "{{provider}}\ub85c \uacc4\uc18d\ud558\uae30" + } + }, + "chat": { + "input": { + "placeholder": "\uc5ec\uae30\uc5d0 \uba54\uc2dc\uc9c0\ub97c \uc785\ub825\ud558\uc138\uc694...", + "actions": { + "send": "\uba54\uc2dc\uc9c0 \ubcf4\ub0b4\uae30", + "stop": "\uc791\uc5c5 \uc911\uc9c0", + "attachFiles": "\ud30c\uc77c \ucca8\ubd80" + } + }, + "commands": { + "button": "\ub3c4\uad6c", + "changeTool": "\ub3c4\uad6c \ubcc0\uacbd", + "availableTools": "\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub3c4\uad6c" + }, + "speech": { + "start": "\ub179\uc74c \uc2dc\uc791", + "stop": "\ub179\uc74c \uc911\uc9c0", + "connecting": "\uc5f0\uacb0 \uc911" + }, + "fileUpload": { + "dragDrop": "\uc5ec\uae30\uc5d0 \ud30c\uc77c\uc744 \ub4dc\ub798\uadf8 \uc564 \ub4dc\ub86d\ud558\uc138\uc694", + "browse": "\ud30c\uc77c \ucc3e\uc544\ubcf4\uae30", + "sizeLimit": "\uc81c\ud55c:", + "errors": { + "failed": "\uc5c5\ub85c\ub4dc \uc2e4\ud328", + "cancelled": "\uc5c5\ub85c\ub4dc \ucde8\uc18c:" + }, + "actions": { + "cancelUpload": "\uc5c5\ub85c\ub4dc \ucde8\uc18c", + "removeAttachment": "\ucca8\ubd80 \ud30c\uc77c \uc81c\uac70" + } + }, + "messages": { + "status": { + "using": "\uc0ac\uc6a9 \uc911", + "used": "\uc0ac\uc6a9\ub428" + }, + "actions": { + "copy": { + "button": "\ud074\ub9bd\ubcf4\ub4dc\ub85c \ubcf5\uc0ac", + "success": "\ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4!" + } + }, + "feedback": { + "positive": "\ub3c4\uc6c0\uc774 \ub418\uc5c8\uc74c", + "negative": "\ub3c4\uc6c0\uc774 \ub418\uc9c0 \uc54a\uc74c", + "edit": "\ud53c\ub4dc\ubc31 \uc218\uc815", + "dialog": { + "title": "\ub313\uae00 \ucd94\uac00", + "submit": "\ud53c\ub4dc\ubc31 \uc81c\ucd9c", + "yourFeedback": "\uadc0\ud558\uc758 \ud53c\ub4dc\ubc31..." + }, + "status": { + "updating": "\uc5c5\ub370\uc774\ud2b8 \uc911", + "updated": "\ud53c\ub4dc\ubc31\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + } + } + }, + "history": { + "title": "\ucd5c\uadfc \uc785\ub825", + "empty": "\ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4...", + "show": "\uae30\ub85d \ud45c\uc2dc" + }, + "settings": { + "title": "\uc124\uc815 \ud328\ub110", + "customize": "\uc5ec\uae30\uc5d0\uc11c \ucc44\ud305 \uc124\uc815\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uc138\uc694" + }, + "watermark": "LLM\uc740 \uc2e4\uc218\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc911\uc694\ud55c \uc815\ubcf4\ub294 \ud655\uc778\ud558\uc138\uc694." + }, + "threadHistory": { + "sidebar": { + "title": "\uc774\uc804 \ucc44\ud305", + "filters": { + "search": "\uac80\uc0c9", + "placeholder": "\ub300\ud654 \uac80\uc0c9..." + }, + "timeframes": { + "today": "\uc624\ub298", + "yesterday": "\uc5b4\uc81c", + "previous7days": "\uc9c0\ub09c 7\uc77c", + "previous30days": "\uc9c0\ub09c 30\uc77c" + }, + "empty": "\uc2a4\ub808\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", + "actions": { + "close": "\uc0ac\uc774\ub4dc\ubc14 \ub2eb\uae30", + "open": "\uc0ac\uc774\ub4dc\ubc14 \uc5f4\uae30" + } + }, + "thread": { + "untitled": "\uc81c\ubaa9 \uc5c6\ub294 \ub300\ud654", + "menu": { + "rename": "\uc774\ub984 \ubcc0\uacbd", + "share": "\uacf5\uc720", + "delete": "\uc0ad\uc81c" + }, + "actions": { + "share": { + "title": "\ucc44\ud305 \ub9c1\ud06c \uacf5\uc720", + "button": "\uacf5\uc720", + "status": { + "copied": "\ub9c1\ud06c \ubcf5\uc0ac\ub428", + "created": "\uacf5\uc720 \ub9c1\ud06c\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4!", + "unshared": "\uc774 \uc2a4\ub808\ub4dc\uc758 \uacf5\uc720\uac00 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + }, + "error": { + "create": "\uacf5\uc720 \ub9c1\ud06c \uc0dd\uc131 \uc2e4\ud328", + "unshare": "\uc2a4\ub808\ub4dc \uacf5\uc720 \ud574\uc81c \uc2e4\ud328" + } + }, + "delete": { + "title": "\uc0ad\uc81c \ud655\uc778", + "description": "\uc774\ub807\uac8c \ud558\uba74 \uc2a4\ub808\ub4dc\uc640 \uadf8 \uba54\uc2dc\uc9c0 \ubc0f \uc694\uc18c\uac00 \uc0ad\uc81c\ub429\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc740 \ucde8\uc18c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4", + "success": "\ucc44\ud305\uc774 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4", + "inProgress": "\ucc44\ud305 \uc0ad\uc81c \uc911" + }, + "rename": { + "title": "\uc2a4\ub808\ub4dc \uc774\ub984 \ubcc0\uacbd", + "description": "\uc774 \uc2a4\ub808\ub4dc\uc758 \uc0c8 \uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694", + "form": { + "name": { + "label": "\uc774\ub984", + "placeholder": "\uc0c8 \uc774\ub984 \uc785\ub825" + } + }, + "success": "\uc2a4\ub808\ub4dc \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4!", + "inProgress": "\uc2a4\ub808\ub4dc \uc774\ub984 \ubcc0\uacbd \uc911" + } + } + } + }, + "navigation": { + "header": { + "chat": "\ucc44\ud305", + "readme": "\uc77d\uc5b4\ubcf4\uae30", + "theme": { + "light": "\ubc1d\uc740 \ud14c\ub9c8", + "dark": "\uc5b4\ub450\uc6b4 \ud14c\ub9c8", + "system": "\uc2dc\uc2a4\ud15c \ub530\ub77c\uac00\uae30" + } + }, + "newChat": { + "button": "\uc0c8 \ucc44\ud305", + "dialog": { + "title": "\uc0c8 \ucc44\ud305 \ub9cc\ub4e4\uae30", + "description": "\uc774\ub807\uac8c \ud558\uba74 \ud604\uc7ac \ucc44\ud305 \uae30\ub85d\uc774 \uc9c0\uc6cc\uc9d1\ub2c8\ub2e4. \uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", + "tooltip": "\uc0c8 \ucc44\ud305" + } + }, + "user": { + "menu": { + "settings": "\uc124\uc815", + "settingsKey": "S", + "apiKeys": "API \ud0a4", + "logout": "\ub85c\uadf8\uc544\uc6c3" + } + } + }, + "apiKeys": { + "title": "\ud544\uc694\ud55c API \ud0a4", + "description": "\uc774 \uc571\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ub2e4\uc74c API \ud0a4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \ud0a4\ub294 \uae30\uae30\uc758 \ub85c\uceec \uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4.", + "success": { + "saved": "\uc131\uacf5\uc801\uc73c\ub85c \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4" + } + }, + "alerts": { + "info": "\uc815\ubcf4", + "note": "\ucc38\uace0", + "tip": "\ud301", + "important": "\uc911\uc694", + "warning": "\uacbd\uace0", + "caution": "\uc8fc\uc758", + "debug": "\ub514\ubc84\uadf8", + "example": "\uc608\uc2dc", + "success": "\uc131\uacf5", + "help": "\ub3c4\uc6c0\ub9d0", + "idea": "\uc544\uc774\ub514\uc5b4", + "pending": "\ub300\uae30 \uc911", + "security": "\ubcf4\uc548", + "beta": "\ubca0\ud0c0", + "best-practice": "\ubaa8\ubc94 \uc0ac\ub840" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\uc120\ud0dd..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/ml.json b/.chainlit/translations/ml.json new file mode 100644 index 0000000..b558411 --- /dev/null +++ b/.chainlit/translations/ml.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15", + "confirm": "\u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "continue": "\u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15", + "goBack": "\u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d46 \u0d2a\u0d4b\u0d15\u0d41\u0d15", + "reset": "\u0d2a\u0d41\u0d28\u0d03\u0d38\u0d1c\u0d4d\u0d1c\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15", + "submit": "\u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15" + }, + "status": { + "loading": "\u0d32\u0d4b\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41...", + "error": { + "default": "\u0d12\u0d30\u0d41 \u0d2a\u0d3f\u0d36\u0d15\u0d4d \u0d38\u0d02\u0d2d\u0d35\u0d3f\u0d1a\u0d4d\u0d1a\u0d41", + "serverConnection": "\u0d38\u0d46\u0d7c\u0d35\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2c\u0d28\u0d4d\u0d27\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d3f\u0d32\u0d4d\u0d32" + } + } + }, + "auth": { + "login": { + "title": "\u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d32\u0d4b\u0d17\u0d3f\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "form": { + "email": { + "label": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d35\u0d3f\u0d32\u0d3e\u0d38\u0d02", + "required": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d12\u0d30\u0d41 \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d2b\u0d40\u0d7d\u0d21\u0d4d \u0d06\u0d23\u0d4d", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0d2a\u0d3e\u0d38\u0d4d\u200c\u0d35\u0d47\u0d21\u0d4d", + "required": "\u0d2a\u0d3e\u0d38\u0d4d\u200c\u0d35\u0d47\u0d21\u0d4d \u0d12\u0d30\u0d41 \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d2b\u0d40\u0d7d\u0d21\u0d4d \u0d06\u0d23\u0d4d" + }, + "actions": { + "signin": "\u0d38\u0d48\u0d7b \u0d07\u0d7b" + }, + "alternativeText": { + "or": "\u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d" + } + }, + "errors": { + "default": "\u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32", + "signin": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "oauthSignin": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "redirectUriMismatch": "\u0d31\u0d40\u0d21\u0d2f\u0d31\u0d15\u0d4d\u0d1f\u0d4d URI oauth \u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d15\u0d4b\u0d7a\u0d2b\u0d3f\u0d17\u0d31\u0d47\u0d37\u0d28\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2a\u0d4a\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32", + "oauthCallback": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "oauthCreateAccount": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "emailCreateAccount": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "callback": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "oauthAccountNotLinked": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d35\u0d4d\u0d2f\u0d15\u0d4d\u0d24\u0d3f\u0d24\u0d4d\u0d35\u0d02 \u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b, \u0d06\u0d26\u0d4d\u0d2f\u0d02 \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a \u0d05\u0d24\u0d47 \u0d05\u0d15\u0d4d\u0d15\u0d57\u0d23\u0d4d\u0d1f\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "emailSignin": "\u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d05\u0d2f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d3f\u0d32\u0d4d\u0d32", + "emailVerify": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15, \u0d12\u0d30\u0d41 \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d07\u0d2e\u0d46\u0d2f\u0d3f\u0d7d \u0d05\u0d2f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d23\u0d4d\u0d1f\u0d4d", + "credentialsSignin": "\u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41. \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d7e \u0d28\u0d7d\u0d15\u0d3f\u0d2f \u0d35\u0d3f\u0d35\u0d30\u0d19\u0d4d\u0d19\u0d7e \u0d36\u0d30\u0d3f\u0d2f\u0d3e\u0d23\u0d46\u0d28\u0d4d\u0d28\u0d4d \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "sessionRequired": "\u0d08 \u0d2a\u0d47\u0d1c\u0d4d \u0d06\u0d15\u0d4d\u0d38\u0d38\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d38\u0d48\u0d7b \u0d07\u0d7b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15" + } + }, + "provider": { + "continue": "{{provider}} \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d24\u0d41\u0d1f\u0d30\u0d41\u0d15" + } + }, + "chat": { + "input": { + "placeholder": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d1f\u0d48\u0d2a\u0d4d\u0d2a\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15...", + "actions": { + "send": "\u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d05\u0d2f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15", + "stop": "\u0d1f\u0d3e\u0d38\u0d4d\u0d15\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15", + "attachFiles": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d05\u0d31\u0d4d\u0d31\u0d3e\u0d1a\u0d4d\u0d1a\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15" + } + }, + "commands": { + "button": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e", + "changeTool": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15", + "availableTools": "\u0d32\u0d2d\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e" + }, + "speech": { + "start": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d06\u0d30\u0d02\u0d2d\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "stop": "\u0d31\u0d46\u0d15\u0d4d\u0d15\u0d4b\u0d7c\u0d21\u0d3f\u0d02\u0d17\u0d4d \u0d28\u0d3f\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15", + "connecting": "\u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41" + }, + "fileUpload": { + "dragDrop": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d35\u0d32\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d41\u0d15", + "browse": "\u0d2b\u0d2f\u0d32\u0d41\u0d15\u0d7e \u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15", + "sizeLimit": "\u0d2a\u0d30\u0d3f\u0d27\u0d3f:", + "errors": { + "failed": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41", + "cancelled": "\u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d3f" + }, + "actions": { + "cancelUpload": "\u0d05\u0d2a\u0d4d\u200c\u0cb2\u0d4b\u0d21\u0d4d \u0d31\u0d26\u0d4d\u0d26\u0d41\u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "removeAttachment": "\u0d05\u0d31\u0d4d\u0d31\u0d3e\u0d1a\u0d4d\u0d1a\u0d4d\u200c\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d28\u0d40\u0d15\u0d4d\u0d15\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15" + } + }, + "messages": { + "status": { + "using": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41", + "used": "\u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d41" + }, + "actions": { + "copy": { + "button": "\u0d15\u0d4d\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u0d2c\u0d4b\u0d7c\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d41\u0d15", + "success": "\u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f!" + } + }, + "feedback": { + "positive": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d02", + "negative": "\u0d38\u0d39\u0d3e\u0d2f\u0d15\u0d30\u0d2e\u0d32\u0d4d\u0d32", + "edit": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d0e\u0d21\u0d3f\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "dialog": { + "title": "\u0d12\u0d30\u0d41 \u0d15\u0d2e\u0d28\u0d4d\u0d31\u0d4d \u0d1a\u0d47\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d15", + "submit": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d38\u0d2e\u0d7c\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "yourFeedback": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d4d\u0d30\u0d24\u0d3f\u0d15\u0d30\u0d23\u0d02..." + }, + "status": { + "updating": "\u0d05\u0d2a\u0d4d\u0d21\u0d47\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41", + "updated": "\u0d2b\u0d40\u0d21\u0d4d\u0d2c\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d05\u0d2a\u0d4d\u0d21\u0d47\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41" + } + } + }, + "history": { + "title": "\u0d05\u0d35\u0d38\u0d3e\u0d28 \u0d07\u0d7b\u0d2a\u0d41\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d7e", + "empty": "\u0d12\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32...", + "show": "\u0d39\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d31\u0d3f \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15" + }, + "settings": { + "title": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e \u0d2a\u0d3e\u0d28\u0d7d", + "customize": "\u0d08 \u0d38\u0d2e\u0d2f\u0d02 \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e \u0d15\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d2e\u0d48\u0d38\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15" + }, + "watermark": "LLM \u0d15\u0d7e\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d46\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d7e \u0d35\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d3e\u0d02. \u0d2a\u0d4d\u0d30\u0d27\u0d3e\u0d28\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d35\u0d3f\u0d35\u0d30\u0d19\u0d4d\u0d19\u0d7e \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d2a\u0d30\u0d3f\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15." + }, + "threadHistory": { + "sidebar": { + "title": "\u0d2e\u0d41\u0d7b \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d7e", + "filters": { + "search": "\u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0d07\u0d28\u0d4d\u0d28\u0d4d", + "yesterday": "\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46", + "previous7days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 7 \u0d26\u0d3f\u0d35\u0d38\u0d02", + "previous30days": "\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e 30 \u0d26\u0d3f\u0d35\u0d38\u0d02" + }, + "empty": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d41\u0d15\u0d7e \u0d15\u0d23\u0d4d\u0d1f\u0d46\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32", + "actions": { + "close": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15", + "open": "\u0d38\u0d48\u0d21\u0d4d\u0d2c\u0d3e\u0d7c \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15" + } + }, + "thread": { + "untitled": "\u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d38\u0d02\u0d2d\u0d3e\u0d37\u0d23\u0d02", + "menu": { + "rename": "\u0d2a\u0d47\u0d30\u0d4d \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15", + "share": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15", + "delete": "\u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d" + }, + "actions": { + "share": { + "title": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15", + "button": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15", + "status": { + "copied": "\u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f", + "created": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d1a\u0d4d\u0d1a\u0d41!", + "unshared": "\u0d08 \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d3f\u0d28\u0d3e\u0d2f\u0d3f \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d05\u0d2a\u0d4d\u0d30\u0d3e\u0d2a\u0d4d\u0d24\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d3f" + }, + "error": { + "create": "\u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d32\u0d3f\u0d19\u0d4d\u0d15\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d7d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41", + "unshare": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d7d \u0d05\u0d35\u0d38\u0d3e\u0d28\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d7d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41" + } + }, + "delete": { + "title": "\u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d4d\u0d25\u0d3f\u0d30\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "description": "\u0d07\u0d24\u0d4d \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d41\u0d02 \u0d05\u0d24\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d02 \u0d18\u0d1f\u0d15\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d02 \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d02. \u0d08 \u0d2a\u0d4d\u0d30\u0d35\u0d7c\u0d24\u0d4d\u0d24\u0d3f \u0d2a\u0d34\u0d2f\u0d2a\u0d1f\u0d3f\u0d2f\u0d3e\u0d15\u0d4d\u0d15\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32", + "success": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41", + "inProgress": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d21\u0d3f\u0d32\u0d40\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41" + }, + "rename": { + "title": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "description": "\u0d08 \u0d24\u0d4d\u0d30\u0d46\u0d21\u0d3f\u0d28\u0d4d \u0d12\u0d30\u0d41 \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15", + "form": { + "name": { + "label": "\u0d2a\u0d47\u0d30\u0d4d", + "placeholder": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15" + } + }, + "success": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41!", + "inProgress": "\u0d24\u0d4d\u0d30\u0d46\u0d21\u0d4d \u0d2a\u0d41\u0d28\u0d7c\u0d28\u0d3e\u0d2e\u0d15\u0d30\u0d23\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d", + "readme": "\u0d35\u0d3e\u0d2f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d", + "dialog": { + "title": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "description": "\u0d07\u0d24\u0d4d \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d28\u0d3f\u0d32\u0d35\u0d3f\u0d32\u0d46 \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d39\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d31\u0d3f \u0d2e\u0d3e\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d02. \u0d24\u0d41\u0d1f\u0d30\u0d3e\u0d7b \u0d24\u0d3e\u0d7d\u0d2a\u0d4d\u0d2a\u0d30\u0d4d\u0d2f\u0d2e\u0d41\u0d23\u0d4d\u0d1f\u0d4b?", + "tooltip": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d4d" + } + }, + "user": { + "menu": { + "settings": "\u0d15\u0d4d\u0d30\u0d2e\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e", + "settingsKey": "S", + "apiKeys": "API \u0d15\u0d40\u0d15\u0d7e", + "logout": "\u0d32\u0d4b\u0d17\u0d4d\u0d14\u0d1f\u0d4d\u0d1f\u0d4d" + } + } + }, + "apiKeys": { + "title": "\u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f API \u0d15\u0d40\u0d15\u0d7e", + "description": "\u0d08 \u0d06\u0d2a\u0d4d\u0d2a\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d7b, \u0d24\u0d3e\u0d34\u0d46\u0d2a\u0d4d\u0d2a\u0d31\u0d2f\u0d41\u0d28\u0d4d\u0d28 API \u0d15\u0d40\u0d15\u0d7e \u0d06\u0d35\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d23\u0d4d. \u0d15\u0d40\u0d15\u0d7e \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d09\u0d2a\u0d15\u0d30\u0d23\u0d24\u0d4d\u0d24\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d32\u0d4b\u0d15\u0d4d\u0d15\u0d7d \u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4b\u0d31\u0d47\u0d1c\u0d3f\u0d7d \u0d38\u0d02\u0d2d\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d28\u0d4d\u0d28\u0d41.", + "success": { + "saved": "\u0d35\u0d3f\u0d1c\u0d2f\u0d15\u0d30\u0d2e\u0d3e\u0d2f\u0d3f \u0d38\u0d02\u0d30\u0d15\u0d4d\u0d37\u0d3f\u0d1a\u0d4d\u0d1a\u0d41" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0d1a\u0d42\u0d23\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/mr.json b/.chainlit/translations/mr.json new file mode 100644 index 0000000..8c203a0 --- /dev/null +++ b/.chainlit/translations/mr.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u093e", + "confirm": "\u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e", + "continue": "\u092a\u0941\u0922\u0947 \u091c\u093e", + "goBack": "\u092e\u093e\u0917\u0947 \u091c\u093e", + "reset": "\u0930\u0940\u0938\u0947\u091f \u0915\u0930\u093e", + "submit": "\u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e" + }, + "status": { + "loading": "\u0932\u094b\u0921 \u0915\u0930\u0924 \u0906\u0939\u0947...", + "error": { + "default": "\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u0940 \u0906\u0932\u0940", + "serverConnection": "\u0938\u0930\u094d\u0935\u094d\u0939\u0930\u0936\u0940 \u0915\u0928\u0947\u0915\u094d\u091f \u0939\u094b\u090a \u0936\u0915\u0932\u0947 \u0928\u093e\u0939\u0940" + } + } + }, + "auth": { + "login": { + "title": "\u0905\u0945\u092a \u0935\u093e\u092a\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u093e", + "form": { + "email": { + "label": "\u0908\u092e\u0947\u0932 \u092a\u0924\u094d\u0924\u093e", + "required": "\u0908\u092e\u0947\u0932 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921", + "required": "\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947" + }, + "actions": { + "signin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e" + }, + "alternativeText": { + "or": "\u0915\u093f\u0902\u0935\u093e" + } + }, + "errors": { + "default": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0942 \u0936\u0915\u0924 \u0928\u093e\u0939\u0940", + "signin": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "oauthSignin": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "redirectUriMismatch": "\u0930\u0940\u0921\u093e\u092f\u0930\u0947\u0915\u094d\u091f URI \u0913\u0925 \u0905\u0945\u092a \u0915\u0949\u0928\u094d\u092b\u093f\u0917\u0930\u0947\u0936\u0928\u0936\u0940 \u091c\u0941\u0933\u0924 \u0928\u093e\u0939\u0940", + "oauthCallback": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "oauthCreateAccount": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "emailCreateAccount": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "callback": "\u0935\u0947\u0917\u0933\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947 \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u0923\u094d\u092f\u093e\u091a\u093e \u092a\u094d\u0930\u092f\u0924\u094d\u0928 \u0915\u0930\u093e", + "oauthAccountNotLinked": "\u0924\u0941\u092e\u091a\u0940 \u0913\u0933\u0916 \u092a\u091f\u0935\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940, \u092e\u0942\u0933 \u0935\u093e\u092a\u0930\u0932\u0947\u0932\u094d\u092f\u093e \u0916\u093e\u0924\u094d\u092f\u093e\u0928\u0947\u091a \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e", + "emailSignin": "\u0908\u092e\u0947\u0932 \u092a\u093e\u0920\u0935\u0942 \u0936\u0915\u0932\u0947 \u0928\u093e\u0939\u0940", + "emailVerify": "\u0915\u0943\u092a\u092f\u093e \u0924\u0941\u092e\u091a\u093e \u0908\u092e\u0947\u0932 \u0924\u092a\u093e\u0938\u093e, \u0928\u0935\u0940\u0928 \u0908\u092e\u0947\u0932 \u092a\u093e\u0920\u0935\u0932\u093e \u0917\u0947\u0932\u093e \u0906\u0939\u0947", + "credentialsSignin": "\u0938\u093e\u0907\u0928 \u0907\u0928 \u0905\u092f\u0936\u0938\u094d\u0935\u0940. \u0924\u0941\u092e\u094d\u0939\u0940 \u0926\u093f\u0932\u0947\u0932\u0940 \u092e\u093e\u0939\u093f\u0924\u0940 \u092f\u094b\u0917\u094d\u092f \u0906\u0939\u0947 \u0915\u093e \u0924\u0947 \u0924\u092a\u093e\u0938\u093e", + "sessionRequired": "\u092f\u093e \u092a\u0943\u0937\u094d\u0920\u093e\u0935\u0930 \u092a\u094d\u0930\u0935\u0947\u0936 \u0915\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0915\u0943\u092a\u092f\u093e \u0938\u093e\u0907\u0928 \u0907\u0928 \u0915\u0930\u093e" + } + }, + "provider": { + "continue": "{{provider}} \u0938\u0939 \u092a\u0941\u0922\u0947 \u091c\u093e" + } + }, + "chat": { + "input": { + "placeholder": "\u0924\u0941\u092e\u091a\u093e \u0938\u0902\u0926\u0947\u0936 \u092f\u0947\u0925\u0947 \u091f\u093e\u0907\u092a \u0915\u0930\u093e...", + "actions": { + "send": "\u0938\u0902\u0926\u0947\u0936 \u092a\u093e\u0920\u0935\u093e", + "stop": "\u0915\u093e\u0930\u094d\u092f \u0925\u093e\u0902\u092c\u0935\u093e", + "attachFiles": "\u092b\u093e\u0907\u0932\u094d\u0938 \u091c\u094b\u0921\u093e" + } + }, + "speech": { + "start": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0938\u0941\u0930\u0942 \u0915\u0930\u093e", + "stop": "\u0930\u0947\u0915\u0949\u0930\u094d\u0921\u093f\u0902\u0917 \u0925\u093e\u0902\u092c\u0935\u093e", + "connecting": "\u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0924 \u0906\u0939\u0947" + }, + "commands": { + "button": "\u0938\u093e\u0927\u0928\u0947", + "changeTool": "\u0938\u093e\u0927\u0928 \u092c\u0926\u0932\u093e", + "availableTools": "\u0909\u092a\u0932\u092c\u094d\u0927 \u0938\u093e\u0927\u0928\u0947" + }, + "fileUpload": { + "dragDrop": "\u092b\u093e\u0907\u0932\u094d\u0938 \u092f\u0947\u0925\u0947 \u0921\u094d\u0930\u0945\u0917 \u0906\u0923\u093f \u0921\u094d\u0930\u0949\u092a \u0915\u0930\u093e", + "browse": "\u092b\u093e\u0907\u0932\u094d\u0938 \u092c\u094d\u0930\u093e\u0909\u091d \u0915\u0930\u093e", + "sizeLimit": "\u092e\u0930\u094d\u092f\u093e\u0926\u093e:", + "errors": { + "failed": "\u0905\u092a\u0932\u094b\u0921 \u0905\u092f\u0936\u0938\u094d\u0935\u0940", + "cancelled": "\u092f\u093e\u0902\u091a\u0947 \u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0947\u0932\u0947" + }, + "actions": { + "cancelUpload": "\u0905\u092a\u0932\u094b\u0921 \u0930\u0926\u094d\u0926 \u0915\u0930\u093e", + "removeAttachment": "\u0905\u091f\u0945\u091a\u092e\u0947\u0902\u091f \u0915\u093e\u0922\u093e" + } + }, + "messages": { + "status": { + "using": "\u0935\u093e\u092a\u0930\u0924 \u0906\u0939\u0947", + "used": "\u0935\u093e\u092a\u0930\u0932\u0947" + }, + "actions": { + "copy": { + "button": "\u0915\u094d\u0932\u093f\u092a\u092c\u094b\u0930\u094d\u0921\u0935\u0930 \u0915\u0949\u092a\u0940 \u0915\u0930\u093e", + "success": "\u0915\u0949\u092a\u0940 \u0915\u0947\u0932\u0947!" + } + }, + "feedback": { + "positive": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924", + "negative": "\u0909\u092a\u092f\u0941\u0915\u094d\u0924 \u0928\u093e\u0939\u0940", + "edit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u093e", + "dialog": { + "title": "\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093e", + "submit": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0938\u092c\u092e\u093f\u091f \u0915\u0930\u093e", + "yourFeedback": "\u0924\u0941\u092e\u091a\u0940 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e..." + }, + "status": { + "updating": "\u0905\u092a\u0921\u0947\u091f \u0915\u0930\u0924 \u0906\u0939\u0947", + "updated": "\u092b\u0940\u0921\u092c\u0945\u0915 \u0905\u092a\u0921\u0947\u091f \u0915\u0947\u0932\u0947" + } + } + }, + "history": { + "title": "\u0936\u0947\u0935\u091f\u091a\u0947 \u0907\u0928\u092a\u0941\u091f", + "empty": "\u0930\u093f\u0915\u093e\u092e\u0947 \u0906\u0939\u0947...", + "show": "\u0907\u0924\u093f\u0939\u093e\u0938 \u0926\u093e\u0916\u0935\u093e" + }, + "settings": { + "title": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c \u092a\u0945\u0928\u0932", + "customize": "\u092f\u093e \u0935\u0947\u0933\u0940 \u0924\u0941\u092e\u091a\u094d\u092f\u093e \u091a\u0945\u091f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c \u0915\u0938\u094d\u091f\u092e\u093e\u0907\u091d \u0915\u0930\u093e" + }, + "watermark": "LLM \u091a\u0941\u0915\u093e \u0915\u0930\u0942 \u0936\u0915\u0924\u093e\u0924. \u092e\u0939\u0924\u094d\u0924\u094d\u0935\u093e\u091a\u0940 \u092e\u093e\u0939\u093f\u0924\u0940 \u0924\u092a\u093e\u0938\u0923\u094d\u092f\u093e\u091a\u093e \u0935\u093f\u091a\u093e\u0930 \u0915\u0930\u093e." + }, + "threadHistory": { + "sidebar": { + "title": "\u092e\u093e\u0917\u0940\u0932 \u091a\u0945\u091f\u094d\u0938", + "filters": { + "search": "\u0936\u094b\u0927\u093e", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0906\u091c", + "yesterday": "\u0915\u093e\u0932", + "previous7days": "\u092e\u093e\u0917\u0940\u0932 7 \u0926\u093f\u0935\u0938", + "previous30days": "\u092e\u093e\u0917\u0940\u0932 30 \u0926\u093f\u0935\u0938" + }, + "empty": "\u0915\u094b\u0923\u0924\u0947\u0939\u0940 \u0925\u094d\u0930\u0947\u0921 \u0938\u093e\u092a\u0921\u0932\u0947 \u0928\u093e\u0939\u0940\u0924", + "actions": { + "close": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u092c\u0902\u0926 \u0915\u0930\u093e", + "open": "\u0938\u093e\u0907\u0921\u092c\u093e\u0930 \u0909\u0918\u0921\u093e" + } + }, + "thread": { + "untitled": "\u0936\u0940\u0930\u094d\u0937\u0915\u0935\u093f\u0930\u0939\u093f\u0924 \u0938\u0902\u092d\u093e\u0937\u0923", + "menu": { + "rename": "\u0928\u093e\u0935 \u092c\u0926\u0932\u093e", + "share": "\u0936\u0947\u0905\u0930 \u0915\u0930\u093e", + "delete": "\u0939\u091f\u0935\u093e" + }, + "actions": { + "share": { + "title": "\u091a\u0945\u091f\u091a\u093e \u0926\u0941\u0935\u093e \u0936\u0947\u0905\u0930 \u0915\u0930\u093e", + "button": "\u0936\u0947\u0905\u0930 \u0915\u0930\u093e", + "status": { + "copied": "\u0926\u0941\u0935\u093e \u0915\u0949\u092a\u0940 \u0915\u0947\u0932\u093e", + "created": "\u0936\u0947\u0905\u0930 \u0926\u0941\u0935\u093e \u0924\u092f\u093e\u0930 \u091d\u093e\u0932\u093e!", + "unshared": "\u092f\u093e \u0925\u094d\u0930\u0947\u0921\u0938\u093e\u0920\u0940 \u0936\u0947\u0905\u0930\u093f\u0902\u0917 \u0905\u0915\u094d\u0937\u092e \u0915\u0947\u0932\u0947" + }, + "error": { + "create": "\u0936\u0947\u0905\u0930 \u0926\u0941\u0935\u093e \u0924\u092f\u093e\u0930 \u0915\u0930\u0923\u094d\u092f\u093e\u0924 \u0905\u092a\u092f\u0936", + "unshare": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0936\u0947\u0905\u0930\u093f\u0902\u0917 \u0925\u093e\u0902\u092c\u0935\u0923\u094d\u092f\u093e\u0924 \u0905\u092a\u092f\u0936" + } + }, + "delete": { + "title": "\u0939\u091f\u0935\u093f\u0923\u094d\u092f\u093e\u091a\u0940 \u092a\u0941\u0937\u094d\u091f\u0940 \u0915\u0930\u093e", + "description": "\u0939\u0947 \u0925\u094d\u0930\u0947\u0921 \u0906\u0923\u093f \u0924\u094d\u092f\u093e\u091a\u0947 \u0938\u0902\u0926\u0947\u0936 \u0935 \u0918\u091f\u0915 \u0939\u091f\u0935\u0947\u0932. \u0939\u0940 \u0915\u094d\u0930\u093f\u092f\u093e \u092a\u0942\u0930\u094d\u0935\u0935\u0924 \u0915\u0947\u0932\u0940 \u091c\u093e\u090a \u0936\u0915\u0924 \u0928\u093e\u0939\u0940", + "success": "\u091a\u0945\u091f \u0939\u091f\u0935\u0932\u093e", + "inProgress": "\u091a\u0945\u091f \u0939\u091f\u0935\u0924 \u0906\u0939\u0947" + }, + "rename": { + "title": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u093e", + "description": "\u092f\u093e \u0925\u094d\u0930\u0947\u0921\u0938\u093e\u0920\u0940 \u0928\u0935\u0940\u0928 \u0928\u093e\u0935 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f \u0915\u0930\u093e", + "form": { + "name": { + "label": "\u0928\u093e\u0935", + "placeholder": "\u0928\u0935\u0940\u0928 \u0928\u093e\u0935 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f \u0915\u0930\u093e" + } + }, + "success": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0932\u0947!", + "inProgress": "\u0925\u094d\u0930\u0947\u0921\u091a\u0947 \u0928\u093e\u0935 \u092c\u0926\u0932\u0924 \u0906\u0939\u0947" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u091a\u0945\u091f", + "readme": "\u0935\u093e\u091a\u093e", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f", + "dialog": { + "title": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f \u0924\u092f\u093e\u0930 \u0915\u0930\u093e", + "description": "\u0939\u0947 \u0924\u0941\u092e\u091a\u093e \u0938\u0927\u094d\u092f\u093e\u091a\u093e \u091a\u0945\u091f \u0907\u0924\u093f\u0939\u093e\u0938 \u0938\u093e\u092b \u0915\u0930\u0947\u0932. \u0924\u0941\u092e\u094d\u0939\u093e\u0932\u093e \u0916\u093e\u0924\u094d\u0930\u0940 \u0906\u0939\u0947 \u0915\u0940 \u0924\u0941\u092e\u094d\u0939\u0940 \u092a\u0941\u0922\u0947 \u091c\u093e\u090a \u0907\u091a\u094d\u091b\u093f\u0924\u093e?", + "tooltip": "\u0928\u0935\u0940\u0928 \u091a\u0945\u091f" + } + }, + "user": { + "menu": { + "settings": "\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u091c", + "settingsKey": "S", + "apiKeys": "API \u0915\u0940\u091c", + "logout": "\u0932\u0949\u0917\u0906\u0909\u091f" + } + } + }, + "apiKeys": { + "title": "\u0906\u0935\u0936\u094d\u092f\u0915 API \u0915\u0940\u091c", + "description": "\u0939\u0947 \u0905\u0945\u092a \u0935\u093e\u092a\u0930\u0923\u094d\u092f\u093e\u0938\u093e\u0920\u0940 \u0916\u093e\u0932\u0940\u0932 API \u0915\u0940\u091c \u0906\u0935\u0936\u094d\u092f\u0915 \u0906\u0939\u0947\u0924. \u0915\u0940\u091c \u0924\u0941\u092e\u091a\u094d\u092f\u093e \u0921\u093f\u0935\u094d\u0939\u093e\u0907\u0938\u091a\u094d\u092f\u093e \u0932\u094b\u0915\u0932 \u0938\u094d\u091f\u094b\u0930\u0947\u091c\u092e\u0927\u094d\u092f\u0947 \u0938\u093e\u0920\u0935\u0932\u094d\u092f\u093e \u091c\u093e\u0924\u093e\u0924.", + "success": { + "saved": "\u092f\u0936\u0938\u094d\u0935\u0940\u0930\u093f\u0924\u094d\u092f\u093e \u091c\u0924\u0928 \u0915\u0947\u0932\u0947" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u091a\u0941\u0928\u0947\u0902..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/nl.json b/.chainlit/translations/nl.json new file mode 100644 index 0000000..e128ce7 --- /dev/null +++ b/.chainlit/translations/nl.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "Annuleren", + "confirm": "Bevestigen", + "continue": "Doorgaan", + "goBack": "Terug", + "reset": "Herstellen", + "submit": "Versturen" + }, + "status": { + "loading": "Laden...", + "error": { + "default": "Er is een fout opgetreden", + "serverConnection": "Kon geen verbinding maken met de server" + } + } + }, + "auth": { + "login": { + "title": "Inloggen om toegang te krijgen tot de app", + "form": { + "email": { + "label": "E-mailadres", + "required": "e-mail is een verplicht veld", + "placeholder": "me@example.com" + }, + "password": { + "label": "Wachtwoord", + "required": "wachtwoord is een verplicht veld" + }, + "actions": { + "signin": "Inloggen" + }, + "alternativeText": { + "or": "OF" + } + }, + "errors": { + "default": "Kan niet inloggen", + "signin": "Probeer in te loggen met een ander account", + "oauthSignin": "Probeer in te loggen met een ander account", + "redirectUriMismatch": "De redirect URI komt niet overeen met de oauth app configuratie", + "oauthCallback": "Probeer in te loggen met een ander account", + "oauthCreateAccount": "Probeer in te loggen met een ander account", + "emailCreateAccount": "Probeer in te loggen met een ander account", + "callback": "Probeer in te loggen met een ander account", + "oauthAccountNotLinked": "Om je identiteit te bevestigen, log in met hetzelfde account dat je oorspronkelijk hebt gebruikt", + "emailSignin": "De e-mail kon niet worden verzonden", + "emailVerify": "Verifieer je e-mail, er is een nieuwe e-mail verzonden", + "credentialsSignin": "Inloggen mislukt. Controleer of de ingevoerde gegevens correct zijn", + "sessionRequired": "Log in om toegang te krijgen tot deze pagina" + } + }, + "provider": { + "continue": "Doorgaan met {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Typ hier je bericht...", + "actions": { + "send": "Bericht versturen", + "stop": "Taak stoppen", + "attachFiles": "Bestanden bijvoegen" + } + }, + "speech": { + "start": "Start opname", + "stop": "Stop opname", + "connecting": "Verbinden" + }, + "fileUpload": { + "dragDrop": "Sleep bestanden hierheen", + "browse": "Bestanden zoeken", + "sizeLimit": "Limiet:", + "errors": { + "failed": "Uploaden mislukt", + "cancelled": "Upload geannuleerd van" + }, + "actions": { + "cancelUpload": "Annuleer upload", + "removeAttachment": "Verwijder bijlage" + } + }, + "commands": { + "button": "Hulpmiddelen", + "changeTool": "Wijzig hulpmiddel", + "availableTools": "Beschikbare hulpmiddelen" + }, + "messages": { + "status": { + "using": "In gebruik", + "used": "Gebruikt" + }, + "actions": { + "copy": { + "button": "Kopi\u00ebren naar klembord", + "success": "Gekopieerd!" + } + }, + "feedback": { + "positive": "Nuttig", + "negative": "Niet nuttig", + "edit": "Feedback bewerken", + "dialog": { + "title": "Voeg een opmerking toe", + "submit": "Feedback versturen", + "yourFeedback": "Je feedback..." + }, + "status": { + "updating": "Bijwerken", + "updated": "Feedback bijgewerkt" + } + } + }, + "history": { + "title": "Laatste invoer", + "empty": "Zo leeg...", + "show": "Toon geschiedenis" + }, + "settings": { + "title": "Instellingenpaneel", + "customize": "Pas hier je chatinstellingen aan" + }, + "watermark": "LLM's kunnen fouten maken. Overweeg het controleren van belangrijke informatie." + }, + "threadHistory": { + "sidebar": { + "title": "Eerdere chats", + "filters": { + "search": "Zoeken", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "Vandaag", + "yesterday": "Gisteren", + "previous7days": "Afgelopen 7 dagen", + "previous30days": "Afgelopen 30 dagen" + }, + "empty": "Geen gesprekken gevonden", + "actions": { + "close": "Zijbalk sluiten", + "open": "Zijbalk openen" + } + }, + "thread": { + "untitled": "Naamloos gesprek", + "menu": { + "rename": "Hernoemen", + "share": "Delen", + "delete": "Verwijderen" + }, + "actions": { + "share": { + "title": "Deel link naar chat", + "button": "Delen", + "status": { + "copied": "Link gekopieerd", + "created": "Deellink gemaakt!", + "unshared": "Delen uitgeschakeld voor dit gesprek" + }, + "error": { + "create": "Aanmaken van deellink mislukt", + "unshare": "Delen van gesprek stoppen mislukt" + } + }, + "delete": { + "title": "Verwijdering bevestigen", + "description": "Dit zal het gesprek en bijbehorende berichten en elementen verwijderen. Deze actie kan niet ongedaan worden gemaakt", + "success": "Chat verwijderd", + "inProgress": "Chat verwijderen" + }, + "rename": { + "title": "Gesprek hernoemen", + "description": "Voer een nieuwe naam in voor dit gesprek", + "form": { + "name": { + "label": "Naam", + "placeholder": "Voer nieuwe naam in" + } + }, + "success": "Gesprek hernoemd!", + "inProgress": "Gesprek hernoemen" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "Leesmij", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "Nieuwe chat", + "dialog": { + "title": "Nieuwe chat aanmaken", + "description": "Dit zal je huidige chatgeschiedenis wissen. Weet je zeker dat je door wilt gaan?", + "tooltip": "Nieuwe chat" + } + }, + "user": { + "menu": { + "settings": "Instellingen", + "settingsKey": "I", + "apiKeys": "API-sleutels", + "logout": "Uitloggen" + } + } + }, + "apiKeys": { + "title": "Vereiste API-sleutels", + "description": "Om deze app te gebruiken zijn de volgende API-sleutels vereist. De sleutels worden opgeslagen in de lokale opslag van je apparaat.", + "success": { + "saved": "Succesvol opgeslagen" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "Selecteer..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/ta.json b/.chainlit/translations/ta.json new file mode 100644 index 0000000..8d71147 --- /dev/null +++ b/.chainlit/translations/ta.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd", + "confirm": "\u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1", + "continue": "\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0b95", + "goBack": "\u0ba4\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bbf\u0b9a\u0bcd \u0b9a\u0bc6\u0bb2\u0bcd", + "reset": "\u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bae\u0bc8", + "submit": "\u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf" + }, + "status": { + "loading": "\u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1...", + "error": { + "default": "\u0baa\u0bbf\u0bb4\u0bc8 \u0b8f\u0bb1\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1", + "serverConnection": "\u0b9a\u0bc7\u0bb5\u0bc8\u0baf\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0b9f\u0bc8\u0baf \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8" + } + } + }, + "auth": { + "login": { + "title": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc8 \u0b85\u0ba3\u0bc1\u0b95 \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd", + "form": { + "email": { + "label": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf", + "required": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd", + "required": "\u0b95\u0b9f\u0bb5\u0bc1\u0b9a\u0bcd\u0b9a\u0bca\u0bb2\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 \u0baa\u0bc1\u0bb2\u0bae\u0bcd" + }, + "actions": { + "signin": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0b95" + }, + "alternativeText": { + "or": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1" + } + }, + "errors": { + "default": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8", + "signin": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "oauthSignin": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "redirectUriMismatch": "\u0ba4\u0bbf\u0b9a\u0bc8\u0ba4\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bb2\u0bcd URI \u0b93\u0b86\u0ba4\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1 \u0b95\u0b9f\u0bcd\u0b9f\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b9f\u0ba9\u0bcd \u0baa\u0bca\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8", + "oauthCallback": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "oauthCreateAccount": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "emailCreateAccount": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "callback": "\u0bb5\u0bc7\u0bb1\u0bc1 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "oauthAccountNotLinked": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b85\u0b9f\u0bc8\u0baf\u0bbe\u0bb3\u0ba4\u0bcd\u0ba4\u0bc8 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4, \u0bae\u0bc1\u0ba4\u0bb2\u0bbf\u0bb2\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf \u0b85\u0ba4\u0bc7 \u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bc1\u0b9f\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd", + "emailSignin": "\u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bc8 \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8", + "emailVerify": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd, \u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0bae\u0bbf\u0ba9\u0bcd\u0ba9\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1", + "credentialsSignin": "\u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0bb5\u0bc1 \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0b9f\u0bc8\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1. \u0ba8\u0bc0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bb5\u0bb4\u0b99\u0bcd\u0b95\u0bbf\u0baf \u0bb5\u0bbf\u0bb5\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bb0\u0bbf\u0baf\u0bbe\u0ba9\u0bb5\u0bc8 \u0b8e\u0ba9 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "sessionRequired": "\u0b87\u0ba8\u0bcd\u0ba4\u0baa\u0bcd \u0baa\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0ba3\u0bc1\u0b95 \u0b89\u0bb3\u0bcd\u0ba8\u0bc1\u0bb4\u0bc8\u0baf\u0bb5\u0bc1\u0bae\u0bcd" + } + }, + "provider": { + "continue": "{{provider}} \u0bae\u0bc2\u0bb2\u0bae\u0bcd \u0ba4\u0bca\u0b9f\u0bb0\u0bb5\u0bc1\u0bae\u0bcd" + } + }, + "chat": { + "input": { + "placeholder": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0baf\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0ba4\u0b9f\u0bcd\u0b9f\u0b9a\u0bcd\u0b9a\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb5\u0bc1\u0bae\u0bcd...", + "actions": { + "send": "\u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0bc1", + "stop": "\u0baa\u0ba3\u0bbf\u0baf\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1", + "attachFiles": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0ba3\u0bc8" + } + }, + "commands": { + "button": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd", + "changeTool": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baf\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bb5\u0bc1\u0bae\u0bcd", + "availableTools": "\u0b95\u0bbf\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd" + }, + "speech": { + "start": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bc1", + "stop": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1", + "connecting": "\u0b87\u0ba3\u0bc8\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1" + }, + "fileUpload": { + "dragDrop": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0b87\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 \u0bb5\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd", + "browse": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b89\u0bb2\u0bbe\u0bb5\u0bc1", + "sizeLimit": "\u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc1:", + "errors": { + "failed": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bae\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0b9f\u0bc8\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1", + "cancelled": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bae\u0bcd \u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1" + }, + "actions": { + "cancelUpload": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd", + "removeAttachment": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1" + } + }, + "messages": { + "status": { + "using": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1", + "used": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1" + }, + "actions": { + "copy": { + "button": "\u0b95\u0bbf\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bcb\u0bb0\u0bcd\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1", + "success": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!" + } + }, + "feedback": { + "positive": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0ba4\u0bc1", + "negative": "\u0baa\u0baf\u0ba9\u0bc1\u0bb3\u0bcd\u0bb3\u0ba4\u0bbe\u0b95 \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", + "edit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bbf\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1", + "dialog": { + "title": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8\u0b9a\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd", + "submit": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf", + "yourFeedback": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1..." + }, + "status": { + "updating": "\u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0ba4\u0bc1", + "updated": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 \u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1" + } + } + }, + "history": { + "title": "\u0b95\u0b9f\u0bc8\u0b9a\u0bbf \u0b89\u0bb3\u0bcd\u0bb3\u0bc0\u0b9f\u0bc1\u0b95\u0bb3\u0bcd", + "empty": "\u0b95\u0bbe\u0bb2\u0bbf\u0baf\u0bbe\u0b95 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1...", + "show": "\u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bcd\u0bb1\u0bc8\u0b95\u0bcd \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1" + }, + "settings": { + "title": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0bb2\u0b95\u0bae\u0bcd", + "customize": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc7 \u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bbe\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd" + }, + "watermark": "LLM \u0b95\u0bb3\u0bcd \u0ba4\u0bb5\u0bb1\u0bc1\u0b95\u0bb3\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb2\u0bbe\u0bae\u0bcd. \u0bae\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0baf\u0bae\u0bbe\u0ba9 \u0ba4\u0b95\u0bb5\u0bb2\u0bcd\u0b95\u0bb3\u0bc8\u0b9a\u0bcd \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0ba4\u0bc8\u0b95\u0bcd \u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0bca\u0bb3\u0bcd\u0bb3\u0bc1\u0b99\u0bcd\u0b95\u0bb3\u0bcd." + }, + "threadHistory": { + "sidebar": { + "title": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd", + "filters": { + "search": "\u0ba4\u0bc7\u0b9f\u0bc1", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0b87\u0ba9\u0bcd\u0bb1\u0bc1", + "yesterday": "\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1", + "previous7days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 7 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd", + "previous30days": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 30 \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd" + }, + "empty": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd\u0b95\u0bb3\u0bcd \u0b8e\u0ba4\u0bc1\u0bb5\u0bc1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", + "actions": { + "close": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0bae\u0bc2\u0b9f\u0bc1", + "open": "\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0ba4\u0bbf\u0bb1" + } + }, + "thread": { + "untitled": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bbe\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd", + "menu": { + "rename": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1", + "share": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd", + "delete": "\u0b85\u0bb4\u0bbf" + }, + "actions": { + "share": { + "title": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0baa\u0b95\u0bbf\u0bb0\u0bb5\u0bc1\u0bae\u0bcd", + "button": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd", + "status": { + "copied": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1", + "created": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!", + "unshared": "\u0b87\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0bae\u0bc1\u0b9f\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1" + }, + "error": { + "create": "\u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8", + "unshare": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0baa\u0b95\u0bbf\u0bb0\u0bcd\u0bb5\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8" + } + }, + "delete": { + "title": "\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0ba4\u0bc8 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1", + "description": "\u0b87\u0ba4\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b85\u0ba4\u0ba9\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0b95\u0bb3\u0bcd, \u0b89\u0bb1\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. \u0b87\u0ba8\u0bcd\u0ba4 \u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bbe\u0ba4\u0bc1", + "success": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1", + "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1" + }, + "rename": { + "title": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1", + "description": "\u0b87\u0ba8\u0bcd\u0ba4 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd", + "form": { + "name": { + "label": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd", + "placeholder": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bb5\u0bc1\u0bae\u0bcd" + } + }, + "success": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1!", + "inProgress": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0bae\u0bb1\u0bc1\u0baa\u0bc6\u0baf\u0bb0\u0bbf\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd", + "readme": "\u0baa\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd", + "dialog": { + "title": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0bc1", + "description": "\u0b87\u0ba4\u0bc1 \u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc8\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bcd\u0bb1\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. \u0ba4\u0bca\u0b9f\u0bb0 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bbe?", + "tooltip": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd" + } + }, + "user": { + "menu": { + "settings": "\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd", + "settingsKey": "S", + "apiKeys": "API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd", + "logout": "\u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1\u0bc1" + } + } + }, + "apiKeys": { + "title": "\u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd", + "description": "\u0b87\u0ba8\u0bcd\u0ba4 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0bbe\u0b9f\u0bcd\u0b9f\u0bc8\u0baa\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4, \u0baa\u0bbf\u0ba9\u0bcd\u0bb5\u0bb0\u0bc1\u0bae\u0bcd API \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8. \u0bb5\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd \u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bbe\u0ba4\u0ba9\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bc2\u0bb0\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0baa\u0bcd\u0baa\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.", + "success": { + "saved": "\u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbf\u0b95\u0bb0\u0bae\u0bbe\u0b95 \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/te.json b/.chainlit/translations/te.json new file mode 100644 index 0000000..f2f8a02 --- /dev/null +++ b/.chainlit/translations/te.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "confirm": "\u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "continue": "\u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "goBack": "\u0c35\u0c46\u0c28\u0c15\u0c4d\u0c15\u0c3f \u0c35\u0c46\u0c33\u0c4d\u0c33\u0c02\u0c21\u0c3f", + "reset": "\u0c30\u0c40\u0c38\u0c46\u0c1f\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "submit": "\u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + }, + "status": { + "loading": "\u0c32\u0c4b\u0c21\u0c4d \u0c05\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...", + "error": { + "default": "\u0c32\u0c4b\u0c2a\u0c02 \u0c38\u0c02\u0c2d\u0c35\u0c3f\u0c02\u0c1a\u0c3f\u0c02\u0c26\u0c3f", + "serverConnection": "\u0c38\u0c30\u0c4d\u0c35\u0c30\u0c4d\u200c\u0c28\u0c3f \u0c1a\u0c47\u0c30\u0c41\u0c15\u0c4b\u0c32\u0c47\u0c15\u0c2a\u0c4b\u0c2f\u0c3e\u0c2e\u0c41" + } + } + }, + "auth": { + "login": { + "title": "\u0c2f\u0c3e\u0c2a\u0c4d\u200c\u0c28\u0c3f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "form": { + "email": { + "label": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c1a\u0c3f\u0c30\u0c41\u0c28\u0c3e\u0c2e\u0c3e", + "required": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d", + "required": "\u0c2a\u0c3e\u0c38\u0c4d\u200c\u0c35\u0c30\u0c4d\u0c21\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f" + }, + "actions": { + "signin": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f" + }, + "alternativeText": { + "or": "\u0c32\u0c47\u0c26\u0c3e" + } + }, + "errors": { + "default": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c15\u0c2a\u0c4b\u0c2f\u0c3e\u0c2e\u0c41", + "signin": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "oauthSignin": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "redirectUriMismatch": "\u0c30\u0c40\u0c21\u0c48\u0c30\u0c46\u0c15\u0c4d\u0c1f\u0c4d URI oauth \u0c2f\u0c3e\u0c2a\u0c4d \u0c15\u0c3e\u0c28\u0c4d\u0c2b\u0c3f\u0c17\u0c30\u0c47\u0c37\u0c28\u0c4d\u200c\u0c24\u0c4b \u0c38\u0c30\u0c3f\u0c2a\u0c4b\u0c32\u0c21\u0c02 \u0c32\u0c47\u0c26\u0c41", + "oauthCallback": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "oauthCreateAccount": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "emailCreateAccount": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "callback": "\u0c35\u0c47\u0c30\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "oauthAccountNotLinked": "\u0c2e\u0c40 \u0c17\u0c41\u0c30\u0c4d\u0c24\u0c3f\u0c02\u0c2a\u0c41\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f, \u0c2e\u0c40\u0c30\u0c41 \u0c2e\u0c4a\u0c26\u0c1f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c3f\u0c28 \u0c05\u0c26\u0c47 \u0c16\u0c3e\u0c24\u0c3e\u0c24\u0c4b \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "emailSignin": "\u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c2a\u0c02\u0c2a\u0c21\u0c02 \u0c38\u0c3e\u0c27\u0c4d\u0c2f\u0c02 \u0c15\u0c3e\u0c32\u0c47\u0c26\u0c41", + "emailVerify": "\u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f \u0c2e\u0c40 \u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d\u200c\u0c28\u0c3f \u0c27\u0c43\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f, \u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c07\u0c2e\u0c46\u0c2f\u0c3f\u0c32\u0c4d \u0c2a\u0c02\u0c2a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f", + "credentialsSignin": "\u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f. \u0c2e\u0c40\u0c30\u0c41 \u0c05\u0c02\u0c26\u0c3f\u0c02\u0c1a\u0c3f\u0c28 \u0c35\u0c3f\u0c35\u0c30\u0c3e\u0c32\u0c41 \u0c38\u0c30\u0c48\u0c28\u0c35\u0c47\u0c28\u0c3e \u0c05\u0c28\u0c3f \u0c24\u0c28\u0c3f\u0c16\u0c40 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "sessionRequired": "\u0c08 \u0c2a\u0c47\u0c1c\u0c40\u0c28\u0c3f \u0c2f\u0c3e\u0c15\u0c4d\u0c38\u0c46\u0c38\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f \u0c38\u0c48\u0c28\u0c4d \u0c07\u0c28\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f" + } + }, + "provider": { + "continue": "{{provider}}\u0c24\u0c4b \u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + } + }, + "chat": { + "input": { + "placeholder": "\u0c2e\u0c40 \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c1f\u0c48\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f...", + "actions": { + "send": "\u0c38\u0c02\u0c26\u0c47\u0c36\u0c02 \u0c2a\u0c02\u0c2a\u0c02\u0c21\u0c3f", + "stop": "\u0c2a\u0c28\u0c3f \u0c06\u0c2a\u0c02\u0c21\u0c3f", + "attachFiles": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + } + }, + "speech": { + "start": "\u0c30\u0c3f\u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c3f\u0c02\u0c17\u0c4d \u0c2a\u0c4d\u0c30\u0c3e\u0c30\u0c02\u0c2d\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "stop": "\u0c30\u0c3f\u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c3f\u0c02\u0c17\u0c4d \u0c06\u0c2a\u0c02\u0c21\u0c3f", + "connecting": "\u0c05\u0c28\u0c41\u0c38\u0c02\u0c27\u0c3e\u0c28\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f" + }, + "commands": { + "button": "\u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c32\u0c41", + "changeTool": "\u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f", + "availableTools": "\u0c32\u0c2d\u0c4d\u0c2f\u0c2e\u0c48\u0c28 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c3e\u0c32\u0c41" + }, + "fileUpload": { + "dragDrop": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d\u200c\u0c28\u0c3f \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c21\u0c4d\u0c30\u0c3e\u0c17\u0c4d \u0c1a\u0c47\u0c38\u0c3f \u0c21\u0c4d\u0c30\u0c3e\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "browse": "\u0c2b\u0c48\u0c32\u0c4d\u0c38\u0c4d \u0c2c\u0c4d\u0c30\u0c4c\u0c1c\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "sizeLimit": "\u0c2a\u0c30\u0c3f\u0c2e\u0c3f\u0c24\u0c3f:", + "errors": { + "failed": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f", + "cancelled": "\u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f" + }, + "actions": { + "cancelUpload": "\u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "removeAttachment": "\u0c05\u0c28\u0c41\u0c2c\u0c02\u0c27\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + } + }, + "messages": { + "status": { + "using": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f", + "used": "\u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f" + }, + "actions": { + "copy": { + "button": "\u0c15\u0c4d\u0c32\u0c3f\u0c2a\u0c4d\u200c\u0c2c\u0c4b\u0c30\u0c4d\u0c21\u0c4d\u200c\u0c15\u0c3f \u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "success": "\u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!" + } + }, + "feedback": { + "positive": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02", + "negative": "\u0c38\u0c39\u0c3e\u0c2f\u0c15\u0c30\u0c02 \u0c15\u0c3e\u0c26\u0c41", + "edit": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c38\u0c35\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "dialog": { + "title": "\u0c35\u0c4d\u0c2f\u0c3e\u0c16\u0c4d\u0c2f \u0c1c\u0c4b\u0c21\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "submit": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "yourFeedback": "\u0c2e\u0c40 \u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c02..." + }, + "status": { + "updating": "\u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f", + "updated": "\u0c05\u0c2d\u0c3f\u0c2a\u0c4d\u0c30\u0c3e\u0c2f\u0c02 \u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f" + } + } + }, + "history": { + "title": "\u0c1a\u0c3f\u0c35\u0c30\u0c3f \u0c07\u0c28\u0c4d\u200c\u0c2a\u0c41\u0c1f\u0c4d\u200c\u0c32\u0c41", + "empty": "\u0c16\u0c3e\u0c33\u0c40\u0c17\u0c3e \u0c09\u0c02\u0c26\u0c3f...", + "show": "\u0c1a\u0c30\u0c3f\u0c24\u0c4d\u0c30\u0c28\u0c41 \u0c1a\u0c42\u0c2a\u0c3f\u0c02\u0c1a\u0c41" + }, + "settings": { + "title": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32 \u0c2a\u0c4d\u0c2f\u0c3e\u0c28\u0c46\u0c32\u0c4d", + "customize": "\u0c2e\u0c40 \u0c1a\u0c3e\u0c1f\u0c4d \u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32\u0c28\u0c41 \u0c07\u0c15\u0c4d\u0c15\u0c21 \u0c05\u0c28\u0c41\u0c15\u0c42\u0c32\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + }, + "watermark": "LLM\u0c32\u0c41 \u0c24\u0c2a\u0c4d\u0c2a\u0c41\u0c32\u0c41 \u0c1a\u0c47\u0c2f\u0c35\u0c1a\u0c4d\u0c1a\u0c41. \u0c2e\u0c41\u0c16\u0c4d\u0c2f\u0c2e\u0c48\u0c28 \u0c38\u0c2e\u0c3e\u0c1a\u0c3e\u0c30\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c24\u0c28\u0c3f\u0c16\u0c40 \u0c1a\u0c47\u0c2f\u0c21\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c2a\u0c30\u0c3f\u0c17\u0c23\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f." + }, + "threadHistory": { + "sidebar": { + "title": "\u0c17\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c32\u0c41", + "filters": { + "search": "\u0c35\u0c46\u0c24\u0c15\u0c02\u0c21\u0c3f", + "placeholder": "Search conversations..." + }, + "timeframes": { + "today": "\u0c08\u0c30\u0c4b\u0c1c\u0c41", + "yesterday": "\u0c28\u0c3f\u0c28\u0c4d\u0c28", + "previous7days": "\u0c17\u0c24 7 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41", + "previous30days": "\u0c17\u0c24 30 \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41" + }, + "empty": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c32\u0c41 \u0c15\u0c28\u0c41\u0c17\u0c4a\u0c28\u0c2c\u0c21\u0c32\u0c47\u0c26\u0c41", + "actions": { + "close": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c2e\u0c42\u0c38\u0c3f\u0c35\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "open": "\u0c38\u0c48\u0c21\u0c4d\u200c\u0c2c\u0c3e\u0c30\u0c4d \u0c24\u0c46\u0c30\u0c35\u0c02\u0c21\u0c3f" + } + }, + "thread": { + "untitled": "\u0c2a\u0c47\u0c30\u0c41 \u0c32\u0c47\u0c28\u0c3f \u0c38\u0c02\u0c2d\u0c3e\u0c37\u0c23", + "menu": { + "rename": "\u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f", + "share": "\u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "delete": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f" + }, + "actions": { + "share": { + "title": "\u0c1a\u0c3e\u0c1f\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d\u200c\u0c28\u0c41 \u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "button": "\u0c37\u0c47\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "status": { + "copied": "\u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c15\u0c3e\u0c2a\u0c40 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f", + "created": "\u0c37\u0c47\u0c30\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!", + "unshared": "\u0c08 \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c15\u0c41 \u0c37\u0c47\u0c30\u0c3f\u0c02\u0c17\u0c4d \u0c06\u0c2a\u0c3f\u0c35\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f" + }, + "error": { + "create": "\u0c37\u0c47\u0c30\u0c4d \u0c32\u0c3f\u0c02\u0c15\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c21\u0c02 \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f", + "unshare": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c37\u0c47\u0c30\u0c3f\u0c02\u0c17\u0c4d \u0c28\u0c3f\u0c32\u0c3f\u0c2a\u0c3f\u0c35\u0c47\u0c2f\u0c21\u0c02 \u0c35\u0c3f\u0c2b\u0c32\u0c2e\u0c48\u0c02\u0c26\u0c3f" + } + }, + "delete": { + "title": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c2a\u0c41\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "description": "\u0c07\u0c26\u0c3f \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d\u200c\u0c24\u0c4b \u0c2a\u0c3e\u0c1f\u0c41 \u0c26\u0c3e\u0c28\u0c3f \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c32\u0c28\u0c41 \u0c2e\u0c30\u0c3f\u0c2f\u0c41 \u0c05\u0c02\u0c36\u0c3e\u0c32\u0c28\u0c41 \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c41\u0c02\u0c26\u0c3f. \u0c08 \u0c1a\u0c30\u0c4d\u0c2f\u0c28\u0c41 \u0c30\u0c26\u0c4d\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c30\u0c41", + "success": "\u0c1a\u0c3e\u0c1f\u0c4d \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f", + "inProgress": "\u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f" + }, + "rename": { + "title": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c02\u0c21\u0c3f", + "description": "\u0c08 \u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c15\u0c4b\u0c38\u0c02 \u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c47\u0c30\u0c41\u0c28\u0c41 \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", + "form": { + "name": { + "label": "\u0c2a\u0c47\u0c30\u0c41", + "placeholder": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c47\u0c30\u0c41\u0c28\u0c41 \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f" + } + }, + "success": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!", + "inProgress": "\u0c25\u0c4d\u0c30\u0c46\u0c21\u0c4d \u0c2a\u0c47\u0c30\u0c41 \u0c2e\u0c3e\u0c30\u0c41\u0c38\u0c4d\u0c24\u0c4b\u0c02\u0c26\u0c3f" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0c1a\u0c3e\u0c1f\u0c4d", + "readme": "\u0c1a\u0c26\u0c35\u0c02\u0c21\u0c3f", + "theme": { + "light": "Light Theme", + "dark": "Dark Theme", + "system": "Follow System" + } + }, + "newChat": { + "button": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d", + "dialog": { + "title": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "description": "\u0c07\u0c26\u0c3f \u0c2e\u0c40 \u0c2a\u0c4d\u0c30\u0c38\u0c4d\u0c24\u0c41\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d \u0c1a\u0c30\u0c3f\u0c24\u0c4d\u0c30\u0c28\u0c41 \u0c24\u0c41\u0c21\u0c3f\u0c1a\u0c3f\u0c35\u0c47\u0c38\u0c4d\u0c24\u0c41\u0c02\u0c26\u0c3f. \u0c2e\u0c40\u0c30\u0c41 \u0c15\u0c4a\u0c28\u0c38\u0c3e\u0c17\u0c3f\u0c02\u0c1a\u0c3e\u0c32\u0c28\u0c41\u0c15\u0c41\u0c02\u0c1f\u0c41\u0c28\u0c4d\u0c28\u0c3e\u0c30\u0c3e?", + "tooltip": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c1a\u0c3e\u0c1f\u0c4d" + } + }, + "user": { + "menu": { + "settings": "\u0c38\u0c46\u0c1f\u0c4d\u0c1f\u0c3f\u0c02\u0c17\u0c4d\u200c\u0c32\u0c41", + "settingsKey": "S", + "apiKeys": "API \u0c15\u0c40\u0c32\u0c41", + "logout": "\u0c32\u0c3e\u0c17\u0c4d \u0c05\u0c35\u0c41\u0c1f\u0c4d" + } + } + }, + "apiKeys": { + "title": "\u0c05\u0c35\u0c38\u0c30\u0c2e\u0c48\u0c28 API \u0c15\u0c40\u0c32\u0c41", + "description": "\u0c08 \u0c2f\u0c3e\u0c2a\u0c4d\u200c\u0c28\u0c3f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f, \u0c15\u0c3f\u0c02\u0c26\u0c3f API \u0c15\u0c40\u0c32\u0c41 \u0c05\u0c35\u0c38\u0c30\u0c02. \u0c15\u0c40\u0c32\u0c41 \u0c2e\u0c40 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c02 \u0c2f\u0c4a\u0c15\u0c4d\u0c15 \u0c38\u0c4d\u0c25\u0c3e\u0c28\u0c3f\u0c15 \u0c28\u0c3f\u0c32\u0c4d\u0c35\u0c32\u0c4b \u0c28\u0c3f\u0c32\u0c4d\u0c35 \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c24\u0c3e\u0c2f\u0c3f.", + "success": { + "saved": "\u0c35\u0c3f\u0c1c\u0c2f\u0c35\u0c02\u0c24\u0c02\u0c17\u0c3e \u0c38\u0c47\u0c35\u0c4d \u0c1a\u0c47\u0c2f\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f" + } + }, + "alerts": { + "info": "Info", + "note": "Note", + "tip": "Tip", + "important": "Important", + "warning": "Warning", + "caution": "Caution", + "debug": "Debug", + "example": "Example", + "success": "Success", + "help": "Help", + "idea": "Idea", + "pending": "Pending", + "security": "Security", + "beta": "Beta", + "best-practice": "Best Practice" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/zh-CN.json b/.chainlit/translations/zh-CN.json new file mode 100644 index 0000000..ed3cb18 --- /dev/null +++ b/.chainlit/translations/zh-CN.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u53d6\u6d88", + "confirm": "\u786e\u8ba4", + "continue": "\u7ee7\u7eed", + "goBack": "\u8fd4\u56de", + "reset": "\u91cd\u7f6e", + "submit": "\u63d0\u4ea4" + }, + "status": { + "loading": "\u52a0\u8f7d\u4e2d...", + "error": { + "default": "\u53d1\u751f\u9519\u8bef", + "serverConnection": "\u65e0\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668" + } + } + }, + "auth": { + "login": { + "title": "\u767b\u5f55\u4ee5\u8bbf\u95ee\u5e94\u7528", + "form": { + "email": { + "label": "\u7535\u5b50\u90ae\u7bb1", + "required": "\u90ae\u7bb1\u662f\u5fc5\u586b\u9879", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u5bc6\u7801", + "required": "\u5bc6\u7801\u662f\u5fc5\u586b\u9879" + }, + "actions": { + "signin": "\u767b\u5f55" + }, + "alternativeText": { + "or": "\u6216" + } + }, + "errors": { + "default": "\u65e0\u6cd5\u767b\u5f55", + "signin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "oauthSignin": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "redirectUriMismatch": "\u91cd\u5b9a\u5411URI\u4e0eOAuth\u5e94\u7528\u914d\u7f6e\u4e0d\u5339\u914d", + "oauthCallback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "oauthCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "emailCreateAccount": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "callback": "\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u8d26\u53f7\u767b\u5f55", + "oauthAccountNotLinked": "\u4e3a\u786e\u8ba4\u60a8\u7684\u8eab\u4efd\uff0c\u8bf7\u4f7f\u7528\u539f\u59cb\u8d26\u53f7\u767b\u5f55", + "emailSignin": "\u90ae\u4ef6\u53d1\u9001\u5931\u8d25", + "emailVerify": "\u8bf7\u9a8c\u8bc1\u60a8\u7684\u90ae\u7bb1\uff0c\u65b0\u7684\u9a8c\u8bc1\u90ae\u4ef6\u5df2\u53d1\u9001", + "credentialsSignin": "\u767b\u5f55\u5931\u8d25\u3002\u8bf7\u68c0\u67e5\u60a8\u63d0\u4f9b\u7684\u4fe1\u606f\u662f\u5426\u6b63\u786e", + "sessionRequired": "\u8bf7\u767b\u5f55\u4ee5\u8bbf\u95ee\u6b64\u9875\u9762" + } + }, + "provider": { + "continue": "\u7ee7\u7eed\u4f7f\u7528{{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "\u5728\u6b64\u8f93\u5165\u60a8\u7684\u6d88\u606f...", + "actions": { + "send": "\u53d1\u9001\u6d88\u606f", + "stop": "\u505c\u6b62\u4efb\u52a1", + "attachFiles": "\u9644\u52a0\u6587\u4ef6" + } + }, + "speech": { + "start": "\u5f00\u59cb\u5f55\u97f3", + "stop": "\u505c\u6b62\u5f55\u97f3", + "connecting": "\u8fde\u63a5\u4e2d" + }, + "fileUpload": { + "dragDrop": "\u5c06\u6587\u4ef6\u62d6\u653e\u5230\u8fd9\u91cc", + "browse": "\u6d4f\u89c8\u6587\u4ef6", + "sizeLimit": "\u9650\u5236\uff1a", + "errors": { + "failed": "\u4e0a\u4f20\u5931\u8d25", + "cancelled": "\u5df2\u53d6\u6d88\u4e0a\u4f20" + }, + "actions": { + "cancelUpload": "\u53d6\u6d88\u4e0a\u4f20", + "removeAttachment": "\u79fb\u9664\u9644\u4ef6" + } + }, + "commands": { + "button": "\u5de5\u5177", + "changeTool": "\u66f4\u6362\u5de5\u5177", + "availableTools": "\u53ef\u7528\u5de5\u5177" + }, + "messages": { + "status": { + "using": "\u4f7f\u7528\u4e2d", + "used": "\u5df2\u4f7f\u7528" + }, + "actions": { + "copy": { + "button": "\u590d\u5236\u5230\u526a\u8d34\u677f", + "success": "\u5df2\u590d\u5236\uff01" + } + }, + "feedback": { + "positive": "\u6709\u5e2e\u52a9", + "negative": "\u6ca1\u6709\u5e2e\u52a9", + "edit": "\u7f16\u8f91\u53cd\u9988", + "dialog": { + "title": "\u6dfb\u52a0\u8bc4\u8bba", + "submit": "\u63d0\u4ea4\u53cd\u9988", + "yourFeedback": "\u60a8\u7684\u53cd\u9988..." + }, + "status": { + "updating": "\u66f4\u65b0\u4e2d", + "updated": "\u53cd\u9988\u5df2\u66f4\u65b0" + } + } + }, + "history": { + "title": "\u6700\u8fd1\u8f93\u5165", + "empty": "\u7a7a\u7a7a\u5982\u4e5f...", + "show": "\u663e\u793a\u5386\u53f2" + }, + "settings": { + "title": "\u8bbe\u7f6e\u9762\u677f", + "customize": "\u5728\u6b64\u81ea\u5b9a\u4e49\u60a8\u7684\u804a\u5929\u8bbe\u7f6e" + }, + "watermark": "\u5927\u8bed\u8a00\u6a21\u578b\u53ef\u80fd\u4f1a\u72af\u9519\u3002\u8bf7\u6838\u5b9e\u91cd\u8981\u4fe1\u606f\u3002" + }, + "threadHistory": { + "sidebar": { + "title": "\u5386\u53f2\u5bf9\u8bdd", + "filters": { + "search": "\u641c\u7d22", + "placeholder": "\u641c\u7d22\u4f1a\u8bdd..." + }, + "timeframes": { + "today": "\u4eca\u5929", + "yesterday": "\u6628\u5929", + "previous7days": "\u8fc7\u53bb7\u5929", + "previous30days": "\u8fc7\u53bb30\u5929" + }, + "empty": "\u672a\u627e\u5230\u5bf9\u8bdd", + "actions": { + "close": "\u5173\u95ed\u4fa7\u8fb9\u680f", + "open": "\u6253\u5f00\u4fa7\u8fb9\u680f" + } + }, + "thread": { + "untitled": "\u672a\u547d\u540d\u5bf9\u8bdd", + "menu": { + "rename": "\u91cd\u547d\u540d", + "share": "\u5206\u4eab", + "delete": "\u5220\u9664" + }, + "actions": { + "share": { + "title": "\u5206\u4eab\u804a\u5929\u94fe\u63a5", + "button": "\u5206\u4eab", + "status": { + "copied": "\u94fe\u63a5\u5df2\u590d\u5236", + "created": "\u5206\u4eab\u94fe\u63a5\u5df2\u521b\u5efa\uff01", + "unshared": "\u5df2\u7981\u7528\u6b64\u5bf9\u8bdd\u7684\u5206\u4eab" + }, + "error": { + "create": "\u521b\u5efa\u5206\u4eab\u94fe\u63a5\u5931\u8d25", + "unshare": "\u53d6\u6d88\u5bf9\u8bdd\u5206\u4eab\u5931\u8d25" + } + }, + "delete": { + "title": "\u786e\u8ba4\u5220\u9664", + "description": "\u8fd9\u5c06\u5220\u9664\u8be5\u5bf9\u8bdd\u53ca\u5176\u6240\u6709\u6d88\u606f\u548c\u5143\u7d20\u3002\u6b64\u64cd\u4f5c\u65e0\u6cd5\u64a4\u9500", + "success": "\u5bf9\u8bdd\u5df2\u5220\u9664", + "inProgress": "\u6b63\u5728\u5220\u9664\u5bf9\u8bdd" + }, + "rename": { + "title": "\u91cd\u547d\u540d\u5bf9\u8bdd", + "description": "\u4e3a\u6b64\u5bf9\u8bdd\u8f93\u5165\u65b0\u540d\u79f0", + "form": { + "name": { + "label": "\u540d\u79f0", + "placeholder": "\u8f93\u5165\u65b0\u540d\u79f0" + } + }, + "success": "\u5bf9\u8bdd\u5df2\u91cd\u547d\u540d\uff01", + "inProgress": "\u6b63\u5728\u91cd\u547d\u540d\u5bf9\u8bdd" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u804a\u5929", + "readme": "\u8bf4\u660e", + "theme": { + "light": "\u6d45\u8272\u4e3b\u9898", + "dark": "\u6df1\u8272\u4e3b\u9898", + "system": "\u8ddf\u968f\u7cfb\u7edf" + } + }, + "newChat": { + "button": "\u65b0\u5efa\u5bf9\u8bdd", + "dialog": { + "title": "\u521b\u5efa\u65b0\u5bf9\u8bdd", + "description": "\u8fd9\u5c06\u6e05\u9664\u60a8\u5f53\u524d\u7684\u804a\u5929\u8bb0\u5f55\u3002\u786e\u5b9a\u8981\u7ee7\u7eed\u5417\uff1f", + "tooltip": "\u65b0\u5efa\u5bf9\u8bdd" + } + }, + "user": { + "menu": { + "settings": "\u8bbe\u7f6e", + "settingsKey": "S", + "apiKeys": "API\u5bc6\u94a5", + "logout": "\u9000\u51fa\u767b\u5f55" + } + } + }, + "apiKeys": { + "title": "\u6240\u9700API\u5bc6\u94a5", + "description": "\u4f7f\u7528\u6b64\u5e94\u7528\u9700\u8981\u4ee5\u4e0bAPI\u5bc6\u94a5\u3002\u8fd9\u4e9b\u5bc6\u94a5\u5b58\u50a8\u5728\u60a8\u8bbe\u5907\u7684\u672c\u5730\u5b58\u50a8\u4e2d\u3002", + "success": { + "saved": "\u4fdd\u5b58\u6210\u529f" + } + }, + "alerts": { + "info": "\u4fe1\u606f", + "note": "\u6ce8\u91ca", + "tip": "\u63d0\u793a", + "important": "\u91cd\u8981", + "warning": "\u8b66\u544a", + "caution": "\u6ce8\u610f", + "debug": "\u8c03\u8bd5", + "example": "\u793a\u4f8b", + "success": "\u6210\u529f", + "help": "\u5e2e\u52a9", + "idea": "\u60f3\u6cd5", + "pending": "\u5f85\u5904\u7406", + "security": "\u5b89\u5168", + "beta": "\u6d4b\u8bd5", + "best-practice": "\u6700\u4f73\u5b9e\u8df5" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u9009\u62e9..." + } + } +} \ No newline at end of file diff --git a/.chainlit/translations/zh-TW.json b/.chainlit/translations/zh-TW.json new file mode 100644 index 0000000..74da121 --- /dev/null +++ b/.chainlit/translations/zh-TW.json @@ -0,0 +1,245 @@ +{ + "common": { + "actions": { + "cancel": "\u53d6\u6d88", + "confirm": "\u78ba\u8a8d", + "continue": "\u7e7c\u7e8c", + "goBack": "\u8fd4\u56de", + "reset": "\u91cd\u8a2d", + "submit": "\u9001\u51fa" + }, + "status": { + "loading": "\u8f09\u5165\u4e2d...", + "error": { + "default": "\u767c\u751f\u932f\u8aa4", + "serverConnection": "\u7121\u6cd5\u9023\u7dda\u5230\u4f3a\u670d\u5668" + } + } + }, + "auth": { + "login": { + "title": "\u767b\u5165\u4ee5\u5b58\u53d6\u61c9\u7528\u7a0b\u5f0f", + "form": { + "email": { + "label": "\u96fb\u5b50\u4fe1\u7bb1", + "required": "\u4fe1\u7bb1\u662f\u5fc5\u586b\u9805\u76ee", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u5bc6\u78bc", + "required": "\u5bc6\u78bc\u662f\u5fc5\u586b\u9805\u76ee" + }, + "actions": { + "signin": "\u767b\u5165" + }, + "alternativeText": { + "or": "\u6216" + } + }, + "errors": { + "default": "\u7121\u6cd5\u767b\u5165", + "signin": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "oauthSignin": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "redirectUriMismatch": "\u91cd\u65b0\u5c0e\u5411URI\u8207OAuth App\u8a2d\u5b9a\u4e0d\u76f8\u7b26", + "oauthCallback": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "oauthCreateAccount": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "emailCreateAccount": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "callback": "\u8acb\u5617\u8a66\u4f7f\u7528\u5176\u5b83\u5e33\u865f\u767b\u5165", + "oauthAccountNotLinked": "\u70ba\u78ba\u8a8d\u60a8\u7684\u8eab\u4efd\uff0c\u8acb\u4ee5\u539f\u672c\u4f7f\u7528\u7684\u5e33\u865f\u767b\u5165", + "emailSignin": "\u96fb\u5b50\u90f5\u4ef6\u767c\u9001\u5931\u6557", + "emailVerify": "\u8acb\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\uff0c\u65b0\u7684\u9a57\u8b49\u90f5\u4ef6\u5df2\u767c\u9001", + "credentialsSignin": "\u767b\u5165\u5931\u6557\u3002\u8acb\u6aa2\u67e5\u60a8\u63d0\u4f9b\u7684\u8cc7\u8a0a\u662f\u5426\u6b63\u78ba", + "sessionRequired": "\u8acb\u767b\u5165\u4ee5\u5b58\u53d6\u6b64\u9801\u9762" + } + }, + "provider": { + "continue": "\u7e7c\u7e8c\u4f7f\u7528{{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "\u5728\u6b64\u8f38\u5165\u60a8\u7684\u8a0a\u606f...", + "actions": { + "send": "\u767c\u9001\u8a0a\u606f", + "stop": "\u505c\u6b62\u4efb\u52d9", + "attachFiles": "\u9644\u52a0\u6a94\u6848" + } + }, + "speech": { + "start": "\u958b\u59cb\u9304\u97f3", + "stop": "\u505c\u6b62\u9304\u97f3", + "connecting": "\u9023\u7dda\u4e2d" + }, + "fileUpload": { + "dragDrop": "\u62d6\u66f3\u6a94\u6848\u5230\u9019\u88e1", + "browse": "\u700f\u89bd\u6a94\u6848", + "sizeLimit": "\u9650\u5236\uff1a", + "errors": { + "failed": "\u4e0a\u50b3\u5931\u6557", + "cancelled": "\u5df2\u53d6\u6d88\u4e0a\u50b3" + }, + "actions": { + "cancelUpload": "\u53d6\u6d88\u4e0a\u50b3", + "removeAttachment": "\u79fb\u9664\u9644\u4ef6" + } + }, + "commands": { + "button": "\u5de5\u5177", + "changeTool": "\u66f4\u63db\u5de5\u5177", + "availableTools": "\u53ef\u7528\u5de5\u5177" + }, + "messages": { + "status": { + "using": "\u6b63\u5728\u4f7f\u7528", + "used": "\u5df2\u4f7f\u7528" + }, + "actions": { + "copy": { + "button": "\u8907\u88fd\u5230\u526a\u8cbc\u7c3f", + "success": "\u5df2\u8907\u88fd\uff01" + } + }, + "feedback": { + "positive": "\u6709\u5e6b\u52a9", + "negative": "\u6c92\u6709\u5e6b\u52a9", + "edit": "\u7de8\u8f2f\u56de\u994b", + "dialog": { + "title": "\u65b0\u589e\u8a55\u8ad6", + "submit": "\u9001\u51fa\u56de\u994b", + "yourFeedback": "\u60a8\u7684\u56de\u994b..." + }, + "status": { + "updating": "\u66f4\u65b0\u4e2d", + "updated": "\u56de\u994b\u5df2\u66f4\u65b0" + } + } + }, + "history": { + "title": "\u6700\u8fd1\u8f38\u5165", + "empty": "\u7a7a\u7a7a\u5982\u4e5f...", + "show": "\u986f\u793a\u6b77\u53f2" + }, + "settings": { + "title": "\u8a2d\u5b9a\u9762\u677f", + "customize": "\u5728\u6b64\u81ea\u5b9a\u7fa9\u60a8\u7684\u804a\u5929\u8a2d\u5b9a" + }, + "watermark": "\u5927\u578b\u8a9e\u8a00\u6a21\u578b\u53ef\u80fd\u6703\u72af\u932f\u3002\u8acb\u6838\u5be6\u91cd\u8981\u8cc7\u8a0a\u3002" + }, + "threadHistory": { + "sidebar": { + "title": "\u6b77\u53f2\u5c0d\u8a71", + "filters": { + "search": "\u641c\u5c0b", + "placeholder": "\u641c\u5c0b\u5c0d\u8a71..." + }, + "timeframes": { + "today": "\u4eca\u5929", + "yesterday": "\u6628\u5929", + "previous7days": "\u904e\u53bb7\u5929", + "previous30days": "\u904e\u53bb30\u5929" + }, + "empty": "\u672a\u627e\u5230\u5c0d\u8a71", + "actions": { + "close": "\u95dc\u9589\u5074\u908a\u6b04", + "open": "\u6253\u958b\u5074\u908a\u6b04" + } + }, + "thread": { + "untitled": "\u672a\u547d\u540d\u5c0d\u8a71", + "menu": { + "rename": "\u91cd\u65b0\u547d\u540d", + "share": "\u5206\u4eab", + "delete": "\u522a\u9664" + }, + "actions": { + "share": { + "title": "\u5206\u4eab\u804a\u5929\u9023\u7d50", + "button": "\u5206\u4eab", + "status": { + "copied": "\u9023\u7d50\u5df2\u8907\u88fd", + "created": "\u5206\u4eab\u9023\u7d50\u5df2\u5efa\u7acb\uff01", + "unshared": "\u5df2\u505c\u7528\u6b64\u5c0d\u8a71\u7684\u5206\u4eab" + }, + "error": { + "create": "\u5efa\u7acb\u5206\u4eab\u9023\u7d50\u5931\u6557", + "unshare": "\u53d6\u6d88\u5c0d\u8a71\u5206\u4eab\u5931\u6557" + } + }, + "delete": { + "title": "\u78ba\u8a8d\u522a\u9664", + "description": "\u9019\u5c07\u522a\u9664\u8a72\u5c0d\u8a71\u53ca\u5176\u6240\u6709\u8a0a\u606f\u548c\u5143\u4ef6\u3002\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002", + "success": "\u5c0d\u8a71\u5df2\u522a\u9664", + "inProgress": "\u6b63\u5728\u522a\u9664\u5c0d\u8a71" + }, + "rename": { + "title": "\u91cd\u65b0\u547d\u540d\u5c0d\u8a71", + "description": "\u70ba\u6b64\u5c0d\u8a71\u8f38\u5165\u65b0\u540d\u7a31", + "form": { + "name": { + "label": "\u540d\u7a31", + "placeholder": "\u8f38\u5165\u65b0\u540d\u7a31" + } + }, + "success": "\u5c0d\u8a71\u5df2\u91cd\u65b0\u547d\u540d\uff01", + "inProgress": "\u6b63\u5728\u91cd\u65b0\u547d\u540d\u5c0d\u8a71" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u804a\u5929", + "readme": "\u8aaa\u660e", + "theme": { + "light": "\u6dfa\u8272\u4e3b\u984c", + "dark": "\u6df1\u8272\u4e3b\u984c", + "system": "\u8ddf\u96a8\u7cfb\u7d71" + } + }, + "newChat": { + "button": "\u65b0\u5efa\u5c0d\u8a71", + "dialog": { + "title": "\u5275\u5efa\u65b0\u5c0d\u8a71", + "description": "\u9019\u5c07\u6e05\u9664\u60a8\u7576\u524d\u7684\u804a\u5929\u8a18\u9304\u3002\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f", + "tooltip": "\u65b0\u5efa\u5c0d\u8a71" + } + }, + "user": { + "menu": { + "settings": "\u8a2d\u5b9a", + "settingsKey": "S", + "apiKeys": "API\u91d1\u9470", + "logout": "\u767b\u51fa" + } + } + }, + "apiKeys": { + "title": "\u6240\u9700API\u91d1\u9470", + "description": "\u4f7f\u7528\u6b64\u61c9\u7528\u7a0b\u5f0f\u9700\u8981\u4ee5\u4e0bAPI\u91d1\u9470\u3002\u9019\u4e9b\u91d1\u9470\u5132\u5b58\u5728\u60a8\u8a2d\u5099\u7684\u672c\u5730\u5132\u5b58\u7a7a\u9593\u4e2d\u3002", + "success": { + "saved": "\u5132\u5b58\u6210\u529f" + } + }, + "alerts": { + "info": "\u8cc7\u8a0a", + "note": "\u6ce8\u91cb", + "tip": "\u63d0\u793a", + "important": "\u91cd\u8981", + "warning": "\u8b66\u544a", + "caution": "\u6ce8\u610f", + "debug": "\u9664\u932f", + "example": "\u7bc4\u4f8b", + "success": "\u6210\u529f", + "help": "\u5e6b\u52a9", + "idea": "\u60f3\u6cd5", + "pending": "\u5f85\u8655\u7406", + "security": "\u5b89\u5168", + "beta": "\u6e2c\u8a66", + "best-practice": "\u6700\u4f73\u5be6\u8e10" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u9078\u64c7..." + } + } +} \ No newline at end of file diff --git a/.cursor/worktrees.json b/.cursor/worktrees.json new file mode 100644 index 0000000..77e9744 --- /dev/null +++ b/.cursor/worktrees.json @@ -0,0 +1,5 @@ +{ + "setup-worktree": [ + "npm install" + ] +} diff --git a/.gitignore b/.gitignore index ce423b6..ed6335f 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,10 @@ build/ # =========================================== # Chainlit # =========================================== -.chainlit/ +# Keep .chainlit/config.toml and .chainlit/assets/ in repo for theme customization +# But ignore runtime files +.chainlit/*.db +.chainlit/*.log .files/ # =========================================== diff --git a/Dockerfile b/Dockerfile index 5d89f5e..99e73b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,9 @@ RUN pip install --no-cache-dir -r requirements.txt # Copy the rest of the application code COPY . . +# Ensure .chainlit directory exists (if config.toml exists, it will be copied above) +RUN mkdir -p .chainlit || true + # Expose the port Chainlit runs on EXPOSE 8000 diff --git a/README.md b/README.md index 31aec62..4bb58de 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ Uma aplicação modular **CrewAI** com memória compartilhada, 26 agentes de IA ## 🚀 Funcionalidades - **26 Agentes de IA Especializados** - De infraestrutura (Arthur Mendes, Gus Fring) a vendas (Ari Gold, Don Draper) até gestão de crises (Olivia Pope, Saul Goodman) -- **Memória Compartilhada** - Agentes compartilham conhecimento via Mem0 + banco de dados vetorial Qdrant +- **Memória Híbrida Inteligente** - Combinação de banco vetorial (Qdrant) + grafo de relacionamentos (Neo4j) para busca semântica e contextualizada +- **Agentes Escolhem Estratégia de Busca** - Podem usar busca rápida (vetorial) ou busca contextualizada (vetor + relacionamentos) - **Roteamento Inteligente** - Classificação automática de solicitações para a equipe apropriada - **Suporte Multi-Provedor LLM** - Funciona com Gemini, OpenAI, Anthropic, ou Ollama local - **Interface Web** - Interface de chat moderna powered by Chainlit @@ -32,7 +33,9 @@ minions-da-itguys/ │ ├── knowledge/ │ │ └── standards/ # Base de conhecimento corporativo │ ├── memory/ -│ │ └── wrapper.py # Integração Mem0 com rate limiting +│ │ ├── wrapper.py # Integração Mem0 + busca híbrida +│ │ ├── graph_wrapper.py # Gerenciamento de relacionamentos Neo4j +│ │ └── entity_search_tool.py # Busca por entidades específicas │ └── tools/ # Ferramentas customizadas (Zabbix, Evolution, etc.) ├── docker-compose.yml # Orquestração de containers ├── Dockerfile # Container da aplicação @@ -89,6 +92,11 @@ GEMINI_API_KEY=sua-chave-api # Memória: qdrant (local) ou mem0 (nuvem) MEMORY_PROVIDER=qdrant MEMORY_EMBEDDING_PROVIDER=local + +# Neo4j Graph Database (para relacionamentos) +NEO4J_URI=bolt://localhost:7687 +NEO4J_USER=neo4j +NEO4J_PASSWORD=antigravity2024 ``` ## 🤖 Crews Disponíveis @@ -123,6 +131,7 @@ Usuário: "Analise a segurança da nossa página de login" - `chainlit` - Interface Web - `mem0ai` - Memória compartilhada - `qdrant-client` - Banco de dados vetorial +- `neo4j` - Banco de dados de grafos para relacionamentos - `litellm` - Suporte multi-provedor LLM - `sentence-transformers` - Embeddings locais diff --git a/chainlit.md b/chainlit.md index 4507ac4..3d81eb7 100644 --- a/chainlit.md +++ b/chainlit.md @@ -1,14 +1,34 @@ -# Welcome to Chainlit! 🚀🤖 +# Antigravity Brain - Minions da ITGuys -Hi there, Developer! 👋 We're excited to have you on board. Chainlit is a powerful tool designed to help you prototype, debug and share applications built on top of LLMs. +Bem-vindo ao centro de comando da **Inteligência Artificial Corporativa da ITGuys**. -## Useful Links 🔗 +Aqui você tem acesso a **26 Agentes Especializados** prontos para colaborar, resolver problemas complexos e executar tarefas em nossa infraestrutura e negócios. -- **Documentation:** Get started with our comprehensive [Chainlit Documentation](https://docs.chainlit.io) 📚 -- **Discord Community:** Join our friendly [Chainlit Discord](https://discord.gg/k73SQ3FyUh) to ask questions, share your projects, and connect with other developers! 💬 +--- -We can't wait to see what you create with Chainlit! Happy coding! 💻😊 +## O que podemos fazer por você hoje? -## Welcome screen +### Engenharia & Infraestrutura +* **Arthur M. & Gus Fring:** Automação Zabbix, validação de templates e estabilidade de sistemas. +* **Tony Stark:** DevOps e automação de código. -To modify the welcome screen, edit the `chainlit.md` file at the root of your project. If you do not want a welcome screen, just leave this file empty. +### Segurança Ofensiva & Defensiva +* **Elliot & Devil:** Testes de intrusão, segurança e auditoria de vulnerabilidades. + +### Negócios & Estratégia +* **Harvey & Kevin:** Compliance jurídico, análise de ROI e estratégia corporativa. + +### Vendas & Crescimento +* **Ari Gold & Don Draper:** Fechamento de negócios, pitches e prospecção agressiva. + +--- + +## Como usar? + +Basta digitar sua solicitação naturalmente. O sistema de **Roteamento Inteligente** irá invocar a Crew ou Agente ideal para o seu problema. + +> **Exemplo:** "Preciso validar um template do Zabbix" ou "Crie uma estratégia de vendas para o novo produto". + +--- + +*Sistema Privado ITGuys - Acesso Restrito* diff --git a/docker-compose.yml b/docker-compose.yml index d1d8892..c48dd8f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: app: build: . @@ -13,7 +11,10 @@ services: env_file: - .env depends_on: - - qdrant # Only strictly needed if using local Qdrant + qdrant: + condition: service_started + neo4j: + condition: service_healthy networks: - antigravity_net @@ -28,6 +29,30 @@ services: networks: - antigravity_net + # Graph Database for Relationship Mapping + neo4j: + image: neo4j:5.15 + container_name: antigravity_neo4j + ports: + - "7474:7474" # Browser + - "7687:7687" # Bolt + environment: + - NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:-antigravity2024} + - NEO4J_PLUGINS=["apoc"] + - NEO4J_dbms_security_procedures_unrestricted=apoc.* + - NEO4J_dbms_security_procedures_allowlist=apoc.* + volumes: + - neo4j_data:/data + - neo4j_logs:/logs + networks: + - antigravity_net + healthcheck: + test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7474 || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + # Telegram Listener Service (Runs the bot in background) telegram_listener: build: . @@ -44,6 +69,8 @@ services: volumes: qdrant_data: + neo4j_data: + neo4j_logs: networks: antigravity_net: diff --git a/docs/ANALISE_VETOR_GRAFO.md b/docs/ANALISE_VETOR_GRAFO.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/HYBRID_MEMORY_USAGE.md b/docs/HYBRID_MEMORY_USAGE.md new file mode 100644 index 0000000..db6bbf9 --- /dev/null +++ b/docs/HYBRID_MEMORY_USAGE.md @@ -0,0 +1,294 @@ +# 🔗 Sistema de Memória Híbrida - Guia de Uso + +## Visão Geral + +O sistema de memória do Antigravity Brain combina **bancos de dados vetoriais (Qdrant)** com **grafos de relacionamento (Neo4j)** para oferecer aos agentes de IA duas formas complementares de buscar e armazenar informações: + +1. **Busca Vetorial (Qdrant)**: Busca semântica rápida por similaridade +2. **Grafos de Relacionamento (Neo4j)**: Navegação estrutural entre entidades relacionadas + +Os agentes podem escolher qual abordagem usar dependendo da necessidade da tarefa. + +--- + +## 🛠️ Ferramentas Disponíveis + +### 1. SearchMemoryTool (Busca Híbrida) + +Busca memórias no sistema. Permite escolher entre busca rápida ou busca contextualizada. + +**Parâmetros:** +- `query` (obrigatório): Pergunta ou tópico a buscar +- `use_relationships` (opcional, padrão: `True`): Se usar relacionamentos do grafo + +**Exemplos de Uso:** + +```python +# Busca rápida apenas (apenas vetorial) +SearchMemoryTool()._run( + query="problemas de Zabbix", + use_relationships=False +) + +# Busca contextualizada (vetorial + relacionamentos) +SearchMemoryTool()._run( + query="problemas de Zabbix", + use_relationships=True # Expande com memórias relacionadas +) +``` + +**Quando usar cada modo:** + +- `use_relationships=False`: + - Resposta rápida necessária + - Informação direta e simples + - Não precisa de contexto adicional + +- `use_relationships=True`: + - Precisa entender relacionamentos + - Contexto histórico importante + - Quer ver cadeias de problemas/soluções + - Classificação complexa + +### 2. SaveMemoryTool (Salvar com Relacionamentos) + +Salva informações críticas e opcionalmente extrai relacionamentos automaticamente. + +**Parâmetros:** +- `fact` (obrigatório): Informação crítica a salvar +- `extract_relationships` (opcional, padrão: `True`): Se extrair relacionamentos + +**Exemplos de Uso:** + +```python +# Salvar sem extração de relacionamentos (mais rápido) +SaveMemoryTool()._run( + fact="Template Zabbix atualizado para versão 7.0", + extract_relationships=False +) + +# Salvar com extração automática de relacionamentos +SaveMemoryTool()._run( + fact="Problema: Zabbix não monitora CPU. Solução: Atualizar template criado por Arthur Mendes", + extract_relationships=True # Extrai: Problema → Solução → Agente +) +``` + +**O que acontece quando `extract_relationships=True`:** + +1. Salva no Qdrant (vetorial) - sempre executado +2. Cria nó no Neo4j com metadados +3. Usa LLM para extrair: + - Tipo de entidade (Problem, Solution, Agent, etc.) + - Relacionamentos (SOLVES, CREATED_BY, RELATED_TO, etc.) + - Entidades mencionadas +4. Cria conexões no grafo automaticamente + +### 3. SearchByEntityTool (Busca por Entidade) + +Busca todas as memórias relacionadas a uma entidade específica (agente, tecnologia, projeto). + +**Parâmetros:** +- `entity_name` (obrigatório): Nome da entidade +- `entity_type` (opcional): Tipo (Agent, Technology, Project, Problem, Solution) +- `limit` (opcional, padrão: 10): Limite de resultados + +**Exemplos de Uso:** + +```python +# Buscar tudo sobre um agente +SearchByEntityTool()._run( + entity_name="Arthur Mendes", + entity_type="Agent" +) + +# Buscar tudo sobre uma tecnologia +SearchByEntityTool()._run( + entity_name="Zabbix", + entity_type="Technology" +) + +# Buscar sem especificar tipo +SearchByEntityTool()._run( + entity_name="Infrastructure Project" +) +``` + +--- + +## 🎯 Decisão de Uso para Agentes + +### Quando usar busca simples (use_relationships=False): + +✅ **Use quando:** +- Precisa de informação direta e rápida +- Pergunta é simples: "Qual é a versão do Zabbix?" +- Não precisa de contexto histórico +- Classificação binária (sim/não) +- Performance é crítica + +❌ **Não use quando:** +- Precisa entender cadeia de eventos +- Contexto de relacionamentos é importante +- Quer ver padrões históricos + +### Quando usar busca com relacionamentos (use_relationships=True): + +✅ **Use quando:** +- Precisa entender "por quê" e "como" +- Quer ver problemas relacionados e suas soluções +- Classificação complexa necessária +- Precisa rastrear decisões passadas +- Contexto histórico é importante + +❌ **Não use quando:** +- Resposta precisa ser instantânea +- Informação é trivial +- Sistema de grafo não está disponível + +### Quando usar busca por entidade (SearchByEntityTool): + +✅ **Use quando:** +- Quer tudo relacionado a uma pessoa/projeto/tecnologia +- Precisa fazer auditoria ou relatório +- Quer mapear responsabilidades +- Precisa entender impacto de uma decisão + +--- + +## 📊 Exemplos Práticos + +### Exemplo 1: Validação de Template Zabbix + +**Cenário:** Agente precisa validar template Zabbix + +```python +# 1. Busca rápida: há algum problema conhecido com este template? +SearchMemoryTool()._run( + query="template Zabbix problemas validação", + use_relationships=False +) + +# 2. Se encontrar problema, buscar contexto completo +SearchMemoryTool()._run( + query="template Zabbix UUID", + use_relationships=True # Ver cadeia: problema → solução → agente +) +``` + +### Exemplo 2: Criar Novo Agente + +**Cenário:** Criar agente para DevOps + +```python +# 1. Verificar se já existe agente similar +SearchMemoryTool()._run( + query="agente DevOps", + use_relationships=True # Ver relacionamentos com outros agentes +) + +# 2. Salvar novo agente com relacionamentos +SaveMemoryTool()._run( + fact="Novo agente Bob criado para DevOps, especializado em Docker e Kubernetes", + extract_relationships=True # Conectar com tecnologias mencionadas +) +``` + +### Exemplo 3: Rastrear Problema + +**Cenário:** Usuário reporta problema recorrente + +```python +# Buscar tudo sobre o problema usando entidade +SearchByEntityTool()._run( + entity_name="Zabbix CPU monitoring", + entity_type="Problem" +) + +# Buscar soluções relacionadas +SearchMemoryTool()._run( + query="solução monitoramento CPU Zabbix", + use_relationships=True # Ver problemas → soluções → implementações +) +``` + +--- + +## 🔧 Configuração + +### Variáveis de Ambiente + +Adicione ao `.env`: + +```env +# Neo4j Configuration (Graph Database) +NEO4J_URI=bolt://localhost:7687 +NEO4J_USER=neo4j +NEO4J_PASSWORD=antigravity2024 +NEO4J_DATABASE=neo4j +``` + +### Docker Compose + +O Neo4j já está configurado no `docker-compose.yml`: + +```bash +docker-compose up -d neo4j +``` + +### Verificar Conexão + +Acesse o Neo4j Browser em: http://localhost:7474 + +--- + +## 🚀 Performance + +**Benchmarks aproximados:** + +- Busca vetorial apenas: ~50-200ms +- Busca com relacionamentos: ~200-500ms +- Extração de relacionamentos: ~1-3s (depende do LLM) + +**Otimizações:** + +- Use `use_relationships=False` para queries frequentes +- Use `extract_relationships=False` ao salvar muitas memórias rapidamente +- Batch de relacionamentos pode ser extraído posteriormente + +--- + +## 🐛 Troubleshooting + +### Neo4j não conecta + +```bash +# Verificar se container está rodando +docker ps | grep neo4j + +# Ver logs +docker logs antigravity_neo4j + +# Reiniciar +docker-compose restart neo4j +``` + +### Relacionamentos não são extraídos + +- Verificar se LLM está configurado corretamente +- Verificar logs: `logger.error` em `graph_wrapper.py` +- Testar conexão Neo4j manualmente + +### Busca muito lenta + +- Reduzir `limit` nos parâmetros +- Usar `use_relationships=False` quando não necessário +- Verificar índices no Neo4j: `SHOW INDEXES` + +--- + +## 📚 Referências + +- [Documentação Neo4j](https://neo4j.com/docs/) +- [Análise Técnica Completa](./ANALISE_VETOR_GRAFO.md) +- [API Reference](./API_REFERENCE.md) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4a62e02 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "oxy", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/requirements.txt b/requirements.txt index 6c06a88..11d4d11 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,3 +14,5 @@ fastapi-sso google-generativeai # For local embeddings if needed sentence-transformers +# Graph database for relationship mapping +neo4j \ No newline at end of file diff --git a/src/agents/personas/persona-react-expert.md b/src/agents/personas/persona-react-expert.md new file mode 100644 index 0000000..ea20391 --- /dev/null +++ b/src/agents/personas/persona-react-expert.md @@ -0,0 +1,15 @@ + +--- +description: Persona - React Expert (Frontend Engineer) +llm_config: + provider: default +--- + +# 👤 Persona: React Expert + +**Role:** Frontend Engineer +**Goal:** Provide expert guidance on React component creation and best practices. + +## 🧠 Backstory + +A seasoned frontend engineer with extensive experience in React development, specializing in component architecture and performance optimization. diff --git a/src/app.py b/src/app.py index 6f9bbc7..d59f480 100644 --- a/src/app.py +++ b/src/app.py @@ -8,8 +8,8 @@ from src.router import SmartRouter @cl.on_chat_start async def on_chat_start(): - # No more menus! Just a welcome. - await cl.Message(content="🧠 **Antigravity Brain Online.**\n\nI am ready. Just tell me what you need (e.g., *'Check the server health'* or *'Create a new agent named Bob'*).").send() + # Welcome message without emojis, more natural + await cl.Message(content="**Antigravity Brain Online**\n\nEstou pronto para ajudar. Pode me dizer o que precisa? Por exemplo: *'Verificar a saúde do servidor'* ou *'Criar um novo agente'*.").send() cl.user_session.set("selected_crew", None) @cl.on_message @@ -19,7 +19,7 @@ async def on_message(message: cl.Message): # 1. Check for commands if user_input.strip() == "/reset": cl.user_session.set("selected_crew", None) - await cl.Message(content="🔄 Session reset. I will re-evaluate the best crew for your next request.").send() + await cl.Message(content="Sessão reiniciada. Vou reavaliar a melhor equipe para sua próxima solicitação.").send() return # 2. Determine Crew @@ -33,17 +33,19 @@ async def on_message(message: cl.Message): # No, that's risky. Let's stick to: Route First -> Sticky -> User can /reset. if not current_crew: - msg_routing = cl.Message(content="🤔 Analyzing request...") + # Show loading indicator while routing + msg_routing = cl.Message(content="Analisando sua solicitação...") await msg_routing.send() current_crew = SmartRouter.route(user_input) cl.user_session.set("selected_crew", current_crew) await msg_routing.update() - await cl.Message(content=f"👉 **Routing to:** {current_crew}").send() + await cl.Message(content=f"**Direcionando para:** {current_crew}").send() - # 3. Execution - msg = cl.Message(content=f"🚀 **{current_crew}** is working on it...") + # 3. Execution with proper loading indicator + # Create a message that will show loading state and be updated with the result + msg = cl.Message(content=f"**{current_crew}** está processando sua solicitação...") await msg.send() try: @@ -55,12 +57,12 @@ async def on_message(message: cl.Message): result = crew.kickoff(inputs={"topic": user_input}) final_answer = str(result) - # Update message - msg.content = f"### ✅ Report from {current_crew}\n\n{final_answer}" + # Update message with final result + msg.content = f"### Relatório de {current_crew}\n\n{final_answer}" await msg.update() except Exception as e: - msg.content = f"❌ **Mission Failed:** {str(e)}" + msg.content = f"**Erro ao processar solicitação:** {str(e)}" await msg.update() # Reset crew on failure so user can try again or get re-routed - cl.user_session.set("selected_crew", None) \ No newline at end of file + cl.user_session.set("selected_crew", None) diff --git a/src/config.py b/src/config.py index 24be305..3baf43d 100644 --- a/src/config.py +++ b/src/config.py @@ -161,4 +161,17 @@ class Config: chats = os.getenv("TELEGRAM_ALLOWED_CHAT_IDS", "").split(",") return [int(c.strip()) for c in chats if c.strip()] except ValueError: - return [] \ No newline at end of file + return [] + + @staticmethod + def get_neo4j_config(): + """ + Returns Neo4j connection configuration. + Used for relationship graph management (complements Qdrant vector store). + """ + return { + "uri": os.getenv("NEO4J_URI", "bolt://localhost:7687"), + "user": os.getenv("NEO4J_USER", "neo4j"), + "password": os.getenv("NEO4J_PASSWORD", "antigravity2024"), + "database": os.getenv("NEO4J_DATABASE", "neo4j") + } \ No newline at end of file diff --git a/src/integrations/telegram_bot.py b/src/integrations/telegram_bot.py index cb05a5e..f4ed63b 100644 --- a/src/integrations/telegram_bot.py +++ b/src/integrations/telegram_bot.py @@ -8,6 +8,9 @@ from litellm import completion from src.config import Config from src.memory.wrapper import MemoryWrapper +# GraphWrapper é opcional, então não importamos aqui +# O wrapper.py já trata isso internamente + # Setup Logging logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', diff --git a/src/memory/entity_search_tool.py b/src/memory/entity_search_tool.py new file mode 100644 index 0000000..a66bea1 --- /dev/null +++ b/src/memory/entity_search_tool.py @@ -0,0 +1,68 @@ +""" +Tool for searching memories by entity relationships. +Allows agents to find all memories related to a specific entity (Agent, Technology, Project, etc.) +""" +from crewai.tools import BaseTool +from pydantic import BaseModel, Field +from typing import Optional +from src.memory.graph_wrapper import GraphWrapper +import logging + +logger = logging.getLogger("AntigravityEntitySearch") + +class EntitySearchInput(BaseModel): + entity_name: str = Field(..., description="Name of the entity to search for (e.g., 'Arthur Mendes', 'Zabbix', 'Infrastructure Project')") + entity_type: Optional[str] = Field( + default=None, + description="Type of entity: Agent, Technology, Project, Problem, Solution. If not specified, searches all types." + ) + limit: Optional[int] = Field( + default=10, + description="Maximum number of memories to return" + ) + +class SearchByEntityTool(BaseTool): + name: str = "Search Memories by Entity" + description: str = ( + "Search for all memories related to a specific entity (person, technology, project, etc.) " + "using the relationship graph. This is useful when you need to find everything related to " + "a specific agent, technology, or project, not just semantically similar content. " + "Example: 'Find all memories about Zabbix' or 'Show me everything related to Arthur Mendes'." + ) + args_schema: type = EntitySearchInput + + def _run(self, entity_name: str, entity_type: Optional[str] = None, limit: int = 10) -> str: + """ + Busca memórias relacionadas a uma entidade específica usando o grafo de relacionamentos. + + Args: + entity_name: Nome da entidade + entity_type: Tipo da entidade (Agent, Technology, Project, etc.) + limit: Limite de resultados + """ + try: + memories = GraphWrapper.find_memories_by_entity( + entity_name=entity_name, + entity_type=entity_type, + limit=limit + ) + + if not memories: + return f"No memories found related to entity '{entity_name}'" + (f" of type '{entity_type}'" if entity_type else "") + "." + + formatted = [f"Found {len(memories)} memories related to '{entity_name}':\n"] + + for i, mem in enumerate(memories, 1): + preview = mem.get('preview', 'N/A') + mem_type = mem.get('type', 'unknown') + entity_type_display = mem.get('entity_type', 'N/A') + related_count = mem.get('related_count', 0) + + formatted.append(f"{i}. [{mem_type}] {preview}") + formatted.append(f" Entity Type: {entity_type_display} | Related memories: {related_count}") + + return "\n".join(formatted) + + except Exception as e: + logger.error(f"Entity search failed for '{entity_name}': {e}") + return f"Entity search temporarily unavailable: {str(e)[:100]}" diff --git a/src/memory/graph_wrapper.py b/src/memory/graph_wrapper.py new file mode 100644 index 0000000..781b98b --- /dev/null +++ b/src/memory/graph_wrapper.py @@ -0,0 +1,415 @@ +""" +Graph Wrapper for Neo4j - Manages relationships between memories +Complements the vector database (Qdrant) by adding structural relationship information. +""" +import os +import logging +from typing import List, Dict, Optional, Any +from neo4j import GraphDatabase +from litellm import completion +from src.config import Config + +logger = logging.getLogger("AntigravityGraph") + +class GraphWrapper: + """ + Gerencia relacionamentos entre memórias no Neo4j. + Trabalha em conjunto com Qdrant: Qdrant armazena embeddings e conteúdo completo, + Neo4j armazena apenas relacionamentos e metadados estruturais. + """ + _driver = None + _initialization_failed = False + + @classmethod + def get_driver(cls): + """Singleton para conexão Neo4j""" + if cls._initialization_failed: + return None + + if cls._driver is None: + try: + neo4j_config = Config.get_neo4j_config() + + cls._driver = GraphDatabase.driver( + neo4j_config["uri"], + auth=(neo4j_config["user"], neo4j_config["password"]) + ) + # Test connection + cls._driver.verify_connectivity() + logger.info(f"Neo4j connected successfully to {neo4j_config['uri']}") + + # Initialize schema + cls._initialize_schema() + except Exception as e: + logger.error(f"Failed to initialize Neo4j: {e}") + cls._initialization_failed = True + return None + return cls._driver + + @classmethod + def _initialize_schema(cls): + """Cria índices e constraints iniciais""" + driver = cls.get_driver() + if not driver: + return + + try: + with driver.session() as session: + # Create indexes for performance + session.run(""" + CREATE INDEX memory_id_index IF NOT EXISTS + FOR (m:Memory) ON (m.id) + """) + + session.run(""" + CREATE INDEX memory_type_index IF NOT EXISTS + FOR (m:Memory) ON (m.type) + """) + + session.run(""" + CREATE INDEX entity_type_index IF NOT EXISTS + FOR (e:Entity) ON (e.type) + """) + + logger.info("Neo4j schema initialized") + except Exception as e: + logger.warning(f"Schema initialization warning (may already exist): {e}") + + @classmethod + def create_memory_node(cls, memory_id: str, content: str, metadata: Dict[str, Any]) -> bool: + """ + Cria um nó de memória no grafo. + O conteúdo completo permanece no Qdrant, aqui apenas metadados estruturais. + """ + driver = cls.get_driver() + if not driver: + return False + + try: + with driver.session() as session: + result = session.run(""" + MERGE (m:Memory {id: $memory_id}) + SET m.content_preview = $content_preview, + m.type = $type, + m.source = $source, + m.entity_type = $entity_type, + m.created_at = datetime() + RETURN m + """, + memory_id=memory_id, + content_preview=content[:200], # Apenas preview + type=metadata.get("type", "insight"), + source=metadata.get("source", "unknown"), + entity_type=metadata.get("entity_type") + ) + + result.single() + logger.debug(f"Created memory node: {memory_id}") + return True + except Exception as e: + logger.error(f"Failed to create memory node {memory_id}: {e}") + return False + + @classmethod + def extract_and_link_relationships(cls, memory_id: str, content: str, existing_memory_ids: Optional[List[str]] = None) -> Dict[str, Any]: + """ + Usa LLM para extrair relacionamentos do conteúdo e criar conexões no grafo. + Retorna estatísticas sobre relacionamentos criados. + """ + driver = cls.get_driver() + if not driver: + return {"relationships_created": 0, "entities_extracted": 0} + + try: + # Buscar memórias existentes para contexto + existing_context = "" + if existing_memory_ids: + existing_memories = cls._get_memory_previews(existing_memory_ids[:10]) + existing_context = f"\n\nMemórias existentes relevantes:\n{existing_memories}" + + # Prompt para extração de relacionamentos + extraction_prompt = f"""Analise este fato/conhecimento e extraia: + +1. Tipo de entidade (Problem, Solution, Rule, Agent, Project, Technology, etc.) +2. Relacionamentos com outras memórias ou entidades mencionadas +3. Entidades nomeadas (agentes, projetos, tecnologias, problemas, soluções) + +Fato a analisar: +{content} +{existing_context} + +Retorne APENAS JSON válido no formato: +{{ + "entity_type": "tipo_principal (ex: Solution, Problem, Rule)", + "entities": [ + {{"name": "nome_entidade", "type": "Agent|Technology|Project|Problem|Solution"}}, + ... + ], + "relationships": [ + {{ + "type": "tipo_relacionamento (ex: SOLVES, RELATED_TO, CREATED_BY, MENTIONS, DEPENDS_ON)", + "target": "nome_entidade_ou_memory_id", + "confidence": 0.8 + }}, + ... + ] +}} + +Tipos de relacionamento comuns: +- SOLVES: uma solução resolve um problema +- CREATED_BY: criado por um agente +- RELATED_TO: relacionado a outra memória/entidade +- MENTIONS: menciona uma tecnologia/projeto +- DEPENDS_ON: depende de outra memória/entidade +- FOLLOWS: segue uma regra/procedimento +- LEADS_TO: leva a outro problema/solução +""" + + # Chamar LLM para extração + config = Config.get_llm_config(mode="fast") + response = completion( + model=config['model'], + messages=[{"role": "user", "content": extraction_prompt}], + temperature=0.2, + api_key=config.get('api_key'), + base_url=config.get('base_url') + ) + + import json + import re + + content = response.choices[0].message.content.strip() + + # Extrair JSON (pode vir com markdown code blocks) + json_match = re.search(r'\{[^}]+\}', content, re.DOTALL) + if json_match: + content = json_match.group(0) + elif "```json" in content: + content = content.split("```json")[1].split("```")[0].strip() + elif "```" in content: + content = content.split("```")[1].split("```")[0].strip() + + extracted = json.loads(content) + + # Criar entidades e relacionamentos + entities_created = 0 + relationships_created = 0 + + with driver.session() as session: + # Criar entidades mencionadas + for entity in extracted.get("entities", []): + session.run(""" + MERGE (e:Entity {name: $name, type: $type}) + SET e.last_mentioned = datetime() + RETURN e + """, name=entity["name"], type=entity["type"]) + entities_created += 1 + + # Linkar entidade à memória + session.run(""" + MATCH (m:Memory {id: $memory_id}) + MATCH (e:Entity {name: $name, type: $type}) + MERGE (m)-[:MENTIONS]->(e) + """, memory_id=memory_id, name=entity["name"], type=entity["type"]) + + # Criar relacionamentos + for rel in extracted.get("relationships", []): + rel_type = rel["type"].upper().replace(" ", "_") + target = rel["target"] + confidence = rel.get("confidence", 0.5) + + # Tentar encontrar memória existente por ID + result = session.run(""" + MATCH (target:Memory {id: $target}) + RETURN target + LIMIT 1 + """, target=target) + + if result.single(): + # Relacionamento com outra memória + session.run(f""" + MATCH (from:Memory {{id: $from_id}}) + MATCH (to:Memory {{id: $to_id}}) + MERGE (from)-[r:{rel_type} {{confidence: $conf}}]->(to) + """, from_id=memory_id, to_id=target, conf=confidence) + relationships_created += 1 + else: + # Tentar encontrar entidade + result = session.run(""" + MATCH (e:Entity {name: $name}) + RETURN e + LIMIT 1 + """, name=target) + + if result.single(): + session.run(f""" + MATCH (m:Memory {{id: $memory_id}}) + MATCH (e:Entity {{name: $name}}) + MERGE (m)-[r:{rel_type} {{confidence: $conf}}]->(e) + """, memory_id=memory_id, name=target, conf=confidence) + relationships_created += 1 + + # Atualizar tipo de entidade da memória + if extracted.get("entity_type"): + session.run(""" + MATCH (m:Memory {id: $memory_id}) + SET m.entity_type = $entity_type + """, memory_id=memory_id, entity_type=extracted["entity_type"]) + + logger.info(f"Extracted {entities_created} entities and {relationships_created} relationships for {memory_id}") + return { + "relationships_created": relationships_created, + "entities_extracted": entities_created, + "entity_type": extracted.get("entity_type") + } + + except Exception as e: + logger.error(f"Failed to extract relationships for {memory_id}: {e}") + return {"relationships_created": 0, "entities_extracted": 0, "error": str(e)} + + @classmethod + def _get_memory_previews(cls, memory_ids: List[str]) -> str: + """Busca previews de memórias existentes para contexto""" + driver = cls.get_driver() + if not driver or not memory_ids: + return "" + + try: + with driver.session() as session: + result = session.run(""" + MATCH (m:Memory) + WHERE m.id IN $ids + RETURN m.id as id, m.content_preview as preview, m.type as type + LIMIT 10 + """, ids=memory_ids) + + previews = [] + for record in result: + previews.append(f"- [{record['type']}] {record['id']}: {record['preview']}") + + return "\n".join(previews) + except Exception as e: + logger.warning(f"Failed to get memory previews: {e}") + return "" + + @classmethod + def find_related_memories(cls, memory_id: str, relationship_types: Optional[List[str]] = None, max_depth: int = 2, limit: int = 10) -> List[Dict[str, Any]]: + """ + Encontra memórias relacionadas via navegação de grafo. + Útil para expandir contexto além da busca vetorial. + """ + driver = cls.get_driver() + if not driver: + return [] + + try: + rel_filter = "" + if relationship_types: + rel_types = "|".join([f":{rt}" for rt in relationship_types]) + rel_filter = f"[{rel_types}]" + else: + rel_filter = "[*]" + + with driver.session() as session: + result = session.run(f""" + MATCH path = (m:Memory {{id: $id}})-{rel_filter}*1..{max_depth}-(related:Memory) + WHERE related.id <> $id + RETURN DISTINCT related.id as id, + related.content_preview as preview, + related.type as type, + related.entity_type as entity_type, + length(path) as distance, + [r in relationships(path) | type(r)] as relationship_chain + ORDER BY distance, related.created_at DESC + LIMIT $limit + """, id=memory_id, limit=limit) + + related = [] + for record in result: + related.append({ + "id": record["id"], + "preview": record["preview"], + "type": record["type"], + "entity_type": record["entity_type"], + "distance": record["distance"], + "relationship_chain": record["relationship_chain"] + }) + + return related + except Exception as e: + logger.error(f"Failed to find related memories for {memory_id}: {e}") + return [] + + @classmethod + def find_memories_by_entity(cls, entity_name: str, entity_type: Optional[str] = None, limit: int = 20) -> List[Dict[str, Any]]: + """Encontra memórias relacionadas a uma entidade específica""" + driver = cls.get_driver() + if not driver: + return [] + + try: + type_filter = f"AND e.type = '{entity_type}'" if entity_type else "" + + with driver.session() as session: + result = session.run(f""" + MATCH (m:Memory)-[:MENTIONS]->(e:Entity {{name: $name}} {type_filter}) + OPTIONAL MATCH (m)-[r]-(related:Memory) + RETURN DISTINCT m.id as id, + m.content_preview as preview, + m.type as type, + m.entity_type as entity_type, + count(DISTINCT related) as related_count + ORDER BY related_count DESC, m.created_at DESC + LIMIT $limit + """, name=entity_name, limit=limit) + + memories = [] + for record in result: + memories.append({ + "id": record["id"], + "preview": record["preview"], + "type": record["type"], + "entity_type": record["entity_type"], + "related_count": record["related_count"] + }) + + return memories + except Exception as e: + logger.error(f"Failed to find memories by entity {entity_name}: {e}") + return [] + + @classmethod + def get_relationship_stats(cls, memory_id: str) -> Dict[str, Any]: + """Retorna estatísticas de relacionamentos de uma memória""" + driver = cls.get_driver() + if not driver: + return {} + + try: + with driver.session() as session: + result = session.run(""" + MATCH (m:Memory {id: $id}) + OPTIONAL MATCH (m)-[r]->(target) + RETURN count(DISTINCT target) as total_connections, + count(DISTINCT r) as total_relationships, + [type(r) IN collect(DISTINCT type(r)) WHERE type(r) IS NOT NULL] as relationship_types + """, id=memory_id) + + record = result.single() + if record: + return { + "total_connections": record["total_connections"] or 0, + "total_relationships": record["total_relationships"] or 0, + "relationship_types": record["relationship_types"] or [] + } + return {} + except Exception as e: + logger.error(f"Failed to get relationship stats for {memory_id}: {e}") + return {} + + @classmethod + def close(cls): + """Fecha conexão Neo4j""" + if cls._driver: + cls._driver.close() + cls._driver = None diff --git a/src/memory/wrapper.py b/src/memory/wrapper.py index 2932041..904b8c5 100644 --- a/src/memory/wrapper.py +++ b/src/memory/wrapper.py @@ -5,10 +5,20 @@ from src.config import Config import logging import time from functools import wraps +from typing import Optional # Setup Logging logger = logging.getLogger("AntigravityMemory") +# Import GraphWrapper opcionalmente para não quebrar se Neo4j não estiver disponível +try: + from src.memory.graph_wrapper import GraphWrapper + GRAPH_AVAILABLE = True +except (ImportError, ModuleNotFoundError) as e: + logger.warning(f"GraphWrapper not available (Neo4j may not be installed): {e}") + GraphWrapper = None + GRAPH_AVAILABLE = False + # Rate Limiting Configuration MAX_RETRIES = 3 RETRY_DELAY_SECONDS = 2.0 # Start with 2 seconds @@ -51,9 +61,17 @@ class RateLimiter: class MemorySearchInput(BaseModel): query: str = Field(..., description="The specific question or topic to search for in the shared memory.") + use_relationships: Optional[bool] = Field( + default=True, + description="If True, expands search using relationship graph to find related memories. Use False for fast direct search only." + ) class MemorySaveInput(BaseModel): fact: str = Field(..., description="The important fact, decision, or insight to be stored for future reference.") + extract_relationships: Optional[bool] = Field( + default=True, + description="If True, automatically extracts and links relationships to other memories/entities. Set False to skip relationship extraction for speed." + ) class MemoryWrapper: """ @@ -85,12 +103,21 @@ class MemoryWrapper: class SearchMemoryTool(BaseTool): name: str = "Search Shared Memory" description: str = ( - "Use this tool to search for past decisions, project context, or learned procedures " - "stored in the company's shared brain. Always check this before asking for redundant info." + "Search for past decisions, project context, or learned procedures in the shared memory. " + "Use 'use_relationships=True' (default) to find related memories via relationship graph for richer context. " + "Use 'use_relationships=False' for fast direct semantic search only. " + "Choose based on whether you need context about relationships between topics or just direct information." ) args_schema: type = MemorySearchInput - def _run(self, query: str) -> str: + def _run(self, query: str, use_relationships: bool = True) -> str: + """ + Busca híbrida: combina busca vetorial (Qdrant) com navegação de grafo (Neo4j). + + Args: + query: Query de busca semântica + use_relationships: Se True, expande busca usando relacionamentos. Se False, apenas busca vetorial rápida. + """ for attempt in range(MAX_RETRIES): try: RateLimiter.wait_if_needed() @@ -101,19 +128,66 @@ class SearchMemoryTool(BaseTool): if client is None: return "Memory system is temporarily unavailable. Proceeding without memory context." - # Retrieve memories for the shared project user_id - results = client.search( + # 1. Busca vetorial inicial (sempre executada) + vector_results = client.search( query, user_id=config['user_id'], - limit=5 + limit=5 if use_relationships else 10 # Menos se vamos expandir ) - if not results: + if not vector_results: return "No relevant information found in shared memory." - # Format results - formatted = "\n".join([f"- {res.get('memory', 'Unknown')} (Score: {res.get('score', 0):.2f})" for res in results]) - return f"Found in Memory:\n{formatted}" + # 2. Busca por relacionamentos (se solicitado) + enriched_results = [] + related_memories_map = {} + + if use_relationships and GRAPH_AVAILABLE: + try: + # Verificar se Neo4j está disponível + driver = GraphWrapper.get_driver() + if driver: + # Para cada resultado vetorial, buscar relacionados + for result in vector_results: + memory_id = result.get('id') or result.get('memory_id') or result.get('memory', {}).get('id') + if memory_id: + related = GraphWrapper.find_related_memories( + memory_id=str(memory_id), + max_depth=2, + limit=5 + ) + if related: + related_memories_map[str(memory_id)] = related + except Exception as e: + logger.warning(f"Graph search failed, using vector results only: {e}") + + # 3. Formatar resultados + formatted_parts = [] + for i, res in enumerate(vector_results, 1): + memory_text = res.get('memory', res.get('content', 'Unknown')) + if isinstance(memory_text, dict): + memory_text = memory_text.get('content', str(memory_text)) + score = res.get('score', 0) + memory_id = res.get('id') or res.get('memory_id') or res.get('memory', {}).get('id', 'unknown') + + formatted_parts.append(f"{i}. {memory_text} (Relevance: {score:.2f})") + + # Adicionar memórias relacionadas se existirem + if use_relationships and str(memory_id) in related_memories_map: + related = related_memories_map[str(memory_id)] + if related: + formatted_parts.append(f" └─ Related memories ({len(related)} found):") + for rel in related[:3]: # Limitar a 3 relacionadas + formatted_parts.append(f" • [{rel.get('type', 'unknown')}] {rel.get('preview', 'N/A')[:100]}...") + + result_text = "Found in Memory (with relationship context):\n" if use_relationships else "Found in Memory:\n" + result_text += "\n".join(formatted_parts) + + if use_relationships and related_memories_map: + total_related = sum(len(rel) for rel in related_memories_map.values()) + result_text += f"\n\n[Expanded search found {total_related} additional related memories via relationship graph]" + + return result_text except Exception as e: error_str = str(e) @@ -132,12 +206,23 @@ class SearchMemoryTool(BaseTool): class SaveMemoryTool(BaseTool): name: str = "Save to Shared Memory" description: str = ( - "Use this tool to persist CRITICAL information, decisions, or new rules " - "so that other agents (or you in the future) can access it. Do not save trivial chat." + "Persist CRITICAL information, decisions, or new rules to shared memory. " + "The fact is saved to vector database (Qdrant) for semantic search. " + "If 'extract_relationships=True' (default), automatically extracts and links relationships " + "to other memories/entities in the graph for better context discovery. " + "Set 'extract_relationships=False' for faster saving without relationship extraction. " + "Do not save trivial chat or temporary information." ) args_schema: type = MemorySaveInput - def _run(self, fact: str) -> str: + def _run(self, fact: str, extract_relationships: bool = True) -> str: + """ + Salva memória no Qdrant (vetorial) e opcionalmente extrai relacionamentos para o grafo. + + Args: + fact: Informação crítica a ser salva + extract_relationships: Se True, extrai e salva relacionamentos no grafo + """ for attempt in range(MAX_RETRIES): try: RateLimiter.wait_if_needed() @@ -148,12 +233,84 @@ class SaveMemoryTool(BaseTool): if client is None: return "Memory system temporarily unavailable. Fact not saved, but task can continue." - client.add( + # 1. Salvar no Qdrant (vetorial) - sempre executado + metadata = { + "source": "agent_execution", + "type": "insight" + } + + result = client.add( fact, user_id=config['user_id'], - metadata={"source": "agent_execution", "type": "insight"} + metadata=metadata ) - return "Successfully saved to shared memory." + + # Obter ID da memória criada + # Mem0 pode retornar dict, objeto, ou lista dependendo da versão + memory_id = None + if isinstance(result, dict): + memory_id = result.get('id') or result.get('memory_id') or result.get('memory', {}).get('id') + elif isinstance(result, list) and result: + memory_id = result[0].get('id') if isinstance(result[0], dict) else getattr(result[0], 'id', None) + elif hasattr(result, 'id'): + memory_id = result.id + elif hasattr(result, 'get'): + memory_id = result.get('id') + + # Fallback: buscar memórias recentes para obter ID (menos confiável) + if not memory_id: + try: + recent = client.search(fact[:50], user_id=config['user_id'], limit=1) + if recent and isinstance(recent, list) and recent: + memory_id = recent[0].get('id') or recent[0].get('memory_id') + except Exception as search_err: + logger.debug(f"Could not fetch memory ID via search: {search_err}") + + response_parts = ["Successfully saved to shared memory (vector database)."] + + # 2. Extrair relacionamentos e salvar no grafo (se solicitado) + if extract_relationships and memory_id and GRAPH_AVAILABLE: + try: + # Criar nó no grafo + GraphWrapper.create_memory_node( + memory_id=str(memory_id), + content=fact, + metadata=metadata + ) + + # Buscar memórias existentes relevantes para contexto + existing_context_ids = None + try: + # Buscar memórias similares para contexto de relacionamento + similar = client.search(fact[:100], user_id=config['user_id'], limit=5) + existing_context_ids = [ + str(r.get('id') or r.get('memory_id', '')) + for r in similar + if r.get('id') or r.get('memory_id') + ] + except: + pass + + # Extrair e criar relacionamentos + relationship_stats = GraphWrapper.extract_and_link_relationships( + memory_id=str(memory_id), + content=fact, + existing_memory_ids=existing_context_ids + ) + + if relationship_stats.get("relationships_created", 0) > 0: + response_parts.append( + f"Relationship graph updated: {relationship_stats['relationships_created']} relationships, " + f"{relationship_stats['entities_extracted']} entities extracted." + ) + else: + response_parts.append("Saved to relationship graph (no relationships extracted yet).") + + except Exception as e: + logger.warning(f"Failed to extract relationships (memory still saved): {e}") + response_parts.append("Note: Relationship extraction failed, but memory was saved successfully.") + + return " ".join(response_parts) except Exception as e: error_str = str(e)