From 7b1a975f066da4560e0554e6d0afcea6538fc15d Mon Sep 17 00:00:00 2001 From: Chevallier Date: Tue, 7 Jul 2026 09:57:21 +0200 Subject: [PATCH] Etape 3 + refonte visuelle + corrections etape 2 --- .gitignore | 2 +- README.md | 6 +- backend/.chainlit/config.toml | 178 +++++++++++++++ backend/.chainlit/translations/ar-SA.json | 259 +++++++++++++++++++++ backend/.chainlit/translations/bn.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/da-DK.json | 259 +++++++++++++++++++++ backend/.chainlit/translations/de-DE.json | 254 +++++++++++++++++++++ backend/.chainlit/translations/el-GR.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/en-US.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/es.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/fr-FR.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/gu.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/he-IL.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/hi.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/it.json | 254 +++++++++++++++++++++ backend/.chainlit/translations/ja.json | 259 +++++++++++++++++++++ backend/.chainlit/translations/kn.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/ko.json | 254 +++++++++++++++++++++ backend/.chainlit/translations/ml.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/mr.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/nl.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/pt-PT.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/ta.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/te.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/zh-CN.json | 260 ++++++++++++++++++++++ backend/.chainlit/translations/zh-TW.json | 260 ++++++++++++++++++++++ backend/app/agents/dev_agent.py | 34 +-- backend/app/agents/qa_agent.py | 107 ++++++++- backend/app/core/config.py | 1 + backend/app/graph/nodes.py | 51 ++++- backend/app/graph/state.py | 6 +- backend/app/graph/workflow.py | 10 +- backend/app/llm/prompts.py | 33 ++- backend/app/main.py | 1 - backend/app/sandbox/Dockerfile.qa | 20 ++ backend/app/sandbox/docker_runner.py | 8 - backend/app/sandbox/main.py | 52 +++++ backend/app/sandbox/qa_client.py | 50 +++++ backend/app/schemas/qa_report.py | 32 +++ backend/chainlit_app.py | 2 +- backend/docker-compose-sandbox.yml | 17 ++ backend/public/custom.css | 9 + backend/public/favicon.png | Bin 0 -> 92482 bytes backend/public/logo_dark.png | Bin 67615 -> 41262 bytes backend/requirements.txt | 5 +- backend/start.sh | 2 +- orchestrator.py | 15 +- stop_project.py | 10 +- 48 files changed, 6551 insertions(+), 59 deletions(-) create mode 100644 backend/.chainlit/config.toml create mode 100644 backend/.chainlit/translations/ar-SA.json create mode 100644 backend/.chainlit/translations/bn.json create mode 100644 backend/.chainlit/translations/da-DK.json create mode 100644 backend/.chainlit/translations/de-DE.json create mode 100644 backend/.chainlit/translations/el-GR.json create mode 100644 backend/.chainlit/translations/en-US.json create mode 100644 backend/.chainlit/translations/es.json create mode 100644 backend/.chainlit/translations/fr-FR.json create mode 100644 backend/.chainlit/translations/gu.json create mode 100644 backend/.chainlit/translations/he-IL.json create mode 100644 backend/.chainlit/translations/hi.json create mode 100644 backend/.chainlit/translations/it.json create mode 100644 backend/.chainlit/translations/ja.json create mode 100644 backend/.chainlit/translations/kn.json create mode 100644 backend/.chainlit/translations/ko.json create mode 100644 backend/.chainlit/translations/ml.json create mode 100644 backend/.chainlit/translations/mr.json create mode 100644 backend/.chainlit/translations/nl.json create mode 100644 backend/.chainlit/translations/pt-PT.json create mode 100644 backend/.chainlit/translations/ta.json create mode 100644 backend/.chainlit/translations/te.json create mode 100644 backend/.chainlit/translations/zh-CN.json create mode 100644 backend/.chainlit/translations/zh-TW.json create mode 100644 backend/app/sandbox/Dockerfile.qa delete mode 100644 backend/app/sandbox/docker_runner.py create mode 100644 backend/app/sandbox/main.py create mode 100644 backend/app/sandbox/qa_client.py create mode 100644 backend/app/schemas/qa_report.py create mode 100644 backend/docker-compose-sandbox.yml create mode 100644 backend/public/custom.css create mode 100644 backend/public/favicon.png diff --git a/.gitignore b/.gitignore index c63984e..fc780ed 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ env/ .env.* # Chainlit -.chainlit/ +# .chainlit/ # Application files .files/ diff --git a/README.md b/README.md index c556a7d..f015b62 100644 --- a/README.md +++ b/README.md @@ -114,12 +114,15 @@ ARC/ │ │ │ └── project_repository.py │ │ │ │ │ ├── sandbox/ -│ │ │ └── docker_runner.py +│ │ │ ├── qa_client.py +│ │ │ ├── main.py # Code exec dans le container sandbox +│ │ │ └── Dockerfile.qa │ │ │ │ │ ├── schemas/ # Pydantic │ │ │ ├── api.py │ │ │ ├── spec.py │ │ │ ├── code_output.py +│ │ │ ├── qa_report.py │ │ │ └── project.py │ │ │ │ │ ├── services/ @@ -148,6 +151,7 @@ ARC/ │ ├── chainlit_fr_FR.md │ ├── docker-compose-ai.yml # Conteneurs pour les agents et l'embedding │ ├── docker-compose-infra.yml # Conteneurs pour les BDD +│ ├── docker-compose-sandbox.yml # Conteneur pour la sandbox/qa │ ├── docker-compose.yml # Conteneur de l'application │ ├── Dockerfile │ ├── README.md diff --git a/backend/.chainlit/config.toml b/backend/.chainlit/config.toml new file mode 100644 index 0000000..4dc75cb --- /dev/null +++ b/backend/.chainlit/config.toml @@ -0,0 +1,178 @@ +[project] +# List of environment variables to be provided by each user to use the app. +user_env = [] + +# Duration (in seconds) during which the session is saved when the connection is lost +session_timeout = 3600 + +# Duration (in seconds) of the user session expiry +user_session_timeout = 1296000 # 15 days + +# Enable third parties caching (e.g., LangChain cache) +cache = false + +# Whether to persist user environment variables (API keys) to the database +# Set to true to store user env vars in DB, false to exclude them for security +persist_user_env = false + +# Whether to mask user environment variables (API keys) in the UI with password type +# Set to true to show API keys as ***, false to show them as plain text +mask_user_env = false + +# Authorized origins +allow_origins = ["*"] + +[features] +# Process and display HTML in messages. This can be a security risk (see https://stackoverflow.com/questions/19603097/why-is-it-dangerous-to-render-user-generated-html-or-javascript) +unsafe_allow_html = false + +# Process and display mathematical expressions. This can clash with "$" characters in messages. +latex = false + +# Enable rendering of user messages markdown +user_message_markdown = true + +# Autoscroll new user messages at the top of the window +user_message_autoscroll = true + +# Autoscroll new assistant messages +assistant_message_autoscroll = true + +# Automatically tag threads with the current chat profile (if a chat profile is used) +auto_tag_thread = true + +# Allow users to edit their own messages +edit_message = true + +# Allow users to share threads (backend + UI). Requires an app-defined on_shared_thread_view callback. +allow_thread_sharing = false + +# Enable favorite messages +favorites = false + +[features.slack] +# Add emoji reaction when message is received (requires reactions:write OAuth scope) +reaction_on_message_received = false + +# Authorize users to spontaneously upload files with messages +[features.spontaneous_file_upload] + enabled = true + # Define accepted file types using MIME types + # Examples: + # 1. For specific file types: + # accept = ["image/jpeg", "image/png", "application/pdf"] + # 2. For all files of certain type: + # accept = ["image/*", "audio/*", "video/*"] + # 3. For specific file extensions: + # accept = { "application/octet-stream" = [".xyz", ".pdb"] } + # Note: Using "*/*" is not recommended as it may cause browser warnings + accept = ["*/*"] + max_files = 20 + max_size_mb = 500 + +[features.audio] + # Enable audio features + enabled = false + # Sample rate of the audio + sample_rate = 24000 + +[features.mcp] + # Enable Model Context Protocol (MCP) features + enabled = false + +[features.mcp.sse] + enabled = true + +[features.mcp.streamable-http] + enabled = true + +[features.mcp.stdio] + enabled = true + # Only the executables in the allow list can be used for MCP stdio server. + # Only need the base name of the executable, e.g. "npx", not "/usr/bin/npx". + # Please don't comment this line for now, we need it to parse the executable name. + allowed_executables = [ "npx", "uvx" ] + +[UI] +# Name of the assistant. +name = "ARC" + +# default_theme = "light" + +# Force a specific language for all users (e.g., "en-US", "he-IL", "fr-FR") +# If not set, the browser's language will be used +# language = "fr-FR" + +# layout = "wide" + +# default_sidebar_state = "open" # Options: "open", "closed", "hidden" + +# Chat settings display location: "message_composer" (default) or "sidebar" (header) +# chat_settings_location = "message_composer" + +# Default state of chat settings sidebar when location is "sidebar" +# default_chat_settings_open = false + +# Whether to prompt user confirmation on clicking 'New Chat' +confirm_new_chat = true + +# Description of the assistant. This is used for HTML tags. +# description = "" + +# Chain of Thought (CoT) display mode. Can be "hidden", "tool_call" or "full". +cot = "full" + +# Specify a CSS file that can be used to customize the user interface. +# The CSS file can be served from the public directory or via an external link. +custom_css = "/public/custom.css" + +# Specify additional attributes for a custom CSS file +# custom_css_attributes = "media=\"print\"" + +# Specify a JavaScript file that can be used to customize the user interface. +# The JavaScript file can be served from the public directory. +# custom_js = "/public/test.js" + +# The style of alert boxes. Can be "classic" or "modern". +alert_style = "classic" + +# Specify additional attributes for custom JS file +# custom_js_attributes = "async type = \"module\"" + +# Custom login page image, relative to public directory or external URL +# login_page_image = "/public/custom-background.jpg" + +# Custom login page image filter (Tailwind internal filters, no dark/light variants) +# login_page_image_filter = "brightness-50 grayscale" +# login_page_image_dark_filter = "contrast-200 blur-sm" + +# Specify a custom meta URL (used for meta tags like og:url) +# custom_meta_url = "https://github.com/Chainlit/chainlit" + +# Specify a custom meta image url. +# custom_meta_image_url = "https://chainlit-cloud.s3.eu-west-3.amazonaws.com/logo/chainlit_banner.png" + +# Load assistant logo directly from URL. +logo_file_url = "" + +# Load assistant avatar image directly from URL. +default_avatar_file_url = "" + +# Avatar size in pixels (default: 20). +# avatar_size = 20 + +# Specify a custom build directory for the frontend. +# This can be used to customize the frontend code. +# Be careful: If this is a relative path, it should not start with a slash. +# custom_build = "./public/build" + +# Specify optional one or more custom links in the header. +# [[UI.header_links]] +# name = "Issues" +# display_name = "Report Issue" +# icon_url = "https://avatars.githubusercontent.com/u/128686189?s=200&v=4" +# url = "https://github.com/Chainlit/chainlit/issues" +# target = "_blank" (default) # Optional: "_self", "_parent", "_top". + +[meta] +generated_by = "2.11.0" diff --git a/backend/.chainlit/translations/ar-SA.json b/backend/.chainlit/translations/ar-SA.json new file mode 100644 index 0000000..bdc447e --- /dev/null +++ b/backend/.chainlit/translations/ar-SA.json @@ -0,0 +1,259 @@ +{ + "common": { + "actions": { + "cancel": "\u0625\u0644\u063a\u0627\u0621", + "confirm": "\u062a\u0623\u0643\u064a\u062f", + "continue": "\u0645\u062a\u0627\u0628\u0639\u0629", + "goBack": "\u0631\u062c\u0648\u0639", + "reset": "\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646", + "submit": "\u0625\u0631\u0633\u0627\u0644" + }, + "status": { + "loading": "\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644...", + "error": { + "default": "\u062d\u062f\u062b \u062e\u0637\u0623", + "serverConnection": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645" + } + } + }, + "auth": { + "login": { + "title": "\u0642\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642", + "form": { + "email": { + "label": "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a", + "required": "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u062d\u0642\u0644 \u0625\u0644\u0632\u0627\u0645\u064a", + "placeholder": "me@example.com" + }, + "password": { + "label": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631", + "required": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u062d\u0642\u0644 \u0625\u0644\u0632\u0627\u0645\u064a" + }, + "actions": { + "signin": "\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644" + }, + "alternativeText": { + "or": "\u0623\u0648" + } + }, + "errors": { + "default": "\u062a\u0639\u0630\u0631 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644", + "signin": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "oauthSignin": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "redirectUriMismatch": "\u0639\u0646\u0648\u0627\u0646 URI \u0644\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0648\u062c\u064a\u0647 \u0644\u0627 \u064a\u062a\u0637\u0627\u0628\u0642 \u0645\u0639 \u062a\u0643\u0648\u064a\u0646 \u062a\u0637\u0628\u064a\u0642 OAuth", + "oauthCallback": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "oauthCreateAccount": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "emailCreateAccount": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "callback": "\u062d\u0627\u0648\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u062d\u0633\u0627\u0628 \u0622\u062e\u0631", + "oauthAccountNotLinked": "\u0644\u062a\u0623\u0643\u064a\u062f \u0647\u0648\u064a\u062a\u0643\u060c \u0642\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0646\u0641\u0633 \u0627\u0644\u062d\u0633\u0627\u0628 \u0627\u0644\u0630\u064a \u0627\u0633\u062a\u062e\u062f\u0645\u062a\u0647 \u0641\u064a \u0627\u0644\u0623\u0635\u0644", + "emailSignin": "\u062a\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a", + "emailVerify": "\u064a\u0631\u062c\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u060c \u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u062c\u062f\u064a\u062f", + "credentialsSignin": "\u0641\u0634\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644. \u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u062d\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0642\u062f\u0645\u0629", + "sessionRequired": "\u064a\u0631\u062c\u0649 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062d\u0629" + } + }, + "provider": { + "continue": "\u0645\u062a\u0627\u0628\u0639\u0629 \u0645\u0639 {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "\u0627\u0643\u062a\u0628 \u0631\u0633\u0627\u0644\u062a\u0643 \u0647\u0646\u0627...", + "actions": { + "send": "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0633\u0627\u0644\u0629", + "stop": "\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u0645\u0647\u0645\u0629", + "attachFiles": "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062a" + } + }, + "favorites": { + "use": "\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0631\u0633\u0627\u0644\u0629 \u0645\u0641\u0636\u0644\u0629", + "headline": "\u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u0627\u0644\u0645\u0641\u0636\u0644\u0629", + "empty": { + "title": "\u0644\u0627 \u062a\u0648\u062c\u062f \u0631\u0633\u0627\u0626\u0644 \u0645\u062d\u0641\u0648\u0638\u0629 \u0628\u0639\u062f", + "description": "\u0627\u0628\u062f\u0623 \u0628\u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0648\u0642\u0645 \u0628\u062a\u0645\u064a\u064a\u0632\u0647\u0627 \u0628\u0646\u062c\u0645\u0629 \u0623\u0648 \u0645\u064a\u0651\u0632 \u0631\u0633\u0627\u0644\u0629 \u0645\u0646 \u0645\u062d\u0627\u062f\u062b\u0627\u062a\u0643 \u0627\u0644\u0633\u0627\u0628\u0642\u0629" + } + }, + "commands": { + "button": "\u0623\u062f\u0648\u0627\u062a", + "changeTool": "\u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0623\u062f\u0627\u0629", + "availableTools": "\u0627\u0644\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629" + }, + "speech": { + "start": "\u0628\u062f\u0621 \u0627\u0644\u062a\u0633\u062c\u064a\u0644", + "stop": "\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u062a\u0633\u062c\u064a\u0644", + "connecting": "\u062c\u0627\u0631\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644" + }, + "fileUpload": { + "dragDrop": "\u0627\u0633\u062d\u0628 \u0648\u0623\u0641\u0644\u062a \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0647\u0646\u0627", + "browse": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0644\u0641\u0627\u062a", + "sizeLimit": "\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649:", + "errors": { + "failed": "\u0641\u0634\u0644 \u0627\u0644\u062a\u062d\u0645\u064a\u0644", + "cancelled": "\u062a\u0645 \u0625\u0644\u063a\u0627\u0621 \u062a\u062d\u0645\u064a\u0644" + }, + "actions": { + "cancelUpload": "\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u062d\u0645\u064a\u0644", + "removeAttachment": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0631\u0641\u0642" + } + }, + "messages": { + "status": { + "using": "\u064a\u0633\u062a\u062e\u062f\u0645", + "used": "\u0645\u0633\u062a\u062e\u062f\u0645" + }, + "actions": { + "copy": { + "button": "\u0646\u0633\u062e \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629", + "success": "\u062a\u0645 \u0627\u0644\u0646\u0633\u062e!" + } + }, + "feedback": { + "positive": "\u0645\u0641\u064a\u062f", + "negative": "\u063a\u064a\u0631 \u0645\u0641\u064a\u062f", + "edit": "\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u062a\u0639\u0644\u064a\u0642", + "dialog": { + "title": "\u0625\u0636\u0627\u0641\u0629 \u062a\u0639\u0644\u064a\u0642", + "submit": "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u062a\u0639\u0644\u064a\u0642", + "yourFeedback": "\u0631\u0623\u064a\u0643..." + }, + "status": { + "updating": "\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u062f\u064a\u062b", + "updated": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062a\u0639\u0644\u064a\u0642" + } + } + }, + "history": { + "title": "\u0627\u0644\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0623\u062e\u064a\u0631\u0629", + "empty": "\u0641\u0627\u0631\u063a \u062a\u0645\u0627\u0645\u0627\u064b...", + "show": "\u0639\u0631\u0636 \u0627\u0644\u0633\u062c\u0644" + }, + "settings": { + "title": "\u0644\u0648\u062d\u0629 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a", + "customize": "\u062e\u0635\u0635 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629 \u0647\u0646\u0627" + }, + "watermark": "\u0642\u062f \u062a\u062e\u0637\u0626 \u0646\u0645\u0627\u0630\u062c \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064a. \u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0647\u0645\u0629." + }, + "threadHistory": { + "sidebar": { + "title": "\u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0627\u062a \u0627\u0644\u0633\u0627\u0628\u0642\u0629", + "filters": { + "search": "\u0628\u062d\u062b", + "placeholder": "\u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0627\u062a..." + }, + "timeframes": { + "today": "\u0627\u0644\u064a\u0648\u0645", + "yesterday": "\u0623\u0645\u0633", + "previous7days": "\u0622\u062e\u0631 7 \u0623\u064a\u0627\u0645", + "previous30days": "\u0622\u062e\u0631 30 \u064a\u0648\u0645\u0627\u064b" + }, + "empty": "\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u062d\u0627\u062f\u062b\u0627\u062a", + "actions": { + "close": "\u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u062c\u0627\u0646\u0628\u064a", + "open": "\u0641\u062a\u062d \u0627\u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u062c\u0627\u0646\u0628\u064a" + } + }, + "thread": { + "untitled": "\u0645\u062d\u0627\u062f\u062b\u0629 \u0628\u062f\u0648\u0646 \u0639\u0646\u0648\u0627\u0646", + "menu": { + "rename": "\u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u0645\u064a\u0629", + "share": "\u0645\u0634\u0627\u0631\u0643\u0629", + "delete": "\u062d\u0630\u0641" + }, + "actions": { + "share": { + "title": "\u0645\u0634\u0627\u0631\u0643\u0629 \u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629", + "button": "\u0645\u0634\u0627\u0631\u0643\u0629", + "status": { + "copied": "\u062a\u0645 \u0646\u0633\u062e \u0627\u0644\u0631\u0627\u0628\u0637", + "created": "\u062a\u0645 \u0625\u0646\u0634\u0627\u0621 \u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629!", + "unshared": "\u062a\u0645 \u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0644\u0647\u0630\u0647 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629" + }, + "error": { + "create": "\u0641\u0634\u0644 \u0625\u0646\u0634\u0627\u0621 \u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629", + "unshare": "\u0641\u0634\u0644 \u062a\u0639\u0637\u064a\u0644 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629" + } + }, + "delete": { + "title": "\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u062d\u0630\u0641", + "description": "\u0633\u064a\u0624\u062f\u064a \u0647\u0630\u0627 \u0625\u0644\u0649 \u062d\u0630\u0641 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629 \u0645\u0639 \u0631\u0633\u0627\u0626\u0644\u0647\u0627 \u0648\u0639\u0646\u0627\u0635\u0631\u0647\u0627. \u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062c\u0631\u0627\u0621", + "success": "\u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629", + "inProgress": "\u062c\u0627\u0631\u064a \u062d\u0630\u0641 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629" + }, + "rename": { + "title": "\u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629", + "description": "\u0623\u062f\u062e\u0644 \u0627\u0633\u0645\u0627\u064b \u062c\u062f\u064a\u062f\u0627\u064b \u0644\u0647\u0630\u0647 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629", + "form": { + "name": { + "label": "\u0627\u0644\u0627\u0633\u0645", + "placeholder": "\u0623\u062f\u062e\u0644 \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u062c\u062f\u064a\u062f" + } + }, + "success": "\u062a\u0645\u062a \u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629!", + "inProgress": "\u062c\u0627\u0631\u064a \u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629" + } + } + } + }, + "navigation": { + "header": { + "chat": "\u0645\u062d\u0627\u062f\u062b\u0629", + "readme": "\u0627\u0642\u0631\u0623\u0646\u064a", + "theme": { + "light": "\u0627\u0644\u0633\u0645\u0629 \u0627\u0644\u0641\u0627\u062a\u062d\u0629", + "dark": "\u0627\u0644\u0633\u0645\u0629 \u0627\u0644\u062f\u0627\u0643\u0646\u0629", + "system": "\u0645\u062a\u0627\u0628\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645" + } + }, + "newChat": { + "button": "\u0645\u062d\u0627\u062f\u062b\u0629 \u062c\u062f\u064a\u062f\u0629", + "dialog": { + "title": "\u0625\u0646\u0634\u0627\u0621 \u0645\u062d\u0627\u062f\u062b\u0629 \u062c\u062f\u064a\u062f\u0629", + "description": "\u0633\u064a\u0624\u062f\u064a \u0647\u0630\u0627 \u0625\u0644\u0649 \u0645\u0633\u062d \u0633\u062c\u0644 \u0627\u0644\u0645\u062d\u0627\u062f\u062b\u0629 \u0627\u0644\u062d\u0627\u0644\u064a. \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u0645\u062a\u0627\u0628\u0639\u0629\u061f", + "tooltip": "\u0645\u062d\u0627\u062f\u062b\u0629 \u062c\u062f\u064a\u062f\u0629" + } + }, + "user": { + "menu": { + "settings": "\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a", + "settingsKey": "S", + "apiKeys": "\u0645\u0641\u0627\u062a\u064a\u062d API", + "logout": "\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c" + } + } + }, + "apiKeys": { + "title": "\u0645\u0641\u0627\u062a\u064a\u062d API \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629", + "description": "\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0630\u0627 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u060c \u0645\u0641\u0627\u062a\u064a\u062d API \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0645\u0637\u0644\u0648\u0628\u0629. \u064a\u062a\u0645 \u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0641\u064a \u0627\u0644\u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u062d\u0644\u064a \u0644\u062c\u0647\u0627\u0632\u0643.", + "success": { + "saved": "\u062a\u0645 \u0627\u0644\u062d\u0641\u0638 \u0628\u0646\u062c\u0627\u062d" + } + }, + "alerts": { + "info": "\u0645\u0639\u0644\u0648\u0645\u0627\u062a", + "note": "\u0645\u0644\u0627\u062d\u0638\u0629", + "tip": "\u0646\u0635\u064a\u062d\u0629", + "important": "\u0645\u0647\u0645", + "warning": "\u062a\u062d\u0630\u064a\u0631", + "caution": "\u062a\u0646\u0628\u064a\u0647", + "debug": "\u062a\u0635\u062d\u064a\u062d", + "example": "\u0645\u062b\u0627\u0644", + "success": "\u0646\u062c\u0627\u062d", + "help": "\u0645\u0633\u0627\u0639\u062f\u0629", + "idea": "\u0641\u0643\u0631\u0629", + "pending": "\u0642\u064a\u062f \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631", + "security": "\u0623\u0645\u0627\u0646", + "beta": "\u062a\u062c\u0631\u064a\u0628\u064a", + "best-practice": "\u0623\u0641\u0636\u0644 \u0645\u0645\u0627\u0631\u0633\u0629" + }, + "components": { + "MultiSelectInput": { + "placeholder": "\u0627\u062e\u062a\u0631..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0627\u062e\u062a\u0631 \u062a\u0627\u0631\u064a\u062e\u0627\u064b", + "range": "\u0627\u062e\u062a\u0631 \u0646\u0637\u0627\u0642\u0627\u064b \u0645\u0646 \u0627\u0644\u062a\u0648\u0627\u0631\u064a\u062e" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/bn.json b/backend/.chainlit/translations/bn.json new file mode 100644 index 0000000..ae68e1f --- /dev/null +++ b/backend/.chainlit/translations/bn.json @@ -0,0 +1,260 @@ +{ + "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" + }, + "favorites": { + "use": "\u098f\u0995\u099f\u09bf \u09aa\u099b\u09a8\u09cd\u09a6\u09c7\u09b0 \u09ae\u09c7\u09b8\u09c7\u099c \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8", + "headline": "\u09aa\u099b\u09a8\u09cd\u09a6\u09c7\u09b0 \u09ae\u09c7\u09b8\u09c7\u099c", + "remove": "\u09aa\u099b\u09a8\u09cd\u09a6 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8", + "empty": { + "title": "\u098f\u0996\u09a8\u0993 \u0995\u09cb\u09a8\u09cb \u09aa\u09cd\u09b0\u09ae\u09cd\u09aa\u099f \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09a8\u09c7\u0987", + "description": "\u098f\u0995\u099f\u09bf \u09aa\u09cd\u09b0\u09ae\u09cd\u09aa\u099f \u09aa\u09be\u09a0\u09bf\u09af\u09bc\u09c7 \u098f\u09ac\u0982 \u09a4\u09be\u09a4\u09c7 \u09a4\u09be\u09b0\u0995\u09be \u099a\u09bf\u09b9\u09cd\u09a8 \u09a6\u09bf\u09af\u09bc\u09c7 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8 \u09ac\u09be \u0986\u0997\u09c7\u09b0 \u099a\u09cd\u09af\u09be\u099f \u09a5\u09c7\u0995\u09c7 \u098f\u0995\u099f\u09bf \u09aa\u09cd\u09b0\u09ae\u09cd\u09aa\u099f\u09c7 \u09a4\u09be\u09b0\u0995\u09be \u099a\u09bf\u09b9\u09cd\u09a8 \u09a6\u09bf\u09a8" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u098f\u0995\u099f\u09bf \u09a4\u09be\u09b0\u09bf\u0996 \u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09a8", + "range": "\u09a4\u09be\u09b0\u09bf\u0996\u09c7\u09b0 \u09aa\u09b0\u09bf\u09b8\u09c0\u09ae\u09be \u09ac\u09c7\u099b\u09c7 \u09a8\u09bf\u09a8" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/da-DK.json b/backend/.chainlit/translations/da-DK.json new file mode 100644 index 0000000..f155c38 --- /dev/null +++ b/backend/.chainlit/translations/da-DK.json @@ -0,0 +1,259 @@ +{ + "common": { + "actions": { + "cancel": "Annuller", + "confirm": "Bekr\u00e6ft", + "continue": "Forts\u00e6t", + "goBack": "G\u00e5 tilbage", + "reset": "Nulstil", + "submit": "Indsend" + }, + "status": { + "loading": "Indl\u00e6ser...", + "error": { + "default": "Der opstod en fejl", + "serverConnection": "Kunne ikke n\u00e5 serveren" + } + } + }, + "auth": { + "login": { + "title": "Log ind for at f\u00e5 adgang til appen", + "form": { + "email": { + "label": "E-mailadresse", + "required": "e-mail er et p\u00e5kr\u00e6vet felt", + "placeholder": "me@example.com" + }, + "password": { + "label": "Adgangskode", + "required": "adgangskode er et p\u00e5kr\u00e6vet felt" + }, + "actions": { + "signin": "Log ind" + }, + "alternativeText": { + "or": "ELLER" + } + }, + "errors": { + "default": "Kunne ikke logge ind", + "signin": "Pr\u00f8v at logge ind med en anden konto", + "oauthSignin": "Pr\u00f8v at logge ind med en anden konto", + "redirectUriMismatch": "Omdirigerings-URI'en matcher ikke oauth-app konfigurationen", + "oauthCallback": "Pr\u00f8v at logge ind med en anden konto", + "oauthCreateAccount": "Pr\u00f8v at logge ind med en anden konto", + "emailCreateAccount": "Pr\u00f8v at logge ind med en anden konto", + "callback": "Pr\u00f8v at logge ind med en anden konto", + "oauthAccountNotLinked": "For at bekr\u00e6fte din identitet, log ind med samme konto, som du oprindeligt brugte", + "emailSignin": "E-mailen kunne ikke sendes", + "emailVerify": "Bekr\u00e6ft venligst din e-mail, en ny e-mail er blevet sendt", + "credentialsSignin": "Login mislykkedes. Kontroller at de angivne oplysninger er korrekte", + "sessionRequired": "Log venligst ind for at f\u00e5 adgang til denne side" + } + }, + "provider": { + "continue": "Forts\u00e6t med {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Skriv din besked her...", + "actions": { + "send": "Send besked", + "stop": "Stop opgave", + "attachFiles": "Vedh\u00e6ft filer" + } + }, + "favorites": { + "use": "Brug en favorit besked", + "headline": "Favorit beskeder", + "empty": { + "title": "Ingen gemte prompts endnu", + "description": "Start med at sende en prompt og markere den med en stjerne, eller v\u00e6lg en prompt fra tidligere samtaler" + } + }, + "commands": { + "button": "V\u00e6rkt\u00f8jer", + "changeTool": "Skift v\u00e6rkt\u00f8j", + "availableTools": "Tilg\u00e6ngelige v\u00e6rkt\u00f8jer" + }, + "speech": { + "start": "Start optagelse", + "stop": "Stop optagelse", + "connecting": "Forbinder" + }, + "fileUpload": { + "dragDrop": "Tr\u00e6k og slip filer her", + "browse": "Gennemse filer", + "sizeLimit": "Gr\u00e6nse:", + "errors": { + "failed": "Upload mislykkedes", + "cancelled": "Annullerede upload af" + }, + "actions": { + "cancelUpload": "Annullere upload", + "removeAttachment": "Fjern vedh\u00e6ftning" + } + }, + "messages": { + "status": { + "using": "Bruger", + "used": "Brugte" + }, + "actions": { + "copy": { + "button": "Kopier til udklipsholder", + "success": "Kopieret!" + } + }, + "feedback": { + "positive": "Hj\u00e6lpsom", + "negative": "Ikke hj\u00e6lpsom", + "edit": "Rediger feedback", + "dialog": { + "title": "Tilf\u00f8j en kommentar", + "submit": "Indsend feedback", + "yourFeedback": "Din feedback..." + }, + "status": { + "updating": "Opdaterer", + "updated": "Feedback opdateret" + } + } + }, + "history": { + "title": "Seneste input", + "empty": "S\u00e5 tomt...", + "show": "Vis historik" + }, + "settings": { + "title": "Indstillingspanel", + "customize": "Tilpas dine chatindstillinger her" + }, + "watermark": "Bygget med" + }, + "threadHistory": { + "sidebar": { + "title": "Tidligere samtaler", + "filters": { + "search": "S\u00f8g", + "placeholder": "S\u00f8g i samtaler..." + }, + "timeframes": { + "today": "I dag", + "yesterday": "I g\u00e5r", + "previous7days": "Seneste 7 dage", + "previous30days": "Seneste 30 dage" + }, + "empty": "Ingen tr\u00e5de fundet", + "actions": { + "close": "Luk sidepanel", + "open": "\u00c5bn sidepanel" + } + }, + "thread": { + "untitled": "Unavngivet samtale", + "menu": { + "rename": "Omd\u00f8b", + "share": "Del", + "delete": "Slet" + }, + "actions": { + "share": { + "title": "Del link til chat", + "button": "Del", + "status": { + "copied": "Link kopieret", + "created": "Delingslink oprettet!", + "unshared": "Deling deaktiveret for denne tr\u00e5d" + }, + "error": { + "create": "Kunne ikke oprette delingslink", + "unshare": "Kunne ikke fjerne deling af tr\u00e5d" + } + }, + "delete": { + "title": "Bekr\u00e6ft sletning", + "description": "Dette vil slette tr\u00e5den samt dens beskeder og elementer. Denne handling kan ikke fortrydes", + "success": "Chat slettet", + "inProgress": "Sletter chat" + }, + "rename": { + "title": "Omd\u00f8b tr\u00e5d", + "description": "Indtast et nyt navn til denne tr\u00e5d", + "form": { + "name": { + "label": "Navn", + "placeholder": "Indtast nyt navn" + } + }, + "success": "Tr\u00e5d omd\u00f8bt!", + "inProgress": "Omd\u00f8ber tr\u00e5d" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "\ud83d\udcd6", + "theme": { + "light": "Lyst tema", + "dark": "M\u00f8rkt tema", + "system": "F\u00f8lg system" + } + }, + "newChat": { + "button": "Ny chat", + "dialog": { + "title": "Opret ny chat", + "description": "Dette vil rydde din nuv\u00e6rende chathistorik. Er du sikker p\u00e5, at du vil forts\u00e6tte?", + "tooltip": "Ny chat" + } + }, + "user": { + "menu": { + "settings": "Indstillinger", + "settingsKey": "S", + "apiKeys": "API-n\u00f8gler", + "logout": "Log ud" + } + } + }, + "apiKeys": { + "title": "P\u00e5kr\u00e6vede API-n\u00f8gler", + "description": "For at bruge denne app kr\u00e6ves f\u00f8lgende API-n\u00f8gler. N\u00f8glerne gemmes p\u00e5 din enheds lokale lager.", + "success": { + "saved": "Gemt succesfuldt" + } + }, + "alerts": { + "info": "Info", + "note": "Bem\u00e6rk", + "tip": "Tip", + "important": "Vigtigt", + "warning": "Advarsel", + "caution": "Forsigtig", + "debug": "Fejlfinding", + "example": "Eksempel", + "success": "Succes", + "help": "Hj\u00e6lp", + "idea": "Id\u00e9", + "pending": "Afventer", + "security": "Sikkerhed", + "beta": "Beta", + "best-practice": "Bedste praksis" + }, + "components": { + "MultiSelectInput": { + "placeholder": "V\u00e6lg..." + }, + "DatePickerInput": { + "placeholder": { + "single": "V\u00e6lg en dato", + "range": "V\u00e6lg et datointerval" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/de-DE.json b/backend/.chainlit/translations/de-DE.json new file mode 100644 index 0000000..dd7f988 --- /dev/null +++ b/backend/.chainlit/translations/de-DE.json @@ -0,0 +1,254 @@ +{ + "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" + } + }, + "favorites": { + "use": "Eine favorisierte Nachricht verwenden", + "headline": "Favorisierte Nachrichten", + "remove": "Favorit entfernen", + "empty": { + "title": "Noch keine Prompts gespeichert", + "description": "Beginne, indem du einen Prompt sendest und mit einem Stern markierst oder markiere einen Prompt aus vorherigen Chats" + } + }, + "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/backend/.chainlit/translations/el-GR.json b/backend/.chainlit/translations/el-GR.json new file mode 100644 index 0000000..49768de --- /dev/null +++ b/backend/.chainlit/translations/el-GR.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03bf \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1", + "headline": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03b1", + "remove": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b1\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5", + "empty": { + "title": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u03c0\u03c1\u03bf\u03c4\u03c1\u03bf\u03c0\u03ad\u03c2 \u03b1\u03ba\u03cc\u03bc\u03b1", + "description": "\u039e\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03c3\u03c4\u03ad\u03bb\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03bc\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c4\u03c1\u03bf\u03c0\u03ae \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c3\u03c4\u03b1 \u03b1\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u03ae \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c4\u03c1\u03bf\u03c0\u03ae \u03b1\u03c0\u03cc \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b5\u03c2" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1", + "range": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b5\u03cd\u03c1\u03bf\u03c2 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03b9\u03ce\u03bd" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/en-US.json b/backend/.chainlit/translations/en-US.json new file mode 100644 index 0000000..bb0f86c --- /dev/null +++ b/backend/.chainlit/translations/en-US.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "Use a favorite message", + "headline": "Favorite Messages", + "remove": "Remove favorite", + "empty": { + "title": "No Saved Prompts Yet", + "description": "Start by sending a prompt and star it or star a prompt from previous chats" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Pick a date", + "range": "Pick a date range" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/es.json b/backend/.chainlit/translations/es.json new file mode 100644 index 0000000..2c5fa78 --- /dev/null +++ b/backend/.chainlit/translations/es.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "Usar un mensaje favorito", + "headline": "Mensajes favoritos", + "remove": "Eliminar favorito", + "empty": { + "title": "A\u00fan no hay prompts guardados", + "description": "Comienza enviando un prompt y m\u00e1rcalo con estrella o marca un prompt de chats anteriores" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Elige una fecha", + "range": "Elige un rango de fechas" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/fr-FR.json b/backend/.chainlit/translations/fr-FR.json new file mode 100644 index 0000000..de162ae --- /dev/null +++ b/backend/.chainlit/translations/fr-FR.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "Utiliser un message favori", + "headline": "Messages favoris", + "remove": "Supprimer des favoris", + "empty": { + "title": "Aucun prompt enregistr\u00e9 pour le moment", + "description": "Commencez par envoyer un prompt et ajoutez-le aux favoris ou ajoutez un prompt de discussions pr\u00e9c\u00e9dentes aux favoris" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Choisir une date", + "range": "Choisir une plage de dates" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/gu.json b/backend/.chainlit/translations/gu.json new file mode 100644 index 0000000..5893486 --- /dev/null +++ b/backend/.chainlit/translations/gu.json @@ -0,0 +1,260 @@ +{ + "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" + }, + "favorites": { + "use": "\u0aae\u0aa8\u0aaa\u0ab8\u0a82\u0aa6 \u0ab8\u0a82\u0aa6\u0ac7\u0ab6\u0aa8\u0acb \u0a89\u0aaa\u0aaf\u0acb\u0a97 \u0a95\u0ab0\u0acb", + "headline": "\u0aae\u0aa8\u0aaa\u0ab8\u0a82\u0aa6 \u0ab8\u0a82\u0aa6\u0ac7\u0ab6\u0abe\u0a93", + "remove": "\u0aae\u0aa8\u0aaa\u0ab8\u0a82\u0aa6 \u0ab8\u0a82\u0aa6\u0ac7\u0ab6 \u0aa6\u0ac2\u0ab0 \u0a95\u0ab0\u0acb", + "empty": { + "title": "\u0ab9\u0a9c\u0ac0 \u0ab8\u0ac1\u0aa7\u0ac0 \u0a95\u0acb\u0a88 \u0aaa\u0acd\u0ab0\u0acb\u0aae\u0acd\u0aaa\u0acd\u0a9f \u0ab8\u0abe\u0a9a\u0ab5\u0ac7\u0ab2 \u0aa8\u0aa5\u0ac0", + "description": "\u0a8f\u0a95 \u0aaa\u0acd\u0ab0\u0acb\u0aae\u0acd\u0aaa\u0acd\u0a9f \u0aae\u0acb\u0a95\u0ab2\u0ac0\u0aa8\u0ac7 \u0a85\u0aa8\u0ac7 \u0aa4\u0ac7\u0aa8\u0ac7 \u0ab8\u0acd\u0a9f\u0abe\u0ab0 \u0a95\u0ab0\u0ac0\u0aa8\u0ac7 \u0ab6\u0ab0\u0ac2\u0a86\u0aa4 \u0a95\u0ab0\u0acb \u0a85\u0aa5\u0ab5\u0abe \u0a85\u0a97\u0abe\u0a89\u0aa8\u0ac0 \u0a9a\u0ac7\u0a9f\u0aae\u0abe\u0a82\u0aa5\u0ac0 \u0a95\u0acb\u0a88 \u0aaa\u0acd\u0ab0\u0acb\u0aae\u0acd\u0aaa\u0acd\u0a9f\u0aa8\u0ac7 \u0ab8\u0acd\u0a9f\u0abe\u0ab0 \u0a95\u0ab0\u0acb" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0aa4\u0abe\u0ab0\u0ac0\u0a96 \u0aaa\u0ab8\u0a82\u0aa6 \u0a95\u0ab0\u0acb", + "range": "\u0aa4\u0abe\u0ab0\u0ac0\u0a96\u0aa8\u0ac0 \u0ab6\u0acd\u0ab0\u0ac7\u0aa3\u0ac0 \u0aaa\u0ab8\u0a82\u0aa6 \u0a95\u0ab0\u0acb" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/he-IL.json b/backend/.chainlit/translations/he-IL.json new file mode 100644 index 0000000..d650f73 --- /dev/null +++ b/backend/.chainlit/translations/he-IL.json @@ -0,0 +1,260 @@ +{ + "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" + }, + "favorites": { + "use": "\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d4\u05d5\u05d3\u05e2\u05d4 \u05de\u05d5\u05e2\u05d3\u05e4\u05ea", + "headline": "\u05d4\u05d5\u05d3\u05e2\u05d5\u05ea \u05de\u05d5\u05e2\u05d3\u05e4\u05d5\u05ea", + "remove": "\u05d4\u05e1\u05e8 \u05de\u05d4\u05de\u05d5\u05e2\u05d3\u05e4\u05d9\u05dd", + "empty": { + "title": "\u05e2\u05d3\u05d9\u05d9\u05df \u05d0\u05d9\u05df \u05d4\u05e0\u05d7\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea", + "description": "\u05d4\u05ea\u05d7\u05dc \u05d1\u05e9\u05dc\u05d9\u05d7\u05ea \u05d4\u05e0\u05d7\u05d9\u05d4 \u05d5\u05e1\u05de\u05df \u05d0\u05d5\u05ea\u05d4 \u05d1\u05db\u05d5\u05db\u05d1 \u05d0\u05d5 \u05e1\u05de\u05df \u05d4\u05e0\u05d7\u05d9\u05d4 \u05de\u05e9\u05d9\u05d7\u05d5\u05ea \u05e7\u05d5\u05d3\u05de\u05d5\u05ea" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u05d1\u05d7\u05e8 \u05ea\u05d0\u05e8\u05d9\u05da", + "range": "\u05d1\u05d7\u05e8 \u05d8\u05d5\u05d5\u05d7 \u05ea\u05d0\u05e8\u05d9\u05db\u05d9\u05dd" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/hi.json b/backend/.chainlit/translations/hi.json new file mode 100644 index 0000000..9ae07ee --- /dev/null +++ b/backend/.chainlit/translations/hi.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0938\u0902\u0926\u0947\u0936 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902", + "headline": "\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0938\u0902\u0926\u0947\u0936", + "remove": "\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0939\u091f\u093e\u090f\u0902", + "empty": { + "title": "\u0905\u092d\u0940 \u0924\u0915 \u0915\u094b\u0908 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f \u0938\u0939\u0947\u091c\u093e \u0928\u0939\u0940\u0902 \u0917\u092f\u093e", + "description": "\u090f\u0915 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f \u092d\u0947\u091c\u0915\u0930 \u0914\u0930 \u0909\u0938\u0947 \u0938\u094d\u091f\u093e\u0930 \u0915\u0930\u0915\u0947 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 \u092f\u093e \u092a\u093f\u091b\u0932\u0940 \u091a\u0948\u091f \u0938\u0947 \u0915\u093f\u0938\u0940 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f \u0915\u094b \u0938\u094d\u091f\u093e\u0930 \u0915\u0930\u0947\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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u090f\u0915 \u0924\u093e\u0930\u0940\u0916 \u091a\u0941\u0928\u0947\u0902", + "range": "\u0924\u093e\u0930\u0940\u0916 \u0938\u0940\u092e\u093e \u091a\u0941\u0928\u0947\u0902" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/it.json b/backend/.chainlit/translations/it.json new file mode 100644 index 0000000..784f2ff --- /dev/null +++ b/backend/.chainlit/translations/it.json @@ -0,0 +1,254 @@ +{ + "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" + } + }, + "favorites": { + "use": "Usa un messaggio preferito", + "headline": "Messaggi preferiti", + "remove": "Rimuovi preferito", + "empty": { + "title": "Nessun prompt salvato ancora", + "description": "Inizia inviando un prompt e aggiungilo ai preferiti o aggiungi un prompt dalle chat precedenti" + } + }, + "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/backend/.chainlit/translations/ja.json b/backend/.chainlit/translations/ja.json new file mode 100644 index 0000000..db3ca82 --- /dev/null +++ b/backend/.chainlit/translations/ja.json @@ -0,0 +1,259 @@ +{ + "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" + }, + "favorites": { + "use": "\u304a\u6c17\u306b\u5165\u308a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4f7f\u7528", + "headline": "\u304a\u6c17\u306b\u5165\u308a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8", + "remove": "\u304a\u6c17\u306b\u5165\u308a\u3092\u524a\u9664", + "empty": { + "title": "\u4fdd\u5b58\u3055\u308c\u305f\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u307e\u3060\u3042\u308a\u307e\u305b\u3093", + "description": "\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u9001\u4fe1\u3057\u3066\u30b9\u30bf\u30fc\u3092\u4ed8\u3051\u308b\u304b\u3001\u4ee5\u524d\u306e\u30c1\u30e3\u30c3\u30c8\u304b\u3089\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u30b9\u30bf\u30fc\u3057\u3066\u304f\u3060\u3055\u3044" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u65e5\u4ed8\u3092\u9078\u629e", + "range": "\u65e5\u4ed8\u7bc4\u56f2\u3092\u9078\u629e" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/kn.json b/backend/.chainlit/translations/kn.json new file mode 100644 index 0000000..ed88b3b --- /dev/null +++ b/backend/.chainlit/translations/kn.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u0cae\u0cc6\u0c9a\u0ccd\u0c9a\u0cbf\u0ca8 \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0cac\u0cb3\u0cb8\u0cbf", + "headline": "\u0cae\u0cc6\u0c9a\u0ccd\u0c9a\u0cbf\u0ca8 \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0c97\u0cb3\u0cc1", + "remove": "\u0cae\u0cc6\u0c9a\u0ccd\u0c9a\u0cbf\u0ca8 \u0cb8\u0c82\u0ca6\u0cc7\u0cb6\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0ca4\u0cc6\u0c97\u0cc6\u0ca6\u0cc1\u0cb9\u0cbe\u0c95\u0cbf", + "empty": { + "title": "\u0c87\u0ca8\u0ccd\u0ca8\u0cc2 \u0caf\u0cbe\u0cb5\u0cc1\u0ca6\u0cc7 \u0caa\u0ccd\u0cb0\u0cbe\u0c82\u0caa\u0ccd\u0c9f\u0ccd\u200c\u0c97\u0cb3\u0ca8\u0ccd\u0ca8\u0cc1 \u0c89\u0cb3\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cbf\u0cb2\u0ccd\u0cb2", + "description": "\u0caa\u0ccd\u0cb0\u0cbe\u0c82\u0caa\u0ccd\u0c9f\u0ccd \u0c95\u0cb3\u0cc1\u0cb9\u0cbf\u0cb8\u0cbf \u0cae\u0ca4\u0ccd\u0ca4\u0cc1 \u0c85\u0ca6\u0c95\u0ccd\u0c95\u0cc6 \u0cb8\u0ccd\u0c9f\u0cbe\u0cb0\u0ccd \u0cae\u0cbe\u0ca1\u0cbf \u0c85\u0ca5\u0cb5\u0cbe \u0cb9\u0cbf\u0c82\u0ca6\u0cbf\u0ca8 \u0c9a\u0cbe\u0c9f\u0ccd\u200c\u0c97\u0cb3\u0cbf\u0c82\u0ca6 \u0caa\u0ccd\u0cb0\u0cbe\u0c82\u0caa\u0ccd\u0c9f\u0ccd\u200c\u0c97\u0cc6 \u0cb8\u0ccd\u0c9f\u0cbe\u0cb0\u0ccd \u0cae\u0cbe\u0ca1\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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0ca6\u0cbf\u0ca8\u0cbe\u0c82\u0c95\u0cb5\u0ca8\u0ccd\u0ca8\u0cc1 \u0c86\u0caf\u0ccd\u0c95\u0cc6\u0cae\u0cbe\u0ca1\u0cbf", + "range": "\u0ca6\u0cbf\u0ca8\u0cbe\u0c82\u0c95 \u0cb6\u0ccd\u0cb0\u0cc7\u0ca3\u0cbf\u0caf\u0ca8\u0ccd\u0ca8\u0cc1 \u0c86\u0caf\u0ccd\u0c95\u0cc6\u0cae\u0cbe\u0ca1\u0cbf" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/ko.json b/backend/.chainlit/translations/ko.json new file mode 100644 index 0000000..0742bc3 --- /dev/null +++ b/backend/.chainlit/translations/ko.json @@ -0,0 +1,254 @@ +{ + "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" + } + }, + "favorites": { + "use": "\uc990\uaca8\ucc3e\uae30 \uba54\uc2dc\uc9c0 \uc0ac\uc6a9", + "headline": "\uc990\uaca8\ucc3e\uae30 \uba54\uc2dc\uc9c0", + "remove": "\uc990\uaca8\ucc3e\uae30 \uc81c\uac70", + "empty": { + "title": "\uc800\uc7a5\ub41c \ud504\ub86c\ud504\ud2b8\uac00 \uc544\uc9c1 \uc5c6\uc2b5\ub2c8\ub2e4", + "description": "\ud504\ub86c\ud504\ud2b8\ub97c \ubcf4\ub0b4\uace0 \ubcc4\ud45c\ub97c \ucd94\uac00\ud558\uac70\ub098 \uc774\uc804 \ub300\ud654\uc5d0\uc11c \ud504\ub86c\ud504\ud2b8\uc5d0 \ubcc4\ud45c\ub97c \ucd94\uac00\ud558\uc138\uc694" + } + }, + "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/backend/.chainlit/translations/ml.json b/backend/.chainlit/translations/ml.json new file mode 100644 index 0000000..a58d9b5 --- /dev/null +++ b/backend/.chainlit/translations/ml.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u0d2a\u0d4d\u0d30\u0d3f\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d02 \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", + "headline": "\u0d2a\u0d4d\u0d30\u0d3f\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d19\u0d4d\u0d19\u0d7e", + "remove": "\u0d07\u0d37\u0d4d\u0d1f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d24\u0d4d \u0d28\u0d40\u0d15\u0d4d\u0d15\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", + "empty": { + "title": "\u0d07\u0d24\u0d41\u0d35\u0d30\u0d46 \u0d38\u0d02\u0d30\u0d15\u0d4d\u0d37\u0d3f\u0d1a\u0d4d\u0d1a \u0d2a\u0d4d\u0d30\u0d4b\u0d02\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d33\u0d4a\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32", + "description": "\u0d12\u0d30\u0d41 \u0d2a\u0d4d\u0d30\u0d4b\u0d02\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d \u0d05\u0d2f\u0d1a\u0d4d\u0d1a\u0d4d \u0d05\u0d24\u0d3f\u0d28\u0d4d \u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d3e\u0d7c \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41\u0d15\u0d4a\u0d23\u0d4d\u0d1f\u0d4d \u0d06\u0d30\u0d02\u0d2d\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15 \u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d \u0d2e\u0d41\u0d7b \u0d1a\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15\u0d33\u0d3f\u0d7d \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d4d \u0d12\u0d30\u0d41 \u0d2a\u0d4d\u0d30\u0d4b\u0d02\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d3f\u0d28\u0d4d \u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d3e\u0d7c \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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0d24\u0d40\u0d2f\u0d24\u0d3f \u0d24\u0d3f\u0d30\u0d1e\u0d4d\u0d1e\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15", + "range": "\u0d24\u0d40\u0d2f\u0d24\u0d3f \u0d36\u0d4d\u0d30\u0d47\u0d23\u0d3f \u0d24\u0d3f\u0d30\u0d1e\u0d4d\u0d1e\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/mr.json b/backend/.chainlit/translations/mr.json new file mode 100644 index 0000000..52a36a1 --- /dev/null +++ b/backend/.chainlit/translations/mr.json @@ -0,0 +1,260 @@ +{ + "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" + }, + "favorites": { + "use": "\u0906\u0935\u0921\u0924\u093e \u0938\u0902\u0926\u0947\u0936 \u0935\u093e\u092a\u0930\u093e", + "headline": "\u0906\u0935\u0921\u0924\u0947 \u0938\u0902\u0926\u0947\u0936", + "remove": "\u0906\u0935\u0921\u0924\u093e \u0938\u0902\u0926\u0947\u0936 \u0915\u093e\u0922\u093e", + "empty": { + "title": "\u0905\u0926\u094d\u092f\u093e\u092a \u0915\u094b\u0923\u0924\u0947\u0939\u0940 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f \u091c\u0924\u0928 \u0915\u0947\u0932\u0947\u0932\u0947 \u0928\u093e\u0939\u0940\u0924", + "description": "\u090f\u0915 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f \u092a\u093e\u0920\u0935\u0942\u0928 \u0906\u0923\u093f \u0924\u094d\u092f\u093e\u0935\u0930 \u0938\u094d\u091f\u093e\u0930 \u0915\u0930\u0942\u0928 \u0938\u0941\u0930\u0941\u0935\u093e\u0924 \u0915\u0930\u093e \u0915\u093f\u0902\u0935\u093e \u092e\u093e\u0917\u0940\u0932 \u091a\u0945\u091f\u092e\u0927\u0942\u0928 \u092a\u094d\u0930\u0949\u092e\u094d\u092a\u094d\u091f\u0935\u0930 \u0938\u094d\u091f\u093e\u0930 \u0915\u0930\u093e" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0924\u093e\u0930\u0940\u0916 \u0928\u093f\u0935\u0921\u093e", + "range": "\u0924\u093e\u0930\u0940\u0916 \u0936\u094d\u0930\u0947\u0923\u0940 \u0928\u093f\u0935\u0921\u093e" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/nl.json b/backend/.chainlit/translations/nl.json new file mode 100644 index 0000000..53775b6 --- /dev/null +++ b/backend/.chainlit/translations/nl.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "Gebruik een favoriet bericht", + "headline": "Favoriete berichten", + "remove": "Verwijder favoriet", + "empty": { + "title": "Nog geen opgeslagen prompts", + "description": "Begin door een prompt te versturen en voeg deze toe aan favorieten of voeg een prompt uit eerdere chats toe" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Kies een datum", + "range": "Kies een datumbereik" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/pt-PT.json b/backend/.chainlit/translations/pt-PT.json new file mode 100644 index 0000000..33e72db --- /dev/null +++ b/backend/.chainlit/translations/pt-PT.json @@ -0,0 +1,260 @@ +{ + "common": { + "actions": { + "cancel": "Cancelar", + "confirm": "Confirmar", + "continue": "Continuar", + "goBack": "Voltar", + "reset": "Repor", + "submit": "Enviar" + }, + "status": { + "loading": "A carregar...", + "error": { + "default": "Ocorreu um erro", + "serverConnection": "N\u00e3o foi poss\u00edvel estabelecer liga\u00e7\u00e3o ao servidor" + } + } + }, + "auth": { + "login": { + "title": "Inicie sess\u00e3o para aceder \u00e0 aplica\u00e7\u00e3o", + "form": { + "email": { + "label": "E-mail", + "required": "o e-mail \u00e9 obrigat\u00f3rio", + "placeholder": "me@example.com" + }, + "password": { + "label": "Palavra-passe", + "required": "a palavra-passe \u00e9 obrigat\u00f3ria" + }, + "actions": { + "signin": "Iniciar sess\u00e3o" + }, + "alternativeText": { + "or": "Ou" + } + }, + "errors": { + "default": "N\u00e3o foi poss\u00edvel iniciar sess\u00e3o", + "signin": "Tente iniciar sess\u00e3o com outra conta", + "oauthSignin": "Tente iniciar sess\u00e3o com outra conta", + "redirectUriMismatch": "O URI de redirecionamento n\u00e3o corresponde \u00e0 configura\u00e7\u00e3o da aplica\u00e7\u00e3o OAuth", + "oauthCallback": "Tente iniciar sess\u00e3o com outra conta", + "oauthCreateAccount": "Tente iniciar sess\u00e3o com outra conta", + "emailCreateAccount": "Tente iniciar sess\u00e3o com outra conta", + "callback": "Tente iniciar sess\u00e3o com outra conta", + "oauthAccountNotLinked": "Para confirmar a sua identidade, inicie sess\u00e3o com a mesma conta utilizada anteriormente", + "emailSignin": "N\u00e3o foi poss\u00edvel enviar o e-mail", + "emailVerify": "Por favor, verifique o seu e-mail. Foi enviada uma nova mensagem", + "credentialsSignin": "Erro ao iniciar sess\u00e3o. Verifique se os dados fornecidos est\u00e3o corretos", + "sessionRequired": "Por favor, inicie sess\u00e3o para aceder a esta p\u00e1gina" + } + }, + "provider": { + "continue": "Continuar com {{provider}}" + } + }, + "chat": { + "input": { + "placeholder": "Escreva a sua mensagem aqui...", + "actions": { + "send": "Enviar mensagem", + "stop": "Parar tarefa", + "attachFiles": "Anexar ficheiros" + } + }, + "favorites": { + "use": "Utilizar mensagem favorita", + "headline": "Mensagens favoritas", + "remove": "Remover favorito", + "empty": { + "title": "Ainda n\u00e3o h\u00e1 prompts guardados", + "description": "Comece por enviar um prompt e marc\u00e1-lo com estrela, ou marque com estrela um prompt de conversas anteriores" + } + }, + "commands": { + "button": "Ferramentas", + "changeTool": "Alterar ferramenta", + "availableTools": "Ferramentas dispon\u00edveis" + }, + "speech": { + "start": "Iniciar grava\u00e7\u00e3o", + "stop": "Parar grava\u00e7\u00e3o", + "connecting": "A ligar" + }, + "fileUpload": { + "dragDrop": "Arraste e largue ficheiros aqui", + "browse": "Procurar ficheiros", + "sizeLimit": "Limite:", + "errors": { + "failed": "Erro ao carregar", + "cancelled": "Carregamento cancelado de" + }, + "actions": { + "cancelUpload": "Cancelar carregamento", + "removeAttachment": "Remover anexo" + } + }, + "messages": { + "status": { + "using": "A utilizar", + "used": "Utilizado" + }, + "actions": { + "copy": { + "button": "Copiar para a \u00e1rea de transfer\u00eancia", + "success": "Copiado!" + } + }, + "feedback": { + "positive": "\u00datil", + "negative": "N\u00e3o \u00fatil", + "edit": "Editar coment\u00e1rio", + "dialog": { + "title": "Adicionar um coment\u00e1rio", + "submit": "Enviar coment\u00e1rio", + "yourFeedback": "O seu coment\u00e1rio..." + }, + "status": { + "updating": "A atualizar", + "updated": "Coment\u00e1rio atualizado" + } + } + }, + "history": { + "title": "\u00daltimas entradas", + "empty": "Est\u00e1 vazio...", + "show": "Mostrar hist\u00f3rico" + }, + "settings": { + "title": "Painel de configura\u00e7\u00f5es", + "customize": "Personalize aqui as configura\u00e7\u00f5es do seu chat" + }, + "watermark": "Os modelos de linguagem podem cometer erros. Verifique sempre informa\u00e7\u00f5es importantes." + }, + "threadHistory": { + "sidebar": { + "title": "Conversas anteriores", + "filters": { + "search": "Pesquisar", + "placeholder": "Pesquisar conversas..." + }, + "timeframes": { + "today": "Hoje", + "yesterday": "Ontem", + "previous7days": "\u00daltimos 7 dias", + "previous30days": "\u00daltimos 30 dias" + }, + "empty": "Nenhuma conversa encontrada", + "actions": { + "close": "Fechar barra lateral", + "open": "Abrir barra lateral" + } + }, + "thread": { + "untitled": "Conversa sem t\u00edtulo", + "menu": { + "rename": "Renomear", + "share": "Partilhar", + "delete": "Eliminar" + }, + "actions": { + "share": { + "title": "Partilhar liga\u00e7\u00e3o do chat", + "button": "Partilhar", + "status": { + "copied": "Liga\u00e7\u00e3o copiada", + "created": "Liga\u00e7\u00e3o de partilha criada!", + "unshared": "Partilha desativada para esta conversa" + }, + "error": { + "create": "Erro ao criar liga\u00e7\u00e3o de partilha", + "unshare": "Erro ao desativar a partilha" + } + }, + "delete": { + "title": "Confirmar elimina\u00e7\u00e3o", + "description": "Ir\u00e1 eliminar a conversa e todos os seus conte\u00fados. Esta a\u00e7\u00e3o n\u00e3o pode ser anulada.", + "success": "Chat eliminado", + "inProgress": "A eliminar chat" + }, + "rename": { + "title": "Renomear conversa", + "description": "Insira um novo nome para esta conversa", + "form": { + "name": { + "label": "Nome", + "placeholder": "Insira o novo nome" + } + }, + "success": "Conversa renomeada!", + "inProgress": "A renomear conversa" + } + } + } + }, + "navigation": { + "header": { + "chat": "Chat", + "readme": "Leia-me", + "theme": { + "light": "Tema claro", + "dark": "Tema escuro", + "system": "Seguir sistema" + } + }, + "newChat": { + "button": "Novo chat", + "dialog": { + "title": "Criar novo chat", + "description": "Isto ir\u00e1 apagar o hist\u00f3rico de chat atual. Tem a certeza de que pretende continuar?", + "tooltip": "Novo chat" + } + }, + "user": { + "menu": { + "settings": "Configura\u00e7\u00f5es", + "settingsKey": "S", + "apiKeys": "Chaves API", + "logout": "Terminar sess\u00e3o" + } + } + }, + "apiKeys": { + "title": "Chaves API necess\u00e1rias", + "description": "Para utilizar esta aplica\u00e7\u00e3o, s\u00e3o necess\u00e1rias as seguintes chaves API. As chaves s\u00e3o guardadas localmente no seu dispositivo.", + "success": { + "saved": "Guardado com sucesso" + } + }, + "alerts": { + "info": "Informa\u00e7\u00e3o", + "note": "Nota", + "tip": "Dica", + "important": "Importante", + "warning": "Aviso", + "caution": "Cuidado", + "debug": "Depura\u00e7\u00e3o", + "example": "Exemplo", + "success": "Sucesso", + "help": "Ajuda", + "idea": "Ideia", + "pending": "Pendente", + "security": "Seguran\u00e7a", + "beta": "Beta", + "best-practice": "Boa pr\u00e1tica" + }, + "components": { + "MultiSelectInput": { + "placeholder": "Selecionar..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Escolher uma data", + "range": "Escolher um intervalo de datas" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/ta.json b/backend/.chainlit/translations/ta.json new file mode 100644 index 0000000..b75a84f --- /dev/null +++ b/backend/.chainlit/translations/ta.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bae\u0bbe\u0ba9 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0baf\u0bc8\u0baa\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb5\u0bc1\u0bae\u0bcd", + "headline": "\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bae\u0bbe\u0ba9 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bbf\u0b95\u0bb3\u0bcd", + "remove": "\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0ba4\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1", + "empty": { + "title": "\u0b87\u0ba9\u0bcd\u0ba9\u0bc1\u0bae\u0bcd \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0bcd\u0bb0\u0bbe\u0bae\u0bcd\u0baa\u0bcd\u0b9f\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8", + "description": "\u0b92\u0bb0\u0bc1 \u0baa\u0bcd\u0bb0\u0bbe\u0bae\u0bcd\u0baa\u0bcd\u0b9f\u0bcd \u0b85\u0ba9\u0bc1\u0baa\u0bcd\u0baa\u0bbf \u0b85\u0ba4\u0bc8 \u0bb8\u0bcd\u0b9f\u0bbe\u0bb0\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0bb5\u0ba4\u0ba9\u0bcd \u0bae\u0bc2\u0bb2\u0bae\u0bcd \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf \u0b85\u0bb0\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bb3\u0bbf\u0bb2\u0bcd \u0b87\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b92\u0bb0\u0bc1 \u0baa\u0bcd\u0bb0\u0bbe\u0bae\u0bcd\u0baa\u0bcd\u0b9f\u0bcd\u0b9f\u0bc8 \u0bb8\u0bcd\u0b9f\u0bbe\u0bb0\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0bb5\u0bc1\u0bae\u0bcd" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0ba4\u0bc7\u0ba4\u0bbf\u0baf\u0bc8\u0ba4\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd", + "range": "\u0ba4\u0bc7\u0ba4\u0bbf \u0bb5\u0bb0\u0bae\u0bcd\u0baa\u0bc8\u0ba4\u0bcd \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/backend/.chainlit/translations/te.json b/backend/.chainlit/translations/te.json new file mode 100644 index 0000000..401389c --- /dev/null +++ b/backend/.chainlit/translations/te.json @@ -0,0 +1,260 @@ +{ + "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" + }, + "favorites": { + "use": "\u0c07\u0c37\u0c4d\u0c1f\u0c2e\u0c48\u0c28 \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c09\u0c2a\u0c2f\u0c4b\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "headline": "\u0c07\u0c37\u0c4d\u0c1f\u0c2e\u0c48\u0c28 \u0c38\u0c02\u0c26\u0c47\u0c36\u0c3e\u0c32\u0c41", + "remove": "\u0c07\u0c37\u0c4d\u0c1f\u0c2e\u0c48\u0c28\u0c26\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", + "empty": { + "title": "\u0c07\u0c02\u0c15\u0c3e \u0c2a\u0c4d\u0c30\u0c3e\u0c02\u0c2a\u0c4d\u0c1f\u0c4d\u200c\u0c32\u0c41 \u0c38\u0c47\u0c35\u0c4d \u0c1a\u0c47\u0c2f\u0c32\u0c47\u0c26\u0c41", + "description": "\u0c12\u0c15 \u0c2a\u0c4d\u0c30\u0c3e\u0c02\u0c2a\u0c4d\u0c1f\u0c4d \u0c2a\u0c02\u0c2a\u0c3f \u0c26\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c38\u0c4d\u0c1f\u0c3e\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c21\u0c02 \u0c26\u0c4d\u0c35\u0c3e\u0c30\u0c3e \u0c2a\u0c4d\u0c30\u0c3e\u0c30\u0c02\u0c2d\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f \u0c32\u0c47\u0c26\u0c3e \u0c2e\u0c41\u0c28\u0c41\u0c2a\u0c1f\u0c3f \u0c1a\u0c3e\u0c1f\u0c4d\u200c\u0c32 \u0c28\u0c41\u0c02\u0c21\u0c3f \u0c2a\u0c4d\u0c30\u0c3e\u0c02\u0c2a\u0c4d\u0c1f\u0c4d\u200c\u0c15\u0c41 \u0c38\u0c4d\u0c1f\u0c3e\u0c30\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u0c24\u0c47\u0c26\u0c40\u0c28\u0c3f \u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f", + "range": "\u0c24\u0c47\u0c26\u0c40 \u0c2a\u0c30\u0c3f\u0c27\u0c3f\u0c28\u0c3f \u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/zh-CN.json b/backend/.chainlit/translations/zh-CN.json new file mode 100644 index 0000000..9848cbe --- /dev/null +++ b/backend/.chainlit/translations/zh-CN.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u4f7f\u7528\u6536\u85cf\u7684\u6d88\u606f", + "headline": "\u6536\u85cf\u7684\u6d88\u606f", + "remove": "\u79fb\u9664\u6536\u85cf", + "empty": { + "title": "\u5c1a\u672a\u4fdd\u5b58\u7684\u63d0\u793a", + "description": "\u4ece\u53d1\u9001\u63d0\u793a\u5e76\u52a0\u661f\u6807\u5f00\u59cb\uff0c\u6216\u4ece\u4e4b\u524d\u7684\u804a\u5929\u4e2d\u52a0\u661f\u6807\u63d0\u793a" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u9009\u62e9\u65e5\u671f", + "range": "\u9009\u62e9\u65e5\u671f\u8303\u56f4" + } + } + } +} \ No newline at end of file diff --git a/backend/.chainlit/translations/zh-TW.json b/backend/.chainlit/translations/zh-TW.json new file mode 100644 index 0000000..5a8bb88 --- /dev/null +++ b/backend/.chainlit/translations/zh-TW.json @@ -0,0 +1,260 @@ +{ + "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" + } + }, + "favorites": { + "use": "\u4f7f\u7528\u6536\u85cf\u7684\u8a0a\u606f", + "headline": "\u6536\u85cf\u7684\u8a0a\u606f", + "remove": "\u79fb\u9664\u6536\u85cf", + "empty": { + "title": "\u5c1a\u672a\u5132\u5b58\u7684\u63d0\u793a", + "description": "\u5f9e\u767c\u9001\u63d0\u793a\u4e26\u52a0\u661f\u865f\u958b\u59cb\uff0c\u6216\u5f9e\u4e4b\u524d\u7684\u804a\u5929\u4e2d\u52a0\u661f\u865f\u63d0\u793a" + } + }, + "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..." + }, + "DatePickerInput": { + "placeholder": { + "single": "\u9078\u64c7\u65e5\u671f", + "range": "\u9078\u64c7\u65e5\u671f\u7bc4\u570d" + } + } + } +} \ No newline at end of file diff --git a/backend/app/agents/dev_agent.py b/backend/app/agents/dev_agent.py index 058c4ff..04cc341 100644 --- a/backend/app/agents/dev_agent.py +++ b/backend/app/agents/dev_agent.py @@ -16,10 +16,11 @@ logger = logging.getLogger(__name__) sync_client = httpx.Client(verify=False) async_client = httpx.AsyncClient(verify=False) -async def run_dev_agent(spec: dict, qa_feedback: list = None) -> dict: +async def run_dev_agent(spec: dict, qa_feedback: list = None, repo_url: str = None, files: list = None) -> dict: """ Agent Dev : prend un état/spec validé, génère l'arborescence et le code, et valide techniquement la sortie avant de la transmettre à la QA. + S'appuie sur repo_url si on est dans une boucle de correction. """ logger.info(f"[Dev Agent] Début de la génération pour : {spec.get('title', 'Sans titre')}") @@ -40,6 +41,8 @@ async def run_dev_agent(spec: dict, qa_feedback: list = None) -> dict: ] user_content = f"CAHIER DES CHARGES (ProjectSpec) :\n{json.dumps(spec, indent=2, ensure_ascii=False)}\n\n" + if files: + user_content += f"💻 CODE ACTUEL (Version précédente à corriger) :\n{json.dumps(files, indent=2, ensure_ascii=False)}\n\n" if qa_feedback: user_content += f"⚠️ RETOURS DE VALIDATION QA (Corrections à appliquer impérativement) :\n{json.dumps(qa_feedback, indent=2, ensure_ascii=False)}\n\n" @@ -49,17 +52,22 @@ async def run_dev_agent(spec: dict, qa_feedback: list = None) -> dict: try: code_data = await structured_llm.ainvoke(messages) logger.info(f"[Dev Agent] ✅ Code généré ({len(code_data.files)} fichiers)") - return await _deploy_to_gitea(code_data, spec.get("title", "project")) + return await _deploy_to_gitea(code_data, spec.get("title", "project"), repo_url=repo_url) except Exception as e: logger.error(f"[Dev Agent] ❌ Échec de la génération/validation : {type(e).__name__}: {str(e)}") return _generate_fallback_code_output(spec) -async def _ensure_gitea_repo(base_name: str) -> str: +async def _ensure_gitea_repo(base_name: str, repo_url: str = None) -> str: """ Vérifie si le repo existe. Si oui, incrémente un suffixe (_1, _2...) jusqu'à trouver un nom libre, puis le crée et retourne ce nom unique. """ + if repo_url: + repo_name = repo_url.rstrip("/").split("/")[-1] + logger.info(f"[Gitea] Mode correction : réutilisation du dépôt existant '{repo_name}'") + return repo_name + async with httpx.AsyncClient(verify=False) as client: headers = {"Authorization": f"token {settings.gitea_token}"} @@ -72,14 +80,11 @@ async def _ensure_gitea_repo(base_name: str) -> str: response = await client.get(check_url, headers=headers) if response.status_code == 404: - # Parfait ! Le 404 signifie que ce nom n'existe pas encore, il est libre. break elif response.status_code == 200: - # Le nom est déjà pris, on tente avec le compteur suivant repo_name = f"{base_name}_{counter}" counter += 1 else: - # Sécurité si l'API renvoie autre chose (ex: 401 Unauthorized) raise Exception(f"Erreur Gitea lors de la vérification ({response.status_code}) : {response.text}") # 2. Si on arrive ici, repo_name est garanti unique et disponible. On le crée. @@ -99,24 +104,24 @@ async def _ensure_gitea_repo(base_name: str) -> str: logger.error(f"[Gitea] Erreur lors de la création : {create_res.text}") raise Exception(f"Impossible de créer le dépôt '{repo_name}' sur Gitea.") -async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str) -> dict: +async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str, repo_url: str = None) -> dict: """Gère le cycle de vie Git : Clone/Init -> Write -> Commit -> Push.""" base_name = "".join(c for c in project_title.lower().replace(" ", "_") if c.isalnum() or c == "_") + files_list = [f.model_dump() for f in code_data.files] - # --- MODIFICATION ICI : On récupère le nom unique validé et créé par Gitea --- try: - repo_name = await _ensure_gitea_repo(base_name) + repo_name = await _ensure_gitea_repo(base_name, repo_url=repo_url) except Exception as e: return { "status": "partial_success_git_failed", "error": str(e), "spec_title": code_data.spec_title, - "tree": code_data.tree + "tree": code_data.tree, + "files": files_list } work_dir = os.path.abspath(f"./temp_repos/{repo_name}") - if os.path.exists(work_dir): shutil.rmtree(work_dir) os.makedirs(work_dir) @@ -150,7 +155,6 @@ async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str) -> # 4. Commit et Push subprocess.run(["git", "add", "."], cwd=work_dir, check=True, capture_output=True) - status = subprocess.run(["git", "status", "--porcelain"], cwd=work_dir, capture_output=True, text=True) if status.stdout.strip(): subprocess.run(["git", "commit", "-m", "Update from Dev Agent (AI Generation)"], cwd=work_dir, check=True, capture_output=True) @@ -168,7 +172,8 @@ async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str) -> "repo_url": f"{settings.gitea_base_url}/{settings.gitea_admin_user}/{repo_name}", "files_count": len(code_data.files), "spec_title": code_data.spec_title, - "tree": code_data.tree + "tree": code_data.tree, + "files": files_list } except Exception as e: @@ -177,7 +182,8 @@ async def _deploy_to_gitea(code_data: ProjectCodeOutput, project_title: str) -> "status": "partial_success_git_failed", "error": str(e), "spec_title": code_data.spec_title, - "tree": code_data.tree + "tree": code_data.tree, + "files": files_list } finally: if os.path.exists(work_dir): diff --git a/backend/app/agents/qa_agent.py b/backend/app/agents/qa_agent.py index 39dd169..69ef44e 100644 --- a/backend/app/agents/qa_agent.py +++ b/backend/app/agents/qa_agent.py @@ -1,10 +1,101 @@ -async def run_qa_agent(generated_code: dict) -> dict: +import logging +from langchain_openai import ChatOpenAI +from langchain_core.messages import SystemMessage, HumanMessage +import httpx +from app.core.config import settings +from app.schemas.qa_report import QAEvaluation +from app.llm.prompts import QA_AGENT_PROMPT +from app.sandbox.qa_client import run_project_qa + +logger = logging.getLogger(__name__) + +sync_client = httpx.Client(verify=False) +async_client = httpx.AsyncClient(verify=False) + +async def run_qa_agent(project_title: str, dev_output: dict) -> QAEvaluation: """ - Agent QA minimal : - - renvoie un statut de validation simulé + Agent QA : + Analyse le code généré à l'aide de l'API externe de la Sandbox (Semgrep uniquement) + et produit le rapport d'évaluation structuré final. """ - return { - "status": "passed", - "logs": [], - "checked_files": generated_code.get("tree", []), - } \ No newline at end of file + logger.info(f"[QA Agent] Début du processus d'audit statique pour le projet : {project_title}") + + repo_url = dev_output.get("repo_url") + if not repo_url: + logger.error("[QA Agent] Aucun URL de dépôt Git trouvé dans le dev_output.") + return QAEvaluation( + is_complete_and_safe=False, + global_summary="Impossible de récupérer le code source (URL Git manquante).", + technical_feedback=["L'agent de développement n'a pas fourni d'URL pour le dépôt Gitea."] + ) + + llm = ChatOpenAI( + base_url=settings.llm_base_url, + api_key=settings.llm_api_key, + model=settings.llm_model_qa, + temperature=0.1, + max_retries=2, + http_client=sync_client, + http_async_client=async_client, + ) + + # 2. Exécution de l'analyse statique via le service Sandbox indépendant + try: + repo_name = repo_url.rstrip("/").split("/")[-1] + logger.info(f"[QA Agent] Envoi du dépôt '{repo_name}' au conteneur d'analyse statique...") + + raw_results = await run_project_qa(repo_name=repo_name) + + logger.info(f"[QA Agent] 📊 Retour Sandbox Statis - Status : {'Succès' if raw_results.is_executable else 'Échec'}") + logger.info(f"[QA Agent] 📊 Retour Sandbox - Nombre d'alertes de sécurité/qualité (Semgrep): {len(raw_results.issues)}") + + except Exception as e: + logger.error(f"[QA Agent] ❌ Échec de la communication avec le conteneur de Scan : {str(e)}") + return QAEvaluation( + is_complete_and_safe=False, + global_summary="Échec critique lors du traitement du rapport de scan statique.", + technical_feedback=[f"L'API de la sandbox a échoué : {type(e).__name__}: {str(e)}"] + ) + + # 3. Génération de l'évaluation finale via LLM + structured_llm = llm.with_structured_output(QAEvaluation, strict=True) + + messages = [ + SystemMessage(content=QA_AGENT_PROMPT), + ] + + # Le prompt est nettoyé des mentions relatives à l'exécution de tests dynamiques + user_content = f"PROJET À AUDITER : {project_title}\n" + user_content += f"LIEN DU DÉPÔT : {repo_url}\n" + user_content += f"RÉSULTATS DE L'ANALYSE STATIQUE DU CODE (Semgrep) :\n" + user_content += f"{raw_results.model_dump_json(indent=2)}\n\n" + user_content += "Analyse ces failles, vulnérabilités et défauts de qualité de code, puis génère ton évaluation de sécurité au format structuré demandé." + + messages.append(HumanMessage(content=user_content)) + + try: + qa_evaluation = await structured_llm.ainvoke(messages) + logger.info(f"[QA Agent] 📝 Justification du LLM : {qa_evaluation.global_summary}") + + if not qa_evaluation: + logger.error("[QA Agent] Le LLM a renvoyé une réponse vide (None).") + return QAEvaluation( + is_complete_and_safe=False, + global_summary="Erreur de formatage de l'évaluation par l'IA.", + technical_feedback=["L'évaluation automatique n'a pas pu être structurée correctement."] + ) + + if qa_evaluation.is_complete_and_safe: + logger.info(f"[QA Agent] ✅ Projet '{project_title}' VALIDÉ (Analyse statique propre).") + else: + logger.warning(f"[QA Agent] ❌ Projet '{project_title}' REJETÉ (Failles de sécurité détectées).") + + return qa_evaluation + + except Exception as e: + logger.error(f"[QA Agent] ❌ Échec critique lors de l'analyse LLM : {type(e).__name__}: {str(e)}") + return QAEvaluation( + is_complete_and_safe=False, + global_summary="Erreur interne de l'Agent QA lors de la génération du rapport LLM.", + technical_feedback=[f"Le LLM a crashé avec l'erreur : {type(e).__name__}."] + ) \ No newline at end of file diff --git a/backend/app/core/config.py b/backend/app/core/config.py index e9ef307..fee69b4 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -17,6 +17,7 @@ class Settings(BaseSettings): llm_api_key: str llm_model: str llm_model_dev: str + llm_model_qa: str embedding_base_url: str = "http://localhost:8002/v1" embedding_model: str = "snowflake-arctic-embed-m-v1.5" diff --git a/backend/app/graph/nodes.py b/backend/app/graph/nodes.py index 7a9a90e..eff9646 100644 --- a/backend/app/graph/nodes.py +++ b/backend/app/graph/nodes.py @@ -1,4 +1,3 @@ -#nodes.py from app.agents.pm_agent import run_pm_agent from app.agents.dev_agent import run_dev_agent from app.agents.qa_agent import run_qa_agent @@ -46,21 +45,59 @@ async def retrieval_node(state: WorkflowState, config: RunnableConfig): } async def dev_node(state: WorkflowState): - qa_logs = state.get("qa_result", {}).get("logs", "") if state.get("qa_result") else None + qa_logs = [] + qa_result = state.get("qa_result") + + if qa_result: + global_summary = qa_result.get("global_summary") + technical_feedback = qa_result.get("technical_feedback", []) + + if global_summary: + qa_logs.append(f"Résumé Global : {global_summary}") + + if isinstance(technical_feedback, list): + qa_logs.extend(technical_feedback) + elif technical_feedback: + qa_logs.append(technical_feedback) + + generated_code_state = state.get("generated_code") or {} + existing_repo_url = generated_code_state.get("repo_url") + existing_files = generated_code_state.get("files") + + generated_code = await run_dev_agent( + spec=state["spec"], + qa_feedback=qa_logs if qa_logs else None, + repo_url=existing_repo_url, + files=existing_files + ) - generated_code = await run_dev_agent(state["spec"], qa_feedback=qa_logs) return { "generated_code": generated_code, "status": "code_generated", } async def qa_node(state: WorkflowState): - qa_result = await run_qa_agent(state["generated_code"]) + dev_data = state.get("generated_code", {}) + project_title = dev_data.get("spec_title", "default_project") current_loops = state.get("loop_count", 0) + + qa_eval = await run_qa_agent( + project_title=project_title, + dev_output=dev_data + ) - is_success = True - - clean_qa_result = {"success": is_success, "raw": qa_result} + if hasattr(qa_eval, "model_dump"): + clean_qa_result = qa_eval.model_dump() + elif isinstance(qa_eval, dict): + clean_qa_result = qa_eval + else: + clean_qa_result = { + "is_complete_and_safe": getattr(qa_eval, "is_complete_and_safe", False), + "global_summary": getattr(qa_eval, "global_summary", "Erreur d'analyse"), + "technical_feedback": getattr(qa_eval, "technical_feedback", []) + } + + is_success = clean_qa_result.get("is_complete_and_safe", False) return { "qa_result": clean_qa_result, diff --git a/backend/app/graph/state.py b/backend/app/graph/state.py index 967d352..315d0cb 100644 --- a/backend/app/graph/state.py +++ b/backend/app/graph/state.py @@ -6,9 +6,11 @@ class WorkflowState(TypedDict, total=False): existing_project: Optional[dict] existing_project_approved: Optional[bool] # Choix utilisateur si projet similaire trouvé generated_code: Optional[Dict[str, str]] # Arborescence et code - qa_result: Optional[dict] # Contient les clés 'success' et 'logs' + qa_result: Optional[dict] # Information QA (résumé, feedback technique, si succès ou non) loop_count: int # Compteur pour la Loop 1 (Dev <-> QA) + max_iterations: int user_feedback: Optional[str] # Retours si l'utilisateur refuse le code final is_completed: bool # Statut de livraison finale status: str - chat_history: List[Dict[str, str]] \ No newline at end of file + chat_history: List[Dict[str, str]] + \ No newline at end of file diff --git a/backend/app/graph/workflow.py b/backend/app/graph/workflow.py index ae78867..27848c3 100644 --- a/backend/app/graph/workflow.py +++ b/backend/app/graph/workflow.py @@ -32,13 +32,11 @@ def route_after_retrieval(state: WorkflowState): def route_after_qa(state: WorkflowState): qa_res = state.get("qa_result", {}) - - # Loop 1 : Si échec des tests ET qu'on a pas dépassé 3 essais -> On renvoie chez le Dev - if not qa_res.get("success") and state.get("loop_count", 0) < 3: + + if not qa_res.get("is_complete_and_safe", False) and state.get("loop_count", 0) < state.get("max_iterations", 3): + print(f"⚠️ Échec QA (Essai {state.get('loop_count')}/{state.get("max_iterations", 3)}). Retour au nœud de développement.") return "dev" - - # Si c'est vert (ou trop d'échecs), on présente le résultat à l'utilisateur - # EXTENSION FUTURE : si trop d'échecs, on pourrait envoyer à une IA plus puissante + return "human_review" def route_after_human(state: WorkflowState): diff --git a/backend/app/llm/prompts.py b/backend/app/llm/prompts.py index 3f535e1..8756e39 100644 --- a/backend/app/llm/prompts.py +++ b/backend/app/llm/prompts.py @@ -338,7 +338,17 @@ Tu dois appliquer STRICTEMENT l'une des deux structures suivantes selon des crit - Les instructions d'installation (ex: pip install -r requirements.txt). - Les instructions de lancement (ex: python main.py). - Une section "TESTING" expliquant précisément comment la QA peut vérifier que le code fonctionne (ex: commandes de tests, scénarios de test attendus). - + +--- + +## CONTRÂINTE DE MODERNITÉ ET SÉCURITÉ DU CODE (UNIVERSEL) + +Peu importe le langage de programmation choisi pour répondre à la spécification, tu dois appliquer les règles strictes suivantes : + +1. **Zéro Dépréciation (Anti-Legacy) :** Utilise exclusivement la syntaxe moderne, stable et recommandée du langage. Interdiction stricte d'utiliser des fonctionnalités, méthodes ou décorateurs marqués comme obsolètes ou dépréciés (deprecated) dans l'écosystème actuel (ex: pas de Pydantic V1, pas de vieux packages d'import, pas de syntaxes obsolètes en Java/JS). +2. **Gestion des Runtimes Modernes :** Écris ton code en considérant qu'il va tourner sur les versions majeures actuelles des interpréteurs/compilateurs. Produis un code propre qui ne générera aucun avertissement (Warning) à l'exécution ou à la compilation. +3. **Bonnes Pratiques Idiomatiques :** Adopte les standards de build et de formatage récents du langage sélectionné (ex: typage moderne, gestion asynchrone native, architectures standard de fichiers). + --- ### SÉCURITÉ ET VÉRIFICATION DU FORMAT DE SORTIE : @@ -365,4 +375,25 @@ Réponds UNIQUEMENT avec un objet JSON respectant la structure dynamique suivant } ] } +""" + + +# ============================================================================================================================================== +# ********************************************************************************************************************************************** +# ============================================================================================================================================== + + +QA_AGENT_PROMPT = """Tu es un ingénieur QA Senior et un Auditeur de Code automatisé au sein de la plateforme ARC. +Ton rôle est d'analyser les résultats d'exécution et les scans de sécurité d'un script généré par un Agent de Développement, puis de décider s'il est prêt pour la production ou s'il doit être corrigé. + +Tu disposes des données brutes suivantes : +1. Les résultats d'exécution dans une Sandbox Docker (Code de retour, stdout, stderr, timeout). +3. Les failles de sécurité potentielles détectées par Semgrep. + +### Tes Directives de Validation : +- **is_complete_and_safe = False** : Si le conteneur a crashé (exit_code != 0), s'il y a un Timeout (boucle infinie ou blocage), s'il y a des failles de sécurité HIGH/MEDIUM (Semgrep), ou s'il y a des erreurs de syntaxe bloquantes. +- **is_complete_and_safe = True** : Uniquement si le code s'exécute correctement, remplit sa fonction logique principale sans plantage, et ne présente aucune faille de sécurité critique. Les simples avertissements de style Ruff (espaces, docstrings manquantes) ne doivent pas bloquer la validation, mais doivent être listés pour correction. + +### Ton Style de Feedback : +Sois ultra-précis et technique. Ne dis pas "Il y a une erreur dans le code", dis plutôt : "La fonction X à la ligne Y lève une exception de type ValueError car la variable Z est passée à None". Traduis chaque erreur technique brute en une instruction claire et actionnable pour l'Agent Dev. """ \ No newline at end of file diff --git a/backend/app/main.py b/backend/app/main.py index 8c705f8..772643b 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -11,7 +11,6 @@ setup_logging() @asynccontextmanager async def lifespan(app: FastAPI): print("[Startup] Initialisation de Qdrant...") - # On crée l'instance UNE SEULE FOIS qdrant_repo = QdrantRepository() try: await qdrant_repo.init_collection(vector_size=1024) diff --git a/backend/app/sandbox/Dockerfile.qa b/backend/app/sandbox/Dockerfile.qa new file mode 100644 index 0000000..4d5ae98 --- /dev/null +++ b/backend/app/sandbox/Dockerfile.qa @@ -0,0 +1,20 @@ +FROM semgrep/semgrep:latest + +USER root + +RUN sed -i 's/https/http/g' /etc/apk/repositories && \ + apk update && apk add --no-cache python3 py3-pip + +RUN pip install --no-cache-dir \ + --trusted-host pypi.org \ + --trusted-host files.pythonhosted.org \ + --break-system-packages \ + fastapi uvicorn + +WORKDIR /app + +COPY main.py . + +EXPOSE 8004 + +CMD ["python3", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8004"] \ No newline at end of file diff --git a/backend/app/sandbox/docker_runner.py b/backend/app/sandbox/docker_runner.py deleted file mode 100644 index ab2859c..0000000 --- a/backend/app/sandbox/docker_runner.py +++ /dev/null @@ -1,8 +0,0 @@ -async def run_in_sandbox(code: str) -> dict: - """ - Stub minimal pour future exécution sécurisée dans Docker. - """ - return { - "status": "not_implemented", - "logs": ["Sandbox Docker non branchée à l'étape 0."], - } diff --git a/backend/app/sandbox/main.py b/backend/app/sandbox/main.py new file mode 100644 index 0000000..ff4b05c --- /dev/null +++ b/backend/app/sandbox/main.py @@ -0,0 +1,52 @@ +import subprocess +import json +import time +from fastapi import FastAPI + +app = FastAPI() + +@app.post("/scan/{repo_name}") +async def scan_repository(repo_name: str): + repo_path = f"/src/{repo_name}" + issues_list = [] + start_time = time.time() + + result = subprocess.run( + ["semgrep", "scan", "--config=p/r2c-security-audit", "--json", "--quiet", repo_path], + capture_output=True, + text=True + ) + + duration = round(time.time() - start_time, 2) + + try: + if result.stdout.strip(): + scan_data = json.loads(result.stdout) + for item in scan_data.get("results", []): + issues_list.append({ + "tool": "Semgrep", + "file": item.get("path", "").replace(f"{repo_path}/", ""), + "line": item.get("start", {}).get("line"), + "code": item.get("check_id"), + "severity": item.get("extra", {}).get("severity", "MEDIUM").upper(), + "message": item.get("extra", {}).get("message", "") + }) + is_executable = True + stderr_output = result.stderr + except Exception as e: + is_executable = False + stderr_output = f"Erreur parsing JSON Semgrep: {str(e)}\n{result.stderr}" + + return { + "results": { + "is_executable": is_executable, + "runtime": { + "exit_code": 0, # <-- ON FORCE À 0 ICI : Tout s'est bien passé pour le scanner + "stdout": "Scan statique universel effectué avec succès.", + "stderr": stderr_output, + "duration_seconds": duration, + "timeout_triggered": False + }, + "issues": issues_list + } + } \ No newline at end of file diff --git a/backend/app/sandbox/qa_client.py b/backend/app/sandbox/qa_client.py new file mode 100644 index 0000000..b7e53e4 --- /dev/null +++ b/backend/app/sandbox/qa_client.py @@ -0,0 +1,50 @@ +import logging +import httpx +from app.core.config import settings +from app.schemas.qa_report import QARawResults, RuntimeOutput + +logger = logging.getLogger(__name__) + +async_client = httpx.AsyncClient(verify=False) + +async def run_project_qa(repo_name: str) -> QARawResults: + """ + Sollicite l'API du conteneur persistant arc-sandbox pour effectuer + une analyse de qualité et sécurité statique (Semgrep). + """ + sandbox_url = f"http://arc-sandbox:8004/scan/{repo_name}" + logger.info(f"[QA Client] Envoi de la requête de scan à la sandbox : {sandbox_url}") + + try: + response = await async_client.post(sandbox_url, timeout=120.0) + + if response.status_code == 200: + data = response.json() + return QARawResults.model_validate(data.get("results")) + else: + logger.error(f"[QA Client] Erreur de la Sandbox (Status {response.status_code}): {response.text}") + return QARawResults( + is_executable=False, + runtime=RuntimeOutput( + exit_code=response.status_code, + stdout="", + stderr=f"Erreur HTTP Sandbox: {response.text}", + duration_seconds=0, + timeout_triggered=False + ), + issues=[] + ) + + except Exception as e: + logger.error(f"[QA Client] Impossible de joindre l'API de la Sandbox : {str(e)}") + return QARawResults( + is_executable=False, + runtime=RuntimeOutput( + exit_code=-1, + stdout="", + stderr=f"Exception de connexion QA Client: {str(e)}", + duration_seconds=0, + timeout_triggered=False + ), + issues=[] + ) \ No newline at end of file diff --git a/backend/app/schemas/qa_report.py b/backend/app/schemas/qa_report.py new file mode 100644 index 0000000..b94d537 --- /dev/null +++ b/backend/app/schemas/qa_report.py @@ -0,0 +1,32 @@ +from pydantic import BaseModel, Field +from typing import List, Optional, Dict, Any + +class StaticAnalysisIssue(BaseModel): + tool: str = Field(..., description="Ruff, Bandit, ou Semgrep") + file: str = Field(..., description="Chemin du fichier concerné") + line: Optional[int] = None + code: Optional[str] = Field(None, description="Identifiant de la règle (ex: S101, F401)") + severity: str = Field(..., description="LOW, MEDIUM, HIGH, ERROR") + message: str = Field(..., description="Description du problème") + +class RuntimeOutput(BaseModel): + exit_code: int + stdout: str + stderr: str + duration_seconds: float + timeout_triggered: bool + +class QARawResults(BaseModel): + """Données brutes extraites des outils techniques.""" + is_executable: bool = Field(..., description="Est-ce que le code a pu se lancer sans erreur de syntaxe ?") + runtime: Optional[RuntimeOutput] = None + issues: List[StaticAnalysisIssue] = Field(default_factory=list) + +class QAEvaluation(BaseModel): + """Structure finale renvoyée par le LLM (QA Agent) au format structuré.""" + is_complete_and_safe: bool = Field(..., description="True si le code est prêt pour la prod, False s'il faut corriger") + global_summary: str = Field(..., description="Résumé intelligible des forces et faiblesses du code") + technical_feedback: List[str] = Field( + default_factory=list, + description="Instructions de correction ultra-précises destinées au Dev Agent" + ) \ No newline at end of file diff --git a/backend/chainlit_app.py b/backend/chainlit_app.py index fb46ad1..be09b48 100644 --- a/backend/chainlit_app.py +++ b/backend/chainlit_app.py @@ -20,7 +20,7 @@ async def on_chat_start(): cl.user_session.set("graph_state", initial_state) await cl.Message( - content="Bonjour 👋 Je suis ARC. Décris-moi ton besoin logiciel." + content="Bonjour 👋 Je suis ARC.Décris-moi ton besoin logiciel." ).send() diff --git a/backend/docker-compose-sandbox.yml b/backend/docker-compose-sandbox.yml new file mode 100644 index 0000000..72e9ef6 --- /dev/null +++ b/backend/docker-compose-sandbox.yml @@ -0,0 +1,17 @@ +services: + arc-sandbox: + build: + context: ./app/sandbox + dockerfile: Dockerfile.qa + image: arc-sandbox-tools:latest + container_name: arc-sandbox + ports: + - "8004:8004" + volumes: + - ./temp_repos:/src:rw + networks: + - arc-network + +networks: + arc-network: + external: true \ No newline at end of file diff --git a/backend/public/custom.css b/backend/public/custom.css new file mode 100644 index 0000000..9e9aafe --- /dev/null +++ b/backend/public/custom.css @@ -0,0 +1,9 @@ +.button { + --primary: 220 92% 52%; + --primary-foreground: 0 0% 100%; +} + +.light, +.dark { + --primary: 220 92% 52% !important; +} \ No newline at end of file diff --git a/backend/public/favicon.png b/backend/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8c78f595410402bcc3021ce0a855c7fcbbb874 GIT binary patch literal 92482 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

4^g1Ey~8#$K+>BviDMbsn}Q|XqAaeJ}LfR#A| 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%0D}r5I<`iq5-x0PPP>Rk7&Je$e9?qG;5PH3OEA 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�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 literal 0 HcmV?d00001 diff --git a/backend/public/logo_dark.png b/backend/public/logo_dark.png index 1ac95bb6eb9f5c579f65eaab8b34577ade09a04f..02f0f0ad2fc720a26402de290ce300b5eb0d77bc 100644 GIT binary patch literal 41262 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 N+}1JFuF`xI`F|cz&dUG* literal 67615 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.1.0 \ No newline at end of file +langchain-openai>=0.1.0 +docker==7.1.0 \ No newline at end of file diff --git a/backend/start.sh b/backend/start.sh index 43ff7cc..18bb5a1 100644 --- a/backend/start.sh +++ b/backend/start.sh @@ -1,7 +1,7 @@ #!/bin/sh echo "Démarrage du Backend FastAPI sur le port 8000..." -uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload & +uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --reload-dir app & echo "Démarrage de Chainlit sur le port 8001..." chainlit run chainlit_app.py --host 0.0.0.0 --port 8001 \ No newline at end of file diff --git a/orchestrator.py b/orchestrator.py index 4981afe..9685a50 100644 --- a/orchestrator.py +++ b/orchestrator.py @@ -25,7 +25,8 @@ TOKEN_FILE = ".gitea_token" PROJECTS = { "infra": "arc-infra", "ai": "arc-ai", - "app": "arc-app" + "app": "arc-app", + "sandbox": "arc-sandbox" } def run_command(command, cwd=None): @@ -167,8 +168,18 @@ async def main(): if not run_command(ai_cmd): sys.exit(1) + print(f"\n--- ÉTAPE 5 : Sandbox (Projet: {PROJECTS['sandbox']}) ---") + sandbox_cmd = [ + "docker", "compose", + "-p", PROJECTS["sandbox"], + "-f", f"{COMPOSE_DIR}/docker-compose-sandbox.yml", + "up", "-d", "--build" + ] + if not run_command(sandbox_cmd): + sys.exit(1) + # 5. Application - print(f"\n--- ÉTAPE 5 : APPLICATION (Projet: {PROJECTS['app']}) ---") + print(f"\n--- ÉTAPE 6 : APPLICATION (Projet: {PROJECTS['app']}) ---") app_cmd = [ "docker", "compose", "-p", PROJECTS["app"], diff --git a/stop_project.py b/stop_project.py index 4bdd7aa..b249d6e 100644 --- a/stop_project.py +++ b/stop_project.py @@ -8,7 +8,8 @@ NETWORK_NAME = "arc-network" PROJECTS = { "infra": "arc-infra", "ai": "arc-ai", - "app": "arc-app" + "app": "arc-app", + "sandbox": "arc-sandbox" } def run_command(command): @@ -36,9 +37,12 @@ def main(): print(f"\n--- ARRÊT DE L'INFRASTRUCTURE ({PROJECTS['infra']}) ---") run_command(["docker", "compose", "-p", PROJECTS["infra"], "-f", f"{COMPOSE_DIR}/docker-compose-infra.yml", "down"]) - # 4. Optionnel : Supprimer le réseau + # 4. Arrêter la Sandbox + print(f"\n--- ARRÊT DE LA SANDBOX ({PROJECTS['sandbox']}) ---") + run_command(["docker", "compose", "-p", PROJECTS["sandbox"], "-f", f"{COMPOSE_DIR}/docker-compose-sandbox.yml", "down"]) + + # 5. Supprimer le réseau print(f"\n--- NETTOYAGE DU RÉSEAU ---") - # On essaie de supprimer le réseau, si il est utilisé par d'autres conteneurs, Docker ne le supprimera pas. run_command(["docker", "network", "rm", NETWORK_NAME]) print("\n✅ Tout est arrêté proprement.")