diff --git a/web-app/src/containers/LanguageSwitcher.tsx b/web-app/src/containers/LanguageSwitcher.tsx index 8b8b9b9ea7..a3c304dec0 100644 --- a/web-app/src/containers/LanguageSwitcher.tsx +++ b/web-app/src/containers/LanguageSwitcher.tsx @@ -16,6 +16,7 @@ const LANGUAGES = [ { value: 'zh-CN', label: '简体中文' }, { value: 'zh-TW', label: '繁體中文' }, { value: 'de-DE', label: 'Deutsch' }, + { value: 'cs', label: 'Čeština' }, { value: 'pt-BR', label: 'Português (Brasil)' }, { value: 'ja', label: '日本語' }, ] diff --git a/web-app/src/locales/cs/assistants.json b/web-app/src/locales/cs/assistants.json new file mode 100644 index 0000000000..174d9dec72 --- /dev/null +++ b/web-app/src/locales/cs/assistants.json @@ -0,0 +1,35 @@ +{ + "title": "Assistants", + "editAssistant": "Edit Assistant", + "deleteAssistant": "Delete Assistant", + "deleteConfirmation": "Delete Assistant", + "deleteConfirmationDesc": "Are you sure you want to delete this assistant? This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete", + "addAssistant": "Add Assistant", + "emoji": "Emoji", + "name": "Name", + "enterName": "Enter name", + "nameRequired": "Name is required", + "description": "Description (optional)", + "enterDescription": "Enter description", + "instructions": "Instructions", + "enterInstructions": "Enter instructions", + "predefinedParameters": "Predefined Parameters", + "parameters": "Parameters", + "key": "Key", + "value": "Value", + "stringValue": "String", + "numberValue": "Number", + "booleanValue": "Boolean", + "jsonValue": "JSON", + "trueValue": "True", + "falseValue": "False", + "jsonValuePlaceholder": "JSON Value", + "save": "Save", + "createNew": "Create New Assistant", + "personality": "Personality", + "capabilities": "Capabilities", + "instructionsDateHint": "Tip: Use {{current_date}} to insert today’s date.", + "maxToolSteps": "Max tool steps" +} diff --git a/web-app/src/locales/cs/chat.json b/web-app/src/locales/cs/chat.json new file mode 100644 index 0000000000..5ca734fcc9 --- /dev/null +++ b/web-app/src/locales/cs/chat.json @@ -0,0 +1,12 @@ +{ + "welcome": "Hi, how are you?", + "description": "How can I help you today?", + "temporaryChat": "Temporary Chat", + "temporaryChatDescription": "Start a temporary conversation that won't be saved to your chat history.", + "status": { + "empty": "No Chats Found" + }, + "sendMessage": "Send Message", + "newConversation": "New Conversation", + "clearHistory": "Clear History" +} \ No newline at end of file diff --git a/web-app/src/locales/cs/common.json b/web-app/src/locales/cs/common.json new file mode 100644 index 0000000000..e39465545b --- /dev/null +++ b/web-app/src/locales/cs/common.json @@ -0,0 +1,375 @@ +{ + "assistants": "Assistants", + "hardware": "Hardware", + "mcp-servers": "MCP Servers", + "local_api_server": "Local API Server", + "https_proxy": "HTTPS Proxy", + "extensions": "Extensions", + "general": "General", + "settings": "Settings", + "modelProviders": "Model Providers", + "appearance": "Appearance", + "privacy": "Privacy", + "keyboardShortcuts": "Shortcuts", + "newChat": "New Chat", + "favorites": "Favorites", + "recents": "Recents", + "hub": "Hub", + "helpSupport": "Help & Support", + "helpUsImproveJan": "Help Us Improve Jan", + "unstarAll": "Unstar All", + "unstar": "Unstar", + "deleteAll": "Delete All", + "star": "Star", + "rename": "Rename", + "delete": "Delete", + "copied": "Copied!", + "dataFolder": "Data Folder", + "others": "Other", + "language": "Language", + "login": "Log In", + "loginWith": "Log In With {{provider}}", + "loginFailed": "Failed To Log In", + "logout": "Log Out", + "loggingOut": "Logging Out...", + "loggedOut": "Successfully Logged Out", + "logoutFailed": "Failed To Log Out", + "profile": "Profile", + "reset": "Reset", + "search": "Search", + "name": "Name", + "cancel": "Cancel", + "create": "Create", + "save": "Save", + "edit": "Edit", + "copy": "Copy", + "back": "Back", + "close": "Close", + "next": "Next", + "finish": "Finish", + "skip": "Skip", + "allow": "Allow", + "deny": "Deny", + "start": "Start", + "stop": "Stop", + "preview": "Preview", + "compactWidth": "Compact Width", + "fullWidth": "Full Width", + "dark": "Dark", + "light": "Light", + "system": "System", + "auto": "Auto", + "english": "English", + "medium": "Medium", + "newThread": "New Thread", + "noResultsFound": "No results found", + "noThreadsYet": "No threads yet", + "noThreadsYetDesc": "Start a new conversation to see your thread history here.", + "downloads": "Downloads", + "downloading": "Downloading", + "cancelDownload": "Cancel download", + "downloadCancelled": "Download Cancelled", + "downloadComplete": "Download Complete", + "thinking": "Thinking...", + "thought": "Thought", + "callingTool": "Calling tool", + "completed": "Completed", + "image": "Image", + "vision": "Vision", + "embeddings": "Embeddings", + "tools": "Tools", + "webSearch": "Web Search", + "reasoning": "Reasoning", + "selectAModel": "Select a model", + "noToolsAvailable": "No tools available", + "noModelsFoundFor": "No models found for \"{{searchValue}}\"", + "failedToLoadModels": "Failed to load models", + "noModels": "No models found", + "customAvatar": "Custom avatar", + "editAssistant": "Edit Assistant", + "jan": "Jan", + "metadata": "Metadata", + "regenerate": "Regenerate", + "threadImage": "Thread image", + "editMessage": "Edit Message", + "deleteMessage": "Delete Message", + "deleteThread": "Delete Thread", + "renameThread": "Rename Thread", + "threadTitle": "Thread Title", + "deleteAllThreads": "Delete All Threads", + "allThreadsUnfavorited": "All Threads Unfavorited", + "deleteAllThreadsConfirm": "Are you sure you want to delete all threads? This action cannot be undone.", + "addProvider": "Add Provider", + "addOpenAIProvider": "Add OpenAI Provider", + "enterNameForProvider": "Enter a name for your provider", + "providerAlreadyExists": "Provider with name \"{{name}}\" already exists. Please choose a different name.", + "adjustFontSize": "Adjust Font Size", + "changeLanguage": "Change Language", + "editTheme": "Edit Theme", + "editCodeBlockStyle": "Edit Code Block Style", + "editServerHost": "Edit Server Host", + "pickColorWindowBackground": "Pick Color Window Background", + "pickColorAppMainView": "Pick Color App Main View", + "pickColorAppPrimary": "Pick Color App Primary", + "pickColorAppAccent": "Pick Color App Accent", + "pickColorAppDestructive": "Pick Color App Destructive", + "apiKeyRequired": "API Key is required", + "enterTrustedHosts": "Enter trusted hosts", + "placeholder": { + "chatInput": "Ask me anything..." + }, + "confirm": "Confirm", + "continue": "Continue", + "loading": "Loading...", + "error": "Error", + "success": "Success", + "warning": "Warning", + "conversationNotAvailable": "Conversation not available", + "conversationNotAvailableDescription": "The conversation you are trying to access is not available or has been deleted.", + "temporaryChat": "Temporary Chat", + "temporaryChatTooltip": "Temporary chat won't appear in your history", + "noResultsFoundDesc": "We couldn't find any chats matching your search. Try a different keyword.", + "searchModels": "Search models...", + "searchStyles": "Search styles...", + "createAssistant": "Create Assistant", + "enterApiKey": "Enter API Key", + "scrollToBottom": "Scroll to bottom", + "generateAiResponse": "Generate AI Response", + "addModel": { + "title": "Add Model", + "modelId": "Model ID", + "enterModelId": "Enter Model ID", + "addModel": "Add Model", + "description": "Add a new model to the provider", + "exploreModels": "See model list from provider" + }, + "mcpServers": { + "editServer": "Edit Server", + "addServer": "Add Server", + "serverName": "Server Name", + "enterServerName": "Enter server name", + "command": "Command", + "enterCommand": "Enter command", + "arguments": "Arguments", + "argument": "Argument {{index}}", + "envVars": "Environment Variables", + "key": "Key", + "value": "Value", + "save": "Save" + }, + "deleteServer": { + "title": "Delete Server", + "delete": "Delete" + }, + "editJson": { + "errorParse": "Failed to parse JSON", + "errorPaste": "Failed to paste JSON", + "errorFormat": "Invalid JSON format", + "titleAll": "Edit All Servers Configuration", + "placeholder": "Enter JSON configuration...", + "save": "Save" + }, + "editModel": { + "title": "Edit Model: {{modelId}}", + "description": "Configure model capabilities by toggling the options below.", + "capabilities": "Capabilities", + "tools": "Tools", + "vision": "Vision", + "embeddings": "Embeddings", + "notAvailable": "Not available yet" + }, + "outOfContextError": { + "truncateInput": "Truncate Input", + "title": "Out of context error", + "description": "This chat is reaching the AI's memory limit, like a whiteboard filling up. We can expand the memory window (called context size) so it remembers more, but it may use more of your computer's memory. We can also truncate the input, which means it will forget some of the chat history to make room for new messages.", + "increaseContextSizeDescription": "Do you want to increase the context size?", + "increaseContextSize": "Increase Context Size" + }, + "toolApproval": { + "title": "Tool Permission Request", + "description": "The assistant wants to use {{toolName}}", + "securityNotice": "Only allow tools you trust. Tools can access your system and data.", + "deny": "Deny", + "allowOnce": "Allow Once", + "alwaysAllow": "Always Allow" + }, + "deleteModel": { + "title": "Delete Model: {{modelId}}", + "description": "Are you sure you want to delete this model? This action cannot be undone.", + "success": "Model {{modelId}} has been permanently deleted.", + "cancel": "Cancel", + "delete": "Delete" + }, + "deleteProvider": { + "title": "Delete Provider", + "description": "Delete this provider and all its models. This action cannot be undone.", + "success": "Provider {{provider}} has been permanently deleted.", + "confirmTitle": "Delete Provider: {{provider}}", + "confirmDescription": "Are you sure you want to delete this provider? This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete" + }, + "modelSettings": { + "title": "Model Settings - {{modelId}}", + "description": "Configure model settings to optimize performance and behavior." + }, + "dialogs": { + "changeDataFolder": { + "title": "Change Data Folder Location", + "description": "Are you sure you want to change the data folder location? This will move all your data to the new location and restart the application.", + "currentLocation": "Current Location:", + "newLocation": "New Location:", + "cancel": "Cancel", + "changeLocation": "Change Location" + }, + "deleteAllThreads": { + "title": "Delete All Threads", + "description": "All threads will be deleted. This action cannot be undone." + }, + "deleteThread": { + "description": "Are you sure you want to delete this thread? This action cannot be undone." + }, + "editMessage": { + "title": "Edit Message" + }, + "messageMetadata": { + "title": "Message Metadata" + } + }, + "projects": { + "title": "Projects", + "addProject": "Add Project", + "addToProject": "Add to project", + "removeFromProject": "Remove from project", + "createNewProject": "Create New Project", + "editProject": "Edit Project", + "deleteProject": "Delete Project", + "projectName": "Project Name", + "enterProjectName": "Enter project name...", + "noProjectsAvailable": "No projects available", + "noProjectsYet": "No Projects Yet", + "noProjectsYetDesc": "Start a new project by clicking the Add Project button.", + "projectNotFound": "Project Not Found", + "projectNotFoundDesc": "The project you're looking for doesn't exist or has been deleted.", + "deleteProjectDialog": { + "title": "Delete Project", + "permanentDelete": "This will permanently delete all threads.", + "permanentDeleteWarning": "This action will permanently delete ALL threads within the project!", + "deleteEmptyProject": "This action will delete project \"{{projectName}}\".", + "saveThreadsAdvice": "To save threads, move them to your thread list or another project before deleting.", + "starredWarning": "You still have starred threads within the project.", + "deleteButton": "Delete", + "successWithName": "Project \"{{projectName}}\" deleted successfully", + "successWithoutName": "Project deleted successfully", + "error": "Failed to delete project. Please try again.", + "ariaLabel": "Delete {{projectName}}" + }, + "addProjectDialog": { + "createTitle": "Create New Project", + "editTitle": "Edit Project", + "nameLabel": "Project Name", + "namePlaceholder": "Enter project name...", + "createButton": "Create", + "updateButton": "Update", + "alreadyExists": "Project \"{{projectName}}\" already exists", + "createSuccess": "Project \"{{projectName}}\" created successfully", + "renameSuccess": "Project renamed from \"{{oldName}}\" to \"{{newName}}\"" + }, + "noConversationsIn": "No Conversations in {{projectName}}", + "startNewConversation": "Start a new conversation with {{projectName}} below", + "conversationsIn": "Conversations in {{projectName}}", + "conversationsDescription": "Click on any conversation to continue chatting, or start a new one below.", + "thread": "thread", + "threads": "threads", + "updated": "Updated:", + "collapseProject": "Collapse project", + "expandProject": "Expand project", + "update": "Update", + "searchProjects": "Search projects...", + "noProjectsFound": "No projects found", + "tryDifferentSearch": "Try a different search term" + }, + "toast": { + "allThreadsUnfavorited": { + "title": "All Threads Unfavorited", + "description": "All threads have been removed from your favorites." + }, + "deleteAllThreads": { + "title": "Delete All Threads", + "description": "All threads have been permanently deleted." + }, + "renameThread": { + "title": "Rename Thread", + "description": "Thread title has been renamed to '{{title}}'" + }, + "deleteThread": { + "title": "Delete Thread", + "description": "This thread has been permanently deleted." + }, + "editMessage": { + "title": "Edit Message", + "description": "Message edited successfully. Please wait for the model to respond." + }, + "appUpdateDownloaded": { + "title": "App Update Downloaded", + "description": "The app update has been downloaded successfully." + }, + "appUpdateDownloadFailed": { + "title": "App Update Download Failed", + "description": "Failed to download the app update. Please try again." + }, + "downloadComplete": { + "title": "Download Complete", + "description": "{{item}} has been downloaded" + }, + "downloadCancelled": { + "title": "Download Cancelled", + "description": "The download process was cancelled" + }, + "downloadFailed": { + "title": "Download Failed", + "description": "{{item}} download failed" + }, + "modelValidationStarted": { + "title": "Validating Model", + "description": "Downloaded model \"{{modelId}}\" successfully. Verifying integrity..." + }, + "modelValidationFailed": { + "title": "Model Validation Failed", + "description": "The downloaded model \"{{modelId}}\" failed integrity verification and was removed. The file may be corrupted or tampered with." + }, + "downloadAndVerificationComplete": { + "title": "Download Complete", + "description": "Model \"{{item}}\" downloaded and verified successfully" + }, + "projectCreated": { + "title": "Project Created", + "description": "Project \"{{projectName}}\" created successfully" + }, + "projectRenamed": { + "title": "Project Renamed", + "description": "Project renamed from \"{{oldName}}\" to \"{{newName}}\"" + }, + "projectDeleted": { + "title": "Project Deleted", + "description": "Project \"{{projectName}}\" deleted successfully" + }, + "projectAlreadyExists": { + "title": "Project Already Exists", + "description": "Project \"{{projectName}}\" already exists" + }, + "projectDeleteFailed": { + "title": "Delete Failed", + "description": "Failed to delete project. Please try again." + }, + "threadAssignedToProject": { + "title": "Thread Assigned", + "description": "Thread assigned to \"{{projectName}}\" successfully" + }, + "threadRemovedFromProject": { + "title": "Thread Removed", + "description": "Thread removed from \"{{projectName}}\" successfully" + } + } +} + diff --git a/web-app/src/locales/cs/hub.json b/web-app/src/locales/cs/hub.json new file mode 100644 index 0000000000..4855ec868d --- /dev/null +++ b/web-app/src/locales/cs/hub.json @@ -0,0 +1,31 @@ +{ + "sortNewest": "Newest", + "sortMostDownloaded": "Most downloaded", + "use": "Use", + "download": "Download", + "downloaded": "Downloaded", + "loadingModels": "Loading models...", + "noModels": "No models found", + "by": "By", + "downloads": "Downloads", + "variants": "Variants", + "showVariants": "Show variants", + "useModel": "Use this model", + "downloadModel": "Download model", + "tools": "Tools", + "searchPlaceholder": "Search for models on Hugging Face...", + "joyride": { + "recommendedModelTitle": "Recommended Model", + "recommendedModelContent": "Browse and download powerful AI models from various providers, all in one place. We suggest starting with Jan-Nano - a model optimized for function calling, tool integration, and research capabilities. It's ideal for building interactive AI agents.", + "downloadInProgressTitle": "Download in Progress", + "downloadInProgressContent": "Your model is now downloading. Track progress here - once finished, it will be ready to use.", + "downloadModelTitle": "Download Model", + "downloadModelContent": "Click the Download button to begin downloading the model.", + "back": "Back", + "close": "Close", + "lastWithDownload": "Download", + "last": "Finish", + "next": "Next", + "skip": "Skip" + } +} diff --git a/web-app/src/locales/cs/logs.json b/web-app/src/locales/cs/logs.json new file mode 100644 index 0000000000..3344e07b2a --- /dev/null +++ b/web-app/src/locales/cs/logs.json @@ -0,0 +1,3 @@ +{ + "noLogs": "No logs available" +} \ No newline at end of file diff --git a/web-app/src/locales/cs/mcp-servers.json b/web-app/src/locales/cs/mcp-servers.json new file mode 100644 index 0000000000..dcd794330c --- /dev/null +++ b/web-app/src/locales/cs/mcp-servers.json @@ -0,0 +1,47 @@ +{ + "editServer": "Edit MCP Server", + "addServer": "Add MCP Server", + "serverName": "Server Name", + "enterServerName": "Enter server name", + "command": "Command", + "enterCommand": "Enter command (uvx or npx)", + "arguments": "Arguments", + "argument": "Argument {{index}}", + "envVars": "Environment Variables", + "key": "Key", + "value": "Value", + "save": "Save", + "status": "Status", + "connected": "Connected", + "disconnected": "Disconnected", + "deleteServer": { + "title": "Delete MCP Server", + "description": "Are you sure you want to delete the MCP server {{serverName}}? This action cannot be undone.", + "delete": "Delete", + "success": "MCP server {{serverName}} deleted successfully" + }, + "editJson": { + "title": "Edit JSON for MCP Server: {{serverName}}", + "titleAll": "Edit All MCP Servers JSON", + "placeholder": "Enter JSON configuration", + "errorParse": "Failed to parse initial data", + "errorPaste": "Invalid JSON format in pasted content", + "errorFormat": "Invalid JSON format", + "errorServerName": "Server name is required and cannot be empty", + "errorMissingServerNameKey": "JSON must be structured as {\"serverName\": {config}} - missing server name key", + "errorInvalidType": "Invalid type '{{type}}' for server '{{serverName}}'. Type must be 'stdio', 'http', or 'sse'", + "save": "Save" + }, + "checkParams": "Please check the parameters according to the tutorial.", + "title": "MCP Servers", + "experimental": "Experimental", + "editAllJson": "Edit All Servers JSON", + "findMore": "Find more MCP servers at", + "allowPermissions": "Allow All MCP Tool Permissions", + "allowPermissionsDesc": "When enabled, all MCP tool calls will be automatically approved without showing permission dialogs. This setting applies globally to all conversations, including new chats.", + "noServers": "No MCP servers found", + "args": "Args", + "env": "Env", + "serverStatusActive": "Server {{serverKey}} activated successfully", + "serverStatusInactive": "Server {{serverKey}} deactivated successfully" +} diff --git a/web-app/src/locales/cs/model-errors.json b/web-app/src/locales/cs/model-errors.json new file mode 100644 index 0000000000..307d4ee3d0 --- /dev/null +++ b/web-app/src/locales/cs/model-errors.json @@ -0,0 +1,7 @@ +{ + "title": "Out of context error", + "description": "This chat is reaching the AI’s memory limit, like a whiteboard filling up. We can expand the memory window (called context size) so it remembers more, but it may use more of your computer’s memory. We can also truncate the input, which means it will forget some of the chat history to make room for new messages.", + "increaseContextSizeDescription": "Do you want to increase the context size?", + "truncateInput": "Truncate Input", + "increaseContextSize": "Increase Context Size" +} diff --git a/web-app/src/locales/cs/provider.json b/web-app/src/locales/cs/provider.json new file mode 100644 index 0000000000..243c5b2a08 --- /dev/null +++ b/web-app/src/locales/cs/provider.json @@ -0,0 +1,5 @@ +{ + "addProvider": "Add Provider", + "addOpenAIProvider": "Add OpenAI Provider", + "enterNameForProvider": "Enter name for provider" +} \ No newline at end of file diff --git a/web-app/src/locales/cs/providers.json b/web-app/src/locales/cs/providers.json new file mode 100644 index 0000000000..2683432f9b --- /dev/null +++ b/web-app/src/locales/cs/providers.json @@ -0,0 +1,74 @@ +{ + "joyride": { + "chooseProviderTitle": "Choose a Provider", + "chooseProviderContent": "Pick the provider you want to use, make sure you have access to an API key for it.", + "getApiKeyTitle": "Get Your API Key", + "getApiKeyContent": "Log into the provider's dashboard to find or generate your API key.", + "insertApiKeyTitle": "Insert Your API Key", + "insertApiKeyContent": "Paste your API key here to connect and activate the provider.", + "back": "Back", + "close": "Close", + "last": "Finish", + "next": "Next", + "skip": "Skip" + }, + "refreshModelsError": "Provider must have base URL and API key configured to fetch models.", + "refreshModelsSuccess": "Added {{count}} new model(s) from {{provider}}.", + "noNewModels": "No new models found. All available models are already added.", + "refreshModelsFailed": "Failed to fetch models from {{provider}}. Please check your API key and base URL.", + "models": "Models", + "refreshing": "Refreshing...", + "refresh": "Refresh", + "import": "Import", + "importModelSuccess": "Model {{provider}} has been imported successfully.", + "importModelError": "Failed to import model:", + "stop": "Stop", + "start": "Start", + "noModelFound": "No model found", + "noModelFoundDesc": "Available models will be listed here. If you don't have any models yet, visit the Hub to download.", + "configuration": "Configuration", + "apiEndpoint": "API Endpoint", + "testConnection": "Test Connection", + "addModel": { + "title": "Add New Model", + "description": "Add a new model to the {{provider}} provider.", + "modelId": "Model ID", + "enterModelId": "Enter model ID", + "exploreModels": "See model list from {{provider}}", + "addModel": "Add Model", + "modelExists": "Model already exists", + "modelExistsDesc": "Please choose a different model ID." + }, + "deleteModel": { + "title": "Delete Model: {{modelId}}", + "description": "Are you sure you want to delete this model? This action cannot be undone.", + "success": "Model {{modelId}} has been permanently deleted.", + "cancel": "Cancel", + "delete": "Delete" + }, + "deleteProvider": { + "title": "Delete Provider", + "description": "Delete this provider and all its models. This action cannot be undone.", + "success": "Provider {{provider}} has been permanently deleted.", + "confirmTitle": "Delete Provider: {{provider}}", + "confirmDescription": "Are you sure you want to delete this provider? This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete" + }, + "editModel": { + "title": "Edit Model: {{modelId}}", + "description": "Configure model capabilities by toggling the options below.", + "capabilities": "Capabilities", + "tools": "Tools", + "vision": "Vision", + "embeddings": "Embeddings", + "notAvailable": "Not available yet", + "warning": { + "title": "Proceed with Caution", + "description": "Modifying model capabilities may affect performance and functionality. Incorrect settings could cause unexpected behavior or errors." + } + }, + "addProvider": "Add Provider", + "addOpenAIProvider": "Add OpenAI Provider", + "enterNameForProvider": "Enter name for provider" +} diff --git a/web-app/src/locales/cs/settings.json b/web-app/src/locales/cs/settings.json new file mode 100644 index 0000000000..be19a8cef7 --- /dev/null +++ b/web-app/src/locales/cs/settings.json @@ -0,0 +1,280 @@ +{ + "autoDownload": "Automatic download new updates", + "checkForUpdates": "Check for Updates", + "checkForUpdatesDesc": "Check if a newer version of Jan is available.", + "checkingForUpdates": "Checking for updates...", + "noUpdateAvailable": "You're running the latest version", + "devVersion": "Development version detected", + "updateError": "Failed to check for updates", + "checkForBackendUpdates": "Check for Llamacpp Updates", + "checkForBackendUpdatesDesc": "Check if a newer version of the Llamacpp backend is available.", + "checkingForBackendUpdates": "Checking for Llamacpp updates...", + "noBackendUpdateAvailable": "You're running the latest Llamacpp version", + "backendUpdateError": "Failed to check for Llamacpp updates", + "changeLocation": "Change Location", + "copied": "Copied", + "copyPath": "Copy Path", + "openLogs": "Open Logs", + "revealLogs": "Reveal Logs", + "showInFinder": "Show in Finder", + "showInFileExplorer": "Show in File Explorer", + "openContainingFolder": "Open Containing Folder", + "failedToRelocateDataFolder": "Failed to relocate data folder", + "failedToRelocateDataFolderDesc": "Failed to relocate data folder. Please try again.", + "factoryResetTitle": "Reset to Factory Settings", + "factoryResetDesc": "This will reset all app settings to their defaults. This can't be undone. We only recommend this if the app is corrupted.", + "cancel": "Cancel", + "reset": "Reset", + "resources": "Resources", + "documentation": "Documentation", + "documentationDesc": "Learn how to use Jan and explore its features.", + "viewDocs": "View Docs", + "releaseNotes": "Release Notes", + "releaseNotesDesc": "See what's new in the latest version of Jan.", + "viewReleases": "View Releases", + "community": "Community", + "github": "GitHub", + "githubDesc": "Contribute to Jan's development.", + "discord": "Discord", + "discordDesc": "Join our community for support and discussions.", + "support": "Support", + "reportAnIssue": "Report an Issue", + "reportAnIssueDesc": "Found a bug? Help us out by filing an issue on GitHub.", + "reportIssue": "Report Issue", + "credits": "Credits", + "creditsDesc1": "👋 Jan is built with ❤️ by the Menlo Research team.", + "creditsDesc2": "Special thanks to our open-source dependencies—especially llama.cpp and Tauri—and to our amazing AI community.", + "appVersion": "App Version", + "dataFolder": { + "appData": "App Data", + "appDataDesc": "Default location for messages and other user data.", + "appLogs": "App Logs", + "appLogsDesc": "View detailed logs of the App." + }, + "others": { + "spellCheck": "Spell Check", + "spellCheckDesc": "Enable spell check for your threads.", + "resetFactory": "Reset To Factory Settings", + "resetFactoryDesc": "Restore application to its initial state, erasing all models and chat history. This action is irreversible and recommended only if the application is corrupted." + }, + "shortcuts": { + "application": "Application", + "newChat": "New Chat", + "newChatDesc": "Create a new chat.", + "toggleSidebar": "Toggle Sidebar", + "toggleSidebarDesc": "Show or hide the sidebar.", + "zoomIn": "Zoom In", + "zoomInDesc": "Increase the zoom level.", + "zoomOut": "Zoom Out", + "zoomOutDesc": "Decrease the zoom level.", + "chat": "Chat", + "sendMessage": "Send Message", + "sendMessageDesc": "Send the current message.", + "enter": "Enter", + "newLine": "New Line", + "newLineDesc": "Insert a new line.", + "shiftEnter": "Shift + Enter", + "navigation": "Navigation", + "goToSettings": "Go to Settings", + "goToSettingsDesc": "Open settings." + }, + "appearance": { + "title": "Appearance", + "theme": "Theme", + "themeDesc": "Match the OS theme.", + "fontSize": "Font Size", + "fontSizeDesc": "Adjust the app's font size.", + "windowBackground": "Window Background", + "windowBackgroundDesc": "Set the app window's background color.", + "appMainView": "App Main View", + "appMainViewDesc": "Set the main content area's background color.", + "primary": "Primary", + "primaryDesc": "Set the primary color for UI components.", + "accent": "Accent", + "accentDesc": "Set the accent color for UI highlights.", + "destructive": "Destructive", + "destructiveDesc": "Set the color for destructive actions.", + "resetToDefault": "Reset to Default", + "resetToDefaultDesc": "Reset all appearance settings to default.", + "resetAppearanceSuccess": "Appearance reset successfully", + "resetAppearanceSuccessDesc": "All appearance settings have been restored to default.", + "chatWidth": "Chat Width", + "chatWidthDesc": "Customize the width of the chat view.", + "tokenCounterCompact": "Compact Token Counter", + "tokenCounterCompactDesc": "Show token counter inside chat input. When disabled, token counter appears below the input.", + "codeBlockTitle": "Code Block", + "codeBlockDesc": "Choose a syntax highlighting style.", + "showLineNumbers": "Show Line Numbers", + "showLineNumbersDesc": "Display line numbers in code blocks.", + "resetCodeBlockStyle": "Reset Code Block Style", + "resetCodeBlockStyleDesc": "Reset code block style to default.", + "resetCodeBlockSuccess": "Code block style reset successfully", + "resetCodeBlockSuccessDesc": "Code block style has been restored to default." + }, + "hardware": { + "os": "Operating System", + "name": "Name", + "version": "Version", + "cpu": "CPU", + "model": "Model", + "architecture": "Architecture", + "cores": "Cores", + "instructions": "Instructions", + "usage": "Usage", + "memory": "Memory", + "totalRam": "Total RAM", + "availableRam": "Available RAM", + "vulkan": "Vulkan", + "enableVulkan": "Enable Vulkan", + "enableVulkanDesc": "Use Vulkan API for GPU acceleration. Do not enable Vulkan if you have an NVIDIA GPU as it may cause compatibility issues.", + "gpus": "GPUs", + "noGpus": "No GPUs detected", + "vram": "VRAM", + "freeOf": "free of", + "driverVersion": "Driver Version", + "computeCapability": "Compute Capability", + "systemMonitor": "System Monitor" + }, + "httpsProxy": { + "proxy": "Proxy", + "proxyUrl": "Proxy URL", + "proxyUrlDesc": "The URL and port of your proxy server.", + "proxyUrlPlaceholder": "http://proxy.example.com:8080", + "authentication": "Authentication", + "authenticationDesc": "Credentials for the proxy server, if required.", + "username": "Username", + "password": "Password", + "noProxy": "No Proxy", + "noProxyDesc": "A comma-separated list of hosts to bypass the proxy.", + "noProxyPlaceholder": "localhost,127.0.0.1,.local", + "sslVerification": "SSL Verification", + "ignoreSsl": "Ignore SSL Certificates", + "ignoreSslDesc": "Allow self-signed or unverified certificates. This may be required for some proxies but reduces security. Only enable if you trust your proxy.", + "proxySsl": "Proxy SSL", + "proxySslDesc": "Validate the SSL certificate when connecting to the proxy.", + "proxyHostSsl": "Proxy Host SSL", + "proxyHostSslDesc": "Validate the SSL certificate of the proxy's host.", + "peerSsl": "Peer SSL", + "peerSslDesc": "Validate the SSL certificates of peer connections.", + "hostSsl": "Host SSL", + "hostSslDesc": "Validate the SSL certificates of destination hosts." + }, + "localApiServer": { + "title": "Local API Server", + "description": "Run an OpenAI-compatible server locally.", + "startServer": "Start Server", + "loadingModel": "Loading Model", + "startingServer": "Starting Server", + "stopServer": "Stop Server", + "serverLogs": "Server Logs", + "serverLogsDesc": "View detailed logs of the local API server.", + "openLogs": "Open Logs", + "swaggerDocs": "API Documentation", + "swaggerDocsDesc": "View interactive API documentation (Swagger UI).", + "openDocs": "Open Docs", + "startupConfiguration": "Startup Configuration", + "runOnStartup": "Auto start", + "runOnStartupDesc": "Automatically start the Local API Server when the application launches. Uses last used model, or picks the first available model if unavailable.", + "serverConfiguration": "Server Configuration", + "serverHost": "Server Host", + "serverHostDesc": "Network address for the server.", + "serverPort": "Server Port", + "serverPortDesc": "Port number for the API server.", + "apiPrefix": "API Prefix", + "apiPrefixDesc": "Path prefix for API endpoints.", + "apiKey": "API Key", + "apiKeyDesc": "Authenticate requests with an API key.", + "trustedHosts": "Trusted Hosts", + "trustedHostsDesc": "Hosts allowed to access the server, separated by commas.", + "advancedSettings": "Advanced Settings", + "cors": "Cross-Origin Resource Sharing (CORS)", + "corsDesc": "Allow cross-origin requests to the API server.", + "verboseLogs": "Verbose Server Logs", + "verboseLogsDesc": "Enable detailed server logs for debugging.", + "proxyTimeout": "Request timeout", + "proxyTimeoutDesc": "Time to wait for a response from the local model, seconds." + }, + "privacy": { + "analytics": "Analytics", + "helpUsImprove": "Help us improve", + "helpUsImproveDesc": "To help us improve Jan, you can share anonymous data like feature usage and user counts. We never collect your chats or personal information.", + "privacyPolicy": "You have full control over your data. Learn more in our Privacy Policy.", + "analyticsDesc": "To improve Jan, we need to understand how it's used—but only with your help. You can change this setting anytime.", + "privacyPromises": "Your choice here won't change our core privacy promises:", + "promise1": "Your conversations stay private and on your device", + "promise2": "We never collect your personal information or chat content", + "promise3": "All data sharing is anonymous and aggregated", + "promise4": "You can opt out anytime without losing functionality", + "promise5": "We're transparent about what we collect and why" + }, + "general": { + "showInFinder": "Show in Finder", + "showInFileExplorer": "Show in File Explorer", + "openContainingFolder": "Open Containing Folder", + "failedToRelocateDataFolder": "Failed to relocate data folder", + "couldNotRelocateToRoot": "Cannot relocate data folder to root directory. Please choose another location.", + "couldNotResetRootDirectory": "Cannot reset data folder when it's set to a root directory. Please delete the data folder manually.", + "failedToRelocateDataFolderDesc": "Failed to relocate data folder. Please try again.", + "devVersion": "Development version detected", + "noUpdateAvailable": "You're running the latest version", + "updateError": "Failed to check for updates", + "appVersion": "App Version", + "checkForUpdates": "Check for Updates", + "checkForUpdatesDesc": "Check if a newer version of Jan is available.", + "checkingForUpdates": "Checking for updates...", + "copied": "Copied", + "copyPath": "Copy Path", + "changeLocation": "Change Location", + "openLogs": "Open Logs", + "revealLogs": "Reveal Logs", + "factoryResetTitle": "Reset to Factory Settings", + "factoryResetDesc": "This will reset all app settings to their defaults. This can't be undone. We only recommend this if the app is corrupted.", + "cancel": "Cancel", + "reset": "Reset", + "huggingfaceToken": "HuggingFace Token", + "huggingfaceTokenDesc": "Your HuggingFace API token for accessing models.", + "resources": "Resources", + "documentation": "Documentation", + "documentationDesc": "Learn how to use Jan and explore its features.", + "viewDocs": "View Docs", + "releaseNotes": "Release Notes", + "releaseNotesDesc": "See what's new in the latest version of Jan.", + "viewReleases": "View Releases", + "community": "Community", + "github": "GitHub", + "githubDesc": "Contribute to Jan's development.", + "discord": "Discord", + "discordDesc": "Join our community for support and discussions.", + "support": "Support", + "reportAnIssue": "Report an Issue", + "reportAnIssueDesc": "Found a bug? Help us out by filing an issue on GitHub.", + "reportIssue": "Report Issue", + "credits": "Credits", + "creditsDesc1": "👋 Jan is built with ❤️ by the Menlo Research team.", + "creditsDesc2": "Special thanks to our open-source dependencies—especially llama.cpp and Tauri—and to our amazing AI community." + }, + "extensions": { + "title": "Extensions" + }, + "dialogs": { + "changeDataFolder": { + "title": "Change Data Folder Location", + "description": "Are you sure you want to change the data folder location? This will move all your data to the new location and restart the application.", + "currentLocation": "Current Location:", + "newLocation": "New Location:", + "cancel": "Cancel", + "changeLocation": "Change Location" + } + }, + "backendUpdater": { + "newBackendVersion": "New Llamacpp Version {{version}}", + "backendUpdateAvailable": "Llamacpp Update Available", + "remindMeLater": "Remind Me Later", + "updating": "Updating...", + "updateNow": "Update Now", + "updateSuccess": "Llamacpp updated successfully", + "updateError": "Failed to update Llamacpp" + }, + "backendInstallSuccess": "Backend installed successfully", + "backendInstallError": "Failed to install backend" +} diff --git a/web-app/src/locales/cs/setup.json b/web-app/src/locales/cs/setup.json new file mode 100644 index 0000000000..ea48f5962d --- /dev/null +++ b/web-app/src/locales/cs/setup.json @@ -0,0 +1,6 @@ +{ + "welcome": "Welcome to Jan", + "description": "To get started, you'll need to either download a local AI model or connect to a cloud model using an API key", + "localModel": "Set up local model", + "remoteProvider": "Set up remote provider" +} \ No newline at end of file diff --git a/web-app/src/locales/cs/system-monitor.json b/web-app/src/locales/cs/system-monitor.json new file mode 100644 index 0000000000..7fa56678c2 --- /dev/null +++ b/web-app/src/locales/cs/system-monitor.json @@ -0,0 +1,28 @@ +{ + "title": "System Monitor", + "cpuUsage": "CPU Usage", + "model": "Model", + "cores": "Cores", + "architecture": "Architecture", + "currentUsage": "Current Usage", + "memoryUsage": "Memory Usage", + "totalRam": "Total RAM", + "availableRam": "Available RAM", + "usedRam": "Used RAM", + "runningModels": "Running Models", + "noRunningModels": "No models are currently running", + "provider": "Provider", + "uptime": "Uptime", + "actions": "Actions", + "stop": "Stop", + "activeGpus": "Active GPUs", + "noGpus": "No GPUs detected", + "noActiveGpus": "No active GPUs. All GPUs are currently disabled.", + "vramUsage": "VRAM Usage", + "driverVersion": "Driver Version:", + "computeCapability": "Compute Capability:", + "active": "Active", + "performance": "Performance", + "resources": "Resources", + "refresh": "Refresh" +} \ No newline at end of file diff --git a/web-app/src/locales/cs/tool-approval.json b/web-app/src/locales/cs/tool-approval.json new file mode 100644 index 0000000000..2d0c8b549e --- /dev/null +++ b/web-app/src/locales/cs/tool-approval.json @@ -0,0 +1,12 @@ +{ + "title": "Tool Call Request", + "description": "The assistant wants to use the tool: {{toolName}}", + "securityNotice": "Security Notice: Malicious tools or conversation content could potentially trick the assistant into attempting harmful actions. Review each tool call carefully before approving.", + "deny": "Deny", + "allowOnce": "Allow Once", + "alwaysAllow": "Allow in thread", + "permissions": "Permissions", + "approve": "Approve", + "reject": "Reject", + "parameters": "Tool Parameters" +} diff --git a/web-app/src/locales/cs/tools.json b/web-app/src/locales/cs/tools.json new file mode 100644 index 0000000000..a0f236ff05 --- /dev/null +++ b/web-app/src/locales/cs/tools.json @@ -0,0 +1,12 @@ +{ + "toolApproval": { + "title": "Tool Approval Required", + "description": "The assistant wants to use", + "securityNotice": "Malicious tools or conversation content could potentially trick the assistant into attempting harmful actions. Review each tool call carefully before approving.", + "deny": "Deny", + "allowOnce": "Allow Once", + "alwaysAllow": "Allow in thread", + "parameters": "Tool Parameters", + "permissionScope": "Permissions granted apply only to this conversation." + } +} diff --git a/web-app/src/locales/cs/updater.json b/web-app/src/locales/cs/updater.json new file mode 100644 index 0000000000..f667a79f9d --- /dev/null +++ b/web-app/src/locales/cs/updater.json @@ -0,0 +1,10 @@ +{ + "newVersion": "New Version {{version}}", + "updateAvailable": "Update Available", + "nightlyBuild": "Nightly Build", + "showReleaseNotes": "Show Release Notes", + "hideReleaseNotes": "Hide Release Notes", + "remindMeLater": "Remind Me Later", + "downloading": "Downloading...", + "updateNow": "Update Now" +} \ No newline at end of file diff --git a/web-app/src/locales/de-DE/chat.json b/web-app/src/locales/de-DE/chat.json index f0dfa0b820..d76ceeca49 100644 --- a/web-app/src/locales/de-DE/chat.json +++ b/web-app/src/locales/de-DE/chat.json @@ -1,6 +1,8 @@ { "welcome": "Hi, wie geht es Dir?", "description": "Wie kann ich Dir heute helfen?", + "temporaryChat": "Temporärer Chat", + "temporaryChatDescription": "Starte ein temporäres Gespräch, das nicht in deinem Chatverlauf gespeichert wird.", "status": { "empty": "Keine Chats gefunden" }, diff --git a/web-app/src/locales/de-DE/common.json b/web-app/src/locales/de-DE/common.json index 409cc062cd..a158719cc0 100644 --- a/web-app/src/locales/de-DE/common.json +++ b/web-app/src/locales/de-DE/common.json @@ -84,6 +84,8 @@ "selectAModel": "Wähle ein Modell", "noToolsAvailable": "Keine Werkzeuge verfügbar", "noModelsFoundFor": "Keine Modelle gefunden zu \"{{searchValue}}\"", + "failedToLoadModels": "Modelle konnten nicht geladen werden", + "noModels": "Keine Modelle gefunden", "customAvatar": "Benutzerdefinierter Avatar", "editAssistant": "Assistenten bearbeiten", "jan": "Jan", @@ -123,6 +125,10 @@ "error": "Fehler", "success": "Erfolg", "warning": "Warnung", + "conversationNotAvailable": "Konversation nicht verfügbar", + "conversationNotAvailableDescription": "Die Konversation, auf die du zugreifen möchtest, ist nicht verfügbar oder wurde gelöscht.", + "temporaryChat": "Temporärer Chat", + "temporaryChatTooltip": "Temporärer Chat erscheint nicht in deinem Verlauf", "noResultsFoundDesc": "Wir konnten keinen Chat finden, welcher mit deiner Suche übereinstimmt. Versuche andere Schlüsselworte.", "searchModels": "Suche Modelle...", "searchStyles": "Suche Styles...", @@ -248,6 +254,11 @@ "projectNotFoundDesc": "Das gesuchte Projekt existiert nicht oder wurde gelöscht.", "deleteProjectDialog": { "title": "Projekt löschen", + "permanentDelete": "Dies wird alle Threads permanent löschen.", + "permanentDeleteWarning": "Diese Aktion wird ALLE Threads innerhalb des Projekts permanent löschen!", + "deleteEmptyProject": "Diese Aktion wird das Projekt \"{{projectName}}\" löschen.", + "saveThreadsAdvice": "Um Threads zu speichern, verschiebe sie zu deiner Threadliste oder zu einem anderen Projekt, bevor du löschst.", + "starredWarning": "Du hast noch favorisierte Threads innerhalb des Projekts.", "description": "Sind Sie sicher, dass Sie dieses Projekt löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "deleteButton": "Löschen", "successWithName": "Projekt \"{{projectName}}\" erfolgreich gelöscht", diff --git a/web-app/src/locales/de-DE/settings.json b/web-app/src/locales/de-DE/settings.json index cefc27f29c..c498249182 100644 --- a/web-app/src/locales/de-DE/settings.json +++ b/web-app/src/locales/de-DE/settings.json @@ -212,6 +212,8 @@ "showInFileExplorer": "Zeige im Datei Explorer", "openContainingFolder": "Enthaltenen Ordner öffnen", "failedToRelocateDataFolder": "Datenordner konnte nicht verschoben werden", + "couldNotRelocateToRoot": "Datenordner kann nicht in das Root-Verzeichnis verschoben werden. Bitte wähle einen anderen Speicherort.", + "couldNotResetRootDirectory": "Datenordner kann nicht zurückgesetzt werden, wenn er auf ein Root-Verzeichnis gesetzt ist. Bitte lösche den Datenordner manuell.", "failedToRelocateDataFolderDesc": "Der Datenordner konnte nicht verschoben werden. Bitte versuche es erneut.", "devVersion": "Entwicklungsversion erkannt", "noUpdateAvailable": "Du verwendest die neueste Version", @@ -229,6 +231,8 @@ "factoryResetDesc": "Dadurch werden alle App-Einstellungen auf die Standardeinstellungen zurückgesetzt. Dieser Vorgang kann nicht rückgängig gemacht werden. Wir empfehlen dies nur, wenn die App beschädigt ist.", "cancel": "Abbrechen", "reset": "Zurücksetzen", + "huggingfaceToken": "HuggingFace Token", + "huggingfaceTokenDesc": "Dein HuggingFace API-Token für den Zugriff auf Modelle.", "resources": "Ressourcen", "documentation": "Dokumentation", "documentationDesc": "Erfahre, wie Du Jan verwenden und seine Funktionen erkunden kannst.", @@ -270,5 +274,7 @@ "updateNow": "Jetzt aktualisieren", "updateSuccess": "Llamacpp erfolgreich aktualisiert", "updateError": "Fehler beim Aktualisieren von Llamacpp" - } + }, + "backendInstallSuccess": "Backend erfolgreich installiert", + "backendInstallError": "Backend-Installation fehlgeschlagen" } diff --git a/web-app/src/locales/id/chat.json b/web-app/src/locales/id/chat.json index 594ddaa35f..7c9bd6b8b9 100644 --- a/web-app/src/locales/id/chat.json +++ b/web-app/src/locales/id/chat.json @@ -1,6 +1,8 @@ { "welcome": "Hai, apa kabar?", "description": "Ada yang bisa saya bantu hari ini?", + "temporaryChat": "Obrolan Sementara", + "temporaryChatDescription": "Mulai percakapan sementara yang tidak akan disimpan ke riwayat obrolan Anda.", "status": { "empty": "Tidak Ada Obrolan Ditemukan" }, diff --git a/web-app/src/locales/id/common.json b/web-app/src/locales/id/common.json index ef2523a550..eaabc1ab63 100644 --- a/web-app/src/locales/id/common.json +++ b/web-app/src/locales/id/common.json @@ -84,6 +84,8 @@ "selectAModel": "Pilih model", "noToolsAvailable": "Tidak ada alat yang tersedia", "noModelsFoundFor": "Tidak ada model yang ditemukan untuk \"{{searchValue}}\"", + "failedToLoadModels": "Gagal memuat model", + "noModels": "Tidak ada model yang ditemukan", "customAvatar": "Avatar kustom", "editAssistant": "Edit Asisten", "jan": "Jan", @@ -123,6 +125,10 @@ "error": "Kesalahan", "success": "Sukses", "warning": "Peringatan", + "conversationNotAvailable": "Percakapan tidak tersedia", + "conversationNotAvailableDescription": "Percakapan yang Anda coba akses tidak tersedia atau telah dihapus.", + "temporaryChat": "Obrolan Sementara", + "temporaryChatTooltip": "Obrolan sementara tidak akan muncul di riwayat Anda", "noResultsFoundDesc": "Kami tidak dapat menemukan obrolan yang cocok dengan pencarian Anda. Coba kata kunci yang berbeda.", "searchModels": "Cari model...", "searchStyles": "Cari gaya...", @@ -330,6 +336,11 @@ "projectNotFoundDesc": "Proyek yang Anda cari tidak ada atau telah dihapus.", "deleteProjectDialog": { "title": "Hapus Proyek", + "permanentDelete": "Ini akan menghapus semua utas secara permanen.", + "permanentDeleteWarning": "Tindakan ini akan menghapus SEMUA utas dalam proyek secara permanen!", + "deleteEmptyProject": "Tindakan ini akan menghapus proyek \"{{projectName}}\".", + "saveThreadsAdvice": "Untuk menyimpan utas, pindahkan ke daftar utas Anda atau proyek lain sebelum menghapus.", + "starredWarning": "Anda masih memiliki utas yang dibintangi dalam proyek.", "description": "Apakah Anda yakin ingin menghapus proyek ini? Tindakan ini tidak dapat dibatalkan.", "deleteButton": "Hapus", "successWithName": "Proyek \"{{projectName}}\" berhasil dihapus", diff --git a/web-app/src/locales/id/settings.json b/web-app/src/locales/id/settings.json index 3b10b610f1..5ac30fafa6 100644 --- a/web-app/src/locales/id/settings.json +++ b/web-app/src/locales/id/settings.json @@ -100,6 +100,8 @@ "resetInterfaceSuccessDesc": "Semua pengaturan tampilan telah dikembalikan ke default.", "chatWidth": "Lebar Obrolan", "chatWidthDesc": "Sesuaikan lebar tampilan obrolan.", + "tokenCounterCompact": "Penghitung Token Ringkas", + "tokenCounterCompactDesc": "Tampilkan penghitung token di dalam input obrolan. Saat dinonaktifkan, penghitung token muncul di bawah input.", "codeBlockTitle": "Blok Kode", "codeBlockDesc": "Pilih gaya penyorotan sintaks.", "showLineNumbers": "Tampilkan Nomor Baris", @@ -229,6 +231,8 @@ "factoryResetDesc": "Ini akan mengatur ulang semua pengaturan aplikasi ke default. Tindakan ini tidak dapat dibatalkan. Kami hanya merekomendasikan ini jika aplikasi rusak.", "cancel": "Batal", "reset": "Setel Ulang", + "huggingfaceToken": "Token HuggingFace", + "huggingfaceTokenDesc": "Token API HuggingFace Anda untuk mengakses model.", "resources": "Sumber Daya", "documentation": "Dokumentasi", "documentationDesc": "Pelajari cara menggunakan Jan dan jelajahi fitur-fiturnya.", @@ -270,5 +274,7 @@ "updateNow": "Perbarui Sekarang", "updateSuccess": "Llamacpp berhasil diperbarui", "updateError": "Gagal memperbarui Llamacpp" - } + }, + "backendInstallSuccess": "Backend berhasil diinstal", + "backendInstallError": "Gagal menginstal backend" } diff --git a/web-app/src/locales/pl/chat.json b/web-app/src/locales/pl/chat.json index 72a7dd2350..baa8b1407d 100644 --- a/web-app/src/locales/pl/chat.json +++ b/web-app/src/locales/pl/chat.json @@ -6,5 +6,7 @@ }, "sendMessage": "Wyślij Wiadomość", "newConversation": "Nowa Rozmowa", - "clearHistory": "Wyczyść Historię" + "clearHistory": "Wyczyść Historię", + "temporaryChat": "Tymczasowy Czat", + "temporaryChatDescription": "Rozpocznij tymczasową rozmowę, która nie zostanie zapisana w historii czatów." } diff --git a/web-app/src/locales/pl/common.json b/web-app/src/locales/pl/common.json index cf929e0816..7c232417d4 100644 --- a/web-app/src/locales/pl/common.json +++ b/web-app/src/locales/pl/common.json @@ -249,6 +249,11 @@ "deleteProjectDialog": { "title": "Usuń Projekt", "description": "Na pewno chcesz usunąć ten projekt? Tej operacji nie można cofnąć.", + "permanentDelete": "To spowoduje trwałe usunięcie wszystkich wątków.", + "permanentDeleteWarning": "Ta operacja spowoduje trwałe usunięcie WSZYSTKICH wątków w projekcie!", + "deleteEmptyProject": "Ta operacja usunie projekt \"{{projectName}}\".", + "saveThreadsAdvice": "Aby zapisać wątki, przenieś je do listy wątków lub innego projektu przed usunięciem.", + "starredWarning": "Nadal masz oznaczone gwiazdką wątki w projekcie.", "deleteButton": "Usuń", "successWithName": "Projekt \"{{projectName}}\" został pomyślnie usunięty", "successWithoutName": "Projekt został pomyślnie usunięty", @@ -331,7 +336,41 @@ }, "downloadAndVerificationComplete": { "title": "Pobieranie Ukończone", - "description": "Model \"{{item}}\" został pobrany i pomyślnie zweryfikowany" + "description": "Model \"{{item}}\" został pobrany i pomyślnie zweryfikowany" + }, + "projectCreated": { + "title": "Projekt Utworzony", + "description": "Projekt \"{{projectName}}\" został pomyślnie utworzony" + }, + "projectRenamed": { + "title": "Projekt Zmieniony", + "description": "Projekt zmieniono z \"{{oldName}}\" na \"{{newName}}\"" + }, + "projectDeleted": { + "title": "Projekt Usunięty", + "description": "Projekt \"{{projectName}}\" został pomyślnie usunięty" + }, + "projectAlreadyExists": { + "title": "Projekt Już Istnieje", + "description": "Projekt \"{{projectName}}\" już istnieje" + }, + "projectDeleteFailed": { + "title": "Błąd Usuwania", + "description": "Nie udało się usunąć projektu. Spróbuj ponownie." + }, + "threadAssignedToProject": { + "title": "Wątek Przypisany", + "description": "Wątek został pomyślnie przypisany do \"{{projectName}}\"" + }, + "threadRemovedFromProject": { + "title": "Wątek Usunięty", + "description": "Wątek został pomyślnie usunięty z \"{{projectName}}\"" } - } + }, + "failedToLoadModels": "Nie udało się wczytać modeli", + "noModels": "Nie znaleziono modeli", + "conversationNotAvailable": "Rozmowa niedostępna", + "conversationNotAvailableDescription": "Rozmowa, do której próbujesz uzyskać dostęp, nie jest dostępna lub została usunięta.", + "temporaryChat": "Tymczasowy Czat", + "temporaryChatTooltip": "Tymczasowy czat nie pojawi się w Twojej historii" } diff --git a/web-app/src/locales/pl/settings.json b/web-app/src/locales/pl/settings.json index 794677f9aa..10d847b968 100644 --- a/web-app/src/locales/pl/settings.json +++ b/web-app/src/locales/pl/settings.json @@ -107,7 +107,9 @@ "resetCodeBlockStyle": "Przywróć Domyślny Styl Bloków Kodu", "resetCodeBlockStyleDesc": "Przywraca domyślny styl bloku kodu.", "resetCodeBlockSuccess": "Pomyślnie Przywrócono Styl Bloku Kodu", - "resetCodeBlockSuccessDesc": "Styl bloku kodu został przywrócony do ustawień domyślnych." + "resetCodeBlockSuccessDesc": "Styl bloku kodu został przywrócony do ustawień domyślnych.", + "tokenCounterCompact": "Kompaktowy Licznik Tokenów", + "tokenCounterCompactDesc": "Pokaż licznik tokenów wewnątrz pola wprowadzania czatu. Po wyłączeniu, licznik tokenów pojawia się poniżej pola wprowadzania." }, "hardware": { "os": "System Operacyjny", @@ -272,5 +274,7 @@ "updateNow": "Aktualizuj teraz", "updateSuccess": "Llamacpp został pomyślnie zaktualizowany", "updateError": "Nie udało się zaktualizować Llamacpp" - } + }, + "backendInstallSuccess": "Backend został pomyślnie zainstalowany", + "backendInstallError": "Nie udało się zainstalować backendu" } diff --git a/web-app/src/locales/vn/chat.json b/web-app/src/locales/vn/chat.json index fc524154e5..25639e64d3 100644 --- a/web-app/src/locales/vn/chat.json +++ b/web-app/src/locales/vn/chat.json @@ -1,6 +1,8 @@ { "welcome": "Chào bạn, bạn khỏe không?", "description": "Hôm nay tôi có thể giúp gì cho bạn?", + "temporaryChat": "Trò chuyện tạm thời", + "temporaryChatDescription": "Bắt đầu một cuộc trò chuyện tạm thời sẽ không được lưu vào lịch sử trò chuyện của bạn.", "status": { "empty": "Không tìm thấy cuộc trò chuyện nào" }, diff --git a/web-app/src/locales/vn/common.json b/web-app/src/locales/vn/common.json index 2b4b1ce346..2630fdecf9 100644 --- a/web-app/src/locales/vn/common.json +++ b/web-app/src/locales/vn/common.json @@ -84,6 +84,13 @@ "selectAModel": "Chọn một mô hình", "noToolsAvailable": "Không có công cụ nào", "noModelsFoundFor": "Không tìm thấy mô hình nào cho \"{{searchValue}}\"", + "failedToLoadModels": "Không thể tải mô hình", + "noModels": "Không tìm thấy mô hình nào", + "conversationNotAvailable": "Cuộc trò chuyện không khả dụng", + "conversationNotAvailableDescription": "Cuộc trò chuyện bạn đang cố gắng truy cập không khả dụng hoặc đã bị xóa.", + "temporaryChat": "Trò chuyện tạm thời", + "temporaryChatTooltip": "Trò chuyện tạm thời sẽ không xuất hiện trong lịch sử của bạn", + "generateAiResponse": "Tạo phản hồi AI", "customAvatar": "Ảnh đại diện tùy chỉnh", "editAssistant": "Chỉnh sửa Trợ lý", "jan": "Jan", @@ -172,6 +179,13 @@ "embeddings": "Nhúng", "notAvailable": "Chưa có" }, + "outOfContextError": { + "truncateInput": "Cắt bớt đầu vào", + "title": "Lỗi hết ngữ cảnh", + "description": "Cuộc trò chuyện này đang đạt đến giới hạn bộ nhớ của AI, giống như một bảng trắng đang được lấp đầy. Chúng ta có thể mở rộng cửa sổ bộ nhớ (gọi là kích thước ngữ cảnh) để nó nhớ nhiều hơn, nhưng có thể sử dụng nhiều bộ nhớ máy tính của bạn hơn. Chúng ta cũng có thể cắt bớt đầu vào, có nghĩa là nó sẽ quên một số lịch sử trò chuyện để nhường chỗ cho các tin nhắn mới.", + "increaseContextSizeDescription": "Bạn có muốn tăng kích thước ngữ cảnh không?", + "increaseContextSize": "Tăng kích thước ngữ cảnh" + }, "toolApproval": { "title": "Yêu cầu quyền truy cập công cụ", "description": "Trợ lý muốn sử dụng {{toolName}}", @@ -203,6 +217,7 @@ "projects": { "title": "Dự án", "addProject": "Thêm dự án", + "createNewProject": "Tạo dự án mới", "editProject": "Chỉnh sửa dự án", "deleteProject": "Xóa dự án", "projectName": "Tên dự án", @@ -227,7 +242,31 @@ "noProjectsAvailable": "Không có dự án nào", "searchProjects": "Tìm kiếm dự án...", "noProjectsFound": "Không tìm thấy dự án nào", - "tryDifferentSearch": "Thử từ khóa tìm kiếm khác" + "tryDifferentSearch": "Thử từ khóa tìm kiếm khác", + "deleteProjectDialog": { + "title": "Xóa dự án", + "permanentDelete": "Điều này sẽ xóa vĩnh viễn tất cả các chủ đề.", + "permanentDeleteWarning": "Hành động này sẽ xóa vĩnh viễn TẤT CẢ các chủ đề trong dự án!", + "deleteEmptyProject": "Hành động này sẽ xóa dự án \"{{projectName}}\".", + "saveThreadsAdvice": "Để lưu các chủ đề, hãy di chuyển chúng vào danh sách chủ đề của bạn hoặc dự án khác trước khi xóa.", + "starredWarning": "Bạn vẫn có các chủ đề đã gắn dấu sao trong dự án.", + "deleteButton": "Xóa", + "successWithName": "Dự án \"{{projectName}}\" đã được xóa thành công", + "successWithoutName": "Dự án đã được xóa thành công", + "error": "Không thể xóa dự án. Vui lòng thử lại.", + "ariaLabel": "Xóa {{projectName}}" + }, + "addProjectDialog": { + "createTitle": "Tạo dự án mới", + "editTitle": "Chỉnh sửa dự án", + "nameLabel": "Tên dự án", + "namePlaceholder": "Nhập tên dự án...", + "createButton": "Tạo", + "updateButton": "Cập nhật", + "alreadyExists": "Dự án \"{{projectName}}\" đã tồn tại", + "createSuccess": "Dự án \"{{projectName}}\" đã được tạo thành công", + "renameSuccess": "Dự án đã được đổi tên từ \"{{oldName}}\" thành \"{{newName}}\"" + } }, "dialogs": { "changeDataFolder": { @@ -304,6 +343,34 @@ "downloadAndVerificationComplete": { "title": "Tải xuống hoàn tất", "description": "Mô hình \"{{item}}\" đã được tải xuống và xác minh thành công" + }, + "projectCreated": { + "title": "Dự án đã được tạo", + "description": "Dự án \"{{projectName}}\" đã được tạo thành công" + }, + "projectRenamed": { + "title": "Dự án đã được đổi tên", + "description": "Dự án đã được đổi tên từ \"{{oldName}}\" thành \"{{newName}}\"" + }, + "projectDeleted": { + "title": "Dự án đã được xóa", + "description": "Dự án \"{{projectName}}\" đã được xóa thành công" + }, + "projectAlreadyExists": { + "title": "Dự án đã tồn tại", + "description": "Dự án \"{{projectName}}\" đã tồn tại" + }, + "projectDeleteFailed": { + "title": "Xóa thất bại", + "description": "Không thể xóa dự án. Vui lòng thử lại." + }, + "threadAssignedToProject": { + "title": "Chủ đề đã được gán", + "description": "Chủ đề đã được gán cho \"{{projectName}}\" thành công" + }, + "threadRemovedFromProject": { + "title": "Chủ đề đã được xóa", + "description": "Chủ đề đã được xóa khỏi \"{{projectName}}\" thành công" } } } diff --git a/web-app/src/locales/vn/settings.json b/web-app/src/locales/vn/settings.json index 39c9749577..92a952aef0 100644 --- a/web-app/src/locales/vn/settings.json +++ b/web-app/src/locales/vn/settings.json @@ -249,7 +249,9 @@ "reportIssue": "Báo cáo Vấn đề", "credits": "Ghi công", "creditsDesc1": "Jan được xây dựng với ❤️ bởi Đội Menlo.", - "creditsDesc2": "Cảm ơn đặc biệt đến các phụ thuộc mã nguồn mở của chúng tôi—đặc biệt là llama.cpp và Tauri—và đến cộng đồng AI tuyệt vời của chúng tôi." + "creditsDesc2": "Cảm ơn đặc biệt đến các phụ thuộc mã nguồn mở của chúng tôi—đặc biệt là llama.cpp và Tauri—và đến cộng đồng AI tuyệt vời của chúng tôi.", + "huggingfaceToken": "Token HuggingFace", + "huggingfaceTokenDesc": "Token API HuggingFace của bạn để truy cập các mô hình." }, "extensions": { "title": "Tiện ích mở rộng" @@ -272,5 +274,7 @@ "updateNow": "Cập nhật ngay", "updateSuccess": "Cập nhật Llamacpp thành công", "updateError": "Không thể cập nhật Llamacpp" - } + }, + "backendInstallSuccess": "Backend đã được cài đặt thành công", + "backendInstallError": "Không thể cài đặt backend" } diff --git a/web-app/src/locales/zh-CN/chat.json b/web-app/src/locales/zh-CN/chat.json index c0c9c2e378..83564b385b 100644 --- a/web-app/src/locales/zh-CN/chat.json +++ b/web-app/src/locales/zh-CN/chat.json @@ -6,5 +6,7 @@ }, "sendMessage": "发送消息", "newConversation": "新对话", - "clearHistory": "清除历史记录" + "clearHistory": "清除历史记录", + "temporaryChat": "临时聊天", + "temporaryChatDescription": "开始一个临时对话,不会保存到您的聊天历史记录中。" } \ No newline at end of file diff --git a/web-app/src/locales/zh-CN/common.json b/web-app/src/locales/zh-CN/common.json index 66a3588cd1..a4c8c89f5a 100644 --- a/web-app/src/locales/zh-CN/common.json +++ b/web-app/src/locales/zh-CN/common.json @@ -84,7 +84,21 @@ "selectAModel": "选择一个模型", "noToolsAvailable": "无可用工具", "noModelsFoundFor": "未找到“{{searchValue}}”的模型", - "customAvatar": "自定义头像", + "failedToLoadModels": "加载模型失败", + "noModels": "未找到模型", + "conversationNotAvailable": "对话不可用", + "conversationNotAvailableDescription": "您尝试访问的对话不可用或已被删除。", + "temporaryChat": "临时聊天", + "temporaryChatTooltip": "临时聊天不会出现在您的历史记录中", + "generateAiResponse": "生成AI响应", + "outOfContextError": { + "truncateInput": "截断输入", + "title": "上下文错误", + "description": "此聊天正在达到AI的内存限制,就像白板被填满一样。我们可以扩展内存窗口(称为上下文大小),以便它记住更多内容,但这可能会使用更多计算机内存。我们也可以截断输入,这意味着它将忘记一些聊天历史记录以为新消息腾出空间。", + "increaseContextSizeDescription": "您想要增加上下文大小吗?", + "increaseContextSize": "增加上下文大小" + }, + "customAvatar": "自定义头像", "editAssistant": "编辑助手", "jan": "Jan", "metadata": "元数据", @@ -227,7 +241,32 @@ "noProjectsAvailable": "没有可用的项目", "searchProjects": "搜索项目...", "noProjectsFound": "未找到项目", - "tryDifferentSearch": "尝试不同的搜索词" + "tryDifferentSearch": "尝试不同的搜索词", + "createNewProject": "创建新项目", + "deleteProjectDialog": { + "title": "删除项目", + "permanentDelete": "这将永久删除所有线程。", + "permanentDeleteWarning": "此操作将永久删除项目内的所有线程!", + "deleteEmptyProject": "此操作将删除项目\"{{projectName}}\"。", + "saveThreadsAdvice": "要保存线程,请在删除前将它们移动到您的线程列表或另一个项目中。", + "starredWarning": "您在项目中仍有收藏的线程。", + "deleteButton": "删除", + "successWithName": "项目\"{{projectName}}\"删除成功", + "successWithoutName": "项目删除成功", + "error": "删除项目失败。请重试。", + "ariaLabel": "删除{{projectName}}" + }, + "addProjectDialog": { + "createTitle": "创建新项目", + "editTitle": "编辑项目", + "nameLabel": "项目名称", + "namePlaceholder": "输入项目名称...", + "createButton": "创建", + "updateButton": "更新", + "alreadyExists": "项目\"{{projectName}}\"已存在", + "createSuccess": "项目\"{{projectName}}\"创建成功", + "renameSuccess": "项目从\"{{oldName}}\"重命名为\"{{newName}}\"" + } }, "dialogs": { "changeDataFolder": { @@ -304,6 +343,34 @@ "downloadAndVerificationComplete": { "title": "下载完成", "description": "模型 \"{{item}}\" 下载并验证成功" + }, + "projectCreated": { + "title": "项目已创建", + "description": "项目\"{{projectName}}\"创建成功" + }, + "projectRenamed": { + "title": "项目已重命名", + "description": "项目从\"{{oldName}}\"重命名为\"{{newName}}\"" + }, + "projectDeleted": { + "title": "项目已删除", + "description": "项目\"{{projectName}}\"删除成功" + }, + "projectAlreadyExists": { + "title": "项目已存在", + "description": "项目\"{{projectName}}\"已存在" + }, + "projectDeleteFailed": { + "title": "删除失败", + "description": "删除项目失败。请重试。" + }, + "threadAssignedToProject": { + "title": "线程已分配", + "description": "线程已成功分配到\"{{projectName}}\"" + }, + "threadRemovedFromProject": { + "title": "线程已移除", + "description": "线程已成功从\"{{projectName}}\"中移除" } } } diff --git a/web-app/src/locales/zh-CN/settings.json b/web-app/src/locales/zh-CN/settings.json index f3eb70e01a..b591d5d40d 100644 --- a/web-app/src/locales/zh-CN/settings.json +++ b/web-app/src/locales/zh-CN/settings.json @@ -249,7 +249,9 @@ "reportIssue": "报告问题", "credits": "致谢", "creditsDesc1": "Jan 由 Menlo 团队用 ❤️ 构建。", - "creditsDesc2": "特别感谢我们的开源依赖项——尤其是 llama.cpp 和 Tauri——以及我们出色的 AI 社区。" + "creditsDesc2": "特别感谢我们的开源依赖项——尤其是 llama.cpp 和 Tauri——以及我们出色的 AI 社区。", + "huggingfaceToken": "HuggingFace 令牌", + "huggingfaceTokenDesc": "您用于访问模型的 HuggingFace API 令牌。" }, "extensions": { "title": "扩展" @@ -272,5 +274,7 @@ "updateNow": "立即更新", "updateSuccess": "Llamacpp 更新成功", "updateError": "更新 Llamacpp 失败" - } + }, + "backendInstallSuccess": "后端安装成功", + "backendInstallError": "后端安装失败" } diff --git a/web-app/src/locales/zh-TW/chat.json b/web-app/src/locales/zh-TW/chat.json index 62be8fa7ea..245ac1c258 100644 --- a/web-app/src/locales/zh-TW/chat.json +++ b/web-app/src/locales/zh-TW/chat.json @@ -6,5 +6,7 @@ }, "sendMessage": "傳送訊息", "newConversation": "新對話", - "clearHistory": "清除歷史記錄" + "clearHistory": "清除歷史記錄", + "temporaryChat": "臨時聊天", + "temporaryChatDescription": "開始一個不會儲存到聊天歷史記錄的臨時對話。" } \ No newline at end of file diff --git a/web-app/src/locales/zh-TW/common.json b/web-app/src/locales/zh-TW/common.json index 4c1bed6f72..667e688cc6 100644 --- a/web-app/src/locales/zh-TW/common.json +++ b/web-app/src/locales/zh-TW/common.json @@ -84,6 +84,20 @@ "selectAModel": "選擇一個模型", "noToolsAvailable": "沒有可用的工具", "noModelsFoundFor": "找不到符合「{{searchValue}}」的模型", + "failedToLoadModels": "載入模型失敗", + "noModels": "找不到模型", + "conversationNotAvailable": "對話不可用", + "conversationNotAvailableDescription": "您嘗試存取的對話不可用或已被刪除。", + "temporaryChat": "臨時聊天", + "temporaryChatTooltip": "臨時聊天不會出現在您的歷史記錄中", + "generateAiResponse": "產生 AI 回應", + "outOfContextError": { + "truncateInput": "截斷輸入", + "title": "超出上下文錯誤", + "description": "此聊天正在達到 AI 的記憶限制,就像白板被填滿一樣。我們可以擴展記憶視窗(稱為上下文大小),讓它記住更多內容,但可能會使用更多您電腦的記憶體。我們也可以截斷輸入,這意味著它會忘記一些聊天歷史記錄,為新訊息騰出空間。", + "increaseContextSizeDescription": "您想要增加上下文大小嗎?", + "increaseContextSize": "增加上下文大小" + }, "customAvatar": "自訂頭像", "editAssistant": "編輯助理", "jan": "Jan", @@ -227,7 +241,32 @@ "noProjectsAvailable": "沒有可用的專案", "searchProjects": "搜尋專案...", "noProjectsFound": "找不到專案", - "tryDifferentSearch": "嘗試不同的搜尋詞" + "tryDifferentSearch": "嘗試不同的搜尋詞", + "createNewProject": "建立新專案", + "deleteProjectDialog": { + "title": "刪除專案", + "permanentDelete": "這將永久刪除所有執行緒。", + "permanentDeleteWarning": "此操作將永久刪除專案內的所有執行緒!", + "deleteEmptyProject": "此操作將刪除專案「{{projectName}}」。", + "saveThreadsAdvice": "要儲存執行緒,請在刪除前將它們移至您的執行緒清單或另一個專案。", + "starredWarning": "您在專案內仍有已加星號的執行緒。", + "deleteButton": "刪除", + "successWithName": "專案「{{projectName}}」已成功刪除", + "successWithoutName": "專案已成功刪除", + "error": "刪除專案失敗。請再試一次。", + "ariaLabel": "刪除 {{projectName}}" + }, + "addProjectDialog": { + "createTitle": "建立新專案", + "editTitle": "編輯專案", + "nameLabel": "專案名稱", + "namePlaceholder": "輸入專案名稱...", + "createButton": "建立", + "updateButton": "更新", + "alreadyExists": "專案「{{projectName}}」已存在", + "createSuccess": "專案「{{projectName}}」已成功建立", + "renameSuccess": "專案已從「{{oldName}}」重新命名為「{{newName}}」" + } }, "dialogs": { "changeDataFolder": { @@ -304,6 +343,34 @@ "downloadAndVerificationComplete": { "title": "下載完成", "description": "模型 \"{{item}}\" 下載並驗證成功" + }, + "projectCreated": { + "title": "專案已建立", + "description": "專案「{{projectName}}」已成功建立" + }, + "projectRenamed": { + "title": "專案已重新命名", + "description": "專案已從「{{oldName}}」重新命名為「{{newName}}」" + }, + "projectDeleted": { + "title": "專案已刪除", + "description": "專案「{{projectName}}」已成功刪除" + }, + "projectAlreadyExists": { + "title": "專案已存在", + "description": "專案「{{projectName}}」已存在" + }, + "projectDeleteFailed": { + "title": "刪除失敗", + "description": "刪除專案失敗。請再試一次。" + }, + "threadAssignedToProject": { + "title": "執行緒已指派", + "description": "執行緒已成功指派至「{{projectName}}」" + }, + "threadRemovedFromProject": { + "title": "執行緒已移除", + "description": "執行緒已成功從「{{projectName}}」中移除" } } } diff --git a/web-app/src/locales/zh-TW/settings.json b/web-app/src/locales/zh-TW/settings.json index 7d6af845e5..b556578113 100644 --- a/web-app/src/locales/zh-TW/settings.json +++ b/web-app/src/locales/zh-TW/settings.json @@ -107,7 +107,9 @@ "resetCodeBlockStyle": "重設程式碼區塊樣式", "resetCodeBlockStyleDesc": "將程式碼區塊樣式重設為預設值。", "resetCodeBlockSuccess": "程式碼區塊樣式重設成功", - "resetCodeBlockSuccessDesc": "程式碼區塊樣式已還原為預設值。" + "resetCodeBlockSuccessDesc": "程式碼區塊樣式已還原為預設值。", + "tokenCounterCompact": "緊湊型代幣計數器", + "tokenCounterCompactDesc": "在聊天輸入框內顯示代幣計數器。停用時,代幣計數器會顯示在輸入框下方。" }, "hardware": { "os": "作業系統", @@ -247,7 +249,9 @@ "reportIssue": "報告問題", "credits": "致謝", "creditsDesc1": "Jan 由 Menlo 團隊用 ❤️ 構建。", - "creditsDesc2": "特別感謝我們的開源依賴項——尤其是 llama.cpp 和 Tauri——以及我們出色的 AI 社群。" + "creditsDesc2": "特別感謝我們的開源依賴項——尤其是 llama.cpp 和 Tauri——以及我們出色的 AI 社群。", + "huggingfaceToken": "HuggingFace 代幣", + "huggingfaceTokenDesc": "您的 HuggingFace API 代幣,用於存取模型。" }, "extensions": { "title": "擴充功能" @@ -270,5 +274,7 @@ "updateNow": "立即更新", "updateSuccess": "Llamacpp 更新成功", "updateError": "更新 Llamacpp 失敗" - } + }, + "backendInstallSuccess": "後端安裝成功", + "backendInstallError": "後端安裝失敗" } diff --git a/web-app/src/types/app.d.ts b/web-app/src/types/app.d.ts index 4cccaccde9..6115168724 100644 --- a/web-app/src/types/app.d.ts +++ b/web-app/src/types/app.d.ts @@ -1,4 +1,4 @@ -type Language = 'en' | 'id' | 'vn' +type Language = 'en' | 'id' | 'vn' | 'pl' | 'zh-CN' | 'zh-TW' | 'de-DE' | 'cs' interface LogEntry { timestamp: string | number level: 'info' | 'warn' | 'error' | 'debug'