diff --git a/desktop-shared/src/main/resources/i18n/messages.properties b/desktop-shared/src/main/resources/i18n/messages.properties index 2e2bd5da7..08a3dca08 100644 --- a/desktop-shared/src/main/resources/i18n/messages.properties +++ b/desktop-shared/src/main/resources/i18n/messages.properties @@ -31,6 +31,7 @@ menu.view.appearance.system=System menu.view.appearance.light=Light menu.view.appearance.dark=Dark menu.view.fullscreen=Enter Full Screen +menu.view.bookmarks=View Bookmarks menu.terminal=Terminal menu.terminal.new=New Terminal menu.help=Help @@ -39,7 +40,6 @@ menu.help.gettingstarted=Getting Started menu.help.release.notes=Release Notes menu.help.star.github=⭐ Star on GitHub menu.help.discord=💬 Join Discord Community -menu.help.discord=💬 Join Discord Community menu.help.share=🗣 Share Askimo menu.help.share.x=Share on X / Twitter menu.help.share.linkedin=Share on LinkedIn @@ -52,6 +52,7 @@ menu.dev.clear.account.preferences=[Dev] Clear Account Preferences menu.about=About Askimo menu.help.check.updates=Check for Updates... menu.help.diagnostics=System Diagnostics... +menu.help.support.askimo=Support Askimo ⭐ # Common Dialog Buttons dialog.cancel=Cancel @@ -108,6 +109,12 @@ discover.stat.projects=Projects discover.stat.mcp=MCP Servers discover.stat.plans=Plans discover.stat.skills=Skills +discover.customize=Customize +discover.customize.show_token_usage=Show token usage card +discover.tokens.title=Top Models by Token Usage +discover.tokens.total={0} total +discover.tokens.view_details=View details +discover.tokens.empty=No token usage recorded yet. Start chatting to see stats here. discover.explore.title=Explore Features discover.explore.mcp.title=MCP Servers discover.explore.mcp.desc=Extend Askimo with external tools and data sources via the Model Context Protocol. @@ -245,7 +252,6 @@ session.error.removing=Failed to remove session from project. Please try again. # Settings settings.title=Settings -settings.general=General settings.appearance=Appearance settings.appearance.accent=Accent Color settings.appearance.accent.description=Customize a single accent color safely. Askimo applies it to primary UI accents and derives related colors for readability. @@ -317,12 +323,9 @@ settings.skills.add.folder=Add Folder settings.skills.add.folder.name=Folder name settings.advanced=Advanced settings.about=About -settings.model=Model -settings.provider=Provider settings.theme=Theme settings.save=Save settings.cancel=Cancel -settings.provider.change.button=Change settings.model.change.button=Change settings.change.button=Change @@ -333,24 +336,16 @@ theme.dark=Dark theme.dark.description=Always use dark theme theme.system=System theme.system.description=Follow system theme settings -theme.sepia=Sepia -theme.sepia.description=Warm parchment tones, easy on the eyes -theme.ocean=Ocean -theme.ocean.description=Soft sky-blue tones, calm and refreshing -theme.nord=Nord -theme.nord.description=Arctic dark palette, cool and focused -theme.sage=Sage -theme.sage.description=Muted grey-green tones, sophisticated and calm -theme.rose=Rose -theme.rose.description=Soft blush pink, elegant and warm -theme.indigo=Indigo -theme.indigo.description=Deep violet-blue, mystical and creative settings.layout.density=Layout Density settings.layout.density.description=Adjust spacing and padding density across the app. layout.density.comfortable=Comfortable layout.density.comfortable.description=More generous spacing for easier scanning layout.density.compact=Compact layout.density.compact.description=Tighter spacing to fit more content +layout.density.relaxed=Relaxed +layout.density.relaxed.description=Slightly larger spacing for better readability +layout.density.spacious=Spacious +layout.density.spacious.description=Largest spacing for ultra-high DPI screens settings.background.image=Background Image settings.background.image.description=Choose a background image — pick a preset or use your own image. A translucent overlay keeps text readable. Background images are independent of the selected theme. settings.background.image.browse=Browse @@ -404,6 +399,31 @@ settings.proxy.password.placeholder=Optional settings.proxy.system.info=ℹ️ Using system proxy settings from your operating system configuration settings.proxy.socks5.no.auth.info=ℹ️ SOCKS5 authentication is not currently supported. Use SOCKS5 proxy without authentication, or create an issue on GitHub if you need this feature. +# Web Search Settings +settings.web_search=Web Search +settings.web_search.description=Enable built-in web search so the AI can look up current information without any API key. DuckDuckGo works out of the box — upgrade to Brave or Tavily for higher quality results. +settings.web_search.title=Web Search Configuration +settings.web_search.enabled=Enabled +settings.web_search.zero_config_note=DuckDuckGo works with no setup. Select a different backend below only if you want higher-quality or higher-volume results and have an API key for that service. +settings.web_search.backend=Search Backend +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Free, no API key required. Privacy-respecting default. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Fast, independent index. Requires a free Brave Search API key. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=AI-optimised results with optional answer extraction. Requires a Tavily API key. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Privacy-respecting meta-search via your own SearxNG instance. No API key needed. +settings.web_search.api_key=API Key +settings.web_search.api_key.placeholder=Paste your API key here +settings.web_search.get_api_key=Get a free API key ↗ +settings.web_search.endpoint=SearxNG Instance URL +settings.web_search.endpoint.placeholder=https://search.example.com +settings.web_search.test=Test Search +settings.web_search.test.running=Testing... +settings.web_search.test.success=✅ Search is working +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=Guest User user.profile.menu=User Profile Menu @@ -483,6 +503,7 @@ action.close=Close action.show.more=Show more action.show.less=Show less action.back=Back +action.next=Next action.retry=Try Again action.done=Done action.refresh=Refresh @@ -493,10 +514,34 @@ happiness.gate.subtitle=Let us know how we're doing happiness.gate.happy=Yes, I'm loving it! 😍 happiness.gate.neutral=It's okay 🙂 happiness.gate.unhappy=Not really 😕 -happiness.gate.feedback.title=Help us improve -happiness.gate.feedback.message=Would you like to share your feedback? It helps us make Askimo better for you and everyone else. -happiness.gate.feedback.yes=Yes, share feedback -happiness.gate.feedback.no=No thanks + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=What's not working for you? +feedback.dialog.subtitle=Select all that apply — your input goes straight to the team. +feedback.comment.label=Tell us more (optional) +feedback.comment.placeholder=Describe the issue or share your thoughts… +feedback.email.label=Your email (optional) +feedback.email.placeholder=you@example.com +feedback.email.hint=Only used to follow up on your feedback. We'll never spam you. +feedback.action.skip=Skip +feedback.action.send=Send Feedback +feedback.thanks.title=Thank you for your feedback! +feedback.thanks.message=Your input helps us make Askimo better. We really appreciate it. +feedback.thanks.close=Close + +feedback.remind.title=No worries! +feedback.remind.message=You can share feedback anytime from the Help menu → Share Feedback. +feedback.remind.got.it=Got it + +# Feedback reasons +feedback.reason.inaccurate=AI responses aren't accurate +feedback.reason.slow=It's too slow +feedback.reason.missing.feature=Missing a feature I need +feedback.reason.broken=Something is broken +feedback.reason.hard.to.use=It's hard to use +feedback.reason.integration=Integration issues +feedback.reason.privacy=Privacy concerns +feedback.reason.other=Something else # Star Prompt star.prompt.title=Enjoying Askimo? Help spread the word 💙 @@ -508,6 +553,12 @@ star.prompt.share.description=Tell your network about Askimo on X, LinkedIn, or star.prompt.maybe.later=Maybe later star.prompt.already.starred=Already starred ✓ star.prompt.social.proof=⭐ Join {0} people who already starred Askimo +star.prompt.thanks.title=Thank you so much! 🌟 +star.prompt.thanks.message=Your support means a lot and helps us keep building Askimo. +star.prompt.thanks.done=Done ✓ +star.prompt.remind.title=No worries! +star.prompt.remind.message=You can support us anytime from the Help menu → Support Askimo. +star.prompt.remind.got.it=Got it # Analytics Settings (Advanced section toggle) settings.analytics.title=Anonymous Analytics @@ -518,6 +569,11 @@ settings.hardware.acceleration.title=Hardware Acceleration settings.hardware.acceleration.description=Use GPU-accelerated rendering for smoother UI performance. Disable this if you experience graphical issues. settings.hardware.acceleration.description.windows=Use GPU-accelerated rendering (Direct3D/OpenGL) for smoother UI performance. Disable this if you experience flickering or erratic refresh rates with G-Sync or FreeSync displays. settings.hardware.acceleration.restart.notice=Restart Askimo for this change to take effect. +settings.ui.scale.title=Display Scale +settings.ui.scale.description=Adjust the overall UI scale. A restart is required for changes to take effect. +settings.ui.scale.option.system.default=System default +settings.ui.scale.restart.notice=Restart Askimo for the scale change to take effect. +settings.ui.scale.learn.more=Learn more about HiDPI & UI Scale settings.hardware.acceleration.restart.title=Restart Required settings.hardware.acceleration.restart.message=Please restart Askimo for the rendering change to take effect. settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync Detected @@ -564,6 +620,7 @@ shortcut.stop.ai.response=Stop AI Response shortcut.quit.application=Quit Application shortcut.navigate.to.sessions=Navigate to Sessions shortcut.navigate.to.projects=Navigate to Projects +shortcut.navigate.to.bookmarks=Navigate to Bookmarks shortcut.enter.fullscreen=Enter Full Screen shortcut.close.search=Close Search shortcut.next.search.result=Next Search Result @@ -611,8 +668,7 @@ global.search.results.count={0} result found global.search.results.count.plural={0} results found # Rest of chat view strings -chat.directive=Directive: -chat.directive.none=None +chat.directive=Directive chat.directive.new=New Directive chat.directive.manage=Manage Directives chat.directive.learn.more=Learn how to use directives @@ -622,7 +678,11 @@ chat.drop.files=Drop files to attach to the conversation chat.create.image.menu=Create Image chat.create.image.mode=Image chat.create.image.mode.cancel=Cancel image creation mode +chat.image.model.missing.title=Image model not configured +chat.image.model.missing.message=No image model is set for {0}. Open Settings > AI Provider > Image Generation Models and set a model name first. chat.tools.button=Available Tools +chat.tools.button.disabled=Available Tools ({0} disabled) +chat.tools.button.model.no.support=Tools are not supported by this model chat.tools.popup.title=Available Tools chat.tools.popup.loading=Loading servers... chat.tools.popup.no.servers.global=No global MCP servers configured. @@ -631,7 +691,6 @@ chat.tools.server.scope.global=Global chat.tools.server.scope.project=Project chat.tools.server.scope.builtin=Built-in chat.tools.tool.no.description=No description available -chat.tools.button.disabled=Available Tools ({0} disabled) chat.reasoning.effort.label=Thinking chat.reasoning.effort.tooltip=Reasoning effort — controls how deeply the model thinks before responding chat.reasoning.effort.off=Off @@ -643,6 +702,7 @@ chat.reasoning.effort.medium.description=Balanced depth and speed. Suitable for chat.reasoning.effort.high=High chat.reasoning.effort.high.description=Thorough reasoning, higher cost. Best for complex problem-solving. chat.input.placeholder=Type your message... (Enter to send, Shift+Enter for new line) +chat.input.placeholder.hint.attach=Attach files with {0}+A, or drag and drop them here chat.select.file=Select File(s) chat.attachment.remove=Remove attachment chat.attachment.preview.loading=Loading preview\u2026 @@ -714,6 +774,8 @@ settings.font.size=Font Size settings.font.line.spacing=Line Spacing settings.shortcuts=Keyboard Shortcuts settings.shortcuts.description=View all available keyboard shortcuts to improve your productivity +settings.shortcuts.search=Search shortcuts... +settings.shortcuts.no_results=No shortcuts match your search settings.app.language=Application Language settings.app.language.translation.help=See something wrong? Help us improve the translation. settings.app.language.translation.contribute=Contribute on Crowdin @@ -728,12 +790,14 @@ settings.model.select.title=Select Model settings.model.current=Current Model settings.model.selected=Selected Model settings.model.new=New Model +settings.model.use.default=Use default settings.model.change.description=Choose a model from the list below: settings.model.search=Search Models settings.model.search.placeholder=Type to filter models... settings.model.filtered=Showing {0} of {1} models settings.model.no.match=No models match your search -settings.model.no.results=No models match your search +settings.model.chat.filter.label=Chat models · {0} shown +settings.model.chat.filter.show.all=Show all {0} settings.configure.title=Configure {0} Settings settings.test.connection.testing=Testing... settings.placeholder.baseurl=http://localhost:11434 @@ -781,6 +845,8 @@ log.level.trace.description=Show all log messages (most verbose) # Message Components message.loading.previous=Loading previous messages... message.thinking=Thinking... ({0}s) +message.thinking.section.streaming=💭 Thinking... +message.thinking.section.done=💭 Thought message.copy=Copy message message.copy.description=Copy message message.edit=Edit message @@ -807,13 +873,40 @@ message.ai.try.again.confirm.title=Regenerate response? message.ai.try.again.confirm.message=This will delete all messages after this point. Do you want to continue? message.ai.try.again.confirm.cancel=Cancel message.ai.try.again.confirm.confirm=Regenerate +message.ai.fork=Fork session from here +message.ai.fork.description=Fork this conversation into a new independent session message.ai.export.pdf=Export as PDF message.ai.export.pdf.dialog.title=Save AI Response as PDF +message.bookmark=Bookmark message +message.bookmark.remove=Remove bookmark +message.bookmark.description=Bookmark this message message.edited.indicator=(edited) message.date.today=Today message.date.yesterday=Yesterday message.token.usage={0} tokens · {1} in / {2} out message.token.usage.tooltip=Tokens used by this response.\nInput: your prompt + context sent to the AI.\nOutput: the AI-generated reply. + +# Bookmarks +chat.bookmarks.button.tooltip=Bookmarks +chat.bookmarks.popover.title=Pinned messages +chat.bookmarks.popover.empty.title=No bookmarks yet +chat.bookmarks.popover.empty.hint=Pin any message using the bookmark icon below it +bookmarks.title=Bookmarks +bookmarks.empty.title=No bookmarks yet +bookmarks.empty.hint=Bookmark any message using the pin icon below it +bookmarks.session.untitled=Untitled conversation +bookmarks.message.count={0} pinned +bookmarks.role.user=You +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=Running tool... +tool.call.header.done=Used {0} tool(s) +tool.call.status.done=Done +tool.call.status.failed=Failed +tool.call.detail.arguments=Arguments +tool.call.detail.result=Result + attachment.download=Download attachment attachment.download.description=Download this file attachment attachment.save.file=Save Attachment @@ -823,18 +916,26 @@ outdated.branch.header={0} outdated messages from previous edit (click to expand outdated.label=outdated # Provider Dialog -provider.change.title=Change Provider -provider.select.title=Select Provider +provider.manage.title=Manage Providers +provider.type.picker.title=Choose Provider Type +provider.type.picker.prompt=Select the type of provider to add: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Add Provider +provider.no.instances.hint=No providers configured yet. Click "Add Provider" to get started. +provider.model.panel.select.hint=Select a provider on the left to browse its models +provider.model.panel.model.count={0} models +provider.model.default.badge=Default +provider.instance.name.label=Instance name +provider.instance.name.placeholder=e.g. "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=A provider named "{0}" already exists provider.setup.required.title=Setup AI Provider provider.setup.required.message=Before you can start chatting, you need to set up an AI provider. Please select a provider from the list and configure it. provider.setup.required.button=Set Up Provider -provider.select.prompt=Select a provider: provider.configure.prompt=Configure provider: -provider.choose.placeholder=Choose a provider... provider.setup.guide=How to set up {0} provider.apikey.stored=API key stored securely provider.apikey.enter=Enter API key -provider.apikey.already.stored=Already stored provider.apikey.security.message=🔒 Your API key is encrypted and stored securely. We never share your data. provider.apikey.security.link=Learn how we protect your data provider.not.set=Not set @@ -848,6 +949,12 @@ provider.openai.setup.help=💡To use OpenAI, you need to provide an API key.\n\ provider.anthropic.apikey.description=Your Anthropic API key from https://console.anthropic.com/ provider.anthropic.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. provider.anthropic.setup.help=💡To use Anthropic, you need to provide an API key.\n\n1. Get your API key from: https://console.anthropic.com/\n2. Then set it in the Settings or using: :change-settings +provider.anthropic.max_tokens.label=Max Tokens +provider.anthropic.max_tokens.description=Maximum tokens the model can generate per response (thinking + answer combined). +provider.anthropic.thinking_budget_tokens.label=Thinking Budget Tokens +provider.anthropic.thinking_budget_tokens.description=Max tokens Anthropic can spend on thinking. Set to 0 to let the model decide automatically (recommended). +provider.anthropic.thinking_max_tokens.label=Thinking Max Tokens +provider.anthropic.thinking_max_tokens.description=Total token cap when thinking is active (thinking + answer). Set to 0 to use Max Tokens instead. # Provider Configuration - Gemini provider.gemini.apikey.description=Your Google AI Studio API key from https://aistudio.google.com/app/apikey @@ -878,6 +985,7 @@ provider.lmstudio.openai.compat.info=Askimo uses OpenAI-compatible endpoints (/v # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=The base URL for your OpenAI Compatible instance +provider.openai_compatible.apikey.description=API key for the provider (optional - leave blank if the endpoint does not require authentication) provider.openai_compatible.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. # System Resources @@ -889,6 +997,12 @@ system.diagnostics.jvm.memory=JVM Memory (used / total) system.diagnostics.cpu.usage=CPU Usage system.diagnostics.telemetry=Telemetry +# Telemetry export +telemetry.export.csv=Export CSV +telemetry.export.dialog.title=Export Telemetry as ZIP +telemetry.export.error.title=Export Failed +telemetry.export.error.message=Failed to export telemetry data: {0} + # Telemetry telemetry.reset=Reset telemetry data telemetry.title=📊 Session Metrics @@ -904,11 +1018,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=Total Queries telemetry.rag.triggered.label=Triggered telemetry.rag.skipped.label=Skipped -telemetry.llm.calls=LLM Calls -telemetry.llm.calls.count={0} calls -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} err -telemetry.total.tokens=Total Tokens: {0} telemetry.llm.col.provider=Provider telemetry.llm.col.model=Model telemetry.llm.col.calls=Calls @@ -954,18 +1063,21 @@ export.format.html.benefit.4=Easy to share # Error Messages error.network=⚠️ Cannot connect to AI service{endpoint}\n\nPlease check:\n• Your internet connection\n• AI service URL (check settings)\n• Firewall settings\n• Service availability error.authentication=⚠️ API key is invalid or missing{provider}\n\nFix this by setting your API key in Settings. -error.model_configuration=⚠️ Model configuration error: {issue}\n\nFix this by:\n1. Opening Settings\n2. Selecting an AI provider\n3. Choosing a model from the list +error.model_not_found=⚠️ Model not found: {model}\n\nThis model may have been deprecated or removed by the provider. Please select a different model. +error.provider_not_configured=⚠️ No AI provider configured.\n\nTo start chatting:\n1. Open Settings\n2. Select an AI provider (OpenAI, Ollama, Anthropic, etc.)\n3. Enter your API key or configure the connection error.rate_limit=⚠️ Rate limit exceeded\n{retryAfter}\n\nYou've reached your API usage limit. Please wait before sending more messages. error.insufficient_credits=⚠️ Insufficient API credits\n\nYour credit balance has been exhausted.\n\nPlease go to Plans & Billing to top up your credits.\n\nerror.timeout=⚠️ Request timed out after {timeout} seconds\n\nThis might be due to:\n• High server load - try again in a moment\n• Complex query - try simplifying\n• Network latency error.timeout=⚠️ Request timed out after {timeout} seconds\n\nPossible causes:\n• High server load – please try again later\n• Complex request – simplify your input\n• Network delays +error.context_length=⚠️ Context window exceeded\n\nThe total input (conversation history + your message + attachments) is too large for this model to process.\n\nTo fix this:\n• Start a new chat session to clear the conversation history\n• Shorten your message or remove large attachments\n• If using a local model (Ollama / LM Studio / Docker), increase the context size in its settings\n• Switch to a model with a larger context window error.invalid_request=⚠️ Invalid request: {details}\n\nPlease check your input and try again. +error.local_server=⚠️ Local AI server error!\n\nThe AI server process crashed or failed to load the model. This is not caused by Askimo.\n\nPossible causes:\n• The model file is corrupted or incomplete — try re-downloading it\n• Not enough RAM/VRAM — try a smaller quantization (e.g. Q4 instead of Q8)\n• Unsupported model format for the current server version\n• The server process was killed by the OS (out-of-memory)\n\nWhat to do:\n1. Check your local AI server logs for the full error\n2. Restart the server and try again\n3. Re-pull or re-download the model\n4. Try a different model or quantization level\n\nTechnical details: {details} error.system=⚠️ System Error\n\nAn unexpected error occurred: {errorCode}\n\nPlease contact Askimo support with:\n• What you were doing\n• The error code above\n• The timestamp # Model Availability Errors error.model.not_available.title.chat=Model Not Available error.model.not_available.title.embedding=Embedding Model Not Available error.model.not_available.message.chat=Model ''{0}'' is not available. -error.model.not_available.message.embedding=Embedding model ''{0}'' is not available.\n\nPlease configure your embedding model properly. +error.model.not_available.message.embedding=Embedding model ''{0}'' is not available in your local provider.\n\nGo to Settings → AI Provider and select an available embedding model under the provider configuration card. error.model.not_available.config_link=Configure Embedding Model error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration @@ -979,6 +1091,8 @@ error.send_message.title=Failed to Send Message # Indexing Errors error.indexing.model_not_found.title=Embedding Model Not Found error.indexing.model_not_found.message=The embedding model ''{0}'' was not found. Please pull or enable this embedding model from {1} before indexing. +error.indexing.input_too_large.title=Embedding Input Too Large +error.indexing.input_too_large.message=The embedding model rejected one or more segments from [{0}] because the token count exceeds the model''s maximum context size. Reduce the chunk size in Settings → Indexing → Max chars per chunk, then re-index. error.indexing.io_error.title=IO Error error.indexing.io_error.message=An IO error occurred during indexing error.indexing.unknown.title=Indexing Error @@ -1029,6 +1143,26 @@ settings.rag.indexing.binary.extensions.hint=Comma-separated file extensions tre settings.rag.indexing.embedding.batch.size=Embedding Batch Size settings.rag.indexing.embedding.batch.size.hint=Number of text segments sent to the embedding model per request. If indexing feels slow and you use a remote provider (OpenAI, Gemini), try increasing to 100–500. If you use a local model (Ollama, LM Studio), keep this low to avoid timeouts. +## Settings - Models +settings.models.title=Models +settings.models.description=Configure global AI model behavior shared across all providers. +settings.models.max.tool.calling.round.trips=Max Tool-Calling Round Trips +settings.models.max.tool.calling.round.trips.hint=Maximum number of tool calls the AI can make in a single response (default: 10). Higher values allow more complex agent tasks but increase latency and cost. + +# Memory Settings +settings.memory.title=Memory Settings +settings.memory.description=Controls how the AI manages conversation history to stay within the model's context window. +settings.memory.mode=Memory Mode +settings.memory.mode.compact=Compact +settings.memory.mode.compact.hint=Lower token cost, less detail +settings.memory.mode.compact.description=Aggressive summarization. Lower token cost, summarizes early and often. Best for very long sessions or cost-sensitive models. +settings.memory.mode.balanced=Balanced +settings.memory.mode.balanced.hint=Good quality/cost trade-off +settings.memory.mode.balanced.description=Good quality/cost trade-off. Fires summarization at 40% of the memory budget. Suitable for most sessions. +settings.memory.mode.detail=Detail +settings.memory.mode.detail.hint=High fidelity, more tokens +settings.memory.mode.detail.description=Minimal summarization. Keeps more verbatim turns and richer summaries. Best for short sessions or when precise recall matters. + ## Settings - Utility Models settings.utility.models.title=Utility Models settings.utility.models.uses.selected=(uses selected model) @@ -1069,7 +1203,6 @@ mermaid.setup.button.copy.diagram=Copy Diagram mermaid.diagram.source.label=Diagram Source: mermaid.rendering.progress=Rendering diagram... mermaid.error.rendering.title=Error rendering diagram -mermaid.error.rendering.raw.label=Raw diagram: mermaid.error.unexpected.state=Unexpected state. Please try again. mermaid.error.failed.load.image=Failed to load diagram image mermaid.button.copy.code=Copy Code @@ -1347,7 +1480,6 @@ skills.view.empty.search=No skills match your search skills.view.manage=Manage Skills skills.view.select.prompt=Select a skill to run skills.view.select.hint=Select a skill from the list on the left to run it -skills.view.select.skill=Select skill… skills.view.run=Run Skill skills.view.run.command=Send Command skills.view.running=Running… @@ -1405,11 +1537,6 @@ skills.agentic.skills.available={0} skills available as agent context skills.agentic.no.skills.hint=No skills yet — add skills in Settings → Skills to give the agent specialized capabilities skills.agentic.model.default=Default model -# File / folder chooser -file.chooser.folder.select=Select -file.chooser.folder.hint=Double-click a folder to enter it. When you’re in the folder you want to index, click “Select”. -file.chooser.file.select=Select - # Onboarding Wizard onboarding.title=Welcome to Askimo onboarding.step.indicator=Step {0} of {1} diff --git a/desktop-shared/src/main/resources/i18n/messages_de.properties b/desktop-shared/src/main/resources/i18n/messages_de.properties index efc8c2c4c..6f21217e4 100644 --- a/desktop-shared/src/main/resources/i18n/messages_de.properties +++ b/desktop-shared/src/main/resources/i18n/messages_de.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - German Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=System menu.view.appearance.light=Hell menu.view.appearance.dark=Dunkel menu.view.fullscreen=Vollbildmodus aktivieren +menu.view.bookmarks=Lesezeichen anzeigen menu.terminal=Terminal menu.terminal.new=Neues Terminal menu.help=Hilfe @@ -43,14 +44,15 @@ menu.help.share=🗣 Askimo teilen menu.help.share.x=Auf X / Twitter teilen menu.help.share.linkedin=Auf LinkedIn teilen menu.help.share.facebook=Auf Facebook teilen -menu.help.share.text=Entdecke Askimo — ein kostenloser, lokaler KI-Desktop-Client. Unterstützt Ollama, OpenAI, Anthropic und mehr. https://askimo.chat +menu.help.share.text=Entdecke Askimo — ein kostenloser, lokaler KI-Desktop-Client. Unterstützt Ollama, OpenAI, Anthropic und mehr. https\://askimo.chat menu.help.share.hackernews=Auf Hacker News posten menu.eventlog=Ereignisprotokoll menu.help.model.capabilities=Modellfähigkeitsdatei öffnen -menu.dev.clear.account.preferences= [Dev] Kontoeinstellungen löschen +menu.dev.clear.account.preferences=[Dev] Kontoeinstellungen löschen menu.about=Über Askimo menu.help.check.updates=Nach Updates suchen... menu.help.diagnostics=Systemdiagnose... +menu.help.support.askimo=Askimo unterstützen ⭐ # Common Dialog Buttons dialog.cancel=Abbrechen @@ -59,16 +61,16 @@ dialog.close=Schließen # Backup and Restore backup.export.title=Sicherung exportieren backup.export.success.title=Sicherung exportiert -backup.export.success.message=Sicherung erfolgreich exportiert nach:\n{0} +backup.export.success.message=Sicherung erfolgreich exportiert nach\:\n{0} backup.export.error.title=Export fehlgeschlagen -backup.export.error.message=Sicherung konnte nicht exportiert werden:\n{0} +backup.export.error.message=Sicherung konnte nicht exportiert werden\:\n{0} backup.import.title=Sicherung importieren backup.import.confirm.title=Import bestätigen backup.import.confirm.message=Dieser Vorgang ersetzt alle aktuellen Daten durch die Sicherung.\n\nVor dem Import wird automatisch eine Sicherheitssicherung erstellt.\n\nMöchten Sie wirklich fortfahren? backup.import.success.title=Sicherung importiert backup.import.success.message=Sicherung erfolgreich importiert.\n\nBitte starten Sie Askimo neu, damit alle Änderungen wirksam werden. backup.import.error.title=Import fehlgeschlagen -backup.import.error.message=Sicherung konnte nicht importiert werden:\n{0} +backup.import.error.message=Sicherung konnte nicht importiert werden\:\n{0} # Event Log eventlog.title=Ereignisprotokoll ({0}) @@ -107,6 +109,12 @@ discover.stat.projects=Projekte discover.stat.mcp=MCP-Server discover.stat.plans=Pläne discover.stat.skills=Fähigkeiten +discover.customize=Anpassen +discover.customize.show_token_usage=Token-Nutzungskarte anzeigen +discover.tokens.title=Top-Modelle nach Token-Nutzung +discover.tokens.total={0} insgesamt +discover.tokens.view_details=Details anzeigen +discover.tokens.empty=Noch keine Token-Nutzung aufgezeichnet. Beginnen Sie zu chatten, um hier Statistiken zu sehen. discover.explore.title=Funktionen entdecken discover.explore.mcp.title=MCP-Server discover.explore.mcp.desc=Erweitern Sie Askimo mit externen Tools und Datenquellen über das Model Context Protocol. @@ -141,7 +149,7 @@ session.rename.error.empty=Der Titel darf nicht leer sein session.export.file.chooser.title=Chatverlauf speichern session.export.button.export=Exportieren session.export.success.title=Erfolgreich exportiert -session.export.success.message=Die Chatsitzung wurde erfolgreich exportiert nach: +session.export.success.message=Die Chatsitzung wurde erfolgreich exportiert nach\: # Projects project.title=Projekte @@ -157,11 +165,11 @@ project.new.dialog.file.browse=Dateien zum Verarbeiten auswählen... project.new.dialog.sources.label=Referenzmaterialien (optional) project.new.dialog.sources.add=Quelle hinzufügen project.new.dialog.error.empty.name=Projektname darf nicht leer sein -project.new.dialog.error.create.failed=Projekt konnte nicht erstellt werden: {0} +project.new.dialog.error.create.failed=Projekt konnte nicht erstellt werden\: {0} project.new.dialog.name.error.empty=Projektname darf nicht leer sein project.new.dialog.button.create=Projekt erstellen project.new.dialog.button.cancel=Abbrechen -project.new.dialog.success.title=Projekt erfolgreich erstellt! +project.new.dialog.success.title=Projekt erfolgreich erstellt\! project.new.dialog.success.message=Projekt ''{0}'' wurde erstellt. project.new.dialog.success.countdown=Schließt in {0} Sekunde{1}... project.new.dialog.success.close=Jetzt schließen @@ -184,7 +192,7 @@ projects.title=Projekte projects.description=Organisieren Sie Ihre Chats rund um ein Thema und hängen Sie Dateien, Ordner oder URLs als Wissensquellen an, damit die KI immer den richtigen Kontext für das jeweilige Projekt hat. projects.error=❌ {0} projects.empty=Keine Projekte gefunden. -projects.empty.hint=💡 Erstellen Sie ein neues Projekt, um Ihre Chat-Sitzungen zu organisieren! +projects.empty.hint=💡 Erstellen Sie ein neues Projekt, um Ihre Chat-Sitzungen zu organisieren\! projects.search.placeholder=Nach Name suchen… projects.search.empty=Keine Projekte entsprechen "{0}". projects.col.name=Name @@ -195,13 +203,16 @@ projects.sources.expand=Referenzmaterialien anzeigen projects.sources.collapse=Referenzmaterialien ausblenden projects.sources.empty.title=Noch keine Referenzmaterialien projects.sources.empty.description=Fügen Sie Dokumente hinzu, damit Askimo sie bei der Beantwortung Ihrer Fragen berücksichtigen kann -projects.sources.info.tooltip=Referenzmaterialien helfen Askimo, Ihren spezifischen Kontext zu verstehen.\n\n\ -Fügen Sie Ordner, Dateien oder Websites hinzu, die Informationen enthalten, auf die Askimo bei der Beantwortung Ihrer Fragen zurückgreifen soll.\n\n\ -Zum Beispiel:\n\ +projects.sources.info.tooltip=Referenzmaterialien helfen Askimo, Ihren spezifischen Kontext zu verstehen.\n\ +\n\ +Fügen Sie Ordner, Dateien oder Websites hinzu, die Informationen enthalten, auf die Askimo bei der Beantwortung Ihrer Fragen zurückgreifen soll.\n\ +\n\ +Zum Beispiel\:\n\ • Ihre Projektdokumentation\n\ • Unternehmens-Wissensdatenbank\n\ • Technische Spezifikationen\n\ -• Forschungsarbeiten\n\n\ +• Forschungsarbeiten\n\ +\n\ Askimo durchsucht diese Materialien, um genauere und kontextbezogene Antworten zu liefern. projects.sources.type.local_folders=Lokale Ordner projects.sources.type.local_files=Lokale Dateien @@ -228,8 +239,8 @@ project.reindex=Projekt neu indexieren project.menu.tooltip=Projektmenü project.new.chat.placeholder=Neuer Chat in {0} project.recent.chats=Letzte Chats -project.no.chats=Noch keine Chats. Starten Sie unten einen neuen Chat! -project.indexing.label=Indexierung der Wissensquelle: {0} +project.no.chats=Noch keine Chats. Starten Sie unten einen neuen Chat\! +project.indexing.label=Indexierung der Wissensquelle\: {0} project.indexing.queued=Indizierung in der Warteschlange - warten auf den Abschluss eines anderen Projekts... project.indexing.failed=Indizierung fehlgeschlagen. Versuchen Sie, über das Projektmenü neu zu indizieren. project.indexing.ready.label=Indiziert @@ -244,12 +255,11 @@ session.error.removing=Sitzung konnte nicht aus dem Projekt entfernt werden. Bit # Settings settings.title=Einstellungen -settings.general=Allgemein settings.appearance=Erscheinungsbild settings.appearance.accent=Akzentfarbe settings.appearance.accent.description=Passen Sie eine einzelne Akzentfarbe sicher an. Askimo wendet sie auf primäre UI-Akzente an und leitet weitere Farben für gute Lesbarkeit ab. settings.appearance.accent.label=Akzentfarbe (Hex) -settings.appearance.accent.invalid=Geben Sie eine gültige Hex-Farbe wie #0284C7 ein +settings.appearance.accent.invalid=Geben Sie eine gültige Hex-Farbe wie \#0284C7 ein settings.appearance.accent.swatch.primary=Primär settings.appearance.accent.swatch.primary.container=Container settings.appearance.accent.swatch.on.primary.container=Auf dem Container @@ -273,7 +283,7 @@ settings.network.description=Netzwerk- und Proxy-Einstellungen konfigurieren settings.mcp.servers=MCP-Server settings.skills=Fähigkeiten settings.skills.description=Skills sind wiederverwendbare KI-Agenten, die direkt auf Ihrer Maschine laufen. Jeder Skill ist eine Markdown-Datei mit einem System-Prompt und Anweisungen. Wenn Sie einen Skill ausführen, wird er über {0} ausgeführt — liest und schreibt Ihre Dateien, führt Shell-Befehle aus und iteriert, bis die Aufgabe erledigt ist. Kein Kopieren und Einfügen erforderlich. -settings.skills.runtimes=Unterstützte Laufzeitumgebungen: +settings.skills.runtimes=Unterstützte Laufzeitumgebungen\: settings.skills.directory=Fähigkeitenverzeichnis settings.skills.open.folder=Ordner öffnen settings.skills.new.skill=Neue Fähigkeit @@ -316,12 +326,9 @@ settings.skills.add.folder=Ordner hinzufügen settings.skills.add.folder.name=Ordnername settings.advanced=Erweitert settings.about=Über -settings.model=Modell -settings.provider=Anbieter settings.theme=Design settings.save=Speichern settings.cancel=Abbrechen -settings.provider.change.button=Ändern settings.model.change.button=Ändern settings.change.button=Ändern @@ -332,24 +339,16 @@ theme.dark=Dunkel theme.dark.description=Immer dunkles Thema verwenden theme.system=System theme.system.description=Systemthema verwenden -theme.sepia=Sepia -theme.sepia.description=Warme Pergamenttöne, angenehm für die Augen -theme.ocean=Ozean -theme.ocean.description=Sanfte himmelblaue Töne, ruhig und erfrischend -theme.nord=Nord -theme.nord.description=Dunkle arktische Farbpalette, kühl und fokussiert -theme.sage=Salbei -theme.sage.description=Gedämpfte graugrüne Töne, anspruchsvoll und ruhig -theme.rose=Rose -theme.rose.description=Zartes Blush-Rosa, elegant und warm -theme.indigo=Indigo -theme.indigo.description=Tiefes Violettblau, mystisch und kreativ settings.layout.density=Layout-Dichte settings.layout.density.description=Abstände und Innenabstände in der gesamten App anpassen. layout.density.comfortable=Komfortabel layout.density.comfortable.description=Großzügigere Abstände für bessere Übersichtlichkeit layout.density.compact=Kompakt layout.density.compact.description=Engere Abstände für mehr Inhalt +layout.density.relaxed=Entspannt +layout.density.relaxed.description=Etwas größere Abstände für bessere Lesbarkeit +layout.density.spacious=Großzügig +layout.density.spacious.description=Maximale Abstände für Ultra-High-DPI-Bildschirme settings.background.image=Hintergrundbild settings.background.image.description=Wählen Sie ein Hintergrundbild aus — verwenden Sie eine Vorlage oder Ihr eigenes Bild. Eine transparente Überlagerung sorgt dafür, dass der Text gut lesbar bleibt. Hintergrundbilder sind unabhängig vom ausgewählten Design. settings.background.image.browse=Durchsuchen @@ -364,11 +363,11 @@ settings.log.viewer=Log-Dateien settings.log.viewer.description=Anwendungslogs und Diagnosen anzeigen settings.log.viewer.view=Logs anzeigen settings.log.viewer.open_folder=Log-Ordner öffnen -settings.log.viewer.path=Log-Datei: {0} +settings.log.viewer.path=Log-Datei\: {0} settings.log.viewer.dialog.title=Anwendungslogs settings.log.viewer.refresh=Aktualisieren settings.log.viewer.copy=Kopieren -settings.log.viewer.copied=Kopiert! +settings.log.viewer.copied=Kopiert\! settings.log.viewer.loading=Logs werden geladen... settings.log.viewer.error=Fehler beim Laden der Logs settings.log.viewer.empty=Keine Logs verfügbar @@ -403,6 +402,31 @@ settings.proxy.password.placeholder=Optional settings.proxy.system.info=ℹ️ System-Proxy-Einstellungen aus der Betriebssystemkonfiguration werden verwendet settings.proxy.socks5.no.auth.info=ℹ️ SOCKS5-Authentifizierung wird derzeit nicht unterstützt. Verwenden Sie einen SOCKS5-Proxy ohne Authentifizierung oder erstellen Sie ein Issue auf GitHub, wenn Sie diese Funktion benötigen. +# Web Search Settings +settings.web_search=Websuche +settings.web_search.description=Aktivieren Sie die integrierte Websuche, damit die KI aktuelle Informationen ohne API-Schlüssel abrufen kann. DuckDuckGo funktioniert sofort — aktualisieren Sie auf Brave oder Tavily für bessere Ergebnisse. +settings.web_search.title=Websuche-Konfiguration +settings.web_search.enabled=Aktiviert +settings.web_search.zero_config_note=DuckDuckGo funktioniert ohne Einrichtung. Wählen Sie unten nur dann ein anderes Backend, wenn Sie bessere oder mehr Ergebnisse wünschen und einen API-Schlüssel für diesen Dienst haben. +settings.web_search.backend=Suchbackend +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Kostenlos, kein API-Schlüssel erforderlich. Datenschutzfreundlicher Standard. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Schnell, unabhängiger Index. Erfordert einen kostenlosen Brave Search API-Schlüssel. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=KI-optimierte Ergebnisse mit optionaler Antwortextraktion. Erfordert einen Tavily API-Schlüssel. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Datenschutzfreundliche Metasuche über Ihre eigene SearxNG-Instanz. Kein API-Schlüssel erforderlich. +settings.web_search.api_key=API-Schlüssel +settings.web_search.api_key.placeholder=API-Schlüssel hier einfügen +settings.web_search.get_api_key=Kostenlosen API-Schlüssel erhalten ↗ +settings.web_search.endpoint=SearxNG-Instanz-URL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=Suche testen +settings.web_search.test.running=Wird getestet... +settings.web_search.test.success=✅ Suche funktioniert +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=Gastbenutzer user.profile.menu=Benutzerprofil-Menü @@ -426,7 +450,7 @@ user.profile.interests.custom.placeholder=z. B. Maschinelles Lernen, Fotografie user.profile.interests.custom.hint=Mehrere Interessen durch Kommas trennen # Welcome Dialog (First Run) -welcome.title=Willkommen bei Askimo! +welcome.title=Willkommen bei Askimo\! welcome.subtitle=Helfen Sie uns, Ihr KI-Erlebnis zu personalisieren welcome.avatar.optional=Klicken, um ein Foto hinzuzufügen (optional) welcome.name=Ihr Name @@ -465,6 +489,7 @@ user.interest.environment=Umwelt # Actions action.delete=Löschen +action.remove=Entfernen action.edit=Bearbeiten action.pin=An Seitenleiste anheften action.unpin=Von Seitenleiste lösen @@ -481,21 +506,45 @@ action.close=Schließen action.show.more=Mehr anzeigen action.show.less=Weniger anzeigen action.back=Zurück +action.next=Weiter action.retry=Erneut versuchen action.done=Fertig action.refresh=Aktualisieren - # Happiness Gate (shown before Star Prompt) happiness.gate.title=Wie gefällt Ihnen Askimo? happiness.gate.subtitle=Sagen Sie uns, wie wir uns machen -happiness.gate.happy=Ich liebe es! 😍 +happiness.gate.happy=Ich liebe es\! 😍 happiness.gate.neutral=Es geht 🙂 happiness.gate.unhappy=Nicht wirklich 😕 -happiness.gate.feedback.title=Helfen Sie uns, uns zu verbessern -happiness.gate.feedback.message=Möchten Sie uns Ihr Feedback mitteilen? Es hilft uns, Askimo für Sie und alle anderen besser zu machen. -happiness.gate.feedback.yes=Ja, Feedback teilen -happiness.gate.feedback.no=Nein, danke + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=Was funktioniert für dich nicht? +feedback.dialog.subtitle=Wähle alle zutreffenden Punkte aus — dein Feedback geht direkt an das Team. +feedback.comment.label=Erzähl uns mehr (optional) +feedback.comment.placeholder=Beschreibe das Problem oder teile uns deine Gedanken mit… +feedback.email.label=Deine E-Mail (optional) +feedback.email.placeholder=you@example.com +feedback.email.hint=Wird nur verwendet, um bei deinem Feedback nachzufassen. Wir werden dich niemals zuspammen. +feedback.action.skip=Überspringen +feedback.action.send=Feedback senden +feedback.thanks.title=Vielen Dank für dein Feedback\! +feedback.thanks.message=Dein Input hilft uns, Askimo zu verbessern. Wir wissen das wirklich zu schätzen. +feedback.thanks.close=Schließen + +feedback.remind.title=Kein Problem\! +feedback.remind.message=Du kannst jederzeit über das Hilfe-Menü → Feedback senden Rückmeldung geben. +feedback.remind.got.it=Verstanden + +# Feedback reasons +feedback.reason.inaccurate=Die Antworten der KI sind nicht korrekt +feedback.reason.slow=Es ist zu langsam +feedback.reason.missing.feature=Ein benötigtes Feature fehlt +feedback.reason.broken=Etwas ist kaputt +feedback.reason.hard.to.use=Es ist schwer zu bedienen +feedback.reason.integration=Integrationsprobleme +feedback.reason.privacy=Datenschutzbedenken +feedback.reason.other=Etwas anderes # Star Prompt star.prompt.title=Genießt du Askimo? Verbreite die Nachricht 💙 @@ -507,6 +556,12 @@ star.prompt.share.description=Erzählen Sie Ihrem Netzwerk von Askimo auf X, Lin star.prompt.maybe.later=Jetzt nicht star.prompt.already.starred=Bereits mit Stern markiert ✓ star.prompt.social.proof=⭐ Schließen Sie sich {0} Personen an, die Askimo bereits mit einem Stern markiert haben +star.prompt.thanks.title=Vielen Dank\! 🌟 +star.prompt.thanks.message=Deine Unterstützung bedeutet uns viel und hilft uns, Askimo weiterzuentwickeln. +star.prompt.thanks.done=Fertig ✓ +star.prompt.remind.title=Kein Problem\! +star.prompt.remind.message=Du kannst uns jederzeit über das Hilfe-Menü → Askimo unterstützen. +star.prompt.remind.got.it=Verstanden # Analytics Settings (Advanced section toggle) settings.analytics.title=Anonyme Analysen @@ -517,6 +572,11 @@ settings.hardware.acceleration.title=Hardwarebeschleunigung settings.hardware.acceleration.description=Verwenden Sie GPU-beschleunigtes Rendering für eine flüssigere UI-Performance. Deaktivieren Sie dies, falls grafische Probleme auftreten. settings.hardware.acceleration.description.windows=Verwenden Sie GPU-beschleunigtes Rendering (Direct3D/OpenGL) für eine flüssigere UI-Performance. Deaktivieren Sie dies, falls Flimmern oder unregelmäßige Bildwiederholraten bei G-Sync- oder FreeSync-Monitoren auftreten. settings.hardware.acceleration.restart.notice=Starten Sie Askimo neu, damit diese Änderung wirksam wird. +settings.ui.scale.title=Anzeigeskalierung +settings.ui.scale.description=Passen Sie die gesamte UI-Skalierung an. Ein Neustart ist erforderlich, damit die Änderungen wirksam werden. +settings.ui.scale.option.system.default=Systemstandard +settings.ui.scale.restart.notice=Starten Sie Askimo neu, damit die Skalierungsänderung wirksam wird. +settings.ui.scale.learn.more=Erfahren Sie mehr über HiDPI & UI-Skalierung settings.hardware.acceleration.restart.title=Neustart erforderlich settings.hardware.acceleration.restart.message=Bitte starten Sie Askimo neu, damit die Rendering-Änderung wirksam wird. settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync erkannt @@ -530,10 +590,8 @@ file.overwrite.message=Diese Datei existiert bereits. Möchten Sie sie überschr file.overwrite.confirm=Überschreiben file.name.too.long=Der Dateiname ist zu lang. Bitte verwenden Sie einen kürzeren Namen (maximal 255 Zeichen). - # About about.title=Über {0} -action.remove=Entfernen about.version=Version about.buildDate=Build-Datum about.buildJdk=Build-JDK @@ -565,6 +623,7 @@ shortcut.stop.ai.response=KI-Antwort stoppen shortcut.quit.application=Anwendung beenden shortcut.navigate.to.sessions=Zu Sitzungen navigieren shortcut.navigate.to.projects=Zu Projekten navigieren +shortcut.navigate.to.bookmarks=Zu Lesezeichen navigieren shortcut.enter.fullscreen=Vollbildmodus aktivieren shortcut.close.search=Suche schließen shortcut.next.search.result=Nächstes Suchergebnis @@ -573,9 +632,8 @@ shortcut.attach.file=Datei anhängen shortcut.send.message=Nachricht senden shortcut.new.line=Neue Zeile - # Chat View -chat.welcome=Willkommen bei Askimo!\nBeginnen Sie eine Unterhaltung, indem Sie unten eine Nachricht eingeben. +chat.welcome=Willkommen bei Askimo\!\nBeginnen Sie eine Unterhaltung, indem Sie unten eine Nachricht eingeben. chat.no.active.session=Wählen Sie eine Sitzung in der Seitenleiste aus oder starten Sie einen neuen Chat chat.search.placeholder=Im Gespräch suchen... chat.search.no.results=Keine Ergebnisse @@ -613,8 +671,7 @@ global.search.results.count={0} Ergebnis gefunden global.search.results.count.plural={0} Ergebnisse gefunden # Rest of chat view strings -chat.directive=Direktive: -chat.directive.none=Keine +chat.directive=Direktive chat.directive.new=Neue Direktive chat.directive.manage=Direktiven verwalten chat.directive.learn.more=Erfahren Sie, wie Sie Direktiven verwenden @@ -624,7 +681,11 @@ chat.drop.files=Dateien zum Anhängen an die Unterhaltung hierher ziehen chat.create.image.menu=Bild erstellen chat.create.image.mode=Bild chat.create.image.mode.cancel=Bild-Erstellungsmodus beenden +chat.image.model.missing.title=Bildmodell nicht konfiguriert +chat.image.model.missing.message=Für {0} ist kein Bildmodell festgelegt. Öffnen Sie Einstellungen > KI-Anbieter > Modelle zur Bilderzeugung und legen Sie zuerst einen Modellnamen fest. chat.tools.button=Verfügbare Tools +chat.tools.button.disabled=Verfügbare Tools ({0} deaktiviert) +chat.tools.button.model.no.support=Tools werden von diesem Modell nicht unterstützt chat.tools.popup.title=Verfügbare Tools chat.tools.popup.loading=Server werden geladen... chat.tools.popup.no.servers.global=Keine globalen MCP-Server konfiguriert. @@ -633,7 +694,6 @@ chat.tools.server.scope.global=Global chat.tools.server.scope.project=Projekt chat.tools.server.scope.builtin=Integriert chat.tools.tool.no.description=Keine Beschreibung verfügbar -chat.tools.button.disabled=Verfügbare Tools ({0} deaktiviert) chat.reasoning.effort.label=Denken chat.reasoning.effort.tooltip=Denkaufwand — steuert, wie tief das Modell nachdenkt, bevor es antwortet chat.reasoning.effort.off=Aus @@ -645,12 +705,13 @@ chat.reasoning.effort.medium.description=Ausgewogene Tiefe und Geschwindigkeit. chat.reasoning.effort.high=Hoch chat.reasoning.effort.high.description=Gründliches Nachdenken, höhere Kosten. Am besten für komplexe Problemlösungen. chat.input.placeholder=Nachricht eingeben... (Enter zum Senden, Shift+Enter für neue Zeile) +chat.input.placeholder.hint.attach=Dateien mit {0}+A anhängen oder hier hineinziehen chat.select.file=Datei(en) auswählen chat.attachment.remove=Anhang entfernen chat.attachment.preview.loading=Vorschau wird geladen… chat.attachment.preview.file.not.found=(Datei nicht gefunden) chat.attachment.preview.too.large=(Datei zu groß für eine Vorschau) -chat.attachment.preview.cannot.read=(Datei kann nicht gelesen werden: {0}) +chat.attachment.preview.cannot.read=(Datei kann nicht gelesen werden\: {0}) chat.attachment.preview.more.lines={0} weitere Zeilen # Sessions View @@ -662,12 +723,12 @@ sessions.col.created=Erstellt sessions.col.updated=Aktualisiert sessions.error=❌ {0} sessions.empty=Keine Chatsitzungen gefunden. -sessions.empty.hint=💡 Starten Sie eine neue Unterhaltung, um Ihre erste Sitzung zu erstellen! +sessions.empty.hint=💡 Starten Sie eine neue Unterhaltung, um Ihre erste Sitzung zu erstellen\! sessions.search.placeholder=Nach Titel suchen… sessions.search.empty=Keine Sitzungen entsprechen "{0}". -# Allgemeine Tabellen-Paginierungssteuerelemente -table.page.size.label=Zeilen pro Seite: +# Generic table pagination controls +table.page.size.label=Zeilen pro Seite\: table.page=Seite {0} von {1} table.page.previous=Vorherige Seite table.page.next=Nächste Seite @@ -681,10 +742,9 @@ sessions.error.not.found=Sitzung nicht gefunden. sessions.error.rename.failed=Umbenennen fehlgeschlagen. # ChatSessionService Errors - # Update Check update.dialog.title=Software-Update -update.dialog.new.version.available=Eine neue Version von Askimo ist verfügbar! +update.dialog.new.version.available=Eine neue Version von Askimo ist verfügbar\! update.urgency.medium=Sie liegen {0} Versionen zurück — Sie könnten wichtige Fehlerbehebungen und neue Funktionen verpassen. update.urgency.high=Sie liegen {0} Versionen zurück — Sie verpassen erhebliche Verbesserungen. Bitte bald aktualisieren. update.dialog.current.version.label=Aktuelle Version @@ -695,7 +755,7 @@ update.dialog.download=Jetzt herunterladen update.dialog.how.to.update=So aktualisieren Sie update.dialog.later=Später update.dialog.skip.version=Diese Version überspringen -update.check.up.to.date=Sie verwenden die neueste Version! +update.check.up.to.date=Sie verwenden die neueste Version\! update.check.failed=Update-Prüfung fehlgeschlagen # Event Names @@ -717,44 +777,48 @@ settings.font.size=Schriftgröße settings.font.line.spacing=Zeilenabstand settings.shortcuts=Tastenkombinationen settings.shortcuts.description=Alle verfügbaren Tastenkombinationen anzeigen, um Ihre Produktivität zu steigern +settings.shortcuts.search=Tastenkombinationen suchen... +settings.shortcuts.no_results=Keine Tastenkombinationen entsprechen Ihrer Suche settings.app.language=App-Sprache settings.app.language.translation.help=Sehen Sie einen Fehler? Helfen Sie uns, die Übersetzung zu verbessern. settings.app.language.translation.contribute=Auf Crowdin beitragen settings.ai.response.language=Bevorzugte Antwortsprache settings.ai.response.language.description=KI auf eine bestimmte Sprache für Antworten festlegen (leer lassen für automatische Erkennung) settings.ai.response.language.auto=Automatische Erkennung -settings.ai.response.language.tooltip=KI erkennt Ihre Sprache automatisch, aber überschreiben wenn:\n• Sprachenlernen (immersive Praxis)\n• Professionelle Konsistenz (z.B. Code-Dokumentation immer auf Englisch)\n• RAG-Optimierung (Wissensdatenbank-Sprache abgleichen)\n• Lehre (in einer Sprache fragen, in einer anderen erklären)\n• Unerwünschte Sprachwechsel verhindern -settings.model.select=Modell für {0} auswählen: +settings.ai.response.language.tooltip=KI erkennt Ihre Sprache automatisch, aber überschreiben wenn\:\n• Sprachenlernen (immersive Praxis)\n• Professionelle Konsistenz (z.B. Code-Dokumentation immer auf Englisch)\n• RAG-Optimierung (Wissensdatenbank-Sprache abgleichen)\n• Lehre (in einer Sprache fragen, in einer anderen erklären)\n• Unerwünschte Sprachwechsel verhindern +settings.model.select=Modell für {0} auswählen\: settings.model.loading=Modelle werden geladen... settings.model.none=Keine Modelle verfügbar settings.model.select.title=Modell auswählen settings.model.current=Aktuelles Modell settings.model.selected=Ausgewähltes Modell settings.model.new=Neues Modell -settings.model.change.description=Wählen Sie ein Modell aus der folgenden Liste aus: +settings.model.use.default=Standard verwenden +settings.model.change.description=Wählen Sie ein Modell aus der folgenden Liste aus\: settings.model.search=Modelle durchsuchen settings.model.search.placeholder=Eingeben, um Modelle zu filtern... settings.model.filtered={0} von {1} Modellen angezeigt settings.model.no.match=Keine passenden Modelle -settings.model.no.results=Keine passenden Modelle +settings.model.chat.filter.label=Chat-Modelle · {0} angezeigt +settings.model.chat.filter.show.all=Alle {0} anzeigen settings.configure.title={0} konfigurieren settings.test.connection.testing=Teste... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=Verbindung zum Anbieter konnte nicht hergestellt werden. Bitte überprüfen Sie, ob Ihr API-Schlüssel korrekt ist (für Cloud-Anbieter) oder Ihre Basis-URL erreichbar ist (für lokale Anbieter). Installationsanweisungen finden Sie über den obigen Hilfe-Link. # Directives Dialog directive.manage.title=Direktiven verwalten -directive.manage.empty=Keine Direktiven verfügbar. Erstellen Sie eine, um zu beginnen! +directive.manage.empty=Keine Direktiven verfügbar. Erstellen Sie eine, um zu beginnen\! directive.edit.name.label=Name directive.edit.name.placeholder=Direktivenname eingeben... directive.edit.content.label=Inhalt directive.edit.content.placeholder=Direktivenanweisungen eingeben... directive.edit.name.required=Name ist erforderlich directive.edit.content.required=Inhalt ist erforderlich -directive.created=Erstellt: {0} +directive.created=Erstellt\: {0} directive.new.title=Neue Direktive directive.new.guidelines=Direktiven leiten, wie die KI auf Ihre Nachrichten antwortet. Seien Sie spezifisch über Ton, Detailgrad, Format oder besondere Anforderungen, die Sie benötigen. -directive.new.name.placeholder=z. B.: concise-code, explain-like-im-5 +directive.new.name.placeholder=z. B.\: concise-code, explain-like-im-5 directive.new.content.placeholder=Anweisungen eingeben... directive.new.apply.current=Auf aktuelle Sitzung anwenden directive.new.create=Erstellen @@ -766,8 +830,8 @@ directive.export.tooltip=Alle Anweisungen in eine JSON-Datei exportieren, um sie directive.export.filename=askimo-directives directive.import=Importieren directive.import.tooltip=Anweisungen aus einer JSON-Datei importieren -directive.import.result=Import abgeschlossen: {0} importiert, {1} umbenannt, {2} übersprungen -directive.import.error=Import fehlgeschlagen: ungültiges oder nicht unterstütztes Dateiformat +directive.import.result=Import abgeschlossen\: {0} importiert, {1} umbenannt, {2} übersprungen +directive.import.error=Import fehlgeschlagen\: ungültiges oder nicht unterstütztes Dateiformat # Log Levels log.level.error=Fehler @@ -784,6 +848,8 @@ log.level.trace.description=Alle Log-Nachrichten anzeigen (sehr detailliert) # Message Components message.loading.previous=Vorherige Nachrichten werden geladen... message.thinking=Denke nach… ({0}s) +message.thinking.section.streaming=💭 Denkt... +message.thinking.section.done=💭 Gedanke message.copy=Nachricht kopieren message.copy.description=Nachricht kopieren message.edit=Nachricht bearbeiten @@ -810,13 +876,40 @@ message.ai.try.again.confirm.title=Antwort neu generieren? message.ai.try.again.confirm.message=Alle Nachrichten nach diesem Punkt werden gelöscht. Möchten Sie fortfahren? message.ai.try.again.confirm.cancel=Abbrechen message.ai.try.again.confirm.confirm=Neu generieren +message.ai.fork=Session von hier aus forken +message.ai.fork.description=Diese Unterhaltung in eine neue, unabhängige Session forken message.ai.export.pdf=Als PDF exportieren message.ai.export.pdf.dialog.title=KI-Antwort als PDF speichern +message.bookmark=Nachricht als Lesezeichen speichern +message.bookmark.remove=Lesezeichen entfernen +message.bookmark.description=Diese Nachricht als Lesezeichen speichern message.edited.indicator=(bearbeitet) message.date.today=Heute message.date.yesterday=Gestern message.token.usage={0} Tokens · {1} in / {2} out -message.token.usage.tooltip=Von dieser Antwort verwendete Tokens.\nEingabe: Ihr Prompt + Kontext, der an die KI gesendet wurde.\nAusgabe: die KI-generierte Antwort. +message.token.usage.tooltip=Von dieser Antwort verwendete Tokens.\nEingabe\: Ihr Prompt + Kontext, der an die KI gesendet wurde.\nAusgabe\: die KI-generierte Antwort. + +# Bookmarks +chat.bookmarks.button.tooltip=Lesezeichen +chat.bookmarks.popover.title=Angeheftete Nachrichten +chat.bookmarks.popover.empty.title=Noch keine Lesezeichen +chat.bookmarks.popover.empty.hint=Hefte eine Nachricht mit dem Lesezeichen-Symbol darunter an +bookmarks.title=Lesezeichen +bookmarks.empty.title=Noch keine Lesezeichen +bookmarks.empty.hint=Speichere Nachrichten als Lesezeichen über das Heft-Symbol darunter +bookmarks.session.untitled=Unbenanntes Gespräch +bookmarks.message.count={0} angeheftet +bookmarks.role.user=Du +bookmarks.role.ai=KI + +# Tool call display +tool.call.header.running=Tool wird ausgeführt... +tool.call.header.done={0} Tool(s) verwendet +tool.call.status.done=Fertig +tool.call.status.failed=Fehlgeschlagen +tool.call.detail.arguments=Argumente +tool.call.detail.result=Ergebnis + attachment.download=Anhang herunterladen attachment.download.description=Diese Dateianlage herunterladen attachment.save.file=Anhang speichern @@ -826,48 +919,62 @@ outdated.branch.header={0} alte Nachrichten aus vorheriger Bearbeitung (zum Öff outdated.label=alt # Provider Dialog -provider.change.title=Anbieter wechseln -provider.select.title=Anbieter auswählen +provider.manage.title=Anbieter verwalten +provider.type.picker.title=Anbietertyp auswählen +provider.type.picker.prompt=Wählen Sie den hinzuzufügenden Anbietertyp aus\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Anbieter hinzufügen +provider.no.instances.hint=Noch keine Anbieter konfiguriert. Klicken Sie auf "Anbieter hinzufügen", um loszulegen. +provider.model.panel.select.hint=Wählen Sie links einen Anbieter aus, um seine Modelle zu durchsuchen +provider.model.panel.model.count={0} Modelle +provider.model.default.badge=Standard +provider.instance.name.label=Instanzname +provider.instance.name.placeholder=z. B. "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=Ein Anbieter mit dem Namen "{0}" existiert bereits provider.setup.required.title=KI-Anbieterkonfiguration erforderlich provider.setup.required.message=Bevor Sie chatten können, wählen und konfigurieren Sie einen KI-Anbieter. provider.setup.required.button=Konfigurieren -provider.select.prompt=Anbieter auswählen: -provider.configure.prompt=Konfigurieren: -provider.choose.placeholder=Anbieter auswählen... +provider.configure.prompt=Konfigurieren\: provider.setup.guide=So richten Sie {0} ein provider.apikey.stored=API-Schlüssel wurde sicher gespeichert provider.apikey.enter=API-Schlüssel eingeben -provider.apikey.already.stored=Bereits gespeichert provider.apikey.security.message=🔒 Ihr API-Schlüssel wird sicher verschlüsselt gespeichert. Ihre Daten werden nie weitergegeben. provider.apikey.security.link=Hier erfahren Sie, wie wir Ihre Daten schützen provider.not.set=Nicht festgelegt # Provider Configuration - OpenAI -provider.openai.apikey.description=Ihr OpenAI API-Schlüssel: https://platform.openai.com/account/api-keys +provider.openai.apikey.description=Ihr OpenAI API-Schlüssel\: https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=API-Schlüssel ist bereits gespeichert. Leer lassen, um den aktuellen beizubehalten. -provider.openai.setup.help=💡 Für die Nutzung von OpenAI benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten: https://platform.openai.com/account/api-keys\n2. In den Einstellungen eintragen oder :change-settings verwenden +provider.openai.setup.help=💡 Für die Nutzung von OpenAI benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten\: https\://platform.openai.com/account/api-keys\n2. In den Einstellungen eintragen oder \:change-settings verwenden # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Ihr Anthropic API-Schlüssel: https://console.anthropic.com/ +provider.anthropic.apikey.description=Ihr Anthropic API-Schlüssel\: https\://console.anthropic.com/ provider.anthropic.apikey.stored=API-Schlüssel ist bereits gespeichert. -provider.anthropic.setup.help=💡 Für die Nutzung von Anthropic benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten: https://console.anthropic.com/\n2. In den Einstellungen eintragen oder :change-settings verwenden +provider.anthropic.setup.help=💡 Für die Nutzung von Anthropic benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten\: https\://console.anthropic.com/\n2. In den Einstellungen eintragen oder \:change-settings verwenden +provider.anthropic.max_tokens.label=Max Tokens +provider.anthropic.max_tokens.description=Maximale Anzahl an Tokens, die das Modell pro Antwort generieren kann (Denken + Antwort kombiniert). +provider.anthropic.thinking_budget_tokens.label=Thinking Budget Tokens +provider.anthropic.thinking_budget_tokens.description=Maximale Anzahl an Tokens, die Anthropic für den Denkprozess verwenden kann. Auf 0 setzen, damit das Modell dies automatisch entscheidet (empfohlen). +provider.anthropic.thinking_max_tokens.label=Thinking Max Tokens +provider.anthropic.thinking_max_tokens.description=Gesamtes Token-Limit bei aktivem Denkprozess (Denken + Antwort). Auf 0 setzen, um stattdessen "Max Tokens" zu verwenden. # Provider Configuration - Gemini -provider.gemini.apikey.description=Ihr Google AI Studio API-Schlüssel: https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Ihr Google AI Studio API-Schlüssel\: https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=API-Schlüssel ist bereits gespeichert. -provider.gemini.setup.help=💡 Für die Nutzung von Gemini benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten: https://aistudio.google.com/app/apikey\n2. In den Einstellungen eintragen oder :change-settings verwenden +provider.gemini.setup.help=💡 Für die Nutzung von Gemini benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten\: https\://aistudio.google.com/app/apikey\n2. In den Einstellungen eintragen oder \:change-settings verwenden # Provider Configuration - XAI -provider.xai.apikey.description=Ihr XAI API-Schlüssel: https://console.x.ai/ +provider.xai.apikey.description=Ihr XAI API-Schlüssel\: https\://console.x.ai/ provider.xai.apikey.stored=API-Schlüssel ist bereits gespeichert. -provider.xai.setup.help=💡 Für die Nutzung von XAI benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten: https://console.x.ai/\n2. In den Einstellungen eintragen oder :change-settings verwenden +provider.xai.setup.help=💡 Für die Nutzung von XAI benötigen Sie einen API-Schlüssel.\n\n1. Hier erhalten\: https\://console.x.ai/\n2. In den Einstellungen eintragen oder \:change-settings verwenden # Provider Configuration - Ollama -provider.ollama.baseurl.description=Ollama Basis-URL (Standard: http://localhost:11434) -provider.ollama.setup.help=💡 Für die Nutzung von Ollama muss es lokal ausgeführt werden.\n\n1. Installieren: https://ollama.ai/\n2. Dienst starten\n3. Basis-URL bei Bedarf ändern +provider.ollama.baseurl.description=Ollama Basis-URL (Standard\: http\://localhost\:11434) +provider.ollama.setup.help=💡 Für die Nutzung von Ollama muss es lokal ausgeführt werden.\n\n1. Installieren\: https\://ollama.ai/\n2. Dienst starten\n3. Basis-URL bei Bedarf ändern # Provider Configuration - Docker AI -provider.docker.baseurl.description=Docker AI Basis-URL (Standard: http://localhost:12434) +provider.docker.baseurl.description=Docker AI Basis-URL (Standard\: http\://localhost\:12434) provider.docker.setup.help=💡 Für die Nutzung von Docker AI muss es lokal ausgeführt werden.\n\n1. Stellen Sie sicher, dass Docker AI installiert ist und läuft\n2. Dienst starten\n3. Basis-URL bei Bedarf ändern # Provider Configuration - LocalAI @@ -875,23 +982,30 @@ provider.localai.baseurl.description=LocalAI Basis-URL provider.localai.setup.help=💡 Für die Nutzung von LocalAI müssen Sie es zuerst ausführen.\n\n1. LocalAI installieren und starten\n2. Basis-URL konfigurieren # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=LMStudio Basis-URL (Standard: http://localhost:1234) -provider.lmstudio.setup.help=💡 So verwenden Sie LMStudio:\n\n1. Installieren: https://lmstudio.ai/\n2. Lokalen Server starten\n3. Basis-URL bei Bedarf ändern +provider.lmstudio.baseurl.description=LMStudio Basis-URL (Standard\: http\://localhost\:1234) +provider.lmstudio.setup.help=💡 So verwenden Sie LMStudio\:\n\n1. Installieren\: https\://lmstudio.ai/\n2. Lokalen Server starten\n3. Basis-URL bei Bedarf ändern provider.lmstudio.openai.compat.info=Askimo verwendet OpenAI-kompatible Endpunkte (/v1), nicht die native LMStudio-API (/api/v1/). # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=Die Basis-URL für Ihre OpenAI-kompatible Instanz +provider.openai_compatible.apikey.description=API-Schlüssel für den Anbieter (optional – lassen Sie das Feld leer, wenn der Endpunkt keine Authentifizierung erfordert) provider.openai_compatible.apikey.stored=Der API-Schlüssel ist bereits sicher gespeichert. Lassen Sie das Feld leer, um den bestehenden Schlüssel zu behalten, oder geben Sie einen neuen ein, um ihn zu aktualisieren. # System Resources system.share.feedback=Feedback teilen -system.ai.provider.tooltip=KI-Anbieter: {0}\nKlicken, um zu konfigurieren +system.ai.provider.tooltip=KI-Anbieter\: {0}\nKlicken, um zu konfigurieren system.diagnostics.title=Systemdiagnose system.diagnostics.resources=Ressourcen system.diagnostics.jvm.memory=JVM-Speicher (verwendet / gesamt) system.diagnostics.cpu.usage=CPU-Auslastung system.diagnostics.telemetry=Telemetrie +# Telemetry export +telemetry.export.csv=CSV exportieren +telemetry.export.dialog.title=Telemetrie als ZIP exportieren +telemetry.export.error.title=Export fehlgeschlagen +telemetry.export.error.message=Telemetriedaten konnten nicht exportiert werden\: {0} + # Telemetry telemetry.reset=Telemetriedaten zurücksetzen telemetry.title=📊 Sitzungsmetriken @@ -907,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=Gesamte Anfragen telemetry.rag.triggered.label=Ausgelöst telemetry.rag.skipped.label=Übersprungen -telemetry.llm.calls=LLM-Aufrufe -telemetry.llm.calls.count={0} Aufrufe -telemetry.llm.tokens={0} Tok -telemetry.llm.errors={0} Fehl -telemetry.total.tokens=Gesamte Tokens: {0} telemetry.llm.col.provider=Anbieter telemetry.llm.col.model=Modell telemetry.llm.col.calls=Aufrufe @@ -930,7 +1039,6 @@ developer.session.memory.messages=Memory Messages developer.session.memory.word.count={0} words developer.session.memory.empty=(Empty) - # Export Format - Markdown export.format.markdown.name=Markdown export.format.markdown.description=Für Menschen lesbares Textformat @@ -956,49 +1064,52 @@ export.format.html.benefit.3=Professionelles Erscheinungsbild export.format.html.benefit.4=Einfach zu teilen # Error Messages -error.network=⚠️ Verbindung zum KI-Dienst{endpoint} konnte nicht hergestellt werden\n\nBitte überprüfen Sie:\n• Ihre Internetverbindung\n• Die URL des KI-Dienstes (Einstellungen prüfen)\n• Firewall-Einstellungen\n• Die Verfügbarkeit des Dienstes +error.network=⚠️ Verbindung zum KI-Dienst{endpoint} konnte nicht hergestellt werden\n\nBitte überprüfen Sie\:\n• Ihre Internetverbindung\n• Die URL des KI-Dienstes (Einstellungen prüfen)\n• Firewall-Einstellungen\n• Die Verfügbarkeit des Dienstes error.authentication=⚠️ API-Schlüssel ist ungültig oder fehlt{provider}\n\nBeheben Sie dies, indem Sie Ihren API-Schlüssel in den Einstellungen festlegen. -error.model_configuration=⚠️ Fehler in der Modellkonfiguration: {issue}\n\nBeheben Sie dies durch:\n1. Öffnen der Einstellungen\n2. Auswahl eines KI-Anbieters\n3. Auswahl eines Modells aus der Liste +error.model_not_found=⚠️ Modell nicht gefunden\: {model}\n\nDieses Modell wurde möglicherweise vom Anbieter veraltet oder entfernt. Bitte wählen Sie ein anderes Modell aus. +error.provider_not_configured=⚠️ Kein KI-Anbieter konfiguriert.\n\nUm zu chatten\:\n1. Öffnen Sie die Einstellungen\n2. Wählen Sie einen KI-Anbieter (OpenAI, Ollama, Anthropic usw.)\n3. Geben Sie Ihren API-Schlüssel ein oder konfigurieren Sie die Verbindung error.rate_limit=⚠️ Ratenlimit überschritten\n{retryAfter}\n\nSie haben Ihr API-Nutzungslimit erreicht. Bitte warten Sie, bevor Sie weitere Nachrichten senden. error.insufficient_credits=⚠️ Unzureichendes Guthaben\n\nIhr Guthaben ist zu niedrig, um diesen KI-Anbieter zu nutzen.\n\nBitte gehen Sie zur Abrechnungsseite Ihres Anbieters. -error.timeout=⚠️ Anfrage nach {timeout} Sekunden abgelaufen\n\nMögliche Ursachen:\n• Hohe Serverlast – versuchen Sie es später erneut\n• Komplexe Anfrage – vereinfachen Sie Ihre Eingabe\n• Netzwerkverzögerungen -error.invalid_request=⚠️ Ungültige Anfrage: {details}\n\nBitte überprüfen Sie Ihre Eingabe und versuchen Sie es erneut. -error.system=⚠️ Systemfehler\n\nEin unerwarteter Fehler ist aufgetreten: {errorCode}\n\nBitte wenden Sie sich an den Askimo-Support mit:\n• Ihrer letzten Aktion\n• Dem obigen Fehlercode\n• Dem Zeitstempel +error.timeout=⚠️ Anfrage nach {timeout} Sekunden abgelaufen\n\nMögliche Ursachen\:\n• Hohe Serverlast – versuchen Sie es später erneut\n• Komplexe Anfrage – vereinfachen Sie Ihre Eingabe\n• Netzwerkverzögerungen +error.context_length=⚠️ Kontextfenster überschritten\n\nDie gesamte Eingabe (Konversationsverlauf + Ihre Nachricht + Anhänge) ist zu groß, als dass dieses Modell sie verarbeiten könnte.\n\nSo beheben Sie das Problem\:\n• Starten Sie eine neue Chat-Sitzung, um den Konversationsverlauf zu löschen\n• Kürzen Sie Ihre Nachricht oder entfernen Sie große Anhänge\n• Wenn Sie ein lokales Modell verwenden (Ollama / LM Studio / Docker), erhöhen Sie die Kontextgröße in den Einstellungen\n• Wechseln Sie zu einem Modell mit einem größeren Kontextfenster +error.invalid_request=⚠️ Ungültige Anfrage\: {details}\n\nBitte überprüfen Sie Ihre Eingabe und versuchen Sie es erneut. +error.local_server=⚠️ Fehler beim lokalen KI-Server\!\n\nDer KI-Serverprozess ist abgestürzt oder konnte das Modell nicht laden. Dies wird nicht durch Askimo verursacht.\n\nMögliche Ursachen\:\n• Die Modelldatei ist beschädigt oder unvollständig — versuchen Sie, sie erneut herunterzuladen\n• Nicht genug RAM/VRAM — versuchen Sie eine kleinere Quantisierung (z. B. Q4 statt Q8)\n• Nicht unterstütztes Modellformat für die aktuelle Serverversion\n• Der Serverprozess wurde vom Betriebssystem beendet (Out-of-Memory)\n\nWas zu tun ist\:\n1. Überprüfen Sie die Logs Ihres lokalen KI-Servers\n2. Starten Sie den Server neu und versuchen Sie es erneut\n3. Laden Sie das Modell erneut herunter\n4. Versuchen Sie ein anderes Modell oder eine andere Quantisierungsstufe\n\nTechnische Details\: {details} +error.system=⚠️ Systemfehler\n\nEin unerwarteter Fehler ist aufgetreten\: {errorCode}\n\nBitte wenden Sie sich an den Askimo-Support mit\:\n• Ihrer letzten Aktion\n• Dem obigen Fehlercode\n• Dem Zeitstempel # Model Availability Errors error.model.not_available.title.chat=Modell nicht verfügbar error.model.not_available.title.embedding=Einbettungsmodell nicht verfügbar error.model.not_available.message.chat=Das Modell ''{0}'' ist nicht verfügbar. -error.model.not_available.message.embedding=Das Einbettungsmodell ''{0}'' ist nicht verfügbar.\n\nBitte konfigurieren Sie Ihr Einbettungsmodell korrekt. +error.model.not_available.message.embedding=Das Einbettungsmodell ''{0}'' ist in Ihrem lokalen Anbieter nicht verfügbar.\n\nGehen Sie zu Einstellungen → KI-Anbieter und wählen Sie ein verfügbares Einbettungsmodell in der Anbieterkonfigurationskarte aus. error.model.not_available.config_link=Einbettungsmodell konfigurieren -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=Etwas ist schiefgelaufen -error.app.message=Ein unerwarteter Fehler ist aufgetreten: {0} +error.app.message=Ein unerwarteter Fehler ist aufgetreten\: {0} # Send Message Errors error.send_message.title=Nachricht konnte nicht gesendet werden - # Indexing Errors error.indexing.model_not_found.title=Einbettungsmodell nicht gefunden error.indexing.model_not_found.message=Das Einbettungsmodell ''{0}'' wurde nicht gefunden. Bitte laden oder aktivieren Sie dieses Einbettungsmodell von {1}, bevor Sie mit der Indexierung beginnen. +error.indexing.input_too_large.title=Embedding-Eingabe zu groß +error.indexing.input_too_large.message=Das Embedding-Modell hat ein oder mehrere Segmente aus [{0}] abgelehnt, da die Token-Anzahl die maximale Kontextgröße des Modells überschreitet. Reduzieren Sie die Chunk-Größe unter Einstellungen → Indexierung → Max. Zeichen pro Chunk und führen Sie die Indizierung erneut aus. error.indexing.io_error.title=E/A-Fehler error.indexing.io_error.message=Während der Indexierung ist ein E/A-Fehler aufgetreten error.indexing.unknown.title=Indexierungsfehler error.indexing.unknown.message=Während der Indexierung ist ein unbekannter Fehler aufgetreten - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=Status des Einbettungsmodells (nur für RAG-Funktionen erforderlich) -settings.embedding.not_available_rag_only=⚠️ {0}.\n\nHinweis: Dies betrifft nur projektbasierte RAG-Funktionen. Normale Chat-Funktionen bleiben unbeeinträchtigt. -settings.embedding.provider_unreachable=⚠️ Verbindung zum Anbieter nicht möglich: {0}.\n\nHinweis: Einbettungsmodelle werden nur für projektbasierte RAG-Funktionen benötigt. -settings.embedding.check_failed=Überprüfung des Einbettungsmodells fehlgeschlagen: {0} +settings.embedding.not_available_rag_only=⚠️ {0}.\n\nHinweis\: Dies betrifft nur projektbasierte RAG-Funktionen. Normale Chat-Funktionen bleiben unbeeinträchtigt. +settings.embedding.provider_unreachable=⚠️ Verbindung zum Anbieter nicht möglich\: {0}.\n\nHinweis\: Einbettungsmodelle werden nur für projektbasierte RAG-Funktionen benötigt. +settings.embedding.check_failed=Überprüfung des Einbettungsmodells fehlgeschlagen\: {0} settings.embedding.download_model=Einbettungsmodell herunterladen -settings.embedding.download_success=✅ Einbettungsmodell erfolgreich heruntergeladen: {0} -settings.embedding.download_failed=❌ Einbettungsmodell konnte nicht heruntergeladen werden: {0}. Bitte manuell versuchen: ollama pull {0} -settings.embedding.download_error=Fehler beim Herunterladen des Modells: {0} +settings.embedding.download_success=✅ Einbettungsmodell erfolgreich heruntergeladen\: {0} +settings.embedding.download_failed=❌ Einbettungsmodell konnte nicht heruntergeladen werden\: {0}. Bitte manuell versuchen\: ollama pull {0} +settings.embedding.download_error=Fehler beim Herunterladen des Modells\: {0} settings.embedding.anthropic_no_embedding=Anthropic stellt keine Einbettungsmodelle bereit settings.embedding.xai_no_embedding=xAI stellt keine Einbettungsmodelle bereit @@ -1006,21 +1117,21 @@ settings.embedding.xai_no_embedding=xAI stellt keine Einbettungsmodelle bereit settings.rag.title=RAG-Konfiguration settings.rag.description=Konfiguration der Parameter für Retrieval-Augmented Generation zur projektbasierten Wissensabfrage settings.rag.vector.max.results=Maximale Ergebnisse der Vektorsuche -settings.rag.vector.max.results.hint=Maximale Anzahl von Dokumenten aus der Vektorsuche (Standard: 20) +settings.rag.vector.max.results.hint=Maximale Anzahl von Dokumenten aus der Vektorsuche (Standard\: 20) settings.rag.vector.min.score=Minimaler Score der Vektorsuche -settings.rag.vector.min.score.hint=Minimaler Ähnlichkeitswert 0,0–1,0 (Standard: 0,3) +settings.rag.vector.min.score.hint=Minimaler Ähnlichkeitswert 0,0–1,0 (Standard\: 0,3) settings.rag.hybrid.max.results=Maximale Hybrid-Ergebnisse -settings.rag.hybrid.max.results.hint=Endgültige Dokumentanzahl nach Fusion (Standard: 15) +settings.rag.hybrid.max.results.hint=Endgültige Dokumentanzahl nach Fusion (Standard\: 15) settings.rag.rank.fusion.constant=Rank-Fusion-Konstante -settings.rag.rank.fusion.constant.hint=RRF-Konstante für hybrides Ranking (Standard: 60) +settings.rag.rank.fusion.constant.hint=RRF-Konstante für hybrides Ranking (Standard\: 60) settings.rag.use.absolute.paths=Absolute Pfade in Zitaten verwenden settings.rag.use.absolute.paths.hint=Vollständige Dateipfade in KI-Antworten anzeigen, um bei mehreren Dateien mit demselben Namen mehr Klarheit zu schaffen settings.rag.embedding.title=Embedding-Konfiguration settings.rag.embedding.description=Konfigurieren Sie Parameter für Textsegmentierung und Embeddings settings.rag.embedding.max.chars.per.chunk=Maximale Zeichen pro Segment -settings.rag.embedding.max.chars.per.chunk.hint=Maximale Anzahl an Zeichen pro Textsegment (Standard: 1500) +settings.rag.embedding.max.chars.per.chunk.hint=Maximale Anzahl an Zeichen pro Textsegment (Standard\: 1500) settings.rag.embedding.chunk.overlap=Segmentüberlappung -settings.rag.embedding.chunk.overlap.hint=Anzahl überlappender Zeichen zwischen Segmenten (Standard: 100) +settings.rag.embedding.chunk.overlap.hint=Anzahl überlappender Zeichen zwischen Segmenten (Standard\: 100) settings.rag.embedding.models=Embedding-Modelle nach Anbieter settings.rag.indexing.title=Indizierungskonfiguration settings.rag.indexing.description=Steuern Sie, welche Dateien indiziert werden und die maximal zulässige Dateigröße @@ -1035,7 +1146,27 @@ settings.rag.indexing.binary.extensions.hint=Kommagetrennte Dateierweiterungen, settings.rag.indexing.embedding.batch.size=Embedding-Batchgröße settings.rag.indexing.embedding.batch.size.hint=Anzahl der Textsegmente, die pro Anfrage an das Embedding-Modell gesendet werden. Wenn die Indizierung langsam ist und Sie einen Remote-Anbieter (OpenAI, Gemini) verwenden, versuchen Sie, den Wert auf 100–500 zu erhöhen. Bei einem lokalen Modell (Ollama, LM Studio) sollte der Wert niedrig bleiben, um Timeouts zu vermeiden. -# Settings - Utility Models +## Settings - Models +settings.models.title=Modelle +settings.models.description=Konfigurieren Sie das globale KI-Modellverhalten, das über alle Anbieter hinweg geteilt wird. +settings.models.max.tool.calling.round.trips=Maximale Tool-Aufruf-Runden +settings.models.max.tool.calling.round.trips.hint=Maximale Anzahl an Tool-Aufrufen, die die KI in einer einzelnen Antwort durchführen kann (Standard\: 10). Höhere Werte ermöglichen komplexere Agenten-Aufgaben, erhöhen jedoch Latenz und Kosten. + +# Memory Settings +settings.memory.title=Speichereinstellungen +settings.memory.description=Steuert, wie die KI den Gesprächsverlauf verwaltet, um im Kontextfenster des Modells zu bleiben. +settings.memory.mode=Speichermodus +settings.memory.mode.compact=Kompakt +settings.memory.mode.compact.hint=Geringere Token-Kosten, weniger Details +settings.memory.mode.compact.description=Aggressives Zusammenfassen. Geringe Token-Kosten, häufiges Zusammenfassen. Ideal für sehr lange Sitzungen oder kostensensitive Modelle. +settings.memory.mode.balanced=Ausgewogen +settings.memory.mode.balanced.hint=Gutes Qualitäts-/Kostenverhältnis +settings.memory.mode.balanced.description=Gutes Qualitäts-/Kostenverhältnis. Löst die Zusammenfassung bei 40 % des Speicherbudgets aus. Geeignet für die meisten Sitzungen. +settings.memory.mode.detail=Detailliert +settings.memory.mode.detail.hint=Hohe Wiedergabetreue, mehr Tokens +settings.memory.mode.detail.description=Minimales Zusammenfassen. Behält mehr wörtliche Gesprächsrunden und reichhaltigere Zusammenfassungen bei. Ideal für kurze Sitzungen oder wenn präziser Abruf wichtig ist. + +## Settings - Utility Models settings.utility.models.title=Hilfsmodelle settings.utility.models.uses.selected=(verwendet das ausgewählte Modell) settings.utility.models.local.note={0} ist ein lokaler Anbieter — das aktuell aktive Chat-Modell wird automatisch für Hilfsaufgaben verwendet. @@ -1046,7 +1177,7 @@ settings.vision.models.title=Vision-Modelle ## Settings - Image Models settings.image.models.title=Bildgenerierungsmodelle -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=Modellkonfiguration settings.provider.model.config.description=Überschreiben Sie die Standardmodelle für bestimmte Aufgaben. Lassen Sie ein Feld leer, um das Standardmodell des Anbieters zu verwenden. settings.provider.model.config.guide=KI-Modellkonfigurationsanleitung anzeigen @@ -1057,26 +1188,24 @@ settings.provider.model.embedding.hint=Modell zur Erzeugung von Vektor-Embedding settings.model.placeholder.enter={0}-Modell eingeben - # File Viewer Dialog file.viewer.title=Dateibetrachter file.viewer.title.with.name=Dateibetrachter – {0} file.viewer.dialog.close=Schließen file.viewer.copy.clipboard=In die Zwischenablage kopieren -file.viewer.copied=Kopiert! +file.viewer.copied=Kopiert\! # Mermaid Chart Renderer mermaid.setup.required.title=Mermaid-CLI erforderlich mermaid.setup.privacy.note=Askimo rendert Diagramme lokal, um Ihre Privatsphäre zu schützen. mermaid.setup.instructions.title=Einrichtungsanleitung -mermaid.setup.instructions.text=Um Mermaid-Diagramme in Askimo darzustellen, folgen Sie bitte der Installationsanleitung unter: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.text=Um Mermaid-Diagramme in Askimo darzustellen, folgen Sie bitte der Installationsanleitung unter\: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=Einrichtungsanleitung öffnen mermaid.setup.button.copy.diagram=Diagramm kopieren -mermaid.diagram.source.label=Diagrammquelle: +mermaid.diagram.source.label=Diagrammquelle\: mermaid.rendering.progress=Diagramm wird gerendert... mermaid.error.rendering.title=Fehler beim Rendern des Diagramms -mermaid.error.rendering.raw.label=Rohes Diagramm: mermaid.error.unexpected.state=Unerwarteter Zustand. Bitte versuchen Sie es erneut. mermaid.error.failed.load.image=Diagrammbild konnte nicht geladen werden mermaid.button.copy.code=Code kopieren @@ -1086,7 +1215,8 @@ mermaid.button.zoom.in=Vergrößern mermaid.button.zoom.out=Verkleinern mermaid.button.reset.zoom=Zoom zurücksetzen mermaid.button.retry=Erneut versuchen -mermaid.feedback.copied=Kopiert! +mermaid.feedback.copied=Kopiert\! + # Reference Material knowledge.source.type.folder=Ordner (auf Änderungen überwacht) @@ -1104,7 +1234,7 @@ mcp.instances.title=MCP-Instanzen mcp.instances.description=Diese MCP-Instanzen stehen zur Verfügung mcp.instances.empty=Keine MCP-Instanzen konfiguriert mcp.instances.count={0} Instanz(en) -mcp.instance.server.label=Server: {0} +mcp.instance.server.label=Server\: {0} mcp.instance.delete.confirm.title=MCP-Instanz löschen? mcp.instance.delete.confirm.message=Sind Sie sicher, dass Sie die mcp-Instanz "{0}" löschen möchten? Dies kann nicht rückgängig gemacht werden. mcp.instance.enable.tooltip=Diese MCP-Instanz aktivieren @@ -1130,7 +1260,7 @@ mcp.instance.field.description=Beschreibung mcp.instance.field.description.placeholder=Kurze Beschreibung, was dieser Server tut mcp.instance.field.transport=Transport-Typ mcp.instance.field.command=Befehlsvorlage -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=Leerzeichengetrennter Befehl mit {{parameter}}-Platzhaltern mcp.instance.validation.error.empty.id=Die Server-ID darf nicht leer sein mcp.instance.validation.error.invalid.id.pattern=Die Server-ID darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten @@ -1139,20 +1269,20 @@ mcp.instance.validation.error.empty.command=Die Befehlsvorlage darf nicht leer s mcp.instance.validation.error.empty.parameter.key=Der Parameter-Schlüssel darf nicht leer sein mcp.instance.validation.error.empty.parameter.label=Die Parameter-Bezeichnung darf nicht leer sein mcp.instance.env.label=Umgebungsvariablen (Optional) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=Format: SCHLÜSSEL=wert oder SCHLÜSSEL={{parameter}} (einer pro Zeile) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=Format\: SCHLÜSSEL\=wert oder SCHLÜSSEL\={{parameter}} (einer pro Zeile) mcp.instance.transport.stdio=Stdio (Lokaler Prozess) mcp.instance.transport.http=HTTP (Remotes Server) mcp.instance.http.url.label=URL-Vorlage -mcp.instance.http.url.placeholder=https://{{host}}/mcp oder https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp oder https\://api.example.com/mcp mcp.instance.http.url.hint=Der Endpunkt-URL des Servers. Verwenden Sie {{parameter}}-Platzhalter für dynamische Werte mcp.instance.http.headers.label=HTTP-Header (Optional) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=Format: Header-Name=wert oder Header-Name={{parameter}} (einer pro Zeile) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=Format\: Header-Name\=wert oder Header-Name\={{parameter}} (einer pro Zeile) mcp.instance.http.timeout.label=Timeout (ms) mcp.instance.http.timeout.hint=Anfrage-Timeout in Millisekunden mcp.instance.validation.error.empty.url=Die URL-Vorlage darf nicht leer sein -mcp.instance.validation.error.invalid.url=Die URL-Vorlage muss mit http:// oder https:// beginnen +mcp.instance.validation.error.invalid.url=Die URL-Vorlage muss mit http\:// oder https\:// beginnen # MCP Integrations (Project View) mcp.instance.delete.tooltip=MCP-Instanz löschen @@ -1202,7 +1332,7 @@ mcp.tools.dialog.search.count={0} von {1} Tool(s) mcp.tools.dialog.search.empty=Keine Tools stimmen mit Ihrer Suche überein mcp.tools.dialog.export=Tools exportieren mcp.tools.dialog.export.success=Tools nach {0} exportiert -mcp.tools.dialog.export.failed=Fehler beim Exportieren der Tools: {0} +mcp.tools.dialog.export.failed=Fehler beim Exportieren der Tools\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=MCP-Server hinzufügen @@ -1258,7 +1388,7 @@ file.viewer.close=Viewer schließen file.viewer.open.external=Extern öffnen file.viewer.binary=Binärdatei — Vorschau als Text nicht möglich. file.viewer.too.large=Datei ist zu groß für eine Vorschau ({0} KB). Das Maximum liegt bei 512 KB. -file.viewer.error=Datei konnte nicht gelesen werden: {0} +file.viewer.error=Datei konnte nicht gelesen werden\: {0} file.viewer.select.prompt=Wählen Sie eine Datei aus dem Baum oben aus, um ihren Inhalt als Vorschau anzuzeigen # Project Side Panel @@ -1270,12 +1400,11 @@ panel.reindex.confirm.title=Stoppen und neu indizieren? panel.reindex.confirm.message="{0}" wird gerade indiziert. Aktuelle Indizierung stoppen und von vorne beginnen? panel.reindex.confirm.button=Stoppen und neu indizieren panel.reindex.confirm.cancel=Abbrechen -panel.collapse=Panel ausblenden panel.collapse=Panel reduzieren # RAG Status rag.status.started=Indizierung gestartet -rag.status.inprogress=Indizierung: {0}% +rag.status.inprogress=Indizierung\: {0}% rag.status.inprogress.unknown=Indizierung... rag.status.queued=In Warteschlange — wartet darauf, dass ein anderes Projekt die Indizierung abschließt rag.status.ready=Bereit @@ -1287,7 +1416,6 @@ rag.empty.title=Keine Wissensquellen rag.empty.description=Fügen Sie Dateien oder Ordner hinzu,\num RAG für dieses Projekt zu aktivieren rag.empty.button.add=Quellen hinzufügen - # Plans plans.nav.title=Pläne plans.title=Pläne @@ -1326,7 +1454,7 @@ plans.editor.label=YAML-Inhalt plans.editor.placeholder=Fügen Sie hier Ihr Plan-YAML ein oder geben Sie es ein... plans.editor.valid=Gültiges YAML plans.editor.hint.title=Referenz -plans.editor.hint.fields=Erforderlich: id, name, steps\nOptional: description, icon, inputs, workflow\nSchritttypen: text, multiline, toggle, number\nWorkflow-Typen: sequence, parallel, conditional +plans.editor.hint.fields=Erforderlich\: id, name, steps\nOptional\: description, icon, inputs, workflow\nSchritttypen\: text, multiline, toggle, number\nWorkflow-Typen\: sequence, parallel, conditional plans.editor.menu.edit=YAML bearbeiten plans.editor.ai.label=Mit KI generieren plans.editor.ai.placeholder=Beschreibe in einfachen Worten, was dieser Plan tun soll... @@ -1355,7 +1483,6 @@ skills.view.empty.search=Keine Fertigkeiten entsprechen Ihrer Suche skills.view.manage=Skills verwalten skills.view.select.prompt=Wählen Sie eine Skill aus skills.view.select.hint=Wählen Sie eine Skill aus dem Skills-Panel auf der rechten Seite -skills.view.select.skill=Skill auswählen… skills.view.run=Fähigkeit ausführen skills.view.run.command=Befehl senden skills.view.running=Wird ausgeführt… @@ -1386,12 +1513,12 @@ skills.view.panel.collapse=Panel einklappen skills.view.panel.expand=Panel ausklappen skills.view.tab.skills=Fähigkeiten skills.view.tab.workspace=Arbeitsbereich -skills.view.last.run=Letzte Ausführung: {0} +skills.view.last.run=Letzte Ausführung\: {0} skills.view.category.uncategorized=Sonstige skills.view.search.placeholder=Fähigkeiten suchen ... skills.view.search.clear=Suche leeren skills.view.context.placeholder=Was möchtest du tun? (optional) -skills.view.command.mode.hint=Befehlsmodus: Eine Eingabe, die mit / beginnt, wird als Agenten-Befehl ausgeführt. +skills.view.command.mode.hint=Befehlsmodus\: Eine Eingabe, die mit / beginnt, wird als Agenten-Befehl ausgeführt. skills.view.system.prompt.preview=System-Prompt skills.view.response.title=Antwort skills.view.followup.label=Nachfrage @@ -1401,7 +1528,7 @@ skills.view.history.empty=Noch keine Ausführungen skills.view.copy=Kopieren skills.view.system.prompt.file=Datei skills.view.system.prompt.files=Dateien -skills.view.system.prompt.also.included=Ebenfalls im Agent-Kontext enthalten: +skills.view.system.prompt.also.included=Ebenfalls im Agent-Kontext enthalten\: skills.view.docs.tooltip=Fertigkeitsanleitung anzeigen skills.view.mode.agentic=Agentisch skills.view.mode.manual=Manuell @@ -1413,11 +1540,6 @@ skills.agentic.skills.available={0} Fähigkeiten als Agent-Kontext verfügbar skills.agentic.no.skills.hint=Noch keine Fähigkeiten — füge in Einstellungen → Fähigkeiten Fähigkeiten hinzu, um dem Agenten spezielle Funktionen zu geben skills.agentic.model.default=Standardmodell -# File / folder chooser -file.chooser.folder.select=Auswählen -file.chooser.folder.hint=Doppelklicken Sie auf einen Ordner, um ihn zu öffnen. Wenn Sie sich in dem Ordner befinden, den Sie indizieren möchten, klicken Sie auf „Auswählen“. -file.chooser.file.select=Auswählen - # Onboarding Wizard onboarding.title=Willkommen bei Askimo onboarding.step.indicator=Schritt {0} von {1} @@ -1446,7 +1568,7 @@ onboarding.step.analytics.section.never=Was wir niemals sammeln onboarding.step.analytics.toggle.subtitle=Hilft uns, uns auf das Wichtigste zu konzentrieren · jederzeit änderbar unter Einstellungen → Erweitert # Onboarding Step 1: Welcome -onboarding.step.welcome.title=👋 Willkommen bei Askimo! +onboarding.step.welcome.title=👋 Willkommen bei Askimo\! onboarding.step.welcome.description=Ihr persönlicher KI-Assistent. Chatten Sie mit mehreren KI-Modellen, organisieren Sie Wissen in Projekten und automatisieren Sie Abläufe mit Skills und Plänen. onboarding.step.welcome.feature1.title=💬 Mit KI chatten onboarding.step.welcome.feature1.description=Stellen Sie Fragen, lassen Sie sich bei Aufgaben helfen oder führen Sie ein Gespräch mit einem beliebigen KI-Modell. @@ -1473,9 +1595,8 @@ onboarding.step.directives.feature2.description=Unklare Fragen bringen unklare A onboarding.step.directives.feature3.title=Für jede Aufgabe der richtige Experte onboarding.step.directives.feature3.description=Benötigen Sie einen geduldigen Tutor zum Lernen und einen direkten Code Reviewer zum Debuggen? Bewahren Sie verschiedene Direktiven getrennt auf und erhalten immer das richtige Mindset für jede Aufgabe. onboarding.step.directives.link=Beispiele und Tipps ansehen - # Onboarding Step 6: Ready -onboarding.step.ready.title=🚀 Sie sind fertig! +onboarding.step.ready.title=🚀 Sie sind fertig\! onboarding.step.ready.description=Alles ist eingerichtet und bereit. Starten Sie Ihren ersten Chat oder stöbern Sie in den untenstehenden Ressourcen. onboarding.step.ready.link.docs=📚 Dokumentation durchsuchen onboarding.step.ready.link.providers=🔧 KI-Anbieter konfigurieren @@ -1485,16 +1606,16 @@ onboarding.step.ready.link.github=⭐ Uns auf GitHub favorisieren onboarding.step.persona.title=🎯 Was möchten Sie hauptsächlich tun? onboarding.step.persona.description=Wählen Sie die Option, die am ehesten Ihrer Arbeit entspricht. Askimo wird die relevantesten Funktionen anzeigen. Sie können dies jederzeit über das Menü „Ansicht“ ändern. onboarding.step.persona.developer.description=Code lesen und schreiben, Dateien refaktorieren, Gerüste generieren oder agentische Aufgaben in Ihrem lokalen Projekt ausführen. -onboarding.step.persona.developer.features=Aktiviert: Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.developer.features=Aktiviert\: Skills (Gemini CLI, Claude Code), Projects onboarding.step.persona.researcher.description=Themen recherchieren, Daten analysieren, strukturierte Berichte schreiben und wissensbasierte Antworten erhalten. -onboarding.step.persona.researcher.features=Aktiviert: Plans, Projects (RAG) +onboarding.step.persona.researcher.features=Aktiviert\: Plans, Projects (RAG) onboarding.step.persona.manager.description=E-Mails entwerfen, Besprechungsnotizen verarbeiten, Statusberichte schreiben oder mehrstufige Content-Workflows ausführen. -onboarding.step.persona.manager.features=Aktiviert: Plans +onboarding.step.persona.manager.features=Aktiviert\: Plans onboarding.step.persona.everything.description=Ich mache eine Mischung aus verschiedenen Dingen — zeigen Sie mir alle Funktionen und ich werde entscheiden, was ich verwende. -onboarding.step.persona.everything.features=Aktiviert: Skills, Plans, Projects, MCP, RAG +onboarding.step.persona.everything.features=Aktiviert\: Skills, Plans, Projects, MCP, RAG # Persona labels persona.developer=💻 Code schreiben und überprüfen persona.researcher=🔬 Recherchieren und analysieren persona.manager=📋 Schreiben und organisieren -persona.everything=⚡ Ich mache eine Mischung aus Dingen \ No newline at end of file +persona.everything=⚡ Ich mache eine Mischung aus Dingen diff --git a/desktop-shared/src/main/resources/i18n/messages_es.properties b/desktop-shared/src/main/resources/i18n/messages_es.properties index 46503f67a..cf002082f 100644 --- a/desktop-shared/src/main/resources/i18n/messages_es.properties +++ b/desktop-shared/src/main/resources/i18n/messages_es.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - Spanish Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=Sistema menu.view.appearance.light=Claro menu.view.appearance.dark=Oscuro menu.view.fullscreen=Entrar en pantalla completa +menu.view.bookmarks=Ver marcadores menu.terminal=Terminal menu.terminal.new=Nuevo terminal menu.help=Ayuda @@ -43,7 +44,7 @@ menu.help.share=🗣 Compartir Askimo menu.help.share.x=Compartir en X / Twitter menu.help.share.linkedin=Compartir en LinkedIn menu.help.share.facebook=Compartir en Facebook -menu.help.share.text=Descubre Askimo: un cliente de escritorio de IA gratuito y local. Funciona con Ollama, OpenAI, Anthropic y más. https://askimo.chat +menu.help.share.text=Descubre Askimo\: un cliente de escritorio de IA gratuito y local. Funciona con Ollama, OpenAI, Anthropic y más. https\://askimo.chat menu.help.share.hackernews=Publicar en Hacker News menu.eventlog=Registro de eventos menu.help.model.capabilities=Abrir archivo de capacidades del modelo @@ -51,7 +52,7 @@ menu.dev.clear.account.preferences=[Dev] Eliminar preferencias de cuenta menu.about=Acerca de Askimo menu.help.check.updates=Buscar actualizaciones... menu.help.diagnostics=Diagnóstico del sistema... - +menu.help.support.askimo=Apoyar a Askimo ⭐ # Common Dialog Buttons dialog.cancel=Cancelar @@ -60,16 +61,16 @@ dialog.close=Cerrar # Backup and Restore backup.export.title=Exportar copia de seguridad backup.export.success.title=Copia de seguridad exportada -backup.export.success.message=Copia de seguridad exportada correctamente a:\n{0} +backup.export.success.message=Copia de seguridad exportada correctamente a\:\n{0} backup.export.error.title=Error al exportar -backup.export.error.message=No se pudo exportar la copia de seguridad:\n{0} +backup.export.error.message=No se pudo exportar la copia de seguridad\:\n{0} backup.import.title=Importar copia de seguridad backup.import.confirm.title=Confirmar importación backup.import.confirm.message=Esta acción reemplazará todos los datos actuales con la copia de seguridad.\n\nSe creará automáticamente una copia de seguridad de seguridad antes de importar.\n\n¿Está seguro de que desea continuar? backup.import.success.title=Copia de seguridad importada backup.import.success.message=Copia de seguridad importada correctamente.\n\nReinicie Askimo para que todos los cambios surtan efecto. backup.import.error.title=Error al importar -backup.import.error.message=No se pudo importar la copia de seguridad:\n{0} +backup.import.error.message=No se pudo importar la copia de seguridad\:\n{0} # Event Log eventlog.title=Registro de eventos ({0}) @@ -108,6 +109,12 @@ discover.stat.projects=Proyectos discover.stat.mcp=Servidores MCP discover.stat.plans=Planes discover.stat.skills=Habilidades +discover.customize=Personalizar +discover.customize.show_token_usage=Mostrar tarjeta de uso de tokens +discover.tokens.title=Modelos principales por uso de tokens +discover.tokens.total={0} en total +discover.tokens.view_details=Ver detalles +discover.tokens.empty=Aún no se ha registrado el uso de tokens. Empiece a chatear para ver las estadísticas aquí. discover.explore.title=Explorar funciones discover.explore.mcp.title=Servidores MCP discover.explore.mcp.desc=Amplía Askimo con herramientas externas y fuentes de datos mediante el Model Context Protocol. @@ -142,7 +149,7 @@ session.rename.error.empty=El título no puede estar vacío session.export.file.chooser.title=Guardar historial del chat session.export.button.export=Exportar session.export.success.title=Exportación exitosa -session.export.success.message=La sesión ha sido exportada correctamente a: +session.export.success.message=La sesión ha sido exportada correctamente a\: # Projects project.title=Proyectos @@ -158,11 +165,11 @@ project.new.dialog.file.browse=Seleccionar archivos para procesar... project.new.dialog.sources.label=Materiales de referencia (opcional) project.new.dialog.sources.add=Agregar fuente project.new.dialog.error.empty.name=El nombre del proyecto no puede estar vacío -project.new.dialog.error.create.failed=No se pudo crear el proyecto: {0} +project.new.dialog.error.create.failed=No se pudo crear el proyecto\: {0} project.new.dialog.name.error.empty=El nombre del proyecto no puede estar vacío project.new.dialog.button.create=Crear proyecto project.new.dialog.button.cancel=Cancelar -project.new.dialog.success.title=¡Proyecto creado con éxito! +project.new.dialog.success.title=¡Proyecto creado con éxito\! project.new.dialog.success.message=El proyecto ''{0}'' ha sido creado. project.new.dialog.success.countdown=Cerrando en {0} segundo{1}... project.new.dialog.success.close=Cerrar ahora @@ -185,7 +192,7 @@ projects.title=Proyectos projects.description=Organiza tus chats en torno a un tema y adjunta archivos, carpetas o URL como fuentes de conocimiento, para que la IA siempre tenga el contexto adecuado para ese proyecto. projects.error=❌ {0} projects.empty=No se encontraron proyectos. -projects.empty.hint=💡 ¡Crea un nuevo proyecto para organizar tus sesiones de chat! +projects.empty.hint=💡 ¡Crea un nuevo proyecto para organizar tus sesiones de chat\! projects.search.placeholder=Buscar por nombre… projects.search.empty=Ningún proyecto coincide con "{0}". projects.col.name=Nombre @@ -196,13 +203,16 @@ projects.sources.expand=Mostrar materiales de referencia projects.sources.collapse=Ocultar materiales de referencia projects.sources.empty.title=Aún no hay materiales de referencia projects.sources.empty.description=Añada documentos para que Askimo pueda consultarlos al responder a sus preguntas -projects.sources.info.tooltip=Los materiales de referencia ayudan a Askimo a comprender su contexto específico.\n\n\ -Añada carpetas, archivos o sitios web que contengan la información que desea que Askimo utilice al responder preguntas.\n\n\ -Por ejemplo:\n\ +projects.sources.info.tooltip=Los materiales de referencia ayudan a Askimo a comprender su contexto específico.\n\ +\n\ +Añada carpetas, archivos o sitios web que contengan la información que desea que Askimo utilice al responder preguntas.\n\ +\n\ +Por ejemplo\:\n\ • Documentación de su proyecto\n\ • Base de conocimiento de la empresa\n\ • Especificaciones técnicas\n\ -• Artículos de investigación\n\n\ +• Artículos de investigación\n\ +\n\ Askimo buscará en estos materiales para proporcionar respuestas más precisas y contextualizadas. projects.sources.type.local_folders=Carpetas Locales projects.sources.type.local_files=Archivos Locales @@ -229,8 +239,8 @@ project.reindex=Reindexar proyecto project.menu.tooltip=Menú del proyecto project.new.chat.placeholder=Nuevo chat en {0} project.recent.chats=Chats recientes -project.no.chats=Aún no hay chats. ¡Comienza uno nuevo abajo! -project.indexing.label=Indexación de la fuente de conocimiento: {0} +project.no.chats=Aún no hay chats. ¡Comienza uno nuevo abajo\! +project.indexing.label=Indexación de la fuente de conocimiento\: {0} project.indexing.queued=Indexación en cola - esperando a que termine otro proyecto... project.indexing.failed=La indexación falló. Intente volver a indexar desde el menú del proyecto. project.indexing.ready.label=Indexado @@ -245,12 +255,11 @@ session.error.removing=Error al eliminar la sesión del proyecto. Por favor, int # Settings settings.title=Configuración -settings.general=General settings.appearance=Apariencia settings.appearance.accent=Color de acento settings.appearance.accent.description=Personaliza con seguridad un solo color de acento. Askimo lo aplica a los acentos principales de la interfaz y deriva colores relacionados para mantener la legibilidad. settings.appearance.accent.label=Color de acento (Hex) -settings.appearance.accent.invalid=Introduce un color hexadecimal válido como #0284C7 +settings.appearance.accent.invalid=Introduce un color hexadecimal válido como \#0284C7 settings.appearance.accent.swatch.primary=Primario settings.appearance.accent.swatch.primary.container=Contenedor settings.appearance.accent.swatch.on.primary.container=Sobre el contenedor @@ -274,7 +283,7 @@ settings.network.description=Configurar ajustes de red y proxy settings.mcp.servers=Servidores MCP settings.skills=Habilidades settings.skills.description=Skills son agentes de IA reutilizables que se ejecutan directamente en su máquina. Cada skill es un archivo Markdown con un prompt de sistema e instrucciones. Cuando ejecutas un skill, se ejecuta a través de {0} — leyendo y escribiendo sus archivos, ejecutando comandos de shell e iterando hasta que la tarea esté completa. No es necesario copiar y pegar. -settings.skills.runtimes=Entornos de ejecución compatibles: +settings.skills.runtimes=Entornos de ejecución compatibles\: settings.skills.directory=Directorio de habilidades settings.skills.open.folder=Abrir carpeta settings.skills.new.skill=Nueva habilidad @@ -317,12 +326,9 @@ settings.skills.add.folder=Añadir carpeta settings.skills.add.folder.name=Nombre de carpeta settings.advanced=Avanzado settings.about=Acerca de -settings.model=Modelo -settings.provider=Proveedor settings.theme=Tema settings.save=Guardar settings.cancel=Cancelar -settings.provider.change.button=Cambiar settings.model.change.button=Cambiar settings.change.button=Cambiar @@ -333,26 +339,18 @@ theme.dark=Oscuro theme.dark.description=Usar siempre el tema oscuro theme.system=Sistema theme.system.description=Seguir el tema del sistema -theme.sepia=Sepia -theme.sepia.description=Tonos cálidos de pergamino, agradables para la vista -theme.ocean=Océano -theme.ocean.description=Tonos suaves de azul cielo, tranquilos y refrescantes -theme.nord=Nord -theme.nord.description=Paleta oscura ártica, fresca y enfocada -theme.sage=Salvia -theme.sage.description=Tonos verde grisáceo apagados, sofisticados y serenos -theme.rose=Rosa -theme.rose.description=Rosa rubor suave, elegante y cálido -theme.indigo=Índigo -theme.indigo.description=Azul violeta profundo, místico y creativo settings.layout.density=Densidad del diseño settings.layout.density.description=Ajusta el espaciado y el relleno en toda la aplicación. layout.density.comfortable=Cómodo layout.density.comfortable.description=Espaciado más generoso para facilitar la lectura layout.density.compact=Compacto layout.density.compact.description=Espaciado más ajustado para mostrar más contenido +layout.density.relaxed=Relajado +layout.density.relaxed.description=Espaciado ligeramente mayor para mejorar la legibilidad +layout.density.spacious=Espacioso +layout.density.spacious.description=Espaciado máximo para pantallas de ultra alta DPI settings.background.image=Imagen de fondo -settings.background.image.description=Elige una imagen de fondo: selecciona una predefinida o usa tu propia imagen. Una superposición translúcida mantiene el texto legible. Las imágenes de fondo son independientes del tema seleccionado. +settings.background.image.description=Elige una imagen de fondo\: selecciona una predefinida o usa tu propia imagen. Una superposición translúcida mantiene el texto legible. Las imágenes de fondo son independientes del tema seleccionado. settings.background.image.browse=Examinar settings.background.image.custom=Imagen personalizada settings.appearance.avatar.ai=Avatar del asistente de IA @@ -365,11 +363,11 @@ settings.log.viewer=Archivos de registro settings.log.viewer.description=Ver registros y diagnósticos settings.log.viewer.view=Ver registros settings.log.viewer.open_folder=Abrir carpeta de registros -settings.log.viewer.path=Archivo de registro: {0} +settings.log.viewer.path=Archivo de registro\: {0} settings.log.viewer.dialog.title=Registros de la aplicación settings.log.viewer.refresh=Actualizar settings.log.viewer.copy=Copiar -settings.log.viewer.copied=¡Copiado! +settings.log.viewer.copied=¡Copiado\! settings.log.viewer.loading=Cargando registros... settings.log.viewer.error=Error al cargar registros settings.log.viewer.empty=No hay registros disponibles @@ -404,6 +402,31 @@ settings.proxy.password.placeholder=Opcional settings.proxy.system.info=ℹ️ Se utilizan los ajustes de proxy del sistema operativo settings.proxy.socks5.no.auth.info=ℹ️ La autenticación SOCKS5 no es compatible actualmente. Use un proxy SOCKS5 sin autenticación o cree un issue en GitHub si necesita esta función. +# Web Search Settings +settings.web_search=Búsqueda web +settings.web_search.description=Activa la búsqueda web integrada para que la IA pueda consultar información actual sin ninguna clave API. DuckDuckGo funciona de inmediato — actualiza a Brave o Tavily para obtener resultados de mayor calidad. +settings.web_search.title=Configuración de búsqueda web +settings.web_search.enabled=Habilitado +settings.web_search.zero_config_note=DuckDuckGo funciona sin configuración. Selecciona un backend diferente solo si deseas resultados de mayor calidad o volumen y tienes una clave API para ese servicio. +settings.web_search.backend=Backend de búsqueda +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Gratuito, sin clave API requerida. Opción predeterminada respetuosa con la privacidad. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Rápido, índice independiente. Requiere una clave API gratuita de Brave Search. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=Resultados optimizados para IA con extracción de respuestas opcional. Requiere una clave API de Tavily. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Metabúsqueda respetuosa con la privacidad a través de tu propia instancia de SearxNG. No se necesita clave API. +settings.web_search.api_key=Clave API +settings.web_search.api_key.placeholder=Pega tu clave API aquí +settings.web_search.get_api_key=Obtener una clave API gratuita ↗ +settings.web_search.endpoint=URL de instancia SearxNG +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=Probar búsqueda +settings.web_search.test.running=Probando... +settings.web_search.test.success=✅ La búsqueda funciona +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=Usuario invitado user.profile.menu=Menú de perfil de usuario @@ -427,7 +450,7 @@ user.profile.interests.custom.placeholder=p. ej., Aprendizaje automático, Fotog user.profile.interests.custom.hint=Separe varios intereses con comas # Welcome Dialog (First Run) -welcome.title=¡Bienvenido a Askimo! +welcome.title=¡Bienvenido a Askimo\! welcome.subtitle=Ayúdenos a personalizar su experiencia con la IA welcome.avatar.optional=Haga clic para añadir una foto (opcional) welcome.name=Su nombre @@ -466,6 +489,7 @@ user.interest.environment=Medio ambiente # Actions action.delete=Eliminar +action.remove=Eliminar action.edit=Editar action.pin=Fijar en la barra lateral action.unpin=Desfijar de la barra lateral @@ -482,6 +506,7 @@ action.close=Cerrar action.show.more=Mostrar más action.show.less=Mostrar menos action.back=Atrás +action.next=Siguiente action.retry=Reintentar action.done=Listo action.refresh=Actualizar @@ -489,13 +514,37 @@ action.refresh=Actualizar # Happiness Gate (shown before Star Prompt) happiness.gate.title=¿Cómo te está yendo con Askimo? happiness.gate.subtitle=Cuéntanos cómo nos estamos desenvolviendo -happiness.gate.happy=¡Me encanta! 😍 +happiness.gate.happy=¡Me encanta\! 😍 happiness.gate.neutral=Está bien 🙂 happiness.gate.unhappy=No mucho 😕 -happiness.gate.feedback.title=Ayúdanos a mejorar -happiness.gate.feedback.message=¿Te gustaría compartir tus comentarios? Nos ayuda a hacer que Askimo sea mejor para ti y para todos los demás. -happiness.gate.feedback.yes=Sí, compartir comentarios -happiness.gate.feedback.no=No, gracias + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=¿Qué no te está funcionando? +feedback.dialog.subtitle=Selecciona todo lo que aplique — tu opinión llegará directamente al equipo. +feedback.comment.label=Cuéntanos más (opcional) +feedback.comment.placeholder=Describe el problema o comparte tus pensamientos… +feedback.email.label=Tu correo electrónico (opcional) +feedback.email.placeholder=you@example.com +feedback.email.hint=Solo se usará para hacer seguimiento de tu feedback. Nunca te enviaremos spam. +feedback.action.skip=Omitir +feedback.action.send=Enviar feedback +feedback.thanks.title=¡Gracias por tu feedback\! +feedback.thanks.message=Tu aporte nos ayuda a mejorar Askimo. Lo apreciamos mucho. +feedback.thanks.close=Cerrar + +feedback.remind.title=¡No te preocupes\! +feedback.remind.message=Puedes compartir tus comentarios en cualquier momento desde el menú de Ayuda → Compartir Feedback. +feedback.remind.got.it=Entendido + +# Feedback reasons +feedback.reason.inaccurate=Las respuestas de la IA no son precisas +feedback.reason.slow=Es demasiado lento +feedback.reason.missing.feature=Falta una función que necesito +feedback.reason.broken=Algo está roto +feedback.reason.hard.to.use=Es difícil de usar +feedback.reason.integration=Problemas de integración +feedback.reason.privacy=Preocupaciones de privacidad +feedback.reason.other=Otra cosa # Star Prompt star.prompt.title=¿Disfrutando de Askimo? Ayuda a difundir la palabra 💙 @@ -507,6 +556,12 @@ star.prompt.share.description=Cuéntale a tu red sobre Askimo en X, LinkedIn o F star.prompt.maybe.later=Ahora no star.prompt.already.starred=Ya destacado ✓ star.prompt.social.proof=⭐ Únete a {0} personas que ya han destacado Askimo +star.prompt.thanks.title=¡Muchas gracias\! 🌟 +star.prompt.thanks.message=Tu apoyo significa mucho y nos ayuda a seguir construyendo Askimo. +star.prompt.thanks.done=Hecho ✓ +star.prompt.remind.title=No te preocupes. +star.prompt.remind.message=Puedes apoyarnos en cualquier momento desde el menú Ayuda → Apoyar a Askimo. +star.prompt.remind.got.it=Entendido # Analytics Settings (Advanced section toggle) settings.analytics.title=Analítica anónima @@ -517,6 +572,11 @@ settings.hardware.acceleration.title=Aceleración por hardware settings.hardware.acceleration.description=Usa renderizado acelerado por GPU para un rendimiento de la interfaz más fluido. Desactiva esto si experimentas problemas gráficos. settings.hardware.acceleration.description.windows=Usa renderizado acelerado por GPU (Direct3D/OpenGL) para un rendimiento de la interfaz más fluido. Desactiva esto si experimentas parpadeo o tasas de refresco erráticas con pantallas G-Sync o FreeSync. settings.hardware.acceleration.restart.notice=Reinicia Askimo para que este cambio surta efecto. +settings.ui.scale.title=Escala de pantalla +settings.ui.scale.description=Ajuste la escala general de la interfaz de usuario. Es necesario reiniciar para que los cambios surtan efecto. +settings.ui.scale.option.system.default=Predeterminado del sistema +settings.ui.scale.restart.notice=Reinicia Askimo para que el cambio de escala surta efecto. +settings.ui.scale.learn.more=Obtenga más información sobre HiDPI y la escala de la IU settings.hardware.acceleration.restart.title=Reinicio requerido settings.hardware.acceleration.restart.message=Por favor, reinicia Askimo para que el cambio de renderizado surta efecto. settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync detectado @@ -530,10 +590,8 @@ file.overwrite.message=Este archivo ya existe. ¿Quieres sobrescribirlo? file.overwrite.confirm=Sobrescribir file.name.too.long=El nombre del archivo es demasiado largo. Usa un nombre más corto (máximo 255 caracteres). - # About about.title=Acerca de {0} -action.remove=Eliminar about.version=Versión about.buildDate=Fecha de compilación about.buildJdk=JDK de compilación @@ -565,6 +623,7 @@ shortcut.stop.ai.response=Detener respuesta de la IA shortcut.quit.application=Salir de la aplicación shortcut.navigate.to.sessions=Ir a sesiones shortcut.navigate.to.projects=Ir a Proyectos +shortcut.navigate.to.bookmarks=Navegar a marcadores shortcut.enter.fullscreen=Entrar en pantalla completa shortcut.close.search=Cerrar búsqueda shortcut.next.search.result=Siguiente resultado de búsqueda @@ -574,7 +633,7 @@ shortcut.send.message=Enviar mensaje shortcut.new.line=Nueva línea # Chat View -chat.welcome=¡Bienvenido a Askimo!\nComienza una conversación escribiendo un mensaje abajo. +chat.welcome=¡Bienvenido a Askimo\!\nComienza una conversación escribiendo un mensaje abajo. chat.no.active.session=Seleccione una sesión en la barra lateral o inicie un nuevo chat chat.search.placeholder=Buscar en la conversación... chat.search.no.results=Sin resultados @@ -612,8 +671,7 @@ global.search.results.count={0} resultado encontrado global.search.results.count.plural={0} resultados encontrados # Rest of chat view strings -chat.directive=Directiva: -chat.directive.none=Ninguna +chat.directive=Directiva\: chat.directive.new=Nueva directiva chat.directive.manage=Gestionar directivas chat.directive.learn.more=Aprenda a usar directivas @@ -623,7 +681,11 @@ chat.drop.files=Arrastra archivos para adjuntarlos a la conversación chat.create.image.menu=Crear imagen chat.create.image.mode=Imagen chat.create.image.mode.cancel=Cancelar modo de creación de imagen +chat.image.model.missing.title=Modelo de imagen no configurado +chat.image.model.missing.message=No hay ningún modelo de imagen configurado para {0}. Abre Configuración > Proveedor de IA > Modelos de generación de imágenes y establece primero un nombre de modelo. chat.tools.button=Herramientas disponibles +chat.tools.button.disabled=Herramientas disponibles ({0} deshabilitadas) +chat.tools.button.model.no.support=Las herramientas no son compatibles con este modelo chat.tools.popup.title=Herramientas disponibles chat.tools.popup.loading=Cargando servidores... chat.tools.popup.no.servers.global=No hay servidores MCP globales configurados. @@ -632,7 +694,6 @@ chat.tools.server.scope.global=Global chat.tools.server.scope.project=Proyecto chat.tools.server.scope.builtin=Integrado chat.tools.tool.no.description=No hay descripción disponible -chat.tools.button.disabled=Herramientas disponibles ({0} deshabilitadas) chat.reasoning.effort.label=Pensando chat.reasoning.effort.tooltip=Esfuerzo de razonamiento — controla qué tan profundo piensa el modelo antes de responder chat.reasoning.effort.off=Desactivado @@ -644,12 +705,13 @@ chat.reasoning.effort.medium.description=Profundidad y velocidad equilibradas. A chat.reasoning.effort.high=Alto chat.reasoning.effort.high.description=Razonamiento exhaustivo, mayor costo. Ideal para la resolución de problemas complejos. chat.input.placeholder=Escribe tu mensaje... (Enter para enviar, Shift+Enter para nueva línea) +chat.input.placeholder.hint.attach=Adjunta archivos con {0}+A o arrástralos y suéltalos aquí chat.select.file=Seleccionar archivo(s) chat.attachment.remove=Eliminar archivo adjunto chat.attachment.preview.loading=Cargando vista previa… chat.attachment.preview.file.not.found=(Archivo no encontrado) chat.attachment.preview.too.large=(Archivo demasiado grande para la vista previa) -chat.attachment.preview.cannot.read=(No se puede leer el archivo: {0}) +chat.attachment.preview.cannot.read=(No se puede leer el archivo\: {0}) chat.attachment.preview.more.lines={0} líneas más # Sessions View @@ -661,12 +723,12 @@ sessions.col.created=Creado sessions.col.updated=Actualizado sessions.error=❌ {0} sessions.empty=No se encontraron sesiones. -sessions.empty.hint=💡 ¡Inicia un chat nuevo para crear tu primera sesión! +sessions.empty.hint=💡 ¡Inicia un chat nuevo para crear tu primera sesión\! sessions.search.placeholder=Buscar por título… sessions.search.empty=Ninguna sesión coincide con "{0}". -# Controles genéricos de paginación de tablas -table.page.size.label=Filas por página: +# Generic table pagination controls +table.page.size.label=Filas por página\: table.page=Página {0} de {1} table.page.previous=Página anterior table.page.next=Página siguiente @@ -680,10 +742,9 @@ sessions.error.not.found=Sesión no encontrada. sessions.error.rename.failed=Fallo al renombrar sesión. # ChatSessionService Errors - # Update Check update.dialog.title=Actualización de software -update.dialog.new.version.available=¡Hay una nueva versión de Askimo disponible! +update.dialog.new.version.available=¡Hay una nueva versión de Askimo disponible\! update.urgency.medium=Llevas {0} versiones de retraso — puede que te estés perdiendo correcciones importantes y nuevas funciones. update.urgency.high=Llevas {0} versiones de retraso — te estás perdiendo mejoras significativas. Por favor, actualiza pronto. update.dialog.current.version.label=Versión actual @@ -694,7 +755,7 @@ update.dialog.download=Descargar ahora update.dialog.how.to.update=Cómo actualizar update.dialog.later=Más tarde update.dialog.skip.version=Omitir esta versión -update.check.up.to.date=¡Ya estás usando la última versión! +update.check.up.to.date=¡Ya estás usando la última versión\! update.check.failed=Fallo al buscar actualizaciones # Event Names @@ -716,44 +777,48 @@ settings.font.size=Tamaño de fuente settings.font.line.spacing=Espaciado de línea settings.shortcuts=Atajos settings.shortcuts.description=Ver todas las combinaciones de teclas disponibles para mejorar su productividad +settings.shortcuts.search=Buscar atajos... +settings.shortcuts.no_results=Ningún atajo coincide con tu búsqueda settings.app.language=Idioma de la aplicación settings.app.language.translation.help=¿Ves algo incorrecto? Ayúdanos a mejorar la traducción. settings.app.language.translation.contribute=Contribuir en Crowdin settings.ai.response.language=Idioma de respuesta preferido settings.ai.response.language.description=Forzar a la IA a responder en un idioma específico (dejar vacío para detección automática) settings.ai.response.language.auto=Detección automática -settings.ai.response.language.tooltip=La IA detecta automáticamente tu idioma, pero anúlalo cuando:\n• Aprendizaje de idiomas (práctica inmersiva)\n• Consistencia profesional (ej: docs de código siempre en inglés)\n• Optimización RAG (coincidir con el idioma de la base de conocimientos)\n• Enseñanza (preguntar en un idioma, explicar en otro)\n• Evitar cambios de idioma no deseados -settings.model.select=Seleccionar modelo para {0}: +settings.ai.response.language.tooltip=La IA detecta automáticamente tu idioma, pero anúlalo cuando\:\n• Aprendizaje de idiomas (práctica inmersiva)\n• Consistencia profesional (ej\: docs de código siempre en inglés)\n• Optimización RAG (coincidir con el idioma de la base de conocimientos)\n• Enseñanza (preguntar en un idioma, explicar en otro)\n• Evitar cambios de idioma no deseados +settings.model.select=Seleccionar modelo para {0}\: settings.model.loading=Cargando modelos... settings.model.none=No hay modelos disponibles settings.model.select.title=Seleccionar modelo settings.model.current=Modelo actual settings.model.selected=Modelo seleccionado settings.model.new=Nuevo modelo -settings.model.change.description=Elige un modelo de la lista a continuación: +settings.model.use.default=Usar predeterminado +settings.model.change.description=Elige un modelo de la lista a continuación\: settings.model.search=Buscar modelos settings.model.search.placeholder=Escribe para filtrar modelos... settings.model.filtered=Mostrando {0} de {1} modelos settings.model.no.match=No hay coincidencias -settings.model.no.results=No hay coincidencias +settings.model.chat.filter.label=Modelos de chat · {0} mostrados +settings.model.chat.filter.show.all=Mostrar todos {0} settings.configure.title=Configurar {0} settings.test.connection.testing=Probando... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=No se pudo conectar al proveedor. Verifique que su clave API sea correcta (para proveedores en la nube) o que su URL base sea accesible (para proveedores locales). Puede encontrar instrucciones de configuración usando el enlace de ayuda de arriba. # Directives Dialog directive.manage.title=Gestionar directivas -directive.manage.empty=No hay directivas. ¡Crea una para comenzar! +directive.manage.empty=No hay directivas. ¡Crea una para comenzar\! directive.edit.name.label=Nombre directive.edit.name.placeholder=Escribe el nombre de la directiva... directive.edit.content.label=Contenido directive.edit.content.placeholder=Escribe las instrucciones de la directiva... directive.edit.name.required=El nombre es obligatorio directive.edit.content.required=El contenido es obligatorio -directive.created=Creado: {0} +directive.created=Creado\: {0} directive.new.title=Nueva directiva directive.new.guidelines=Las directivas guían cómo responde la IA a tus mensajes. Sé específico sobre el tono, nivel de detalle, formato o cualquier requisito especial que necesites. -directive.new.name.placeholder=ej.: concise-code, explain-like-im-5 +directive.new.name.placeholder=ej.\: concise-code, explain-like-im-5 directive.new.content.placeholder=Escribe las instrucciones... directive.new.apply.current=Aplicar a la sesión actual directive.new.create=Crear @@ -765,8 +830,8 @@ directive.export.tooltip=Exportar todas las directivas a un archivo JSON para co directive.export.filename=askimo-directives directive.import=Importar directive.import.tooltip=Importar directivas desde un archivo JSON -directive.import.result=Importación completa: {0} importadas, {1} renombradas, {2} omitidas -directive.import.error=Error al importar: formato de archivo no válido o no compatible +directive.import.result=Importación completa\: {0} importadas, {1} renombradas, {2} omitidas +directive.import.error=Error al importar\: formato de archivo no válido o no compatible # Log Levels log.level.error=Error @@ -783,6 +848,8 @@ log.level.trace.description=Mostrar todos los registros (más detallado) # Message Components message.loading.previous=Cargando mensajes anteriores... message.thinking=Pensando… ({0}s) +message.thinking.section.streaming=💭 Pensando... +message.thinking.section.done=💭 Pensamiento message.copy=Copiar mensaje message.copy.description=Copiar mensaje message.edit=Editar mensaje @@ -809,13 +876,40 @@ message.ai.try.again.confirm.title=¿Regenerar respuesta? message.ai.try.again.confirm.message=Esto eliminará todos los mensajes posteriores a este punto. ¿Desea continuar? message.ai.try.again.confirm.cancel=Cancelar message.ai.try.again.confirm.confirm=Regenerar +message.ai.fork=Fork session from here +message.ai.fork.description=Fork this conversation into a new independent session message.ai.export.pdf=Exportar como PDF message.ai.export.pdf.dialog.title=Guardar respuesta de IA como PDF +message.bookmark=Marcar mensaje +message.bookmark.remove=Quitar marcador +message.bookmark.description=Marcar este mensaje message.edited.indicator=(editado) message.date.today=Hoy message.date.yesterday=Ayer message.token.usage={0} tokens · {1} de entrada / {2} de salida -message.token.usage.tooltip=Tokens utilizados por esta respuesta.\nEntrada: su prompt + contexto enviado a la IA.\nSalida: la respuesta generada por la IA. +message.token.usage.tooltip=Tokens utilizados por esta respuesta.\nEntrada\: su prompt + contexto enviado a la IA.\nSalida\: la respuesta generada por la IA. + +# Bookmarks +chat.bookmarks.button.tooltip=Marcadores +chat.bookmarks.popover.title=Mensajes fijados +chat.bookmarks.popover.empty.title=Aún no hay marcadores +chat.bookmarks.popover.empty.hint=Fija cualquier mensaje con el icono de marcador debajo de él +bookmarks.title=Marcadores +bookmarks.empty.title=Aún no hay marcadores +bookmarks.empty.hint=Marca mensajes con el icono de anclaje debajo de ellos +bookmarks.session.untitled=Conversación sin título +bookmarks.message.count={0} fijados +bookmarks.role.user=Tú +bookmarks.role.ai=IA + +# Tool call display +tool.call.header.running=Ejecutando herramienta... +tool.call.header.done={0} herramienta(s) utilizada(s) +tool.call.status.done=Hecho +tool.call.status.failed=Fallido +tool.call.detail.arguments=Argumentos +tool.call.detail.result=Resultado + attachment.download=Descargar adjunto attachment.download.description=Descargar este archivo adjunto attachment.save.file=Guardar adjunto @@ -825,48 +919,62 @@ outdated.branch.header={0} mensajes antiguos de la edición previa (clic para ex outdated.label=antiguo # Provider Dialog -provider.change.title=Cambiar proveedor -provider.select.title=Seleccionar proveedor +provider.manage.title=Gestionar proveedores +provider.type.picker.title=Elegir tipo de proveedor +provider.type.picker.prompt=Seleccione el tipo de proveedor a añadir\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Añadir proveedor +provider.no.instances.hint=Aún no hay proveedores configurados. Haga clic en "Añadir proveedor" para comenzar. +provider.model.panel.select.hint=Selecciona un proveedor a la izquierda para explorar sus modelos +provider.model.panel.model.count={0} modelos +provider.model.default.badge=Predeterminado +provider.instance.name.label=Nombre de la instancia +provider.instance.name.placeholder=p. ej., "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=Ya existe un proveedor llamado "{0}" provider.setup.required.title=Configuración de proveedor IA necesaria provider.setup.required.message=Selecciona y configura un proveedor IA antes de comenzar a chatear. provider.setup.required.button=Configurar -provider.select.prompt=Seleccionar proveedor: -provider.configure.prompt=Configurar: -provider.choose.placeholder=Escoge un proveedor... +provider.configure.prompt=Configurar\: provider.setup.guide=Cómo configurar {0} provider.apikey.stored=Clave API almacenada de forma segura provider.apikey.enter=Ingresar clave API -provider.apikey.already.stored=Ya almacenada provider.apikey.security.message=🔒 Tu clave API está cifrada y se almacena de forma segura. Nunca compartimos tus datos. provider.apikey.security.link=Aprende cómo protegemos tus datos provider.not.set=No configurado # Provider Configuration - OpenAI -provider.openai.apikey.description=Tu clave API de OpenAI: https://platform.openai.com/account/api-keys +provider.openai.apikey.description=Tu clave API de OpenAI\: https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=Clave API ya almacenada. Deja en blanco para mantener la actual. -provider.openai.setup.help=💡 Para usar OpenAI necesitas una clave API.\n\n1. Consíguela aquí: https://platform.openai.com/account/api-keys\n2. Configúrala en los ajustes o con :change-settings +provider.openai.setup.help=💡 Para usar OpenAI necesitas una clave API.\n\n1. Consíguela aquí\: https\://platform.openai.com/account/api-keys\n2. Configúrala en los ajustes o con \:change-settings # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Tu clave API de Anthropic: https://console.anthropic.com/ +provider.anthropic.apikey.description=Tu clave API de Anthropic\: https\://console.anthropic.com/ provider.anthropic.apikey.stored=Clave API ya almacenada. -provider.anthropic.setup.help=💡 Para usar Anthropic, necesitas una clave API.\n\n1. Consíguela en: https://console.anthropic.com/\n2. Configúrala en los ajustes o con :change-settings +provider.anthropic.setup.help=💡 Para usar Anthropic, necesitas una clave API.\n\n1. Consíguela en\: https\://console.anthropic.com/\n2. Configúrala en los ajustes o con \:change-settings +provider.anthropic.max_tokens.label=Max Tokens +provider.anthropic.max_tokens.description=Máximo de tokens que el modelo puede generar por respuesta (pensamiento + respuesta combinados). +provider.anthropic.thinking_budget_tokens.label=Tokens de presupuesto de pensamiento +provider.anthropic.thinking_budget_tokens.description=Máximo de tokens que Anthropic puede dedicar al pensamiento. Configura en 0 para dejar que el modelo decida automáticamente (recomendado). +provider.anthropic.thinking_max_tokens.label=Máximo de tokens de pensamiento +provider.anthropic.thinking_max_tokens.description=Límite total de tokens cuando el pensamiento está activo (pensamiento + respuesta). Configura en 0 para usar Max Tokens en su lugar. # Provider Configuration - Gemini -provider.gemini.apikey.description=Tu clave API de Google AI Studio: https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Tu clave API de Google AI Studio\: https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=Clave API ya almacenada. -provider.gemini.setup.help=💡 Para usar Gemini, necesitas una clave API.\n\n1. Consíguela en: https://aistudio.google.com/app/apikey\n2. Configúrala en los ajustes o con :change-settings +provider.gemini.setup.help=💡 Para usar Gemini, necesitas una clave API.\n\n1. Consíguela en\: https\://aistudio.google.com/app/apikey\n2. Configúrala en los ajustes o con \:change-settings # Provider Configuration - XAI -provider.xai.apikey.description=Tu clave API de XAI: https://console.x.ai/ +provider.xai.apikey.description=Tu clave API de XAI\: https\://console.x.ai/ provider.xai.apikey.stored=Clave API ya almacenada. -provider.xai.setup.help=💡 Para usar XAI, necesitas una clave API.\n\n1. Consíguela en: https://console.x.ai/\n2. Configúrala en los ajustes o con :change-settings +provider.xai.setup.help=💡 Para usar XAI, necesitas una clave API.\n\n1. Consíguela en\: https\://console.x.ai/\n2. Configúrala en los ajustes o con \:change-settings # Provider Configuration - Ollama -provider.ollama.baseurl.description=Base URL de Ollama (por defecto: http://localhost:11434) -provider.ollama.setup.help=💡 Para usar Ollama, debe estar ejecutándose localmente.\n\n1. Instálalo desde: https://ollama.ai/\n2. Ejecuta el servicio\n3. Ajusta la URL base si es necesario +provider.ollama.baseurl.description=Base URL de Ollama (por defecto\: http\://localhost\:11434) +provider.ollama.setup.help=💡 Para usar Ollama, debe estar ejecutándose localmente.\n\n1. Instálalo desde\: https\://ollama.ai/\n2. Ejecuta el servicio\n3. Ajusta la URL base si es necesario # Provider Configuration - Docker AI -provider.docker.baseurl.description=Base URL de Docker AI (por defecto: http://localhost:12434) +provider.docker.baseurl.description=Base URL de Docker AI (por defecto\: http\://localhost\:12434) provider.docker.setup.help=💡 Para usar Docker AI, debe estar ejecutándose localmente.\n\n1. Asegúrate de que Docker AI esté instalado y ejecutándose\n2. Ejecuta el servicio\n3. Ajusta la URL base si es necesario # Provider Configuration - LocalAI @@ -874,23 +982,30 @@ provider.localai.baseurl.description=Base URL de LocalAI provider.localai.setup.help=💡 Para usar LocalAI, debes ejecutarlo primero.\n\n1. Instala y ejecuta LocalAI\n2. Configura la URL base # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=Base URL de LMStudio (por defecto: http://localhost:1234) -provider.lmstudio.setup.help=💡 Para usar LMStudio:\n\n1. Instálalo desde: https://lmstudio.ai/\n2. Ejecuta el servidor local\n3. Ajusta la URL base si es necesario +provider.lmstudio.baseurl.description=Base URL de LMStudio (por defecto\: http\://localhost\:1234) +provider.lmstudio.setup.help=💡 Para usar LMStudio\:\n\n1. Instálalo desde\: https\://lmstudio.ai/\n2. Ejecuta el servidor local\n3. Ajusta la URL base si es necesario provider.lmstudio.openai.compat.info=Askimo utiliza los endpoints compatibles con OpenAI (/v1), no la API nativa de LMStudio (/api/v1/). # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=La URL base para su instancia compatible con OpenAI +provider.openai_compatible.apikey.description=Clave API del proveedor (opcional\: déjela en blanco si el punto de conexión no requiere autenticación) provider.openai_compatible.apikey.stored=La clave API ya está almacenada de forma segura. Déjelo en blanco para mantener la clave existente o introduzca una nueva para actualizarla. # System Resources system.share.feedback=Compartir comentarios -system.ai.provider.tooltip=Proveedor de IA: {0}\nHaz clic para configurar +system.ai.provider.tooltip=Proveedor de IA\: {0}\nHaz clic para configurar system.diagnostics.title=Diagnóstico del sistema system.diagnostics.resources=Recursos system.diagnostics.jvm.memory=Memoria JVM (usada / total) system.diagnostics.cpu.usage=Uso de CPU system.diagnostics.telemetry=Telemetría +# Telemetry export +telemetry.export.csv=Exportar CSV +telemetry.export.dialog.title=Exportar Telemetría como ZIP +telemetry.export.error.title=Error de Exportación +telemetry.export.error.message=Error al exportar datos de telemetría\: {0} + # Telemetry telemetry.reset=Restablecer datos de telemetría telemetry.title=📊 Métricas de sesión @@ -906,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=Consultas Totales telemetry.rag.triggered.label=Activado telemetry.rag.skipped.label=Omitido -telemetry.llm.calls=Llamadas LLM -telemetry.llm.calls.count={0} llamadas -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} err -telemetry.total.tokens=Tokens Totales: {0} telemetry.llm.col.provider=Proveedor telemetry.llm.col.model=Modelo telemetry.llm.col.calls=Llamadas @@ -954,26 +1064,29 @@ export.format.html.benefit.3=Apariencia profesional export.format.html.benefit.4=Fácil de compartir # Error Messages -error.network=⚠️ No se puede conectar al servicio de IA{endpoint}\n\nPor favor, compruebe:\n• Su conexión a Internet\n• La URL del servicio de IA (revise la configuración)\n• La configuración del firewall\n• La disponibilidad del servicio +error.network=⚠️ No se puede conectar al servicio de IA{endpoint}\n\nPor favor, compruebe\:\n• Su conexión a Internet\n• La URL del servicio de IA (revise la configuración)\n• La configuración del firewall\n• La disponibilidad del servicio error.authentication=⚠️ La clave API no es válida o falta{provider}\n\nSolucione esto configurando su clave API en Ajustes. -error.model_configuration=⚠️ Error de configuración del modelo: {issue}\n\nSolución:\n1. Abrir Ajustes\n2. Seleccionar un proveedor de IA\n3. Elegir un modelo de la lista +error.model_not_found=⚠️ Modelo no encontrado\: {model}\n\nEste modelo puede haber sido desactivado o eliminado por el proveedor. Por favor, seleccione un modelo diferente. +error.provider_not_configured=⚠️ No hay ningún proveedor de IA configurado.\n\nPara comenzar a chatear\:\n1. Abre los Ajustes\n2. Selecciona un proveedor de IA (OpenAI, Ollama, Anthropic, etc.)\n3. Introduce tu API key o configura la conexión error.rate_limit=⚠️ Límite de uso excedido\n{retryAfter}\n\nHa alcanzado su límite de uso de la API. Espere antes de enviar más mensajes. error.insufficient_credits=⚠️ Créditos insuficientes\n\nSu saldo de créditos es demasiado bajo.\n\nVaya a la página de facturación para añadir créditos. -error.timeout=⚠️ La solicitud expiró después de {timeout} segundos\n\nPosibles causas:\n• Alta carga del servidor – intente nuevamente más tarde\n• Consulta compleja – intente simplificarla\n• Latencia de red -error.invalid_request=⚠️ Solicitud no válida: {details}\n\nRevise su entrada e inténtelo de nuevo. -error.system=⚠️ Error del sistema\n\nOcurrió un error inesperado: {errorCode}\n\nContacte al soporte de Askimo con:\n• Lo que estaba haciendo\n• El código de error anterior\n• La marca de tiempo +error.timeout=⚠️ La solicitud expiró después de {timeout} segundos\n\nPosibles causas\:\n• Alta carga del servidor – intente nuevamente más tarde\n• Consulta compleja – intente simplificarla\n• Latencia de red +error.context_length=⚠️ Ventana de contexto excedida\n\nLa entrada total (historial de la conversación + su mensaje + archivos adjuntos) es demasiado grande para que este modelo la procese.\n\nPara solucionar esto\:\n• Inicie una nueva sesión de chat para borrar el historial de la conversación\n• Acorte su mensaje o elimine archivos adjuntos grandes\n• Si utiliza un modelo local (Ollama / LM Studio / Docker), aumente el tamaño del contexto en su configuración\n• Cambie a un modelo con una ventana de contexto más grande +error.invalid_request=⚠️ Solicitud no válida\: {details}\n\nRevise su entrada e inténtelo de nuevo. +error.local_server=⚠️ ¡Error del servidor de IA local\!\n\nEl proceso del servidor de IA se bloqueó o no pudo cargar el modelo. Esto no es causado por Askimo.\n\nPosibles causas\:\n• El archivo del modelo está corrupto o incompleto — intente descargarlo nuevamente\n• RAM/VRAM insuficiente — pruebe una cuantización menor (p. ej. Q4 en lugar de Q8)\n• Formato de modelo no compatible con la versión actual del servidor\n• El proceso del servidor fue terminado por el sistema operativo (sin memoria)\n\nQué hacer\:\n1. Revise los registros de su servidor de IA local\n2. Reinicie el servidor e inténtelo de nuevo\n3. Vuelva a descargar el modelo\n4. Pruebe un modelo diferente o un nivel de cuantización distinto\n\nDetalles técnicos\: {details} +error.system=⚠️ Error del sistema\n\nOcurrió un error inesperado\: {errorCode}\n\nContacte al soporte de Askimo con\:\n• Lo que estaba haciendo\n• El código de error anterior\n• La marca de tiempo # Model Availability Errors error.model.not_available.title.chat=Modelo no disponible error.model.not_available.title.embedding=Modelo de incrustación no disponible error.model.not_available.message.chat=El modelo ''{0}'' no está disponible. -error.model.not_available.message.embedding=El modelo de incrustación ''{0}'' no está disponible.\n\nConfigura correctamente tu modelo de incrustación. +error.model.not_available.message.embedding=El modelo de incrustación ''{0}'' no está disponible en tu proveedor local.\n\nVe a Configuración → Proveedor IA y selecciona un modelo de incrustación disponible en la tarjeta de configuración del proveedor. error.model.not_available.config_link=Configurar modelo de incrustación -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=Algo salió mal -error.app.message=Ocurrió un error inesperado: {0} +error.app.message=Ocurrió un error inesperado\: {0} # Send Message Errors error.send_message.title=No se pudo enviar el mensaje @@ -981,21 +1094,22 @@ error.send_message.title=No se pudo enviar el mensaje # Indexing Errors error.indexing.model_not_found.title=Modelo de incrustación no encontrado error.indexing.model_not_found.message=No se encontró el modelo de incrustación ''{0}''. Descarga o habilita este modelo desde {1} antes de iniciar la indexación. +error.indexing.input_too_large.title=Entrada de embedding demasiado grande +error.indexing.input_too_large.message=El modelo de embedding rechazó uno o más segmentos de [{0}] porque el recuento de tokens supera el tamaño máximo de contexto del modelo. Reduzca el tamaño del fragmento (chunk) en Ajustes → Indexación → Máx. caracteres por fragmento, luego vuelva a indexar. error.indexing.io_error.title=Error de E/S error.indexing.io_error.message=Se produjo un error de E/S durante la indexación error.indexing.unknown.title=Error de indexación error.indexing.unknown.message=Se produjo un error desconocido durante la indexación - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=Estado del modelo de incrustación (solo requerido para funciones RAG) -settings.embedding.not_available_rag_only=⚠️ {0}.\n\nNota: Esto solo afecta a las funciones RAG basadas en proyectos. El chat normal seguirá funcionando. -settings.embedding.provider_unreachable=⚠️ No se puede conectar con el proveedor: {0}.\n\nNota: Los modelos de incrustación solo son necesarios para funciones RAG basadas en proyectos. -settings.embedding.check_failed=No se pudo verificar el modelo de incrustación: {0} +settings.embedding.not_available_rag_only=⚠️ {0}.\n\nNota\: Esto solo afecta a las funciones RAG basadas en proyectos. El chat normal seguirá funcionando. +settings.embedding.provider_unreachable=⚠️ No se puede conectar con el proveedor\: {0}.\n\nNota\: Los modelos de incrustación solo son necesarios para funciones RAG basadas en proyectos. +settings.embedding.check_failed=No se pudo verificar el modelo de incrustación\: {0} settings.embedding.download_model=Descargar modelo de incrustación -settings.embedding.download_success=✅ Modelo de incrustación descargado correctamente: {0} -settings.embedding.download_failed=❌ No se pudo descargar el modelo de incrustación: {0}. Intente manualmente: ollama pull {0} -settings.embedding.download_error=Error al descargar el modelo: {0} +settings.embedding.download_success=✅ Modelo de incrustación descargado correctamente\: {0} +settings.embedding.download_failed=❌ No se pudo descargar el modelo de incrustación\: {0}. Intente manualmente\: ollama pull {0} +settings.embedding.download_error=Error al descargar el modelo\: {0} settings.embedding.anthropic_no_embedding=Anthropic no proporciona modelos de incrustación settings.embedding.xai_no_embedding=xAI no proporciona modelos de incrustación @@ -1003,21 +1117,21 @@ settings.embedding.xai_no_embedding=xAI no proporciona modelos de incrustación settings.rag.title=Configuración de RAG settings.rag.description=Configura los parámetros de Retrieval-Augmented Generation para la recuperación de conocimiento basada en proyectos settings.rag.vector.max.results=Máximo de resultados de búsqueda vectorial -settings.rag.vector.max.results.hint=Número máximo de documentos de la búsqueda vectorial (predeterminado: 20) +settings.rag.vector.max.results.hint=Número máximo de documentos de la búsqueda vectorial (predeterminado\: 20) settings.rag.vector.min.score=Puntuación mínima de búsqueda vectorial -settings.rag.vector.min.score.hint=Puntuación mínima de similitud 0.0–1.0 (predeterminado: 0.3) +settings.rag.vector.min.score.hint=Puntuación mínima de similitud 0.0–1.0 (predeterminado\: 0.3) settings.rag.hybrid.max.results=Máximo de resultados híbridos -settings.rag.hybrid.max.results.hint=Recuento final de documentos tras la fusión (predeterminado: 15) +settings.rag.hybrid.max.results.hint=Recuento final de documentos tras la fusión (predeterminado\: 15) settings.rag.rank.fusion.constant=Constante de fusión de ranking -settings.rag.rank.fusion.constant.hint=Constante RRF para el ranking híbrido (predeterminado: 60) +settings.rag.rank.fusion.constant.hint=Constante RRF para el ranking híbrido (predeterminado\: 60) settings.rag.use.absolute.paths=Absolute Pfade in Zitaten verwenden settings.rag.use.absolute.paths.hint=Vollständige Dateipfade in KI-Antworten anzeigen, um bei mehreren Dateien mit demselben Namen mehr Klarheit zu schaffen settings.rag.embedding.title=Configuración de embeddings settings.rag.embedding.description=Configura los parámetros de segmentación de texto y embeddings settings.rag.embedding.max.chars.per.chunk=Máximo de caracteres por segmento -settings.rag.embedding.max.chars.per.chunk.hint=Número máximo de caracteres en cada segmento de texto (predeterminado: 1500) +settings.rag.embedding.max.chars.per.chunk.hint=Número máximo de caracteres en cada segmento de texto (predeterminado\: 1500) settings.rag.embedding.chunk.overlap=Superposición de segmentos -settings.rag.embedding.chunk.overlap.hint=Número de caracteres superpuestos entre segmentos (predeterminado: 100) +settings.rag.embedding.chunk.overlap.hint=Número de caracteres superpuestos entre segmentos (predeterminado\: 100) settings.rag.embedding.models=Modelos de embedding por proveedor settings.rag.indexing.title=Configuración de indexación settings.rag.indexing.description=Controla qué archivos se indexan y el tamaño máximo de archivo permitido @@ -1032,7 +1146,27 @@ settings.rag.indexing.binary.extensions.hint=Extensiones de archivo separadas po settings.rag.indexing.embedding.batch.size=Tamaño del lote de embeddings settings.rag.indexing.embedding.batch.size.hint=Número de segmentos de texto enviados al modelo de embeddings por solicitud. Si la indexación es lenta y usas un proveedor remoto (OpenAI, Gemini), intenta aumentarlo a 100–500. Si usas un modelo local (Ollama, LM Studio), mantenlo bajo para evitar tiempos de espera. -# Settings - Utility Models +## Settings - Models +settings.models.title=Modelos +settings.models.description=Configura el comportamiento global de los modelos de IA compartido entre todos los proveedores. +settings.models.max.tool.calling.round.trips=Máximo de rondas de llamadas a herramientas +settings.models.max.tool.calling.round.trips.hint=Número máximo de llamadas a herramientas que la IA puede realizar en una sola respuesta (predeterminado\: 10). Valores más altos permiten tareas de agente más complejas pero aumentan la latencia y el costo. + +# Memory Settings +settings.memory.title=Configuración de memoria +settings.memory.description=Controla cómo la IA gestiona el historial de conversación para mantenerse dentro del contexto del modelo. +settings.memory.mode=Modo de memoria +settings.memory.mode.compact=Compacto +settings.memory.mode.compact.hint=Menor costo de tokens, menos detalle +settings.memory.mode.compact.description=Resumen agresivo. Menor costo de tokens, resume pronto y con frecuencia. Ideal para sesiones muy largas o modelos sensibles al costo. +settings.memory.mode.balanced=Equilibrado +settings.memory.mode.balanced.hint=Buen equilibrio calidad/costo +settings.memory.mode.balanced.description=Buen equilibrio calidad/costo. Activa el resumen al 40% del presupuesto de memoria. Adecuado para la mayoría de sesiones. +settings.memory.mode.detail=Detallado +settings.memory.mode.detail.hint=Alta fidelidad, más tokens +settings.memory.mode.detail.description=Resumen mínimo. Conserva más turnos literales y resúmenes más ricos. Ideal para sesiones cortas o cuando el recuerdo preciso es importante. + +## Settings - Utility Models settings.utility.models.title=Modelos de utilidad settings.utility.models.uses.selected=(usa el modelo seleccionado) settings.utility.models.local.note={0} es un proveedor local — el modelo de chat activo se utiliza automáticamente para las tareas de utilidad. @@ -1043,7 +1177,7 @@ settings.vision.models.title=Modelos de visión ## Settings - Image Models settings.image.models.title=Modelos de generación de imágenes -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=Configuración del modelo settings.provider.model.config.description=Anule los modelos predeterminados utilizados para tareas específicas. Deje un campo vacío para usar el modelo predeterminado del proveedor. settings.provider.model.config.guide=Ver guía de configuración del modelo de IA @@ -1054,26 +1188,24 @@ settings.provider.model.embedding.hint=Modelo utilizado para generar embeddings settings.model.placeholder.enter=Introducir modelo {0} - # File Viewer Dialog file.viewer.title=Visor de archivos file.viewer.title.with.name=Visor de archivos - {0} file.viewer.dialog.close=Cerrar file.viewer.copy.clipboard=Copiar al portapapeles -file.viewer.copied=¡Copiado! +file.viewer.copied=¡Copiado\! # Mermaid Chart Renderer mermaid.setup.required.title=Se requiere Mermaid CLI mermaid.setup.privacy.note=Askimo renderiza los diagramas localmente para proteger tu privacidad. mermaid.setup.instructions.title=Instrucciones de configuración -mermaid.setup.instructions.text=Para renderizar diagramas Mermaid en Askimo, sigue la guía de instalación en: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.text=Para renderizar diagramas Mermaid en Askimo, sigue la guía de instalación en\: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=Abrir guía de configuración mermaid.setup.button.copy.diagram=Copiar diagrama -mermaid.diagram.source.label=Fuente del diagrama: +mermaid.diagram.source.label=Fuente del diagrama\: mermaid.rendering.progress=Renderizando diagrama... mermaid.error.rendering.title=Error al renderizar el diagrama -mermaid.error.rendering.raw.label=Diagrama sin procesar: mermaid.error.unexpected.state=Estado inesperado. Por favor, inténtalo de nuevo. mermaid.error.failed.load.image=No se pudo cargar la imagen del diagrama mermaid.button.copy.code=Copiar código @@ -1083,7 +1215,8 @@ mermaid.button.zoom.in=Acercar mermaid.button.zoom.out=Alejar mermaid.button.reset.zoom=Restablecer zoom mermaid.button.retry=Reintentar -mermaid.feedback.copied=¡Copiado! +mermaid.feedback.copied=¡Copiado\! + # Reference Material knowledge.source.type.folder=Carpeta (supervisada para cambios) @@ -1101,7 +1234,7 @@ mcp.instances.title=Instancias MCP mcp.instances.description=Estas instancias MCP están disponibles mcp.instances.empty=No hay instancias MCP configuradas mcp.instances.count={0} instancia(s) -mcp.instance.server.label=Servidor: {0} +mcp.instance.server.label=Servidor\: {0} mcp.instance.delete.confirm.title=¿Eliminar instancia MCP? mcp.instance.delete.confirm.message=¿Está seguro de que desea eliminar la instancia mcp "{0}"? Esto no se puede deshacer. mcp.instance.enable.tooltip=Activar esta instancia MCP @@ -1127,7 +1260,7 @@ mcp.instance.field.description=Descripción mcp.instance.field.description.placeholder=Breve descripción de lo que hace este servidor mcp.instance.field.transport=Tipo de transporte mcp.instance.field.command=Plantilla de comando -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=Comando separado por espacios con marcadores de posición {{parameter}} mcp.instance.validation.error.empty.id=La ID del servidor no puede estar vacía mcp.instance.validation.error.invalid.id.pattern=La ID del servidor solo debe contener letras minúsculas, números y guiones @@ -1136,20 +1269,20 @@ mcp.instance.validation.error.empty.command=La plantilla de comando no puede est mcp.instance.validation.error.empty.parameter.key=La clave del parámetro no puede estar vacía mcp.instance.validation.error.empty.parameter.label=La etiqueta del parámetro no puede estar vacía mcp.instance.env.label=Variables de entorno (Opcional) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=Formato: CLAVE=valor o CLAVE={{parameter}} (uno por línea) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=Formato\: CLAVE\=valor o CLAVE\={{parameter}} (uno por línea) mcp.instance.transport.stdio=Stdio (Proceso local) mcp.instance.transport.http=HTTP (Servidor remoto) mcp.instance.http.url.label=Plantilla de URL -mcp.instance.http.url.placeholder=https://{{host}}/mcp o https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp o https\://api.example.com/mcp mcp.instance.http.url.hint=URL del endpoint del servidor. Use marcadores de posición {{parameter}} para valores dinámicos mcp.instance.http.headers.label=Encabezados HTTP (Opcional) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=Formato: Nombre-Encabezado=valor o Nombre-Encabezado={{parameter}} (uno por línea) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=Formato\: Nombre-Encabezado\=valor o Nombre-Encabezado\={{parameter}} (uno por línea) mcp.instance.http.timeout.label=Tiempo de espera (ms) mcp.instance.http.timeout.hint=Tiempo de espera de la solicitud en milisegundos mcp.instance.validation.error.empty.url=La plantilla de URL no puede estar vacía -mcp.instance.validation.error.invalid.url=La plantilla de URL debe comenzar con http:// o https:// +mcp.instance.validation.error.invalid.url=La plantilla de URL debe comenzar con http\:// o https\:// # MCP Integrations (Project View) mcp.instance.delete.tooltip=Eliminar instancia MCP @@ -1199,7 +1332,7 @@ mcp.tools.dialog.search.count={0} de {1} herramienta(s) mcp.tools.dialog.search.empty=Ninguna herramienta coincide con su búsqueda mcp.tools.dialog.export=Exportar herramientas mcp.tools.dialog.export.success=Herramientas exportadas a {0} -mcp.tools.dialog.export.failed=Error al exportar herramientas: {0} +mcp.tools.dialog.export.failed=Error al exportar herramientas\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=Añadir servidor MCP @@ -1255,7 +1388,7 @@ file.viewer.close=Cerrar visor file.viewer.open.external=Abrir externamente file.viewer.binary=Archivo binario — no se puede previsualizar como texto. file.viewer.too.large=El archivo es demasiado grande para previsualizarlo ({0} KB). El máximo es 512 KB. -file.viewer.error=No se pudo leer el archivo: {0} +file.viewer.error=No se pudo leer el archivo\: {0} file.viewer.select.prompt=Selecciona un archivo del árbol superior para previsualizar su contenido # Project Side Panel @@ -1267,12 +1400,11 @@ panel.reindex.confirm.title=¿Detener y reindexar? panel.reindex.confirm.message="{0}" se está indexando actualmente. ¿Detener la indexación actual y reindexar desde cero? panel.reindex.confirm.button=Detener y reindexar panel.reindex.confirm.cancel=Cancelar -panel.collapse=Colapsar panel panel.collapse=Contraer panel # RAG Status rag.status.started=Indexación iniciada -rag.status.inprogress=Indexando: {0}% +rag.status.inprogress=Indexando\: {0}% rag.status.inprogress.unknown=Indexando... rag.status.queued=En cola — esperando a que otro proyecto termine de indexar rag.status.ready=Listo @@ -1322,7 +1454,7 @@ plans.editor.label=Contenido YAML plans.editor.placeholder=Pega o escribe aquí el YAML de tu plan... plans.editor.valid=YAML válido plans.editor.hint.title=Referencia -plans.editor.hint.fields=Obligatorio: id, name, steps\nOpcional: description, icon, inputs, workflow\nTipos de paso: text, multiline, toggle, number\nTipos de flujo de trabajo: sequence, parallel, conditional +plans.editor.hint.fields=Obligatorio\: id, name, steps\nOpcional\: description, icon, inputs, workflow\nTipos de paso\: text, multiline, toggle, number\nTipos de flujo de trabajo\: sequence, parallel, conditional plans.editor.menu.edit=Editar YAML plans.editor.ai.label=Generar con IA plans.editor.ai.placeholder=Describe lo que quieres que haga este plan con palabras sencillas... @@ -1351,7 +1483,6 @@ skills.view.empty.search=No hay habilidades que coincidan con su búsqueda skills.view.manage=Gestionar habilidades skills.view.select.prompt=Selecciona una habilidad para ejecutar skills.view.select.hint=Elige una habilidad del panel de habilidades a la derecha -skills.view.select.skill=Selecciona una habilidad… skills.view.run=Ejecutar habilidad skills.view.run.command=Enviar comando skills.view.running=Ejecutando… @@ -1382,12 +1513,12 @@ skills.view.panel.collapse=Contraer panel skills.view.panel.expand=Expandir panel skills.view.tab.skills=Habilidades skills.view.tab.workspace=Espacio de trabajo -skills.view.last.run=Última ejecución: {0} +skills.view.last.run=Última ejecución\: {0} skills.view.category.uncategorized=Otros skills.view.search.placeholder=Buscar habilidades ... skills.view.search.clear=Borrar búsqueda skills.view.context.placeholder=¿Qué te gustaría hacer? (opcional) -skills.view.command.mode.hint=Modo comando: una entrada que comienza con / se ejecuta como comando de agente. +skills.view.command.mode.hint=Modo comando\: una entrada que comienza con / se ejecuta como comando de agente. skills.view.system.prompt.preview=Prompt del sistema skills.view.response.title=Respuesta skills.view.followup.label=Seguimiento @@ -1397,7 +1528,7 @@ skills.view.history.empty=Aún no hay ejecuciones skills.view.copy=Copiar skills.view.system.prompt.file=archivo skills.view.system.prompt.files=archivos -skills.view.system.prompt.also.included=También incluido en el contexto del agente: +skills.view.system.prompt.also.included=También incluido en el contexto del agente\: skills.view.docs.tooltip=Ver Guía de Habilidades skills.view.mode.agentic=Agente skills.view.mode.manual=Manual @@ -1409,11 +1540,6 @@ skills.agentic.skills.available={0} habilidades disponibles como contexto del ag skills.agentic.no.skills.hint=Todavía no hay habilidades — añade habilidades en Configuración → Habilidades para darle al agente capacidades especializadas skills.agentic.model.default=Modelo predeterminado -# File / folder chooser -file.chooser.folder.select=Seleccionar -file.chooser.folder.hint=Haz doble clic en una carpeta para entrar en ella. Cuando estés en la carpeta que quieres indexar, haz clic en “Seleccionar”. -file.chooser.file.select=Seleccionar - # Onboarding Wizard onboarding.title=Bienvenido a Askimo onboarding.step.indicator=Paso {0} de {1} @@ -1442,7 +1568,7 @@ onboarding.step.analytics.section.never=Lo que nunca recopilamos onboarding.step.analytics.toggle.subtitle=Nos ayuda a centrarnos en lo que más importa · se puede cambiar en cualquier momento en Ajustes → Avanzado # Onboarding Step 1: Welcome -onboarding.step.welcome.title=👋 ¡Bienvenido a Askimo! +onboarding.step.welcome.title=👋 ¡Bienvenido a Askimo\! onboarding.step.welcome.description=Tu asistente personal de IA. Chatea con varios modelos de IA, organiza el conocimiento en proyectos y automatiza flujos de trabajo con skills y planes. onboarding.step.welcome.feature1.title=💬 Chatea con IA onboarding.step.welcome.feature1.description=Haz preguntas, recibe ayuda con tareas o conversa con cualquier modelo de IA. @@ -1469,9 +1595,8 @@ onboarding.step.directives.feature2.description=Preguntas vagas obtienen respues onboarding.step.directives.feature3.title=El experto adecuado para cada tarea onboarding.step.directives.feature3.description=¿Necesitas un tutor paciente para aprender y un crítico de código directo para depurar? Mantén directivas separadas y obtén la mentalidad adecuada para cada tarea. onboarding.step.directives.link=Ver ejemplos y consejos - # Onboarding Step 6: Ready -onboarding.step.ready.title=🚀 ¡Todo listo! +onboarding.step.ready.title=🚀 ¡Todo listo\! onboarding.step.ready.description=Todo está configurado y listo para empezar. Inicia tu primer chat o explora los recursos a continuación. onboarding.step.ready.link.docs=📚 Explorar la documentación onboarding.step.ready.link.providers=🔧 Configurar proveedores de IA @@ -1481,16 +1606,16 @@ onboarding.step.ready.link.github=⭐ Danos una estrella en GitHub onboarding.step.persona.title=🎯 ¿Qué es lo que principalmente quieres hacer? onboarding.step.persona.description=Elige la opción que más se parezca a tu trabajo. Askimo mostrará las funciones más relevantes. Siempre puedes cambiar esto desde el menú Ver. onboarding.step.persona.developer.description=Leer y escribir código, refactorizar archivos, generar andamiajes o ejecutar tareas agénticas en tu proyecto local. -onboarding.step.persona.developer.features=Habilita: Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.developer.features=Habilita\: Skills (Gemini CLI, Claude Code), Projects onboarding.step.persona.researcher.description=Investigar temas, analizar datos, escribir informes estructurados y obtener respuestas fundamentadas en el conocimiento. -onboarding.step.persona.researcher.features=Habilita: Plans, Projects (RAG) +onboarding.step.persona.researcher.features=Habilita\: Plans, Projects (RAG) onboarding.step.persona.manager.description=Redactar correos electrónicos, procesar notas de reuniones, escribir informes de estado o ejecutar flujos de trabajo de contenido de varios pasos. -onboarding.step.persona.manager.features=Habilita: Plans +onboarding.step.persona.manager.features=Habilita\: Plans onboarding.step.persona.everything.description=Hago una mezcla de cosas — muéstrame todas las funciones y yo decidiré qué usar. -onboarding.step.persona.everything.features=Habilita: Skills, Plans, Projects, MCP, RAG +onboarding.step.persona.everything.features=Habilita\: Skills, Plans, Projects, MCP, RAG # Persona labels persona.developer=💻 Escribir y revisar código persona.researcher=🔬 Investigar y analizar persona.manager=📋 Escribir y organizar -persona.everything=⚡ Hago una mezcla de cosas \ No newline at end of file +persona.everything=⚡ Hago una mezcla de cosas diff --git a/desktop-shared/src/main/resources/i18n/messages_fr.properties b/desktop-shared/src/main/resources/i18n/messages_fr.properties index 1816786d6..0210845bc 100644 --- a/desktop-shared/src/main/resources/i18n/messages_fr.properties +++ b/desktop-shared/src/main/resources/i18n/messages_fr.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - French Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=Système menu.view.appearance.light=Clair menu.view.appearance.dark=Sombre menu.view.fullscreen=Entrer en plein écran +menu.view.bookmarks=Voir les signets menu.terminal=Terminal menu.terminal.new=Nouveau terminal menu.help=Aide @@ -43,7 +44,7 @@ menu.help.share=🗣 Partager Askimo menu.help.share.x=Partager sur X / Twitter menu.help.share.linkedin=Partager sur LinkedIn menu.help.share.facebook=Partager sur Facebook -menu.help.share.text=Découvrez Askimo — un client IA gratuit et local pour bureau. Compatible avec Ollama, OpenAI, Anthropic et plus. https://askimo.chat +menu.help.share.text=Découvrez Askimo — un client IA gratuit et local pour bureau. Compatible avec Ollama, OpenAI, Anthropic et plus. https\://askimo.chat menu.help.share.hackernews=Publier sur Hacker News menu.eventlog=Journal des événements menu.help.model.capabilities=Ouvrir le fichier des capacités du modèle @@ -51,7 +52,7 @@ menu.dev.clear.account.preferences=[Dev] Effacer les préférences du compte menu.about=À propos d’Askimo menu.help.check.updates=Vérifier les mises à jour... menu.help.diagnostics=Diagnostics système... - +menu.help.support.askimo=Soutenir Askimo ⭐ # Common Dialog Buttons dialog.cancel=Annuler @@ -60,16 +61,16 @@ dialog.close=Fermer # Backup and Restore backup.export.title=Exporter la sauvegarde backup.export.success.title=Sauvegarde exportée -backup.export.success.message=Sauvegarde exportée avec succès vers :\n{0} +backup.export.success.message=Sauvegarde exportée avec succès vers \:\n{0} backup.export.error.title=Échec de l'exportation -backup.export.error.message=Impossible d'exporter la sauvegarde :\n{0} +backup.export.error.message=Impossible d''exporter la sauvegarde \:\n{0} backup.import.title=Importer la sauvegarde backup.import.confirm.title=Confirmer l'importation backup.import.confirm.message=Cette action remplacera toutes les données actuelles par la sauvegarde.\n\nUne sauvegarde de sécurité sera créée automatiquement avant l'importation.\n\nÊtes-vous sûr de vouloir continuer ? backup.import.success.title=Sauvegarde importée backup.import.success.message=Sauvegarde importée avec succès.\n\nVeuillez redémarrer Askimo pour que tous les changements prennent effet. backup.import.error.title=Échec de l'importation -backup.import.error.message=Impossible d'importer la sauvegarde :\n{0} +backup.import.error.message=Impossible d''importer la sauvegarde \:\n{0} # Event Log eventlog.title=Journal des événements ({0}) @@ -108,6 +109,12 @@ discover.stat.projects=Projets discover.stat.mcp=Serveurs MCP discover.stat.plans=Plans discover.stat.skills=Compétences +discover.customize=Personnaliser +discover.customize.show_token_usage=Afficher la carte d'utilisation des jetons +discover.tokens.title=Meilleurs modèles par utilisation de jetons +discover.tokens.total={0} au total +discover.tokens.view_details=Voir les détails +discover.tokens.empty=Aucune utilisation de jetons enregistrée pour le moment. Commencez à discuter pour voir les statistiques ici. discover.explore.title=Explorer les fonctionnalités discover.explore.mcp.title=Serveurs MCP discover.explore.mcp.desc=Étendez Askimo avec des outils externes et des sources de données via le Model Context Protocol. @@ -142,7 +149,7 @@ session.rename.error.empty=Le titre ne peut pas être vide session.export.file.chooser.title=Enregistrer l’historique session.export.button.export=Exporter session.export.success.title=Exportation réussie -session.export.success.message=La session a été exportée avec succès vers : +session.export.success.message=La session a été exportée avec succès vers \: # Projects project.title=Projets @@ -158,11 +165,11 @@ project.new.dialog.file.browse=Sélectionner les fichiers à traiter... project.new.dialog.sources.label=Matériaux de référence (optionnel) project.new.dialog.sources.add=Ajouter une source project.new.dialog.error.empty.name=Le nom du projet ne peut pas être vide -project.new.dialog.error.create.failed=Échec de la création du projet : {0} +project.new.dialog.error.create.failed=Échec de la création du projet \: {0} project.new.dialog.name.error.empty=Le nom du projet ne peut pas être vide project.new.dialog.button.create=Créer le projet project.new.dialog.button.cancel=Annuler -project.new.dialog.success.title=Projet créé avec succès ! +project.new.dialog.success.title=Projet créé avec succès \! project.new.dialog.success.message=Le projet ''{0}'' a été créé. project.new.dialog.success.countdown=Fermeture dans {0} seconde{1}... project.new.dialog.success.close=Fermer maintenant @@ -185,7 +192,7 @@ projects.title=Projets projects.description=Organisez vos discussions autour d'un sujet et joignez des fichiers, des dossiers ou des URL comme sources de connaissances, afin que l'IA dispose toujours du contexte approprié pour ce projet. projects.error=❌ {0} projects.empty=Aucun projet trouvé. -projects.empty.hint=💡 Créez un nouveau projet pour organiser vos sessions de chat ! +projects.empty.hint=💡 Créez un nouveau projet pour organiser vos sessions de chat \! projects.search.placeholder=Rechercher par nom… projects.search.empty=Aucun projet ne correspond à "{0}". projects.col.name=Nom @@ -196,13 +203,16 @@ projects.sources.expand=Afficher les matériaux de référence projects.sources.collapse=Masquer les matériaux de référence projects.sources.empty.title=Aucun document de référence pour le moment projects.sources.empty.description=Ajoutez des documents afin qu’Askimo puisse s’y référer lorsqu’il répond à vos questions -projects.sources.info.tooltip=Les documents de référence aident Askimo à comprendre votre contexte spécifique.\n\n\ -Ajoutez des dossiers, des fichiers ou des sites web contenant les informations auxquelles Askimo doit se référer pour répondre à vos questions.\n\n\ -Par exemple :\n\ +projects.sources.info.tooltip=Les documents de référence aident Askimo à comprendre votre contexte spécifique.\n\ +\n\ +Ajoutez des dossiers, des fichiers ou des sites web contenant les informations auxquelles Askimo doit se référer pour répondre à vos questions.\n\ +\n\ +Par exemple \:\n\ • Documentation de votre projet\n\ • Base de connaissances de l’entreprise\n\ • Spécifications techniques\n\ -• Articles de recherche\n\n\ +• Articles de recherche\n\ +\n\ Askimo analysera ces documents afin de fournir des réponses plus précises et adaptées au contexte. projects.sources.type.local_folders=Dossiers Locaux projects.sources.type.local_files=Fichiers Locaux @@ -229,8 +239,8 @@ project.reindex=Réindexer le projet project.menu.tooltip=Menu du projet project.new.chat.placeholder=Nouvelle conversation dans {0} project.recent.chats=Conversations récentes -project.no.chats=Pas encore de conversations. Commencez-en une nouvelle ci-dessous ! -project.indexing.label=Indexation de la source de connaissances: {0} +project.no.chats=Pas encore de conversations. Commencez-en une nouvelle ci-dessous \! +project.indexing.label=Indexation de la source de connaissances\: {0} project.indexing.queued=Indexation mise en file d'attente - en attente de la fin d'un autre projet... project.indexing.failed=L'indexation a échoué. Essayez de réindexer à partir du menu du projet. project.indexing.ready.label=Indexé @@ -245,12 +255,11 @@ session.error.removing=Échec du retrait de la session du projet. Veuillez rées # Settings settings.title=Paramètres -settings.general=Général settings.appearance=Apparence settings.appearance.accent=Couleur d’accent settings.appearance.accent.description=Personnalisez en toute sécurité une seule couleur d’accent. Askimo l’applique aux accents principaux de l’interface et dérive des couleurs associées pour préserver la lisibilité. settings.appearance.accent.label=Couleur d’accent (Hex) -settings.appearance.accent.invalid=Entrez une couleur hexadécimale valide comme #0284C7 +settings.appearance.accent.invalid=Entrez une couleur hexadécimale valide comme \#0284C7 settings.appearance.accent.swatch.primary=Primaire settings.appearance.accent.swatch.primary.container=Conteneur settings.appearance.accent.swatch.on.primary.container=Sur le conteneur @@ -273,8 +282,8 @@ settings.network=Réseau settings.network.description=Configurer les paramètres réseau et proxy settings.mcp.servers=Serveurs MCP settings.skills=Compétences -settings.skills.description=Les Skills sont des agents IA réutilisables qui fonctionnent directement sur votre machine. Chaque skill est un fichier Markdown contenant un prompt système et des instructions. Lorsque vous exécutez un skill, il s'exécute via {0} — lecture et écriture de vos fichiers, exécution de commandes shell et itération jusqu'à ce que la tâche soit terminée. Aucun copier-coller requis. -settings.skills.runtimes=Environnements d'exécution pris en charge : +settings.skills.description=Les Skills sont des agents IA réutilisables qui fonctionnent directement sur votre machine. Chaque skill est un fichier Markdown contenant un prompt système et des instructions. Lorsque vous exécutez un skill, il s''exécute via {0} — lecture et écriture de vos fichiers, exécution de commandes shell et itération jusqu''à ce que la tâche soit terminée. Aucun copier-coller requis. +settings.skills.runtimes=Environnements d'exécution pris en charge \: settings.skills.directory=Répertoire des compétences settings.skills.open.folder=Ouvrir le dossier settings.skills.new.skill=Nouvelle compétence @@ -317,12 +326,9 @@ settings.skills.add.folder=Ajouter un dossier settings.skills.add.folder.name=Nom du dossier settings.advanced=Avancé settings.about=À propos -settings.model=Modèle -settings.provider=Fournisseur settings.theme=Thème settings.save=Enregistrer settings.cancel=Annuler -settings.provider.change.button=Modifier settings.model.change.button=Modifier settings.change.button=Modifier @@ -333,24 +339,16 @@ theme.dark=Sombre theme.dark.description=Toujours utiliser le thème sombre theme.system=Système theme.system.description=Suivre le thème du système -theme.sepia=Sépia -theme.sepia.description=Tons chauds parchemin, agréables pour les yeux -theme.ocean=Océan -theme.ocean.description=Douces tonalités bleu ciel, calmes et rafraîchissantes -theme.nord=Nord -theme.nord.description=Palette sombre arctique, froide et concentrée -theme.sage=Sauge -theme.sage.description=Tons vert-gris atténués, sophistiqués et apaisants -theme.rose=Rose -theme.rose.description=Rose poudré doux, élégant et chaleureux -theme.indigo=Indigo -theme.indigo.description=Bleu violet profond, mystique et créatif settings.layout.density=Densité de mise en page settings.layout.density.description=Ajustez l’espacement et les marges intérieures dans l’application. layout.density.comfortable=Confortable layout.density.comfortable.description=Espacement plus généreux pour une meilleure lisibilité layout.density.compact=Compact layout.density.compact.description=Espacement réduit pour afficher plus de contenu +layout.density.relaxed=Aéré +layout.density.relaxed.description=Espacement légèrement plus grand pour une meilleure lisibilité +layout.density.spacious=Très aéré +layout.density.spacious.description=Espacement maximal pour les écrans ultra haute DPI settings.background.image=Image d’arrière-plan settings.background.image.description=Choisissez une image d’arrière-plan — sélectionnez un préréglage ou utilisez votre propre image. Une superposition translucide permet de garder le texte lisible. Les images d’arrière-plan sont indépendantes du thème sélectionné. settings.background.image.browse=Parcourir @@ -365,11 +363,11 @@ settings.log.viewer=Fichiers journaux settings.log.viewer.description=Voir les journaux et diagnostics settings.log.viewer.view=Voir les journaux settings.log.viewer.open_folder=Ouvrir le dossier des journaux -settings.log.viewer.path=Fichier journal : {0} +settings.log.viewer.path=Fichier journal \: {0} settings.log.viewer.dialog.title=Journaux de l’application settings.log.viewer.refresh=Rafraîchir settings.log.viewer.copy=Copier -settings.log.viewer.copied=Copié ! +settings.log.viewer.copied=Copié \! settings.log.viewer.loading=Chargement des journaux... settings.log.viewer.error=Erreur lors du chargement des journaux settings.log.viewer.empty=Aucun journal disponible @@ -404,6 +402,31 @@ settings.proxy.password.placeholder=Facultatif settings.proxy.system.info=ℹ️ Utilisation des paramètres proxy du système d’exploitation settings.proxy.socks5.no.auth.info=ℹ️ L’authentification SOCKS5 n’est actuellement pas prise en charge. Utilisez un proxy SOCKS5 sans authentification ou créez un ticket sur GitHub si vous avez besoin de cette fonctionnalité. +# Web Search Settings +settings.web_search=Recherche web +settings.web_search.description=Activez la recherche web intégrée pour que l’IA puisse consulter des informations actuelles sans clé API. DuckDuckGo fonctionne sans configuration — passez à Brave ou Tavily pour des résultats de meilleure qualité. +settings.web_search.title=Configuration de la recherche web +settings.web_search.enabled=Activé +settings.web_search.zero_config_note=DuckDuckGo fonctionne sans configuration. Ne sélectionnez un autre backend ci-dessous que si vous souhaitez des résultats de meilleure qualité ou en plus grand volume et disposez d’une clé API pour ce service. +settings.web_search.backend=Backend de recherche +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Gratuit, aucune clé API requise. Valeur par défaut respectueuse de la vie privée. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Rapide, index indépendant. Nécessite une clé API Brave Search gratuite. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=Résultats optimisés par IA avec extraction de réponses facultative. Nécessite une clé API Tavily. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Métarecherche respectueuse de la vie privée via votre propre instance SearxNG. Aucune clé API requise. +settings.web_search.api_key=Clé API +settings.web_search.api_key.placeholder=Collez votre clé API ici +settings.web_search.get_api_key=Obtenir une clé API gratuite ↗ +settings.web_search.endpoint=URL de l’instance SearxNG +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=Tester la recherche +settings.web_search.test.running=Test en cours... +settings.web_search.test.success=✅ La recherche fonctionne +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=Utilisateur invité user.profile.menu=Menu du profil utilisateur @@ -427,7 +450,7 @@ user.profile.interests.custom.placeholder=ex. Apprentissage automatique, Photogr user.profile.interests.custom.hint=Séparez plusieurs centres d’intérêt par des virgules # Welcome Dialog (First Run) -welcome.title=Bienvenue sur Askimo ! +welcome.title=Bienvenue sur Askimo \! welcome.subtitle=Aidez-nous à personnaliser votre expérience IA welcome.avatar.optional=Cliquez pour ajouter une photo (facultatif) welcome.name=Votre nom @@ -466,6 +489,7 @@ user.interest.environment=Environnement # Actions action.delete=Supprimer +action.remove=Supprimer action.edit=Modifier action.pin=Épingler à la barre latérale action.unpin=Détacher de la barre latérale @@ -482,22 +506,45 @@ action.close=Fermer action.show.more=Afficher plus action.show.less=Afficher moins action.back=Retour +action.next=Suivant action.retry=Réessayer action.done=Terminé action.refresh=Rafraîchir - - # Happiness Gate (shown before Star Prompt) happiness.gate.title=Comment trouvez-vous Askimo ? happiness.gate.subtitle=Dites-nous comment nous nous en sortons -happiness.gate.happy=Je l'adore ! 😍 +happiness.gate.happy=Je l'adore \! 😍 happiness.gate.neutral=Ça va 🙂 happiness.gate.unhappy=Pas vraiment 😕 -happiness.gate.feedback.title=Aidez-nous à nous améliorer -happiness.gate.feedback.message=Souhaitez-vous partager vos commentaires ? Cela nous aide à rendre Askimo meilleur pour vous et pour tout le monde. -happiness.gate.feedback.yes=Oui, partager des commentaires -happiness.gate.feedback.no=Non merci + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=Qu'est-ce qui ne vous convient pas ? +feedback.dialog.subtitle=Sélectionnez toutes les options correspondantes — votre retour sera envoyé directement à l'équipe. +feedback.comment.label=Dites-nous en plus (facultatif) +feedback.comment.placeholder=Décrivez le problème ou partagez vos réflexions… +feedback.email.label=Votre e-mail (facultatif) +feedback.email.placeholder=you@example.com +feedback.email.hint=Utilisé uniquement pour assurer le suivi de votre retour. Nous ne vous enverrons jamais de spam. +feedback.action.skip=Passer +feedback.action.send=Envoyer le feedback +feedback.thanks.title=Merci pour votre retour \! +feedback.thanks.message=Votre contribution nous aide à améliorer Askimo. Nous l'apprécions vraiment. +feedback.thanks.close=Fermer + +feedback.remind.title=Pas de souci \! +feedback.remind.message=Vous pouvez envoyer un feedback à tout moment depuis le menu Aide → Partager un feedback. +feedback.remind.got.it=C'est noté + +# Feedback reasons +feedback.reason.inaccurate=Les réponses de l'IA ne sont pas exactes +feedback.reason.slow=C'est trop lent +feedback.reason.missing.feature=Il manque une fonctionnalité dont j'ai besoin +feedback.reason.broken=Quelque chose est cassé +feedback.reason.hard.to.use=C'est difficile à utiliser +feedback.reason.integration=Problèmes d'intégration +feedback.reason.privacy=Problèmes de confidentialité +feedback.reason.other=Autre chose # Star Prompt star.prompt.title=Vous appréciez Askimo? Aidez à faire connaître 💙 @@ -509,6 +556,12 @@ star.prompt.share.description=Parlez d'Askimo à votre réseau sur X, LinkedIn o star.prompt.maybe.later=Pas maintenant star.prompt.already.starred=Déjà mis en favori ✓ star.prompt.social.proof=⭐ Rejoignez {0} personnes qui ont déjà ajouté une étoile à Askimo +star.prompt.thanks.title=Merci beaucoup \! 🌟 +star.prompt.thanks.message=Votre soutien compte beaucoup et nous aide à continuer à développer Askimo. +star.prompt.thanks.done=Terminé ✓ +star.prompt.remind.title=Pas de souci \! +star.prompt.remind.message=Vous pouvez nous soutenir à tout moment via le menu Aide → Soutenir Askimo. +star.prompt.remind.got.it=Compris # Analytics Settings (Advanced section toggle) settings.analytics.title=Analytique anonyme @@ -519,6 +572,11 @@ settings.hardware.acceleration.title=Accélération matérielle settings.hardware.acceleration.description=Utilisez le rendu accéléré par GPU pour une interface plus fluide. Désactivez cette option si vous rencontrez des problèmes graphiques. settings.hardware.acceleration.description.windows=Utilisez le rendu accéléré par GPU (Direct3D/OpenGL) pour une interface plus fluide. Désactivez cette option si vous rencontrez des scintillements ou des fréquences de rafraîchissement erratiques avec les écrans G-Sync ou FreeSync. settings.hardware.acceleration.restart.notice=Redémarrez Askimo pour appliquer ce changement. +settings.ui.scale.title=Échelle d'affichage +settings.ui.scale.description=Ajustez l'échelle globale de l'interface utilisateur. Un redémarrage est nécessaire pour que les modifications prennent effet. +settings.ui.scale.option.system.default=Par défaut du système +settings.ui.scale.restart.notice=Redémarrez Askimo pour appliquer le changement d'échelle. +settings.ui.scale.learn.more=En savoir plus sur HiDPI et la mise à l'échelle de l'interface settings.hardware.acceleration.restart.title=Redémarrage requis settings.hardware.acceleration.restart.message=Veuillez redémarrer Askimo pour que le changement de rendu prenne effet. settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync détecté @@ -532,17 +590,15 @@ file.overwrite.message=Ce fichier existe déjà. Voulez-vous le remplacer ? file.overwrite.confirm=Remplacer file.name.too.long=Le nom du fichier est trop long. Veuillez utiliser un nom plus court (255 caractères maximum). - # About about.title=À propos de {0} -action.remove=Supprimer about.version=Version about.buildDate=Date de compilation about.buildJdk=JDK de compilation about.license=Licence about.description=Description about.description.text=Une plateforme d’agents IA local-first pour ordinateur et CLI. Discutez avec plusieurs fournisseurs (OpenAI, Anthropic, Gemini, xAI, Ollama, LM Studio et plus encore), récupérez des connaissances depuis des fichiers locaux et des URL via le RAG, exécutez des workflows IA en plusieurs étapes avec les Plans, lancez des scripts et connectez des outils externes via MCP — le tout sur votre propre machine. -about.copyright=Droits d'auteur (c) {0} {1} +about.copyright=Droits d''auteur (c) {0} {1} about.runtime.info=Informations d'exécution about.links=Liens @@ -567,6 +623,7 @@ shortcut.stop.ai.response=Arrêter la réponse de l’IA shortcut.quit.application=Quitter l’application shortcut.navigate.to.sessions=Accéder aux sessions shortcut.navigate.to.projects=Accéder aux projets +shortcut.navigate.to.bookmarks=Accéder aux favoris shortcut.enter.fullscreen=Entrer en plein écran shortcut.close.search=Fermer la recherche shortcut.next.search.result=Résultat de recherche suivant @@ -576,7 +633,7 @@ shortcut.send.message=Envoyer le message shortcut.new.line=Nouvelle ligne # Chat View -chat.welcome=Bienvenue sur Askimo !\nCommencez une conversation en tapant un message ci-dessous. +chat.welcome=Bienvenue sur Askimo \!\nCommencez une conversation en tapant un message ci-dessous. chat.no.active.session=Sélectionnez une session dans la barre latérale ou démarrez une nouvelle conversation chat.search.placeholder=Rechercher dans la conversation... chat.search.no.results=Aucun résultat @@ -614,8 +671,7 @@ global.search.results.count={0} résultat trouvé global.search.results.count.plural={0} résultats trouvés # Rest of chat view strings -chat.directive=Directive : -chat.directive.none=Aucune +chat.directive=Directive chat.directive.new=Nouvelle directive chat.directive.manage=Gérer les directives chat.directive.learn.more=Apprenez à utiliser les directives @@ -625,7 +681,11 @@ chat.drop.files=Glissez-déposez des fichiers pour les joindre à la conversatio chat.create.image.menu=Créer une image chat.create.image.mode=Image chat.create.image.mode.cancel=Annuler le mode de création d’image +chat.image.model.missing.title=Modèle d'image non configuré +chat.image.model.missing.message=Aucun modèle d''image n''est défini pour {0}. Ouvrez Paramètres > Fournisseur d''IA > Modèles de génération d''images et définissez d''abord un nom de modèle. chat.tools.button=Outils disponibles +chat.tools.button.disabled=Outils disponibles ({0} désactivés) +chat.tools.button.model.no.support=Les outils ne sont pas pris en charge par ce modèle chat.tools.popup.title=Outils disponibles chat.tools.popup.loading=Chargement des serveurs... chat.tools.popup.no.servers.global=Aucun serveur MCP global configuré. @@ -634,7 +694,6 @@ chat.tools.server.scope.global=Global chat.tools.server.scope.project=Projet chat.tools.server.scope.builtin=Intégré chat.tools.tool.no.description=Aucune description disponible -chat.tools.button.disabled=Outils disponibles ({0} désactivés) chat.reasoning.effort.label=Réflexion chat.reasoning.effort.tooltip=Effort de raisonnement — contrôle la profondeur de réflexion du modèle avant de répondre chat.reasoning.effort.off=Désactivé @@ -646,12 +705,13 @@ chat.reasoning.effort.medium.description=Profondeur et vitesse équilibrées. Co chat.reasoning.effort.high=Élevé chat.reasoning.effort.high.description=Raisonnement approfondi, coût plus élevé. Idéal pour la résolution de problèmes complexes. chat.input.placeholder=Tapez votre message... (Entrée pour envoyer, Shift+Entrée pour une nouvelle ligne) +chat.input.placeholder.hint.attach=Joindre des fichiers avec {0}+A ou glisser-déposer ici chat.select.file=Sélectionner un ou plusieurs fichiers chat.attachment.remove=Supprimer la pièce jointe chat.attachment.preview.loading=Chargement de l'aperçu… chat.attachment.preview.file.not.found=(Fichier introuvable) chat.attachment.preview.too.large=(Fichier trop volumineux pour l'aperçu) -chat.attachment.preview.cannot.read=(Impossible de lire le fichier : {0}) +chat.attachment.preview.cannot.read=(Impossible de lire le fichier \: {0}) chat.attachment.preview.more.lines={0} lignes supplémentaires # Sessions View @@ -663,12 +723,12 @@ sessions.col.created=Créé sessions.col.updated=Mis à jour sessions.error=❌ {0} sessions.empty=Aucune session trouvée. -sessions.empty.hint=💡 Démarrez une nouvelle conversation pour créer votre première session ! +sessions.empty.hint=💡 Démarrez une nouvelle conversation pour créer votre première session \! sessions.search.placeholder=Rechercher par titre… sessions.search.empty=Aucune session ne correspond à "{0}". -# Commandes génériques de pagination des tableaux -table.page.size.label=Lignes par page: +# Generic table pagination controls +table.page.size.label=Lignes par page\: table.page=Page {0} sur {1} table.page.previous=Page précédente table.page.next=Page suivante @@ -682,10 +742,9 @@ sessions.error.not.found=Session introuvable. sessions.error.rename.failed=Renommage impossible. # ChatSessionService Errors - # Update Check update.dialog.title=Mise à jour du logiciel -update.dialog.new.version.available=Une nouvelle version d’Askimo est disponible ! +update.dialog.new.version.available=Une nouvelle version d’Askimo est disponible \! update.urgency.medium=Vous avez {0} versions de retard — vous pourriez manquer des correctifs importants et de nouvelles fonctionnalités. update.urgency.high=Vous avez {0} versions de retard — vous manquez des améliorations importantes. Veuillez mettre à jour bientôt. update.dialog.current.version.label=Version actuelle @@ -696,7 +755,7 @@ update.dialog.download=Télécharger maintenant update.dialog.how.to.update=Comment mettre à jour update.dialog.later=Plus tard update.dialog.skip.version=Ignorer cette version -update.check.up.to.date=Vous utilisez la dernière version ! +update.check.up.to.date=Vous utilisez la dernière version \! update.check.failed=Échec de la vérification # Event Names @@ -718,44 +777,48 @@ settings.font.size=Taille de police settings.font.line.spacing=Interligne settings.shortcuts=Raccourcis clavier settings.shortcuts.description=Afficher tous les raccourcis clavier disponibles pour améliorer votre productivité +settings.shortcuts.search=Rechercher des raccourcis... +settings.shortcuts.no_results=Aucun raccourci ne correspond à votre recherche settings.app.language=Langue de l'application settings.app.language.translation.help=Vous voyez une erreur ? Aidez-nous à améliorer la traduction. settings.app.language.translation.contribute=Contribuer sur Crowdin settings.ai.response.language=Langue de réponse préférée settings.ai.response.language.description=Forcer l'IA à répondre dans une langue spécifique (laisser vide pour détection automatique) settings.ai.response.language.auto=Détection automatique -settings.ai.response.language.tooltip=L'IA détecte automatiquement votre langue, mais remplacez quand :\n• Apprentissage de langues (pratique immersive)\n• Cohérence professionnelle (ex : docs de code toujours en anglais)\n• Optimisation RAG (correspondre à la langue de la base de connaissances)\n• Enseignement (poser une question dans une langue, expliquer dans une autre)\n• Éviter les changements de langue indésirables -settings.model.select=Sélectionner un modèle pour {0} : +settings.ai.response.language.tooltip=L'IA détecte automatiquement votre langue, mais remplacez quand \:\n• Apprentissage de langues (pratique immersive)\n• Cohérence professionnelle (ex \: docs de code toujours en anglais)\n• Optimisation RAG (correspondre à la langue de la base de connaissances)\n• Enseignement (poser une question dans une langue, expliquer dans une autre)\n• Éviter les changements de langue indésirables +settings.model.select=Sélectionner un modèle pour {0} \: settings.model.loading=Chargement des modèles... settings.model.none=Aucun modèle disponible settings.model.select.title=Sélection du modèle settings.model.current=Modèle actuel settings.model.selected=Modèle sélectionné settings.model.new=Nouveau modèle -settings.model.change.description=Choisissez un modèle dans la liste ci-dessous : +settings.model.use.default=Utiliser par défaut +settings.model.change.description=Choisissez un modèle dans la liste ci-dessous \: settings.model.search=Rechercher un modèle settings.model.search.placeholder=Filtrer les modèles... settings.model.filtered=Affichage de {0} sur {1} modèles settings.model.no.match=Aucun modèle correspondant -settings.model.no.results=Aucun modèle correspondant +settings.model.chat.filter.label=Modèles de chat · {0} affichés +settings.model.chat.filter.show.all=Afficher tout {0} settings.configure.title=Configurer {0} settings.test.connection.testing=Test en cours... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=Impossible de se connecter au fournisseur. Veuillez vérifier que votre clé API est correcte (pour les fournisseurs cloud) ou que votre URL de base est accessible (pour les fournisseurs locaux). Vous pouvez trouver des instructions de configuration en utilisant le lien d'aide ci-dessus. # Directives Dialog directive.manage.title=Gérer les directives -directive.manage.empty=Aucune directive disponible. Créez-en une pour commencer ! +directive.manage.empty=Aucune directive disponible. Créez-en une pour commencer \! directive.edit.name.label=Nom directive.edit.name.placeholder=Entrez le nom de la directive... directive.edit.content.label=Contenu directive.edit.content.placeholder=Entrez les instructions de la directive... directive.edit.name.required=Le nom est obligatoire directive.edit.content.required=Le contenu est obligatoire -directive.created=Créée : {0} +directive.created=Créée \: {0} directive.new.title=Nouvelle directive directive.new.guidelines=Les directives guident la manière dont l'IA répond à vos messages. Soyez précis sur le ton, le niveau de détail, le format ou toute exigence particulière dont vous avez besoin. -directive.new.name.placeholder=ex.: concise-code, explain-like-im-5 +directive.new.name.placeholder=ex.\: concise-code, explain-like-im-5 directive.new.content.placeholder=Entrez les instructions... directive.new.apply.current=Appliquer à la session actuelle directive.new.create=Créer @@ -767,8 +830,8 @@ directive.export.tooltip=Exporter toutes les directives vers un fichier JSON pou directive.export.filename=askimo-directives directive.import=Importer directive.import.tooltip=Importer des directives à partir d'un fichier JSON -directive.import.result=Importation terminée : {0} importées, {1} renommées, {2} ignorées -directive.import.error=Échec de l'importation : format de fichier non valide ou non pris en charge +directive.import.result=Importation terminée \: {0} importées, {1} renommées, {2} ignorées +directive.import.error=Échec de l'importation \: format de fichier non valide ou non pris en charge # Log Levels log.level.error=Erreur @@ -785,6 +848,8 @@ log.level.trace.description=Afficher tous les logs (le plus détaillé) # Message Components message.loading.previous=Chargement des messages précédents... message.thinking=Réflexion… ({0}s) +message.thinking.section.streaming=💭 Réflexion... +message.thinking.section.done=💭 Pensée message.copy=Copier le message message.copy.description=Copier le message message.edit=Modifier le message @@ -811,13 +876,40 @@ message.ai.try.again.confirm.title=Régénérer la réponse ? message.ai.try.again.confirm.message=Tous les messages après ce point seront supprimés. Voulez-vous continuer ? message.ai.try.again.confirm.cancel=Annuler message.ai.try.again.confirm.confirm=Régénérer +message.ai.fork=Hacer fork de la sesión desde aquí +message.ai.fork.description=Dividir esta conversación en una nueva sesión independiente message.ai.export.pdf=Exporter en PDF message.ai.export.pdf.dialog.title=Enregistrer la reponse IA en PDF +message.bookmark=Mettre en signet +message.bookmark.remove=Supprimer le signet +message.bookmark.description=Mettre ce message en signet message.edited.indicator=(modifié) message.date.today=Aujourd'hui message.date.yesterday=Hier message.token.usage={0} tokens · {1} en entrée / {2} en sortie -message.token.usage.tooltip=Tokens utilisés par cette réponse.\nEntrée: votre prompt + contexte envoyé à l'IA.\nSortie: la réponse générée par l'IA. +message.token.usage.tooltip=Tokens utilisés par cette réponse.\nEntrée\: votre prompt + contexte envoyé à l'IA.\nSortie\: la réponse générée par l'IA. + +# Bookmarks +chat.bookmarks.button.tooltip=Signets +chat.bookmarks.popover.title=Messages épinglés +chat.bookmarks.popover.empty.title=Aucun signet pour l’instant +chat.bookmarks.popover.empty.hint=Épingle un message avec l’icône signet en dessous +bookmarks.title=Signets +bookmarks.empty.title=Aucun signet pour l’instant +bookmarks.empty.hint=Ajoute un signet via l’icône d’épingle sous chaque message +bookmarks.session.untitled=Conversation sans titre +bookmarks.message.count={0} épinglés +bookmarks.role.user=Vous +bookmarks.role.ai=IA + +# Tool call display +tool.call.header.running=Exécution de l'outil... +tool.call.header.done={0} outil(s) utilisé(s) +tool.call.status.done=Terminé +tool.call.status.failed=Échoué +tool.call.detail.arguments=Arguments +tool.call.detail.result=Résultat + attachment.download=Télécharger la pièce jointe attachment.download.description=Télécharger cette pièce jointe attachment.save.file=Enregistrer la pièce jointe @@ -827,48 +919,62 @@ outdated.branch.header={0} anciens messages de l’édition précédente (clique outdated.label=ancien # Provider Dialog -provider.change.title=Changer de fournisseur -provider.select.title=Sélectionner un fournisseur +provider.manage.title=Gérer les fournisseurs +provider.type.picker.title=Choisir le type de fournisseur +provider.type.picker.prompt=Sélectionnez le type de fournisseur à ajouter \: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Ajouter un fournisseur +provider.no.instances.hint=Aucun fournisseur configuré pour l'instant. Cliquez sur "Ajouter un fournisseur" pour commencer. +provider.model.panel.select.hint=Sélectionnez un fournisseur à gauche pour parcourir ses modèles +provider.model.panel.model.count={0} modèles +provider.model.default.badge=Par défaut +provider.instance.name.label=Nom de l'instance +provider.instance.name.placeholder=par ex. "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=Un fournisseur nommé "{0}" existe déjà provider.setup.required.title=Configuration du fournisseur IA requise provider.setup.required.message=Avant de commencer à discuter, sélectionnez et configurez un fournisseur IA. provider.setup.required.button=Configurer -provider.select.prompt=Sélectionner un fournisseur : -provider.configure.prompt=Configurer : -provider.choose.placeholder=Choisissez un fournisseur... +provider.configure.prompt=Configurer \: provider.setup.guide=Comment configurer {0} provider.apikey.stored=Clé API stockée en toute sécurité provider.apikey.enter=Entrer la clé API -provider.apikey.already.stored=Déjà stockée provider.apikey.security.message=🔒 Votre clé API est chiffrée et stockée en toute sécurité. Nous ne partageons jamais vos données. provider.apikey.security.link=En savoir plus sur notre protection des données provider.not.set=Non défini # Provider Configuration - OpenAI -provider.openai.apikey.description=Votre clé API OpenAI : https://platform.openai.com/account/api-keys +provider.openai.apikey.description=Votre clé API OpenAI \: https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=Clé API déjà stockée. Laissez vide pour conserver l’actuelle. -provider.openai.setup.help=💡 Pour utiliser OpenAI, une clé API est nécessaire.\n\n1. Obtenez-la ici : https://platform.openai.com/account/api-keys\n2. Configurez-la dans les paramètres ou via :change-settings +provider.openai.setup.help=💡 Pour utiliser OpenAI, une clé API est nécessaire.\n\n1. Obtenez-la ici \: https\://platform.openai.com/account/api-keys\n2. Configurez-la dans les paramètres ou via \:change-settings # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Votre clé API Anthropic : https://console.anthropic.com/ +provider.anthropic.apikey.description=Votre clé API Anthropic \: https\://console.anthropic.com/ provider.anthropic.apikey.stored=Clé API déjà stockée. -provider.anthropic.setup.help=💡 Pour utiliser Anthropic, une clé API est nécessaire.\n\n1. Obtenez-la ici : https://console.anthropic.com/\n2. Configurez-la dans les paramètres ou via :change-settings +provider.anthropic.setup.help=💡 Pour utiliser Anthropic, une clé API est nécessaire.\n\n1. Obtenez-la ici \: https\://console.anthropic.com/\n2. Configurez-la dans les paramètres ou via \:change-settings +provider.anthropic.max_tokens.label=Max Tokens +provider.anthropic.max_tokens.description=Nombre maximal de jetons que le modèle peut générer par réponse (réflexion + réponse combinées). +provider.anthropic.thinking_budget_tokens.label=Jetons de budget de réflexion +provider.anthropic.thinking_budget_tokens.description=Nombre maximal de jetons qu'Anthropic peut consacrer à la réflexion. Définissez sur 0 pour laisser le modèle décider automatiquement (recommandé). +provider.anthropic.thinking_max_tokens.label=Max de jetons de réflexion +provider.anthropic.thinking_max_tokens.description=Plafond total de jetons lorsque la réflexion est activée (réflexion + réponse). Définissez sur 0 pour utiliser Max Tokens à la place. # Provider Configuration - Gemini -provider.gemini.apikey.description=Votre clé API Google AI Studio : https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Votre clé API Google AI Studio \: https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=Clé API déjà stockée. -provider.gemini.setup.help=💡 Pour utiliser Gemini, une clé API est nécessaire.\n\n1. Obtenez-la ici : https://aistudio.google.com/app/apikey\n2. Configurez-la dans les paramètres ou via :change-settings +provider.gemini.setup.help=💡 Pour utiliser Gemini, une clé API est nécessaire.\n\n1. Obtenez-la ici \: https\://aistudio.google.com/app/apikey\n2. Configurez-la dans les paramètres ou via \:change-settings # Provider Configuration - XAI -provider.xai.apikey.description=Votre clé API XAI : https://console.x.ai/ +provider.xai.apikey.description=Votre clé API XAI \: https\://console.x.ai/ provider.xai.apikey.stored=Clé API déjà stockée. -provider.xai.setup.help=💡 Pour utiliser XAI, une clé API est nécessaire.\n\n1. Obtenez-la ici : https://console.x.ai/\n2. Configurez-la dans les paramètres ou via :change-settings +provider.xai.setup.help=💡 Pour utiliser XAI, une clé API est nécessaire.\n\n1. Obtenez-la ici \: https\://console.x.ai/\n2. Configurez-la dans les paramètres ou via \:change-settings # Provider Configuration - Ollama -provider.ollama.baseurl.description=Base URL Ollama (défaut : http://localhost:11434) -provider.ollama.setup.help=💡 Pour utiliser Ollama, il doit s'exécuter localement.\n\n1. Installez : https://ollama.ai/\n2. Lancez le service\n3. Ajustez l'URL de base si nécessaire +provider.ollama.baseurl.description=Base URL Ollama (défaut \: http\://localhost\:11434) +provider.ollama.setup.help=💡 Pour utiliser Ollama, il doit s'exécuter localement.\n\n1. Installez \: https\://ollama.ai/\n2. Lancez le service\n3. Ajustez l'URL de base si nécessaire # Provider Configuration - Docker AI -provider.docker.baseurl.description=Base URL Docker AI (défaut : http://localhost:12434) +provider.docker.baseurl.description=Base URL Docker AI (défaut \: http\://localhost\:12434) provider.docker.setup.help=💡 Pour utiliser Docker AI, il doit s'exécuter localement.\n\n1. Assurez-vous que Docker AI est installé et en cours d'exécution\n2. Lancez le service\n3. Ajustez l'URL de base si nécessaire # Provider Configuration - LocalAI @@ -876,23 +982,30 @@ provider.localai.baseurl.description=Base URL LocalAI provider.localai.setup.help=💡 Pour utiliser LocalAI, vous devez l’exécuter d’abord.\n\n1. Installez et lancez LocalAI\n2. Configurez l’URL de base # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=Base URL LMStudio (défaut : http://localhost:1234) -provider.lmstudio.setup.help=💡 Pour utiliser LMStudio :\n\n1. Installez : https://lmstudio.ai/\n2. Lancez le serveur local\n3. Modifier l’URL de base si nécessaire +provider.lmstudio.baseurl.description=Base URL LMStudio (défaut \: http\://localhost\:1234) +provider.lmstudio.setup.help=💡 Pour utiliser LMStudio \:\n\n1. Installez \: https\://lmstudio.ai/\n2. Lancez le serveur local\n3. Modifier l’URL de base si nécessaire provider.lmstudio.openai.compat.info=Askimo utilise les points de terminaison compatibles OpenAI (/v1), pas l’API LMStudio native (/api/v1/). # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=L'URL de base pour votre instance compatible OpenAI +provider.openai_compatible.apikey.description=Clé API pour le fournisseur (optionnel - laissez vide si le point de terminaison ne nécessite pas d'authentification) provider.openai_compatible.apikey.stored=La clé API est déjà stockée en toute sécurité. Laissez vide pour conserver la clé existante, ou saisissez-en une nouvelle pour la mettre à jour. # System Resources system.share.feedback=Partager vos commentaires -system.ai.provider.tooltip=Fournisseur d’IA : {0}\nCliquez pour configurer +system.ai.provider.tooltip=Fournisseur d’IA \: {0}\nCliquez pour configurer system.diagnostics.title=Diagnostics système system.diagnostics.resources=Ressources system.diagnostics.jvm.memory=Mémoire JVM (utilisée / totale) system.diagnostics.cpu.usage=Utilisation du CPU system.diagnostics.telemetry=Télémétrie +# Telemetry export +telemetry.export.csv=Exporter CSV +telemetry.export.dialog.title=Exporter la télémétrie en ZIP +telemetry.export.error.title=Échec de l'exportation +telemetry.export.error.message=Échec de l''exportation des données de télémétrie \: {0} + # Telemetry telemetry.reset=Réinitialiser les données de télémétrie telemetry.title=📊 Métriques de session @@ -908,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=Requêtes Totales telemetry.rag.triggered.label=Déclenché telemetry.rag.skipped.label=Ignoré -telemetry.llm.calls=Appels LLM -telemetry.llm.calls.count={0} appels -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} err -telemetry.total.tokens=Tokens Totaux : {0} telemetry.llm.col.provider=Fournisseur telemetry.llm.col.model=Modèle telemetry.llm.col.calls=Appels @@ -956,49 +1064,52 @@ export.format.html.benefit.3=Aspect professionnel export.format.html.benefit.4=Facile à partager # Error Messages -error.network=⚠️ Impossible de se connecter au service IA{endpoint}\n\nVeuillez vérifier :\n• Votre connexion Internet\n• L’URL du service IA (vérifiez les paramètres)\n• Les paramètres du pare-feu\n• La disponibilité du service +error.network=⚠️ Impossible de se connecter au service IA{endpoint}\n\nVeuillez vérifier \:\n• Votre connexion Internet\n• L’URL du service IA (vérifiez les paramètres)\n• Les paramètres du pare-feu\n• La disponibilité du service error.authentication=⚠️ La clé API est manquante ou invalide{provider}\n\nCorrigez cela en configurant votre clé API dans les paramètres. -error.model_configuration=⚠️ Erreur de configuration du modèle : {issue}\n\nPour corriger :\n1. Ouvrez les paramètres\n2. Sélectionnez un fournisseur IA\n3. Choisissez un modèle dans la liste +error.model_not_found=⚠️ Modèle introuvable \: {model}\n\nCe modèle a peut-être été déprécié ou supprimé par le fournisseur. Veuillez sélectionner un autre modèle. +error.provider_not_configured=⚠️ Aucun fournisseur IA configuré.\n\nPour commencer à discuter \:\n1. Ouvrez les paramètres\n2. Sélectionnez un fournisseur IA (OpenAI, Ollama, Anthropic, etc.)\n3. Entrez votre clé API ou configurez la connexion error.rate_limit=⚠️ Limite d’utilisation atteinte\n{retryAfter}\n\nVous avez atteint votre limite d’utilisation de l’API. Veuillez patienter avant d’envoyer d’autres messages. error.insufficient_credits=⚠️ Crédits insuffisants\n\nVotre solde est trop faible pour utiliser ce fournisseur.\n\nVisitez la page de facturation pour ajouter des crédits. -error.timeout=⚠️ La requête a expiré après {timeout} secondes\n\nCauses possibles :\n• Charge serveur élevée – réessayez plus tard\n• Requête complexe – simplifiez-la\n• Latence réseau -error.invalid_request=⚠️ Requête invalide : {details}\n\nVeuillez vérifier votre saisie et réessayer. -error.system=⚠️ Erreur système\n\nUne erreur inattendue est survenue : {errorCode}\n\nVeuillez contacter le support Askimo avec :\n• Ce que vous faisiez\n• Le code d’erreur ci-dessus\n• L’horodatage +error.timeout=⚠️ La requête a expiré après {timeout} secondes\n\nCauses possibles \:\n• Charge serveur élevée – réessayez plus tard\n• Requête complexe – simplifiez-la\n• Latence réseau +error.context_length=⚠️ Fenêtre de contexte dépassée\n\nL'entrée totale (historique de la conversation + votre message + pièces jointes) est trop volumineuse pour être traitée par ce modèle.\n\nPour corriger cela \:\n• Démarrez une nouvelle session de chat pour effacer l'historique de la conversation\n• Raccourcissez votre message ou supprimez les pièces jointes volumineuses\n• Si vous utilisez un modèle local (Ollama / LM Studio / Docker), augmentez la taille du contexte dans ses paramètres\n• Passez à un modèle avec une fenêtre de contexte plus grande +error.invalid_request=⚠️ Requête invalide \: {details}\n\nVeuillez vérifier votre saisie et réessayer. +error.local_server=⚠️ Erreur du serveur IA local \!\n\nLe processus du serveur IA a planté ou n''a pas pu charger le modèle. Ce n''est pas causé par Askimo.\n\nCauses possibles \:\n• Le fichier modèle est corrompu ou incomplet — essayez de le retélécharger\n• RAM/VRAM insuffisante — essayez une quantification plus petite (ex. Q4 au lieu de Q8)\n• Format de modèle non pris en charge par la version actuelle du serveur\n• Le processus serveur a été tué par le système d''exploitation (mémoire insuffisante)\n\nQue faire \:\n1. Consultez les journaux de votre serveur IA local\n2. Redémarrez le serveur et réessayez\n3. Re-téléchargez le modèle\n4. Essayez un autre modèle ou niveau de quantification\n\nDétails techniques \: {details} +error.system=⚠️ Erreur système\n\nUne erreur inattendue est survenue \: {errorCode}\n\nVeuillez contacter le support Askimo avec \:\n• Ce que vous faisiez\n• Le code d’erreur ci-dessus\n• L’horodatage # Model Availability Errors error.model.not_available.title.chat=Modèle non disponible error.model.not_available.title.embedding=Modèle d’embedding non disponible error.model.not_available.message.chat=Le modèle ''{0}'' n’est pas disponible. -error.model.not_available.message.embedding=Le modèle d’embedding ''{0}'' n’est pas disponible.\n\nVeuillez configurer correctement votre modèle d’embedding. +error.model.not_available.message.embedding=Le modèle d’embedding ''{0}'' n’est pas disponible dans votre fournisseur local.\n\nAccédez à Paramètres → Fournisseur IA et sélectionnez un modèle d’embedding disponible dans la carte de configuration du fournisseur. error.model.not_available.config_link=Configurer le modèle d’embedding -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=Une erreur s’est produite -error.app.message=Une erreur inattendue s’est produite : {0} +error.app.message=Une erreur inattendue s’est produite \: {0} # Send Message Errors error.send_message.title=Échec de l’envoi du message - # Indexing Errors error.indexing.model_not_found.title=Modèle d’embedding introuvable error.indexing.model_not_found.message=Le modèle d’embedding ''{0}'' est introuvable. Veuillez télécharger ou activer ce modèle depuis {1} avant l’indexation. +error.indexing.input_too_large.title=Entrée d'embedding trop grande +error.indexing.input_too_large.message=Le modèle d''embedding a rejeté un ou plusieurs segments de [{0}] car le nombre de jetons dépasse la taille maximale de contexte du modèle. Réduisez la taille des segments dans Paramètres → Indexation → Max. caractères par segment, puis relancez l''indexation. error.indexing.io_error.title=Erreur d’E/S error.indexing.io_error.message=Une erreur d’E/S s’est produite lors de l’indexation error.indexing.unknown.title=Erreur d’indexation error.indexing.unknown.message=Une erreur inconnue s’est produite lors de l’indexation - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=État du modèle d’embedding (requis uniquement pour les fonctionnalités RAG) -settings.embedding.not_available_rag_only=⚠️ {0}.\n\nRemarque : cela affecte uniquement les fonctionnalités RAG basées sur les projets. Le chat standard fonctionne normalement. -settings.embedding.provider_unreachable=⚠️ Impossible de se connecter au fournisseur : {0}.\n\nRemarque : les modèles d’embedding sont nécessaires uniquement pour les fonctionnalités RAG basées sur les projets. -settings.embedding.check_failed=Échec de la vérification du modèle d’embedding : {0} +settings.embedding.not_available_rag_only=⚠️ {0}.\n\nRemarque \: cela affecte uniquement les fonctionnalités RAG basées sur les projets. Le chat standard fonctionne normalement. +settings.embedding.provider_unreachable=⚠️ Impossible de se connecter au fournisseur \: {0}.\n\nRemarque \: les modèles d’embedding sont nécessaires uniquement pour les fonctionnalités RAG basées sur les projets. +settings.embedding.check_failed=Échec de la vérification du modèle d’embedding \: {0} settings.embedding.download_model=Télécharger le modèle d’embedding -settings.embedding.download_success=✅ Modèle d’embedding téléchargé avec succès : {0} -settings.embedding.download_failed=❌ Échec du téléchargement du modèle d’embedding : {0}. Veuillez essayer manuellement : ollama pull {0} -settings.embedding.download_error=Erreur lors du téléchargement du modèle : {0} +settings.embedding.download_success=✅ Modèle d’embedding téléchargé avec succès \: {0} +settings.embedding.download_failed=❌ Échec du téléchargement du modèle d’embedding \: {0}. Veuillez essayer manuellement \: ollama pull {0} +settings.embedding.download_error=Erreur lors du téléchargement du modèle \: {0} settings.embedding.anthropic_no_embedding=Anthropic ne fournit pas de modèles d’embedding settings.embedding.xai_no_embedding=xAI ne fournit pas de modèles d’embedding @@ -1006,21 +1117,21 @@ settings.embedding.xai_no_embedding=xAI ne fournit pas de modèles d’embedding settings.rag.title=Configuration RAG settings.rag.description=Configurez les paramètres de la génération augmentée par la recherche pour la récupération de connaissances basée sur les projets settings.rag.vector.max.results=Nombre maximal de résultats de recherche vectorielle -settings.rag.vector.max.results.hint=Nombre maximal de documents issus de la recherche vectorielle (par défaut : 20) +settings.rag.vector.max.results.hint=Nombre maximal de documents issus de la recherche vectorielle (par défaut \: 20) settings.rag.vector.min.score=Score minimal de recherche vectorielle -settings.rag.vector.min.score.hint=Score de similarité minimal 0,0–1,0 (par défaut : 0,3) +settings.rag.vector.min.score.hint=Score de similarité minimal 0,0–1,0 (par défaut \: 0,3) settings.rag.hybrid.max.results=Résultats hybrides maximaux -settings.rag.hybrid.max.results.hint=Nombre final de documents après fusion (par défaut : 15) +settings.rag.hybrid.max.results.hint=Nombre final de documents après fusion (par défaut \: 15) settings.rag.rank.fusion.constant=Constante de fusion de classement -settings.rag.rank.fusion.constant.hint=Constante RRF pour le classement hybride (par défaut : 60) +settings.rag.rank.fusion.constant.hint=Constante RRF pour le classement hybride (par défaut \: 60) settings.rag.use.absolute.paths=Utiliser des chemins absolus dans les citations settings.rag.use.absolute.paths.hint=Afficher les chemins de fichiers complets dans les réponses de l’IA pour plus de clarté lorsque plusieurs fichiers portent le même nom settings.rag.embedding.title=Configuration des embeddings settings.rag.embedding.description=Configurez les paramètres de segmentation du texte et des embeddings settings.rag.embedding.max.chars.per.chunk=Nombre maximal de caractères par segment -settings.rag.embedding.max.chars.per.chunk.hint=Nombre maximal de caractères dans chaque segment de texte (par défaut : 1500) +settings.rag.embedding.max.chars.per.chunk.hint=Nombre maximal de caractères dans chaque segment de texte (par défaut \: 1500) settings.rag.embedding.chunk.overlap=Chevauchement des segments -settings.rag.embedding.chunk.overlap.hint=Nombre de caractères chevauchants entre les segments (par défaut : 100) +settings.rag.embedding.chunk.overlap.hint=Nombre de caractères chevauchants entre les segments (par défaut \: 100) settings.rag.embedding.models=Modèles d’embedding par fournisseur settings.rag.indexing.title=Configuration de l'indexation settings.rag.indexing.description=Contrôlez les fichiers indexés et la taille maximale de fichier autorisée @@ -1035,18 +1146,38 @@ settings.rag.indexing.binary.extensions.hint=Extensions de fichiers séparées p settings.rag.indexing.embedding.batch.size=Taille du lot d'embeddings settings.rag.indexing.embedding.batch.size.hint=Nombre de segments de texte envoyés au modèle d'embeddings par requête. Si l'indexation est lente et que vous utilisez un fournisseur distant (OpenAI, Gemini), essayez d'augmenter à 100–500. Avec un modèle local (Ollama, LM Studio), gardez cette valeur basse pour éviter les délais d'attente. -# Settings - Utility Models +## Settings - Models +settings.models.title=Modèles +settings.models.description=Configurez le comportement global du modèle IA partagé entre tous les fournisseurs. +settings.models.max.tool.calling.round.trips=Nombre maximal d'allers-retours d'appel d'outils +settings.models.max.tool.calling.round.trips.hint=Nombre maximum d'appels d'outils que l'IA peut effectuer dans une seule réponse (défaut \: 10). Des valeurs plus élevées permettent des tâches d'agent plus complexes mais augmentent la latence et le coût. + +# Memory Settings +settings.memory.title=Paramètres de mémoire +settings.memory.description=Contrôle la façon dont l'IA gère l'historique des conversations pour rester dans la fenêtre de contexte du modèle. +settings.memory.mode=Mode mémoire +settings.memory.mode.compact=Compact +settings.memory.mode.compact.hint=Coût en tokens réduit, moins de détails +settings.memory.mode.compact.description=Résumé agressif. Faible coût en tokens, résumé fréquent. Idéal pour les très longues sessions ou les modèles sensibles aux coûts. +settings.memory.mode.balanced=Équilibré +settings.memory.mode.balanced.hint=Bon équilibre qualité/coût +settings.memory.mode.balanced.description=Bon équilibre qualité/coût. Déclenche le résumé à 40 % du budget mémoire. Convient à la plupart des sessions. +settings.memory.mode.detail=Détaillé +settings.memory.mode.detail.hint=Haute fidélité, plus de tokens +settings.memory.mode.detail.description=Résumé minimal. Conserve plus de tours verbatim et des résumés plus riches. Idéal pour les sessions courtes ou lorsque le rappel précis est important. + +## Settings - Utility Models settings.utility.models.title=Modèles utilitaires settings.utility.models.uses.selected=(utilise le modèle sélectionné) settings.utility.models.local.note={0} est un fournisseur local — le modèle de chat actif est utilisé automatiquement pour les tâches utilitaires. -# Settings - Vision Models +## Settings - Vision Models settings.vision.models.title=Modèles de vision ## Settings - Image Models settings.image.models.title=Modèles de génération d’images -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=Configuration du modèle settings.provider.model.config.description=Remplacez les modèles par défaut utilisés pour des tâches spécifiques. Laissez un champ vide pour utiliser le modèle par défaut du fournisseur. settings.provider.model.config.guide=Voir le guide de configuration du modèle d'IA @@ -1057,26 +1188,24 @@ settings.provider.model.embedding.hint=Modèle utilisé pour générer des embed settings.model.placeholder.enter=Saisir le modèle {0} - # File Viewer Dialog file.viewer.title=Visionneuse de fichiers file.viewer.title.with.name=Visionneuse de fichiers - {0} file.viewer.dialog.close=Fermer file.viewer.copy.clipboard=Copier dans le presse-papiers -file.viewer.copied=Copié ! +file.viewer.copied=Copié \! # Mermaid Chart Renderer mermaid.setup.required.title=Mermaid CLI requis mermaid.setup.privacy.note=Askimo génère les diagrammes localement afin de protéger votre confidentialité. mermaid.setup.instructions.title=Instructions de configuration -mermaid.setup.instructions.text=Pour afficher des diagrammes Mermaid dans Askimo, veuillez suivre le guide d’installation à l’adresse suivante : -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.text=Pour afficher des diagrammes Mermaid dans Askimo, veuillez suivre le guide d’installation à l’adresse suivante \: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=Ouvrir le guide de configuration mermaid.setup.button.copy.diagram=Copier le diagramme -mermaid.diagram.source.label=Source du diagramme : +mermaid.diagram.source.label=Source du diagramme \: mermaid.rendering.progress=Rendu du diagramme en cours... mermaid.error.rendering.title=Erreur lors du rendu du diagramme -mermaid.error.rendering.raw.label=Diagramme brut : mermaid.error.unexpected.state=État inattendu. Veuillez réessayer. mermaid.error.failed.load.image=Échec du chargement de l’image du diagramme mermaid.button.copy.code=Copier le code @@ -1086,7 +1215,8 @@ mermaid.button.zoom.in=Zoom avant mermaid.button.zoom.out=Zoom arrière mermaid.button.reset.zoom=Réinitialiser le zoom mermaid.button.retry=Réessayer -mermaid.feedback.copied=Copié ! +mermaid.feedback.copied=Copié \! + # Reference Material knowledge.source.type.folder=Dossier (surveillé pour les modifications) @@ -1104,9 +1234,9 @@ mcp.instances.title=Instances MCP mcp.instances.description=Ces instances MCP sont disponibles mcp.instances.empty=Aucune instance MCP configurée mcp.instances.count={0} instance(s) -mcp.instance.server.label=Serveur: {0} +mcp.instance.server.label=Serveur\: {0} mcp.instance.delete.confirm.title=Supprimer l'instance MCP ? -mcp.instance.delete.confirm.message=Êtes-vous sûr de vouloir supprimer l'instance mcp "{0}"? Cette action est irréversible. +mcp.instance.delete.confirm.message=Êtes-vous sûr de vouloir supprimer l''instance mcp "{0}"? Cette action est irréversible. mcp.instance.enable.tooltip=Activer cette instance MCP mcp.instance.disable.tooltip=Désactiver cette instance MCP mcp.instance.add.dialog.title=Ajouter une instance MCP @@ -1130,7 +1260,7 @@ mcp.instance.field.description=Description mcp.instance.field.description.placeholder=Brève description de ce que fait ce serveur mcp.instance.field.transport=Type de transport mcp.instance.field.command=Modèle de commande -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=Commande séparée par des espaces avec des espaces réservés {{parameter}} mcp.instance.validation.error.empty.id=L'ID du serveur ne peut pas être vide mcp.instance.validation.error.invalid.id.pattern=L'ID du serveur doit contenir uniquement des minuscules, des chiffres et des tirets @@ -1139,20 +1269,20 @@ mcp.instance.validation.error.empty.command=Le modèle de commande ne peut pas mcp.instance.validation.error.empty.parameter.key=La clé du paramètre ne peut pas être vide mcp.instance.validation.error.empty.parameter.label=L'étiquette du paramètre ne peut pas être vide mcp.instance.env.label=Variables d'environnement (Optionnel) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=Format : CLÉ=valeur ou CLÉ={{parameter}} (une par ligne) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=Format \: CLÉ\=valeur ou CLÉ\={{parameter}} (une par ligne) mcp.instance.transport.stdio=Stdio (Processus local) mcp.instance.transport.http=HTTP (Serveur distant) mcp.instance.http.url.label=Modèle d'URL -mcp.instance.http.url.placeholder=https://{{host}}/mcp ou https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp ou https\://api.example.com/mcp mcp.instance.http.url.hint=URL du point de terminaison du serveur. Utilisez des espaces réservés {{parameter}} pour les valeurs dynamiques mcp.instance.http.headers.label=En-têtes HTTP (Optionnel) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=Format : Nom-en-tête=valeur ou Nom-en-tête={{parameter}} (une par ligne) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=Format \: Nom-en-tête\=valeur ou Nom-en-tête\={{parameter}} (une par ligne) mcp.instance.http.timeout.label=Délai (ms) mcp.instance.http.timeout.hint=Délai de la requête en millisecondes mcp.instance.validation.error.empty.url=Le modèle d'URL ne peut pas être vide -mcp.instance.validation.error.invalid.url=Le modèle d'URL doit commencer par http:// ou https:// +mcp.instance.validation.error.invalid.url=Le modèle d'URL doit commencer par http\:// ou https\:// # MCP Integrations (Project View) mcp.instance.delete.tooltip=Supprimer l'instance MCP @@ -1202,7 +1332,7 @@ mcp.tools.dialog.search.count={0} de {1} outil(s) mcp.tools.dialog.search.empty=Aucun outil ne correspond à votre recherche mcp.tools.dialog.export=Exporter les outils mcp.tools.dialog.export.success=Outils exportés vers {0} -mcp.tools.dialog.export.failed=Échec de l'exportation des outils : {0} +mcp.tools.dialog.export.failed=Échec de l''exportation des outils \: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=Ajouter un serveur MCP @@ -1258,7 +1388,7 @@ file.viewer.close=Fermer la visionneuse file.viewer.open.external=Ouvrir en externe file.viewer.binary=Fichier binaire — impossible de prévisualiser sous forme de texte. file.viewer.too.large=Le fichier est trop volumineux pour être prévisualisé ({0} KB). Le maximum est de 512 KB. -file.viewer.error=Impossible de lire le fichier : {0} +file.viewer.error=Impossible de lire le fichier \: {0} file.viewer.select.prompt=Sélectionnez un fichier dans l'arborescence ci-dessus pour prévisualiser son contenu # Project Side Panel @@ -1267,15 +1397,14 @@ panel.context.menu=Menu contextuel panel.context.add.material=Ajouter du matériel de référence panel.context.reindex=Réindexer le projet panel.reindex.confirm.title=Arrêter et réindexer ? -panel.reindex.confirm.message="{0}" est en cours d'indexation. Arrêter l'indexation en cours et réindexer depuis le début ? +panel.reindex.confirm.message="{0}" est en cours d''indexation. Arrêter l''indexation en cours et réindexer depuis le début ? panel.reindex.confirm.button=Arrêter et réindexer panel.reindex.confirm.cancel=Annuler panel.collapse=Réduire le panneau -panel.collapse=Réduire le panneau # RAG Status rag.status.started=Indexation démarrée -rag.status.inprogress=Indexation : {0}% +rag.status.inprogress=Indexation \: {0}% rag.status.inprogress.unknown=Indexation... rag.status.queued=En file d'attente — en attente de la fin de l'indexation d'un autre projet rag.status.ready=Prêt @@ -1325,7 +1454,7 @@ plans.editor.label=Contenu YAML plans.editor.placeholder=Collez ou saisissez ici le YAML de votre plan... plans.editor.valid=YAML valide plans.editor.hint.title=Référence -plans.editor.hint.fields=Requis : id, name, steps\nOptionnel : description, icon, inputs, workflow\nTypes d’étape : text, multiline, toggle, number\nTypes de workflow : sequence, parallel, conditional +plans.editor.hint.fields=Requis \: id, name, steps\nOptionnel \: description, icon, inputs, workflow\nTypes d’étape \: text, multiline, toggle, number\nTypes de workflow \: sequence, parallel, conditional plans.editor.menu.edit=Modifier le YAML plans.editor.ai.label=Générer avec l'IA plans.editor.ai.placeholder=Décrivez ce que vous souhaitez que ce plan fasse en mots simples... @@ -1354,7 +1483,6 @@ skills.view.empty.search=Aucune compétence ne correspond à votre recherche skills.view.manage=Gérer les compétences skills.view.select.prompt=Sélectionnez une compétence à exécuter skills.view.select.hint=Choisissez une compétence dans le panneau des compétences à droite -skills.view.select.skill=Sélectionnez une compétence… skills.view.run=Exécuter la compétence skills.view.run.command=Envoyer la commande skills.view.running=Exécution… @@ -1385,12 +1513,12 @@ skills.view.panel.collapse=Réduire le panneau skills.view.panel.expand=Développer le panneau skills.view.tab.skills=Compétences skills.view.tab.workspace=Espace de travail -skills.view.last.run=Dernière exécution : {0} +skills.view.last.run=Dernière exécution \: {0} skills.view.category.uncategorized=Autres skills.view.search.placeholder=Rechercher des compétences ... skills.view.search.clear=Effacer la recherche skills.view.context.placeholder=Que souhaitez-vous faire ? (facultatif) -skills.view.command.mode.hint=Mode commande : une saisie commençant par / est exécutée comme commande d'agent. +skills.view.command.mode.hint=Mode commande \: une saisie commençant par / est exécutée comme commande d'agent. skills.view.system.prompt.preview=Prompt système skills.view.response.title=Réponse skills.view.followup.label=Suivi @@ -1400,7 +1528,7 @@ skills.view.history.empty=Aucune exécution pour le moment skills.view.copy=Copier skills.view.system.prompt.file=fichier skills.view.system.prompt.files=fichiers -skills.view.system.prompt.also.included=Également inclus dans le contexte de l’agent : +skills.view.system.prompt.also.included=Également inclus dans le contexte de l’agent \: skills.view.docs.tooltip=Voir le guide des compétences skills.view.mode.agentic=Agentique skills.view.mode.manual=Manuel @@ -1412,11 +1540,6 @@ skills.agentic.skills.available={0} compétences disponibles comme contexte de l skills.agentic.no.skills.hint=Il n’y a encore aucune compétence — ajoutez des compétences dans Paramètres → Compétences pour donner à l’agent des capacités spécialisées skills.agentic.model.default=Modèle par défaut -# File / folder chooser -file.chooser.folder.select=Sélectionner -file.chooser.folder.hint=Double-cliquez sur un dossier pour l’ouvrir. Lorsque vous êtes dans le dossier que vous souhaitez indexer, cliquez sur « Sélectionner ». -file.chooser.file.select=Sélectionner - # Onboarding Wizard onboarding.title=Bienvenue sur Askimo onboarding.step.indicator=Étape {0} sur {1} @@ -1445,7 +1568,7 @@ onboarding.step.analytics.section.never=Ce que nous ne collectons jamais onboarding.step.analytics.toggle.subtitle=Nous aide à nous concentrer sur l'essentiel · modifiable à tout moment dans Paramètres → Avancé # Onboarding Step 1: Welcome -onboarding.step.welcome.title=👋 Bienvenue sur Askimo ! +onboarding.step.welcome.title=👋 Bienvenue sur Askimo \! onboarding.step.welcome.description=Votre assistant IA personnel. Discutez avec plusieurs modèles IA, organisez vos connaissances en projets, et automatisez des workflows avec des skills et des plans. onboarding.step.welcome.feature1.title=💬 Discutez avec l’IA onboarding.step.welcome.feature1.description=Posez des questions, obtenez de l’aide pour des tâches ou discutez avec n’importe quel modèle IA. @@ -1472,9 +1595,8 @@ onboarding.step.directives.feature2.description=Des questions vagues produisent onboarding.step.directives.feature3.title=Le bon expert pour chaque tâche onboarding.step.directives.feature3.description=Besoin d’un tuteur patient pour apprendre et d’un relecteur de code direct pour le débogage ? Gardez des instructions séparées et obtenez l’état d’esprit adapté à chaque tâche. onboarding.step.directives.link=Voir exemples et astuces - # Onboarding Step 6: Ready -onboarding.step.ready.title=🚀 Tout est prêt ! +onboarding.step.ready.title=🚀 Tout est prêt \! onboarding.step.ready.description=Tout est configuré et prêt à l’emploi. Démarrez votre première discussion ou explorez les ressources ci-dessous. onboarding.step.ready.link.docs=📚 Parcourir la documentation onboarding.step.ready.link.providers=🔧 Configurer les fournisseurs IA @@ -1484,13 +1606,13 @@ onboarding.step.ready.link.github=⭐ Ajoutez-nous à vos favoris sur GitHub onboarding.step.persona.title=🎯 Que voulez-vous faire principalement ? onboarding.step.persona.description=Choisissez l'option qui ressemble le plus à votre travail. Askimo affichera les fonctionnalités les plus pertinentes. Vous pourrez toujours modifier cela depuis le menu Affichage. onboarding.step.persona.developer.description=Lire et écrire du code, remanier des fichiers, générer des structures ou exécuter des tâches agentiques sur votre projet local. -onboarding.step.persona.developer.features=Active : Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.developer.features=Active \: Skills (Gemini CLI, Claude Code), Projects onboarding.step.persona.researcher.description=Rechercher des sujets, analyser des données, rédiger des rapports structurés et obtenir des réponses basées sur les connaissances. -onboarding.step.persona.researcher.features=Active : Plans, Projects (RAG) +onboarding.step.persona.researcher.features=Active \: Plans, Projects (RAG) onboarding.step.persona.manager.description=Rédiger des e-mails, traiter des notes de réunion, écrire des rapports d'état ou exécuter des flux de travail de contenu en plusieurs étapes. -onboarding.step.persona.manager.features=Active : Plans +onboarding.step.persona.manager.features=Active \: Plans onboarding.step.persona.everything.description=Je fais un mélange de choses — montrez-moi toutes les fonctionnalités et je déciderai quoi utiliser. -onboarding.step.persona.everything.features=Active : Skills, Plans, Projects, MCP, RAG +onboarding.step.persona.everything.features=Active \: Skills, Plans, Projects, MCP, RAG # Persona labels persona.developer=💻 Écrire et réviser du code diff --git a/desktop-shared/src/main/resources/i18n/messages_ja_JP.properties b/desktop-shared/src/main/resources/i18n/messages_ja_JP.properties index 0e6f2f159..fef5b178a 100644 --- a/desktop-shared/src/main/resources/i18n/messages_ja_JP.properties +++ b/desktop-shared/src/main/resources/i18n/messages_ja_JP.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - Japanese Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=システム menu.view.appearance.light=ライト menu.view.appearance.dark=ダーク menu.view.fullscreen=フルスクリーンにする +menu.view.bookmarks=ブックマークを表示 menu.terminal=ターミナル menu.terminal.new=新しいターミナル menu.help=ヘルプ @@ -43,7 +44,7 @@ menu.help.share=🗣 Askimo をシェア menu.help.share.x=X / Twitter でシェア menu.help.share.linkedin=LinkedIn でシェア menu.help.share.facebook=Facebook でシェア -menu.help.share.text=Askimo をチェックアウト — Ollama、OpenAI、Anthropic などに対応した無料のローカル AI デスクトップクライアント。 https://askimo.chat +menu.help.share.text=Askimo をチェックアウト — Ollama、OpenAI、Anthropic などに対応した無料のローカル AI デスクトップクライアント。 https\://askimo.chat menu.help.share.hackernews=Hacker Newsに投稿 menu.eventlog=イベントログ menu.help.model.capabilities=モデル機能ファイルを開く @@ -51,6 +52,7 @@ menu.dev.clear.account.preferences=[Dev] アカウント設定をクリア menu.about=Askimo について menu.help.check.updates=アップデートを確認... menu.help.diagnostics=システム診断... +menu.help.support.askimo=Askimo をサポート ⭐ # Common Dialog Buttons dialog.cancel=キャンセル @@ -107,6 +109,12 @@ discover.stat.projects=プロジェクト discover.stat.mcp=MCPサーバー discover.stat.plans=プラン discover.stat.skills=スキル +discover.customize=カスタマイズ +discover.customize.show_token_usage=トークン使用量カードを表示 +discover.tokens.title=トークン使用量別のトップモデル +discover.tokens.total=合計 {0} +discover.tokens.view_details=詳細を表示 +discover.tokens.empty=トークンの使用記録がまだありません。チャットを開始して統計を表示してください。 discover.explore.title=機能を探索 discover.explore.mcp.title=MCPサーバー discover.explore.mcp.desc=Model Context Protocolを介して、外部ツールやデータソースでAskimoを拡張します。 @@ -141,7 +149,7 @@ session.rename.error.empty=タイトルは必須です session.export.file.chooser.title=チャット履歴を保存 session.export.button.export=エクスポート session.export.success.title=エクスポート成功 -session.export.success.message=チャットセッションは次の場所に正常にエクスポートされました: +session.export.success.message=チャットセッションは次の場所に正常にエクスポートされました\: # Projects project.title=プロジェクト @@ -157,7 +165,7 @@ project.new.dialog.file.browse=処理するファイルを選択... project.new.dialog.sources.label=参考資料(任意) project.new.dialog.sources.add=ソースを追加 project.new.dialog.error.empty.name=プロジェクト名は空にできません -project.new.dialog.error.create.failed=プロジェクトの作成に失敗しました: {0} +project.new.dialog.error.create.failed=プロジェクトの作成に失敗しました\: {0} project.new.dialog.name.error.empty=プロジェクト名は空にできません project.new.dialog.button.create=プロジェクトを作成 project.new.dialog.button.cancel=キャンセル @@ -195,13 +203,16 @@ projects.sources.expand=参考資料を表示 projects.sources.collapse=参考資料を非表示 projects.sources.empty.title=参照資料がまだありません projects.sources.empty.description=ドキュメントを追加すると、Askimo が質問に回答する際に参照できるようになります -projects.sources.info.tooltip=参照資料は、Askimo があなた固有のコンテキストを理解するのに役立ちます。\n\n\ -質問に回答する際に Askimo が参照すべき情報を含むフォルダー、ファイル、または Web サイトを追加してください。\n\n\ -例:\n\ +projects.sources.info.tooltip=参照資料は、Askimo があなた固有のコンテキストを理解するのに役立ちます。\n\ +\n\ +質問に回答する際に Askimo が参照すべき情報を含むフォルダー、ファイル、または Web サイトを追加してください。\n\ +\n\ +例\:\n\ • プロジェクトのドキュメント\n\ • 会社のナレッジベース\n\ • 技術仕様書\n\ -• 研究論文\n\n\ +• 研究論文\n\ +\n\ Askimo はこれらの資料を検索し、より正確で文脈に沿った回答を提供します。 projects.sources.type.local_folders=ローカルフォルダー projects.sources.type.local_files=ローカルファイル @@ -229,7 +240,7 @@ project.menu.tooltip=プロジェクトメニュー project.new.chat.placeholder={0} で新しいチャット project.recent.chats=最近のチャット project.no.chats=まだチャットがありません。下から新しいチャットを開始してください! -project.indexing.label=知識ソースのインデックス化: {0} +project.indexing.label=知識ソースのインデックス化\: {0} project.indexing.queued=インデックス作成をキューに入れました - 他のプロジェクトの完了を待機中です... project.indexing.failed=インデックス作成に失敗しました。プロジェクトメニューから再インデックスをお試しください。 project.indexing.ready.label=インデックス済み @@ -244,12 +255,11 @@ session.error.removing=セッションをプロジェクトから削除できま # Settings settings.title=設定 -settings.general=一般 settings.appearance=外観 settings.appearance.accent=アクセントカラー settings.appearance.accent.description=単一のアクセントカラーを安全にカスタマイズします。Askimo は主要な UI アクセントに適用し、読みやすさのために関連色を自動生成します。 settings.appearance.accent.label=アクセントカラー (Hex) -settings.appearance.accent.invalid=#0284C7 のような有効な16進カラーを入力してください +settings.appearance.accent.invalid=\#0284C7 のような有効な16進カラーを入力してください settings.appearance.accent.swatch.primary=プライマリ settings.appearance.accent.swatch.primary.container=コンテナ settings.appearance.accent.swatch.on.primary.container=コンテナ上 @@ -316,12 +326,9 @@ settings.skills.add.folder=フォルダーを追加 settings.skills.add.folder.name=フォルダー名 settings.advanced=詳細設定 settings.about=情報 -settings.model=モデル -settings.provider=プロバイダー settings.theme=テーマ settings.save=保存 settings.cancel=キャンセル -settings.provider.change.button=変更 settings.model.change.button=変更 settings.change.button=変更 @@ -332,24 +339,16 @@ theme.dark=ダーク theme.dark.description=常にダークテーマを使用 theme.system=システム theme.system.description=システム設定に従う -theme.sepia=セピア -theme.sepia.description=温かみのあるパーチメント調、目に優しい -theme.ocean=オーシャン -theme.ocean.description=やわらかな空色のトーンで、穏やかで爽やか -theme.nord=ノルド -theme.nord.description=北極を思わせるダークパレットで、クールで集中しやすい -theme.sage=セージ -theme.sage.description=落ち着いたグレーがかったグリーンで、洗練され穏やか -theme.rose=ローズ -theme.rose.description=やさしいブラッシュピンクで、上品で温かみがある -theme.indigo=インディゴ -theme.indigo.description=深い青紫で、神秘的で創造的 settings.layout.density=レイアウト密度 settings.layout.density.description=アプリ全体の余白とパディングを調整します。 layout.density.comfortable=ゆったり layout.density.comfortable.description=広めの余白で見やすくなります layout.density.compact=コンパクト layout.density.compact.description=狭い余白でより多くのコンテンツを表示します +layout.density.relaxed=ややゆったり +layout.density.relaxed.description=可読性向上のため余白を少し広げます +layout.density.spacious=とてもゆったり +layout.density.spacious.description=超高DPIディスプレイ向けの最大余白 settings.background.image=背景画像 settings.background.image.description=背景画像を選択します — プリセットを選ぶか、自分の画像を使用できます。半透明のオーバーレイにより、テキストの読みやすさが保たれます。背景画像は選択したテーマとは独立しています。 settings.background.image.browse=参照 @@ -364,11 +363,11 @@ settings.log.viewer=ログファイル settings.log.viewer.description=アプリのログと診断を表示 settings.log.viewer.view=ログを見る settings.log.viewer.open_folder=ログフォルダを開く -settings.log.viewer.path=ログファイル: {0} +settings.log.viewer.path=ログファイル\: {0} settings.log.viewer.dialog.title=アプリケーションログ settings.log.viewer.refresh=再読み込み settings.log.viewer.copy=コピー -settings.log.viewer.copied=コピーしました! +settings.log.viewer.copied=コピーしました\! settings.log.viewer.loading=ログを読み込み中... settings.log.viewer.error=ログの読み込みに失敗 settings.log.viewer.empty=ログがありません @@ -403,6 +402,31 @@ settings.proxy.password.placeholder=任意 settings.proxy.system.info=ℹ️ オペレーティングシステムの設定からシステムプロキシを使用しています settings.proxy.socks5.no.auth.info=ℹ️ 現在、SOCKS5 認証はサポートされていません。認証なしの SOCKS5 プロキシを使用するか、この機能が必要な場合は GitHub で Issue を作成してください。 +# Web Search Settings +settings.web_search=ウェブ検索 +settings.web_search.description=組み込みのウェブ検索を有効にして、AIがAPIキーなしで最新情報を検索できるようにします。DuckDuckGoはそのまま使用できます — より高品質な結果にはBraveまたはTavilyにアップグレードしてください。 +settings.web_search.title=ウェブ検索の設定 +settings.web_search.enabled=有効 +settings.web_search.zero_config_note=DuckDuckGoはセットアップなしで動作します。より高品質または大量の結果を希望し、そのサービスのAPIキーをお持ちの場合のみ、別のバックエンドを選択してください。 +settings.web_search.backend=検索バックエンド +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=無料、APIキー不要。プライバシーに配慮したデフォルト。 +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=高速、独自インデックス。無料のBrave Search APIキーが必要です。 +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=オプションの回答抽出機能付くAI最適化結果。Tavily APIキーが必要です。 +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=独自のSearxNGインスタンスを介したプライバシー配慮メタ検索。APIキー不要。 +settings.web_search.api_key=APIキー +settings.web_search.api_key.placeholder=APIキーをここに貼り付けてください +settings.web_search.get_api_key=無料のAPIキーを取得 ↗ +settings.web_search.endpoint=SearxNGインスタンスURL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=検索テスト +settings.web_search.test.running=テスト中... +settings.web_search.test.success=✅ 検索は正常に動作しています +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=ゲストユーザー user.profile.menu=ユーザープロファイルメニュー @@ -465,6 +489,7 @@ user.interest.environment=環境 # Actions action.delete=削除 +action.remove=削除 action.edit=編集 action.pin=サイドバーに固定 action.unpin=サイドバーから固定解除 @@ -481,22 +506,45 @@ action.close=閉じる action.show.more=もっと見る action.show.less=折りたたむ action.back=戻る +action.next=次へ action.retry=再試行 action.done=完了 action.refresh=更新 - - # Happiness Gate (shown before Star Prompt) happiness.gate.title=Askimoはいかがですか? happiness.gate.subtitle=ご意見をお聞かせください happiness.gate.happy=とても気に入っています!😍 happiness.gate.neutral=まあまあです 🙂 happiness.gate.unhappy=あまりよくないです 😕 -happiness.gate.feedback.title=改善にご協力ください -happiness.gate.feedback.message=フィードバックを共有していただけますか?Askimoを皆様にとってより良いものにするために役立ちます。 -happiness.gate.feedback.yes=はい、フィードバックを共有します -happiness.gate.feedback.no=いいえ、結構です + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=何かお困りですか? +feedback.dialog.subtitle=当てはまるものをすべて選択してください。ご意見は直接チームに届きます。 +feedback.comment.label=詳細(任意) +feedback.comment.placeholder=問題の説明やご意見をお聞かせください… +feedback.email.label=メールアドレス(任意) +feedback.email.placeholder=you@example.com +feedback.email.hint=フィードバックのフォローアップのみに使用します。スパムメールを送ることはありません。 +feedback.action.skip=スキップ +feedback.action.send=フィードバックを送信 +feedback.thanks.title=ご意見ありがとうございます! +feedback.thanks.message=お客様からのご意見は、Askimoの改善に役立てられます。ご協力に感謝いたします。 +feedback.thanks.close=閉じる + +feedback.remind.title=問題ありません! +feedback.remind.message=フィードバックはいつでも「ヘルプ」メニュー → 「フィードバックを送信」から共有できます。 +feedback.remind.got.it=了解しました + +# Feedback reasons +feedback.reason.inaccurate=AIの回答が正確ではない +feedback.reason.slow=動作が遅い +feedback.reason.missing.feature=必要な機能が不足している +feedback.reason.broken=どこか壊れている +feedback.reason.hard.to.use=使いにくい +feedback.reason.integration=連携に関する問題 +feedback.reason.privacy=プライバシーに関する懸念 +feedback.reason.other=その他 # Star Prompt star.prompt.title=Askimoを楽しんでいますか?広めてください 💙 @@ -508,6 +556,12 @@ star.prompt.share.description=X、LinkedIn、またはFacebookでAskimoについ star.prompt.maybe.later=今はしない star.prompt.already.starred=すでにスター付き ✓ star.prompt.social.proof=⭐ すでにAskimoにスターを付けた{0}人に参加しましょう +star.prompt.thanks.title=ありがとうございます! 🌟 +star.prompt.thanks.message=皆様のご支援は大きな励みとなり、Askimoの開発を続ける力になります。 +star.prompt.thanks.done=完了 ✓ +star.prompt.remind.title=問題ありません! +star.prompt.remind.message=いつでも「ヘルプ」メニュー → 「Askimoを支援」からご協力いただけます。 +star.prompt.remind.got.it=了解 # Analytics Settings (Advanced section toggle) settings.analytics.title=匿名分析 @@ -518,6 +572,11 @@ settings.hardware.acceleration.title=ハードウェアアクセラレーショ settings.hardware.acceleration.description=GPUアクセラレーションによるレンダリングを使用して、UIのパフォーマンスを向上させます。グラフィックに問題が発生した場合は、これを無効にしてください。 settings.hardware.acceleration.description.windows=GPUアクセラレーションによるレンダリング(Direct3D/OpenGL)を使用して、UIのパフォーマンスを向上させます。G-SyncやFreeSyncディスプレイでちらつきや不安定なリフレッシュレートが発生した場合は、これを無効にしてください。 settings.hardware.acceleration.restart.notice=この変更を有効にするには、Askimoを再起動してください。 +settings.ui.scale.title=表示スケール +settings.ui.scale.description=UI全体のスケールを調整します。変更を適用するには再起動が必要です。 +settings.ui.scale.option.system.default=システム既定 +settings.ui.scale.restart.notice=スケールの変更を有効にするには、Askimoを再起動してください。 +settings.ui.scale.learn.more=HiDPI と UI スケーリングの詳細はこちら settings.hardware.acceleration.restart.title=再起動が必要です settings.hardware.acceleration.restart.message=レンダリング設定の変更を有効にするには、Askimoを再起動してください。 settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSyncが検出されました @@ -531,10 +590,8 @@ file.overwrite.message=このファイルは既に存在しています。上書 file.overwrite.confirm=上書きする file.name.too.long=ファイル名が長すぎます。より短いファイル名を使用してください(最大255文字)。 - # About about.title={0} について -action.remove=削除 about.version=バージョン about.buildDate=ビルド日 about.buildJdk=ビルド JDK @@ -566,6 +623,7 @@ shortcut.stop.ai.response=AI の応答を停止 shortcut.quit.application=アプリケーションを終了 shortcut.navigate.to.sessions=セッションに移動 shortcut.navigate.to.projects=プロジェクトへ移動 +shortcut.navigate.to.bookmarks=ブックマークへ移動 shortcut.enter.fullscreen=フルスクリーンにする shortcut.close.search=検索を閉じる shortcut.next.search.result=次の検索結果 @@ -613,8 +671,7 @@ global.search.results.count={0}件の結果 global.search.results.count.plural={0}件の結果 # Rest of chat view strings -chat.directive=ディレクティブ: -chat.directive.none=なし +chat.directive=ディレクティブ chat.directive.new=新しいディレクティブ chat.directive.manage=ディレクティブ管理 chat.directive.learn.more=ディレクティブの使い方を学ぶ @@ -624,7 +681,11 @@ chat.drop.files=ファイルをドラッグ&ドロップして会話に添付 chat.create.image.menu=画像を作成 chat.create.image.mode=画像 chat.create.image.mode.cancel=画像作成モードをキャンセル +chat.image.model.missing.title=画像モデルが設定されていません +chat.image.model.missing.message={0} に画像モデルが設定されていません。設定 > AI プロバイダー > 画像生成モデルを開き、まずモデル名を設定してください。 chat.tools.button=利用可能なツール +chat.tools.button.disabled=利用可能なツール({0} 無効) +chat.tools.button.model.no.support=ツールはこのモデルではサポートされていません chat.tools.popup.title=利用可能なツール chat.tools.popup.loading=サーバーを読み込み中... chat.tools.popup.no.servers.global=グローバル MCP サーバーが設定されていません。 @@ -633,7 +694,6 @@ chat.tools.server.scope.global=グローバル chat.tools.server.scope.project=プロジェクト chat.tools.server.scope.builtin=組み込み chat.tools.tool.no.description=説明はありません -chat.tools.button.disabled=利用可能なツール({0} 無効) chat.reasoning.effort.label=思考 chat.reasoning.effort.tooltip=推論の労力 — 応答する前にモデルがどの程度深く思考するかを制御します chat.reasoning.effort.off=オフ @@ -645,12 +705,13 @@ chat.reasoning.effort.medium.description=深さと速度のバランスが取れ chat.reasoning.effort.high=高 chat.reasoning.effort.high.description=徹底的な推論を行い、コストが高くなります。複雑な問題解決に最適です。 chat.input.placeholder=メッセージを入力...(Enter 送信、Shift+Enter 改行) +chat.input.placeholder.hint.attach={0}+A でファイルを添付、またはここにドラッグ&ドロップ chat.select.file=ファイルを選択(複数可) chat.attachment.remove=添付ファイルを削除 chat.attachment.preview.loading=プレビューを読み込み中… chat.attachment.preview.file.not.found=(ファイルが見つかりません) chat.attachment.preview.too.large=(ファイルが大きすぎてプレビューできません) -chat.attachment.preview.cannot.read=(ファイルを読み込めません: {0}) +chat.attachment.preview.cannot.read=(ファイルを読み込めません\: {0}) chat.attachment.preview.more.lines=さらに {0} 行 # Sessions View @@ -666,8 +727,8 @@ sessions.empty.hint=💡 新しいチャットを開始して最初のセッシ sessions.search.placeholder=タイトルで検索… sessions.search.empty="{0}" に一致するセッションはありません。 -# 汎用テーブルページネーションコントロール -table.page.size.label=1ページあたりの行数: +# Generic table pagination controls +table.page.size.label=1ページあたりの行数\: table.page=ページ {0} / {1} table.page.previous=前のページ table.page.next=次のページ @@ -681,7 +742,6 @@ sessions.error.not.found=セッションが見つかりません。 sessions.error.rename.failed=セッション名の変更に失敗しました。 # ChatSessionService Errors - # Update Check update.dialog.title=ソフトウェアアップデート update.dialog.new.version.available=新しい Askimo バージョンがあります! @@ -717,6 +777,8 @@ settings.font.size=フォントサイズ settings.font.line.spacing=行間 settings.shortcuts=ショートカット settings.shortcuts.description=生産性を向上させるために、利用可能なすべてのキーボードショートカットを表示します +settings.shortcuts.search=ショートカットを検索... +settings.shortcuts.no_results=検索条件に一致するショートカットはありません settings.app.language=アプリ言語 settings.app.language.translation.help=何か間違いがありますか?翻訳の改善にご協力ください。 settings.app.language.translation.contribute=Crowdinで貢献する @@ -724,22 +786,24 @@ settings.ai.response.language=優先応答言語 settings.ai.response.language.description=AIに特定の言語で応答させる(空欄で自動検出) settings.ai.response.language.auto=自動検出 settings.ai.response.language.tooltip=AIは自動的に言語を検出しますが、以下の場合は上書きしてください:\n• 言語学習(実践的な練習)\n• 専門的な一貫性(例:コード文書は常に英語)\n• RAG最適化(ナレッジベースの言語に合わせる)\n• 教育(ある言語で質問し、別の言語で説明)\n• 不要な言語切り替えを防止 -settings.model.select={0} のモデル選択: +settings.model.select={0} のモデル選択\: settings.model.loading=モデル読み込み中... settings.model.none=使用可能なモデルなし settings.model.select.title=モデルを選択 settings.model.current=現在のモデル settings.model.selected=選択されたモデル settings.model.new=新しいモデル +settings.model.use.default=デフォルトを使用 settings.model.change.description=以下のリストからモデルを選択してください: settings.model.search=モデル検索 settings.model.search.placeholder=モデルの絞り込み... settings.model.filtered={0}/{1} モデル表示中 settings.model.no.match=一致するモデルなし -settings.model.no.results=一致するモデルなし +settings.model.chat.filter.label=チャットモデル · {0}件表示 +settings.model.chat.filter.show.all=すべての{0}を表示 settings.configure.title={0} 設定構成 settings.test.connection.testing=テスト中... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=プロバイダーに接続できませんでした。APIキーが正しいこと(クラウドプロバイダーの場合)、またはベースURLに到達可能であること(ローカルプロバイダーの場合)を確認してください。セットアップ手順については、上のヘルプリンクを使用してください。 # Directives Dialog @@ -751,10 +815,10 @@ directive.edit.content.label=内容 directive.edit.content.placeholder=ディレクティブ内容を入力... directive.edit.name.required=名前は必須です directive.edit.content.required=内容は必須です -directive.created=作成日: {0} +directive.created=作成日\: {0} directive.new.title=新しいディレクティブ directive.new.guidelines=ディレクティブは、AIがメッセージに応答する方法を指示します。トーン、詳細レベル、形式、または必要な特別な要件について具体的に指定してください。 -directive.new.name.placeholder=例: concise-code, explain-like-im-5 +directive.new.name.placeholder=例\: concise-code, explain-like-im-5 directive.new.content.placeholder=ディレクティブ内容を入力... directive.new.apply.current=現在のセッションに適用 directive.new.create=作成 @@ -766,8 +830,8 @@ directive.export.tooltip=すべてのディレクティブをJSONファイルに directive.export.filename=askimo-directives directive.import=インポート directive.import.tooltip=JSONファイルからディレクティブをインポートします -directive.import.result=インポート完了: {0}件をインポート、{1}件を名前変更、{2}件をスキップしました -directive.import.error=インポート失敗: 無効またはサポートされていないファイル形式です +directive.import.result=インポート完了\: {0}件をインポート、{1}件を名前変更、{2}件をスキップしました +directive.import.error=インポート失敗\: 無効またはサポートされていないファイル形式です # Log Levels log.level.error=エラー @@ -784,6 +848,8 @@ log.level.trace.description=すべてのログを表示(最も詳細) # Message Components message.loading.previous=以前のメッセージを読み込み中... message.thinking=考え中… ({0}s) +message.thinking.section.streaming=💭 考え中... +message.thinking.section.done=💭 考え message.copy=メッセージをコピー message.copy.description=メッセージをコピー message.edit=メッセージ編集 @@ -810,13 +876,40 @@ message.ai.try.again.confirm.title=回答を再生成しますか? message.ai.try.again.confirm.message=この時点以降のすべてのメッセージが削除されます。続行しますか? message.ai.try.again.confirm.cancel=キャンセル message.ai.try.again.confirm.confirm=再生成 +message.ai.fork=ここからセッションをフォーク +message.ai.fork.description=この会話を新しい独立したセッションにフォークする message.ai.export.pdf=PDFとしてエクスポート message.ai.export.pdf.dialog.title=AIの回答をPDFとして保存 +message.bookmark=メッセージをブックマーク +message.bookmark.remove=ブックマークを解除 +message.bookmark.description=このメッセージをブックマークする message.edited.indicator=(編集済み) message.date.today=今日 message.date.yesterday=昨日 message.token.usage={0} トークン · {1} 入力 / {2} 出力 -message.token.usage.tooltip=この応答で使用されたトークン。\n入力: AIに送信されたプロンプトとコンテキスト。\n出力: AIが生成した返信。 +message.token.usage.tooltip=この応答で使用されたトークン。\n入力\: AIに送信されたプロンプトとコンテキスト。\n出力\: AIが生成した返信。 + +# Bookmarks +chat.bookmarks.button.tooltip=ブックマーク +chat.bookmarks.popover.title=ピン留めしたメッセージ +chat.bookmarks.popover.empty.title=ブックマークはまだありません +chat.bookmarks.popover.empty.hint=メッセージ下のブックマークアイコンでピン留めできます +bookmarks.title=ブックマーク +bookmarks.empty.title=ブックマークはまだありません +bookmarks.empty.hint=メッセージ下のピンアイコンでブックマークできます +bookmarks.session.untitled=タイトルなしの会話 +bookmarks.message.count={0}件ピン留め +bookmarks.role.user=あなた +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=ツールを実行中... +tool.call.header.done={0} 個のツールを使用しました +tool.call.status.done=完了 +tool.call.status.failed=失敗 +tool.call.detail.arguments=引数 +tool.call.detail.result=結果 + attachment.download=添付ファイルをダウンロード attachment.download.description=この添付ファイルをダウンロード attachment.save.file=添付ファイルを保存 @@ -826,48 +919,62 @@ outdated.branch.header=前回編集からの古いメッセージ {0} 件(ク outdated.label=古い # Provider Dialog -provider.change.title=プロバイダー変更 -provider.select.title=プロバイダー選択 +provider.manage.title=プロバイダーの管理 +provider.type.picker.title=プロバイダーの種類の選択 +provider.type.picker.prompt=追加するプロバイダーの種類を選択してください\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=プロバイダーを追加 +provider.no.instances.hint=プロバイダーがまだ設定されていません。"プロバイダーを追加" をクリックして開始してください。 +provider.model.panel.select.hint=左側のプロバイダーを選択してモデルを参照してください +provider.model.panel.model.count={0} モデル +provider.model.default.badge=デフォルト +provider.instance.name.label=インスタンス名 +provider.instance.name.placeholder=例\: "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate="{0}" という名前のプロバイダーはすでに存在します provider.setup.required.title=AI プロバイダー設定が必要です provider.setup.required.message=チャットを開始する前に、AI プロバイダーを選択して構成してください。 provider.setup.required.button=設定 -provider.select.prompt=プロバイダーを選択: -provider.configure.prompt=設定: -provider.choose.placeholder=プロバイダーを選択... +provider.configure.prompt=設定\: provider.setup.guide={0}の設定方法 provider.apikey.stored=API キーは安全に保存されています provider.apikey.enter=API キー入力 -provider.apikey.already.stored=すでに保存済み provider.apikey.security.message=🔒 API キーは暗号化され、安全に保存されます。データは共有されません。 provider.apikey.security.link=データ保護について詳しく見る provider.not.set=未設定 # Provider Configuration - OpenAI -provider.openai.apikey.description=OpenAI API キー: https://platform.openai.com/account/api-keys +provider.openai.apikey.description=OpenAI API キー\: https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=API キーは既に保存されています。空欄のままにすると現在のキーが維持されます。 -provider.openai.setup.help=💡 OpenAI を使うには API キーが必要です。\n\n1. https://platform.openai.com/account/api-keys で取得\n2. 設定で追加するか :change-settings を使用 +provider.openai.setup.help=💡 OpenAI を使うには API キーが必要です。\n\n1. https\://platform.openai.com/account/api-keys で取得\n2. 設定で追加するか \:change-settings を使用 # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Anthropic API キー: https://console.anthropic.com/ +provider.anthropic.apikey.description=Anthropic API キー\: https\://console.anthropic.com/ provider.anthropic.apikey.stored=API キーは既に保存されています。 -provider.anthropic.setup.help=💡 Anthropic を使うには API キーが必要です。\n\n1. https://console.anthropic.com/ で取得\n2. 設定で構成するか :change-settings を使用 +provider.anthropic.setup.help=💡 Anthropic を使うには API キーが必要です。\n\n1. https\://console.anthropic.com/ で取得\n2. 設定で構成するか \:change-settings を使用 +provider.anthropic.max_tokens.label=最大トークン数 +provider.anthropic.max_tokens.description=モデルが応答ごとに生成できる最大トークン数(思考 + 回答の合計)。 +provider.anthropic.thinking_budget_tokens.label=思考予算トークン数 +provider.anthropic.thinking_budget_tokens.description=Anthropicが思考に費やすことのできる最大トークン数。0に設定すると、モデルが自動的に決定します(推奨)。 +provider.anthropic.thinking_max_tokens.label=思考時最大トークン数 +provider.anthropic.thinking_max_tokens.description=思考がアクティブな時の合計トークン上限(思考 + 回答)。0に設定すると、代わりに「Max Tokens」が使用されます。 # Provider Configuration - Gemini -provider.gemini.apikey.description=Google AI Studio API キー: https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Google AI Studio API キー\: https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=API キーは既に保存されています。 -provider.gemini.setup.help=💡 Gemini を使用するには API キーが必要です。\n\n1. https://aistudio.google.com/app/apikey で取得\n2. 設定または :change-settings で構成 +provider.gemini.setup.help=💡 Gemini を使用するには API キーが必要です。\n\n1. https\://aistudio.google.com/app/apikey で取得\n2. 設定または \:change-settings で構成 # Provider Configuration - XAI -provider.xai.apikey.description=XAI API キー: https://console.x.ai/ +provider.xai.apikey.description=XAI API キー\: https\://console.x.ai/ provider.xai.apikey.stored=API キーは既に保存されています。 -provider.xai.setup.help=💡 XAI を使用するには API キーが必要です。\n\n1. https://console.x.ai/ で取得\n2. 設定または :change-settings で構成 +provider.xai.setup.help=💡 XAI を使用するには API キーが必要です。\n\n1. https\://console.x.ai/ で取得\n2. 設定または \:change-settings で構成 # Provider Configuration - Ollama -provider.ollama.baseurl.description=Ollama ベース URL (デフォルト: http://localhost:11434) -provider.ollama.setup.help=💡 Ollama を使用するにはローカルで実行する必要があります。\n\n1. https://ollama.ai/ からインストール\n2. サービスを開始\n3. 必要に応じてベース URL を変更 +provider.ollama.baseurl.description=Ollama ベース URL (デフォルト\: http\://localhost\:11434) +provider.ollama.setup.help=💡 Ollama を使用するにはローカルで実行する必要があります。\n\n1. https\://ollama.ai/ からインストール\n2. サービスを開始\n3. 必要に応じてベース URL を変更 # Provider Configuration - Docker AI -provider.docker.baseurl.description=Docker AI ベース URL (デフォルト: http://localhost:12434) +provider.docker.baseurl.description=Docker AI ベース URL (デフォルト\: http\://localhost\:12434) provider.docker.setup.help=💡 Docker AI を使用するにはローカルで実行する必要があります。\n\n1. Docker AI がインストールされ実行されていることを確認\n2. サービスを開始\n3. 必要に応じてベース URL を変更 # Provider Configuration - LocalAI @@ -875,12 +982,13 @@ provider.localai.baseurl.description=LocalAI ベース URL provider.localai.setup.help=💡 LocalAI を使用するには先に実行してください。\n\n1. LocalAI をインストールして起動\n2. 利用可能なベース URL を構成 # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=LMStudio ベース URL (デフォルト: http://localhost:1234) -provider.lmstudio.setup.help=💡 LMStudio の利用方法:\n\n1. https://lmstudio.ai/ でインストール\n2. ローカルサーバーを起動\n3. 必要に応じてベース URL を変更 +provider.lmstudio.baseurl.description=LMStudio ベース URL (デフォルト\: http\://localhost\:1234) +provider.lmstudio.setup.help=💡 LMStudio の利用方法\:\n\n1. https\://lmstudio.ai/ でインストール\n2. ローカルサーバーを起動\n3. 必要に応じてベース URL を変更 provider.lmstudio.openai.compat.info=Askimo はネイティブ LMStudio API(/api/v1/)ではなく、OpenAI 互換エンドポイント(/v1)を使用します。 # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=OpenAI互換インスタンスのベースURL +provider.openai_compatible.apikey.description=プロバイダーのAPIキー(オプション - エンドポイントで認証が不要な場合は空欄にしてください) provider.openai_compatible.apikey.stored=APIキーはすでに安全に保存されています。既存のキーを保持する場合は空白のままにし、更新する場合は新しいキーを入力してください。 # System Resources @@ -892,6 +1000,12 @@ system.diagnostics.jvm.memory=JVM メモリ (使用済み / 合計) system.diagnostics.cpu.usage=CPU 使用率 system.diagnostics.telemetry=テレメトリ +# Telemetry export +telemetry.export.csv=CSV エクスポート +telemetry.export.dialog.title=テレメトリを ZIP としてエクスポート +telemetry.export.error.title=エクスポート失敗 +telemetry.export.error.message=テレメトリデータのエクスポートに失敗しました\: {0} + # Telemetry telemetry.reset=テレメトリデータをリセット telemetry.title=📊 セッション指標 @@ -907,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=総クエリ数 telemetry.rag.triggered.label=トリガー済み telemetry.rag.skipped.label=スキップ済み -telemetry.llm.calls=LLM 呼び出し -telemetry.llm.calls.count={0} 回 -telemetry.llm.tokens={0} トークン -telemetry.llm.errors={0} エラー -telemetry.total.tokens=総トークン数: {0} telemetry.llm.col.provider=プロバイダー telemetry.llm.col.model=モデル telemetry.llm.col.calls=呼び出し @@ -954,42 +1063,44 @@ export.format.html.benefit.2=どのブラウザでも閲覧可能 export.format.html.benefit.3=プロフェッショナルな外観 export.format.html.benefit.4=共有が簡単 - # Error Messages error.network=⚠️ AI サービス{endpoint}に接続できません\n\n次をご確認ください:\n• インターネット接続\n• AI サービスの URL(設定を確認)\n• ファイアウォール設定\n• サービスの稼働状況 error.authentication=⚠️ API キーが無効、または設定されていません{provider}\n\n設定画面で API キーを入力すると解決できます。 -error.model_configuration=⚠️ モデル設定エラー:{issue}\n\n次の手順で修正してください:\n1. 設定を開く\n2. AI プロバイダーを選択\n3. 一覧からモデルを選ぶ +error.model_not_found=⚠️ モデルが見つかりません:{model}\n\nこのモデルはプロバイダーによって廃止または削除された可能性があります。別のモデルを選択してください。 +error.provider_not_configured=⚠️ AI プロバイダーが設定されていません。\n\nチャットを開始するには:\n1. 設定を開く\n2. AI プロバイダーを選択(OpenAI、Ollama、Anthropic など)\n3. API キーを入力するか接続を設定する error.rate_limit=⚠️ レート制限を超えました\n{retryAfter}\n\nAPI の利用上限に達しました。しばらく待ってから、もう一度送信してください。 error.insufficient_credits=⚠️ クレジット残高不足\n\nクレジット残高が不足しています。\n\n請求ページでクレジットを追加してください。 error.timeout=⚠️ {timeout} 秒後にリクエストがタイムアウトしました\n\n原因として考えられること:\n• サーバー負荷が高い—少し待って再試行してください\n• クエリが複雑—内容を簡略化してみてください\n• ネットワーク遅延 +error.context_length=⚠️ コンテキストウィンドウの制限を超えました\n\n入力の合計(会話履歴 + あなたのメッセージ + 添付ファイル)が大きすぎて、このモデルでは処理できません。\n\n解決するには:\n• 新しいチャットセッションを開始して会話履歴をクリアしてください\n• メッセージを短くするか、大きな添付ファイルを削除してください\n• ローカルモデル(Ollama / LM Studio / Docker)を使用している場合は、設定でコンテキストサイズを増やしてください\n• より大きなコンテキストウィンドウを持つモデルに切り替えてください error.invalid_request=⚠️ 無効なリクエスト:{details}\n\n入力内容を確認して、もう一度お試しください。 +error.local_server=⚠️ ローカルAIサーバーエラー!\n\nAIサーバープロセスがクラッシュするか、モデルの読み込みに失敗しました。これはAskimoが原因ではありません。\n\n考えられる原因:\n• モデルファイルが破損または不完全 — 再ダウンロードをお試しください\n• RAM/VRAMが不足 — より小さい量子化(例:Q8ではなくQ4)をお試しください\n• 現在のサーバーバージョンでサポートされていないモデル形式\n• サーバープロセスがOSによって強制終了された(メモリ不足)\n\n対処方法:\n1. ローカルAIサーバーのログを確認してください\n2. サーバーを再起動して再試行してください\n3. モデルを再ダウンロードしてください\n4. 別のモデルまたは量子化レベルをお試しください\n\n技術的詳細:{details} error.system=⚠️ システムエラー\n\n予期しないエラーが発生しました:{errorCode}\n\nAskimo サポートへ次を添えてご連絡ください:\n• 実行していた操作\n• 上記のエラーコード\n• タイムスタンプ # Model Availability Errors error.model.not_available.title.chat=モデルを利用できません error.model.not_available.title.embedding=埋め込みモデルを利用できません error.model.not_available.message.chat=モデル ''{0}'' は利用できません。 -error.model.not_available.message.embedding=埋め込みモデル ''{0}'' は利用できません。\n\n埋め込みモデルを正しく設定してください。 +error.model.not_available.message.embedding=埋め込みモデル ''{0}'' はローカルプロバイダーで利用できません。\n\n設定 → AIプロバイダー に移動し、プロバイダー設定カードから利用可能な埋め込みモデルを選択してください。 error.model.not_available.config_link=埋め込みモデルを設定 -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=問題が発生しました -error.app.message=予期しないエラーが発生しました: {0} +error.app.message=予期しないエラーが発生しました\: {0} # Send Message Errors error.send_message.title=メッセージの送信に失敗しました - # Indexing Errors error.indexing.model_not_found.title=埋め込みモデルが見つかりません error.indexing.model_not_found.message=埋め込みモデル ''{0}'' が見つかりません。インデックス作成の前に、{1} からこのモデルを取得または有効化してください。 +error.indexing.input_too_large.title=埋め込み入力が大きすぎます +error.indexing.input_too_large.message=トークン数がモデルの最大コンテキストサイズを超えているため、埋め込みモデルが [{0}] からの1つ以上のセグメントを拒否しました。設定 → インデックス作成 → チャンクあたりの最大文字数でチャンクサイズを減らしてから、再インデックスしてください。 error.indexing.io_error.title=IO エラー error.indexing.io_error.message=インデックス作成中に IO エラーが発生しました error.indexing.unknown.title=インデックスエラー error.indexing.unknown.message=インデックス作成中に不明なエラーが発生しました - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=埋め込みモデルの状態(RAG 機能専用) settings.embedding.not_available_rag_only=⚠️ {0}。\n\n注意:これはプロジェクトベースの RAG 機能にのみ影響します。通常のチャット機能は問題なく動作します。 @@ -1006,47 +1117,67 @@ settings.embedding.xai_no_embedding=xAI は埋め込みモデルを提供して settings.rag.title=RAG 設定 settings.rag.description=プロジェクトベースの知識検索のための Retrieval-Augmented Generation パラメータを設定します settings.rag.vector.max.results=ベクトル検索の最大結果数 -settings.rag.vector.max.results.hint=ベクトル検索から取得する最大ドキュメント数(デフォルト: 20) +settings.rag.vector.max.results.hint=ベクトル検索から取得する最大ドキュメント数(デフォルト\: 20) settings.rag.vector.min.score=ベクトル検索の最小スコア -settings.rag.vector.min.score.hint=最小類似度スコア 0.0~1.0(デフォルト: 0.3) +settings.rag.vector.min.score.hint=最小類似度スコア 0.0~1.0(デフォルト\: 0.3) settings.rag.hybrid.max.results=ハイブリッド最大結果数 -settings.rag.hybrid.max.results.hint=融合後の最終ドキュメント数(デフォルト: 15) +settings.rag.hybrid.max.results.hint=融合後の最終ドキュメント数(デフォルト\: 15) settings.rag.rank.fusion.constant=ランキング融合定数 -settings.rag.rank.fusion.constant.hint=ハイブリッドランキング用の RRF 定数(デフォルト: 60) +settings.rag.rank.fusion.constant.hint=ハイブリッドランキング用の RRF 定数(デフォルト\: 60) settings.rag.use.absolute.paths=引用で絶対パスを使用 settings.rag.use.absolute.paths.hint=同じ名前のファイルが複数ある場合に分かりやすくするため、AIの回答に完全なファイルパスを表示します settings.rag.embedding.title=埋め込み設定 settings.rag.embedding.description=テキスト分割および埋め込みのパラメータを設定します settings.rag.embedding.max.chars.per.chunk=チャンクあたりの最大文字数 -settings.rag.embedding.max.chars.per.chunk.hint=各テキストチャンクの最大文字数(デフォルト: 1500) +settings.rag.embedding.max.chars.per.chunk.hint=各テキストチャンクの最大文字数(デフォルト\: 1500) settings.rag.embedding.chunk.overlap=チャンクの重なり -settings.rag.embedding.chunk.overlap.hint=チャンク間で重複する文字数(デフォルト: 100) +settings.rag.embedding.chunk.overlap.hint=チャンク間で重複する文字数(デフォルト\: 100) settings.rag.embedding.models=プロバイダー別の埋め込みモデル settings.rag.indexing.title=インデックス設定 settings.rag.indexing.description=インデックス対象のファイルと許可される最大ファイルサイズを設定します settings.rag.indexing.max.file.bytes=最大ファイルサイズ(バイト) settings.rag.indexing.max.file.bytes.hint=この値より大きいファイルはインデックス作成時にスキップされます。値を高く設定しすぎると、インデックス作成が大幅に遅くなる場合があります。 settings.rag.indexing.supported.extensions=対応する拡張子 -settings.rag.indexing.supported.extensions.hint=インデックスするファイル拡張子をカンマ区切りで指定します(例: kt, java, py, md)。空欄にするとビルトインのデフォルトを使用します。 +settings.rag.indexing.supported.extensions.hint=インデックスするファイル拡張子をカンマ区切りで指定します(例\: kt, java, py, md)。空欄にするとビルトインのデフォルトを使用します。 settings.rag.indexing.exclude.file.names=除外するファイル名 -settings.rag.indexing.exclude.file.names.hint=常にスキップするファイル名をカンマ区切りで指定します(例: package-lock.json, yarn.lock)。 +settings.rag.indexing.exclude.file.names.hint=常にスキップするファイル名をカンマ区切りで指定します(例\: package-lock.json, yarn.lock)。 settings.rag.indexing.binary.extensions=バイナリ拡張子 -settings.rag.indexing.binary.extensions.hint=インデックス中にバイナリとして扱いスキップするファイル拡張子をカンマ区切りで指定します(例: png, jpg, zip, exe)。空欄にするとビルトインのデフォルトを使用します。 +settings.rag.indexing.binary.extensions.hint=インデックス中にバイナリとして扱いスキップするファイル拡張子をカンマ区切りで指定します(例\: png, jpg, zip, exe)。空欄にするとビルトインのデフォルトを使用します。 settings.rag.indexing.embedding.batch.size=埋め込みバッチサイズ settings.rag.indexing.embedding.batch.size.hint=1回のリクエストで埋め込みモデルに送信するテキストセグメント数です。リモートプロバイダー(OpenAI、Gemini)を使用していてインデックスが遅い場合は、100〜500に増やすことを検討してください。ローカルモデル(Ollama、LM Studio)の場合はタイムアウトを避けるために低く保ってください。 -# Settings - Utility Models +## Settings - Models +settings.models.title=モデル +settings.models.description=すべてのプロバイダーで共有されるグローバル AI モデルの動作を設定します。 +settings.models.max.tool.calling.round.trips=最大ツール呼び出しラウンドトリップ数 +settings.models.max.tool.calling.round.trips.hint=AI が 1 回の応答で実行できるツール呼び出しの最大回数です(デフォルト\: 10)。値を大きくするほど複雑なエージェントタスクが可能になりますが、レイテンシとコストが増加します。 + +# Memory Settings +settings.memory.title=メモリ設定 +settings.memory.description=AIがモデルのコンテキストウィンドウ内に収まるよう会話履歴を管理する方法を制御します。 +settings.memory.mode=メモリモード +settings.memory.mode.compact=コンパクト +settings.memory.mode.compact.hint=トークンコストが低く、詳細が少ない +settings.memory.mode.compact.description=積極的な要約。トークンコストが低く、早期かつ頻繁に要約します。非常に長いセッションやコストに敏感なモデルに最適です。 +settings.memory.mode.balanced=バランス +settings.memory.mode.balanced.hint=品質とコストの良好なバランス +settings.memory.mode.balanced.description=品質とコストの良好なバランス。メモリ予算の40%で要約が実行されます。ほとんどのセッションに適しています。 +settings.memory.mode.detail=詳細 +settings.memory.mode.detail.hint=高精度、より多くのトークン +settings.memory.mode.detail.description=最小限の要約。より多くの原文の会話と豊富な要約を保持します。短いセッションや正確な記憶が重要な場合に最適です。 + +## Settings - Utility Models settings.utility.models.title=ユーティリティモデル settings.utility.models.uses.selected=(選択されたモデルを使用) settings.utility.models.local.note={0} はローカルプロバイダーです — ユーティリティタスクには現在のチャットモデルが自動的に使用されます。 -#Settings - Vision Models +## Settings - Vision Models settings.vision.models.title=ビジョンモデル ## Settings - Image Models settings.image.models.title=画像生成モデル -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=モデル設定 settings.provider.model.config.description=特定のタスクで使用されるデフォルトモデルを上書きします。空欄のままにすると、プロバイダーのデフォルトモデルが使用されます。 settings.provider.model.config.guide=AIモデル設定ガイドを見る @@ -1069,13 +1200,12 @@ mermaid.setup.required.title=Mermaid CLI が必要です mermaid.setup.privacy.note=Askimo はプライバシー保護のため、図をローカルでレンダリングします。 mermaid.setup.instructions.title=セットアップ手順 mermaid.setup.instructions.text=Askimo で Mermaid 図をレンダリングするには、次のインストールガイドに従ってください: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=セットアップガイドを開く mermaid.setup.button.copy.diagram=図をコピー mermaid.diagram.source.label=図のソース: mermaid.rendering.progress=図をレンダリング中... mermaid.error.rendering.title=図のレンダリングエラー -mermaid.error.rendering.raw.label=生の図: mermaid.error.unexpected.state=予期しない状態です。もう一度お試しください。 mermaid.error.failed.load.image=図の画像を読み込めませんでした mermaid.button.copy.code=コードをコピー @@ -1087,6 +1217,7 @@ mermaid.button.reset.zoom=ズームをリセット mermaid.button.retry=再試行 mermaid.feedback.copied=コピーしました! + # Reference Material knowledge.source.type.folder=フォルダー(変更を監視) knowledge.source.type.file=ファイル(静的) @@ -1103,7 +1234,7 @@ mcp.instances.title=MCP インスタンス mcp.instances.description=これらの MCP インスタンスが利用可能です mcp.instances.empty=設定された MCP インスタンスはありません mcp.instances.count={0} インスタンス -mcp.instance.server.label=サーバー: {0} +mcp.instance.server.label=サーバー\: {0} mcp.instance.delete.confirm.title=MCP インスタンスを削除しますか? mcp.instance.delete.confirm.message=MCP インスタンス「{0}」を削除してもよろしいですか?この操作は元に戻せません。 mcp.instance.enable.tooltip=この MCP インスタンスを有効にする @@ -1129,7 +1260,7 @@ mcp.instance.field.description=説明 mcp.instance.field.description.placeholder=このサーバーが何をするかの簡単な説明 mcp.instance.field.transport=トランスポートタイプ mcp.instance.field.command=コマンドテンプレート -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint={{parameter}} プレースホルダーを含むスペース区切りコマンド mcp.instance.validation.error.empty.id=サーバーIDは空にできません mcp.instance.validation.error.invalid.id.pattern=サーバーIDは小文字のアルファベット、数字、ハイフンのみを含む必要があります @@ -1138,20 +1269,20 @@ mcp.instance.validation.error.empty.command=コマンドテンプレートは空 mcp.instance.validation.error.empty.parameter.key=パラメータキーは空にできません mcp.instance.validation.error.empty.parameter.label=パラメータラベルは空にできません mcp.instance.env.label=環境変数 (オプション) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=書式: キー=値 または キー={{parameter}} (1行に1組) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=書式\: キー\=値 または キー\={{parameter}} (1行に1組) mcp.instance.transport.stdio=Stdio (ローカルプロセス) mcp.instance.transport.http=HTTP (リモートサーバー) mcp.instance.http.url.label=URLテンプレート -mcp.instance.http.url.placeholder=https://{{host}}/mcp または https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp または https\://api.example.com/mcp mcp.instance.http.url.hint=サーバーエンドポイントURL。動的な値には {{parameter}} プレースホルダーを使用します mcp.instance.http.headers.label=HTTPヘッダー (オプション) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=書式: ヘッダー名=値 または ヘッダー名={{parameter}} (1行に1組) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=書式\: ヘッダー名\=値 または ヘッダー名\={{parameter}} (1行に1組) mcp.instance.http.timeout.label=タイムアウト (ms) mcp.instance.http.timeout.hint=ミリ秒単位のリクエストタイムアウト mcp.instance.validation.error.empty.url=URLテンプレートは空にできません -mcp.instance.validation.error.invalid.url=URLテンプレートはhttp://またはhttps://で始める必要があります +mcp.instance.validation.error.invalid.url=URLテンプレートはhttp\://またはhttps\://で始める必要があります # MCP Integrations (Project View) mcp.instance.delete.tooltip=MCP インスタンスを削除 @@ -1162,7 +1293,7 @@ mcp.instance.field.serverId=サーバータイプ # Add MCP Integration Dialog mcp.instance.name=MCP 名 -mcp.instance.name.placeholder=例: 本番データベース、プロジェクトファイル +mcp.instance.name.placeholder=例\: 本番データベース、プロジェクトファイル mcp.instance.tools.title=利用可能なツール mcp.instance.tools.count={0} ツールが利用可能です mcp.instance.tool.strategy.intent=意図ベース @@ -1201,7 +1332,7 @@ mcp.tools.dialog.search.count={0} / {1} ツール mcp.tools.dialog.search.empty=検索に一致するツールはありません mcp.tools.dialog.export=ツールのエクスポート mcp.tools.dialog.export.success={0} にツールをエクスポートしました -mcp.tools.dialog.export.failed=ツールのエクスポートに失敗しました: {0} +mcp.tools.dialog.export.failed=ツールのエクスポートに失敗しました\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=MCPサーバーを追加 @@ -1257,7 +1388,7 @@ file.viewer.close=ビューアーを閉じる file.viewer.open.external=外部で開く file.viewer.binary=バイナリファイル — テキストとしてプレビューできません。 file.viewer.too.large=ファイルが大きすぎてプレビューできません({0} KB)。最大サイズは 512 KB です。 -file.viewer.error=ファイルを読み込めませんでした: {0} +file.viewer.error=ファイルを読み込めませんでした\: {0} file.viewer.select.prompt=上のツリーからファイルを選択して内容をプレビューします # Project Side Panel @@ -1270,11 +1401,10 @@ panel.reindex.confirm.message="{0}" は現在インデックス中です。現 panel.reindex.confirm.button=停止して再インデックス panel.reindex.confirm.cancel=キャンセル panel.collapse=パネルを折りたたむ -panel.collapse=パネルを折りたたむ # RAG Status rag.status.started=インデックス作成を開始しました -rag.status.inprogress=インデックス作成中: {0}% +rag.status.inprogress=インデックス作成中\: {0}% rag.status.inprogress.unknown=インデックス作成中... rag.status.queued=キュー済み — 他のプロジェクトのインデックス作成が完了するのを待機中 rag.status.ready=準備完了 @@ -1324,7 +1454,7 @@ plans.editor.label=YAML コンテンツ plans.editor.placeholder=ここにプランの YAML を貼り付けるか入力してください... plans.editor.valid=有効な YAML plans.editor.hint.title=リファレンス -plans.editor.hint.fields=必須: id, name, steps\n任意: description, icon, inputs, workflow\nステップタイプ: text, multiline, toggle, number\nワークフロータイプ: sequence, parallel, conditional +plans.editor.hint.fields=必須\: id, name, steps\n任意\: description, icon, inputs, workflow\nステップタイプ\: text, multiline, toggle, number\nワークフロータイプ\: sequence, parallel, conditional plans.editor.menu.edit=YAML を編集 plans.editor.ai.label=AIで生成 plans.editor.ai.placeholder=このプランにさせたいことをわかりやすい言葉で説明してください... @@ -1353,7 +1483,6 @@ skills.view.empty.search=検索条件に一致するスキルはありません skills.view.manage=スキルを管理 skills.view.select.prompt=実行するスキルを選択してください skills.view.select.hint=右のスキルパネルからスキルを選択してください -skills.view.select.skill=スキルを選択してください… skills.view.run=スキルを実行 skills.view.run.command=コマンドを送信 skills.view.running=実行中… @@ -1384,7 +1513,7 @@ skills.view.panel.collapse=パネルを閉じる skills.view.panel.expand=パネルを開く skills.view.tab.skills=スキル skills.view.tab.workspace=ワークスペース -skills.view.last.run=最後の実行: {0} +skills.view.last.run=最後の実行\: {0} skills.view.category.uncategorized=その他 skills.view.search.placeholder=スキルを検索 ... skills.view.search.clear=検索をクリア @@ -1399,7 +1528,7 @@ skills.view.history.empty=まだ実行履歴がありません skills.view.copy=コピー skills.view.system.prompt.file=ファイル skills.view.system.prompt.files=ファイル -skills.view.system.prompt.also.included=エージェントコンテキストにも含まれています: +skills.view.system.prompt.also.included=エージェントコンテキストにも含まれています\: skills.view.docs.tooltip=スキルガイドを表示 skills.view.mode.agentic=エージェント型 skills.view.mode.manual=手動 @@ -1411,11 +1540,6 @@ skills.agentic.skills.available={0} 件のスキルをエージェントのコ skills.agentic.no.skills.hint=まだスキルがありません — 設定 → スキル でスキルを追加すると、エージェントに特化した機能を与えられます skills.agentic.model.default=既定のモデル -# File / folder chooser -file.chooser.folder.select=選択 -file.chooser.folder.hint=フォルダーをダブルクリックすると、そのフォルダーに移動します。インデックスを作成したいフォルダーを開いたら、「選択」をクリックしてください。 -file.chooser.file.select=選択 - # Onboarding Wizard onboarding.title=Askimoへようこそ onboarding.step.indicator=ステップ {0} / {1} @@ -1471,12 +1595,11 @@ onboarding.step.directives.feature2.description=曖昧な質問からは曖昧 onboarding.step.directives.feature3.title=仕事ごとに最適な専門家 onboarding.step.directives.feature3.description=勉強用の親切な先生と、デバッグ用の厳しいコードレビュアーが欲しいですか?指示を分けて保存すれば、タスクに合わせて適した応対が得られます。 onboarding.step.directives.link=例やヒントを見る - # Onboarding Step 6: Ready onboarding.step.ready.title=🚀 準備完了です! onboarding.step.ready.description=すべて準備が整いました。最初のチャットを始めるか、以下のリソースをチェックしましょう。 onboarding.step.ready.link.docs=📚 ドキュメントを読む -onboarding.step.ready.link.providers=🔧 AIプロバイダーを設定 +onboarding.step.ready.link.providers=🔧 AIプロバイダを設定 onboarding.step.ready.link.github=⭐ GitHubで応援する # Onboarding Step 5: Persona diff --git a/desktop-shared/src/main/resources/i18n/messages_ko_KR.properties b/desktop-shared/src/main/resources/i18n/messages_ko_KR.properties index 925ce3ed0..b21220203 100644 --- a/desktop-shared/src/main/resources/i18n/messages_ko_KR.properties +++ b/desktop-shared/src/main/resources/i18n/messages_ko_KR.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - Korean Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=시스템 menu.view.appearance.light=라이트 menu.view.appearance.dark=다크 menu.view.fullscreen=전체 화면으로 전환 +menu.view.bookmarks=북마크 보기 menu.terminal=터미널 menu.terminal.new=새 터미널 menu.help=도움말 @@ -43,7 +44,7 @@ menu.help.share=🗣 Askimo 공유 menu.help.share.x=X / 트위터에서 공유 menu.help.share.linkedin=링크드인에서 공유 menu.help.share.facebook=페이스북에서 공유 -menu.help.share.text=Askimo을 확인해보세요 — 무료로 사용 가능한 로컬 우선 AI 데스크톱 클라이언트입니다. Ollama, OpenAI, Anthropic 및 기타 등과 연동됩니다. https://askimo.chat +menu.help.share.text=Askimo을 확인해보세요 — 무료로 사용 가능한 로컬 우선 AI 데스크톱 클라이언트입니다. Ollama, OpenAI, Anthropic 및 기타 등과 연동됩니다. https\://askimo.chat menu.help.share.hackernews=Hacker News에 게시 menu.eventlog=이벤트 로그 menu.help.model.capabilities=모델 기능 파일 열기 @@ -51,7 +52,7 @@ menu.dev.clear.account.preferences=[Dev] 계정 환경 설정 지우기 menu.about=Askimo 정보 menu.help.check.updates=업데이트 확인... menu.help.diagnostics=시스템 진단... - +menu.help.support.askimo=Askimo 지원하기 ⭐ # Common Dialog Buttons dialog.cancel=취소 @@ -60,16 +61,16 @@ dialog.close=닫기 # Backup and Restore backup.export.title=백업 내보내기 backup.export.success.title=백업을 내보냈습니다 -backup.export.success.message=백업을 성공적으로 내보냈습니다:\n{0} +backup.export.success.message=백업을 성공적으로 내보냈습니다\:\n{0} backup.export.error.title=내보내기 실패 -backup.export.error.message=백업을 내보내지 못했습니다:\n{0} +backup.export.error.message=백업을 내보내지 못했습니다\:\n{0} backup.import.title=백업 가져오기 backup.import.confirm.title=가져오기 확인 backup.import.confirm.message=이 작업은 현재 모든 데이터를 백업으로 교체합니다.\n\n가져오기 전에 안전 백업이 자동으로 생성됩니다.\n\n계속하시겠습니까? backup.import.success.title=백업을 가져왔습니다 backup.import.success.message=백업을 성공적으로 가져왔습니다.\n\n모든 변경 사항을 적용하려면 Askimo를 다시 시작하십시오. backup.import.error.title=가져오기 실패 -backup.import.error.message=백업을 가져오지 못했습니다:\n{0} +backup.import.error.message=백업을 가져오지 못했습니다\:\n{0} # Event Log eventlog.title=이벤트 로그 ({0}) @@ -108,6 +109,12 @@ discover.stat.projects=프로젝트 discover.stat.mcp=MCP 서버 discover.stat.plans=플랜 discover.stat.skills=스킬 +discover.customize=사용자 지정 +discover.customize.show_token_usage=토큰 사용량 카드 표시 +discover.tokens.title=토큰 사용량 기준 상위 모델 +discover.tokens.total=총 {0} +discover.tokens.view_details=세부 정보 보기 +discover.tokens.empty=아직 기록된 토큰 사용량이 없습니다. 채팅을 시작하여 여기에서 통계를 확인하세요. discover.explore.title=기능 살펴보기 discover.explore.mcp.title=MCP 서버 discover.explore.mcp.desc=Model Context Protocol을 통해 외부 도구와 데이터 소스로 Askimo를 확장하세요. @@ -142,7 +149,7 @@ session.rename.error.empty=제목은 비울 수 없습니다 session.export.file.chooser.title=채팅 기록 저장 session.export.button.export=내보내기 session.export.success.title=내보내기 완료 -session.export.success.message=채팅 세션이 성공적으로 내보내졌습니다: +session.export.success.message=채팅 세션이 성공적으로 내보내졌습니다\: # Projects project.title=프로젝트 @@ -158,11 +165,11 @@ project.new.dialog.file.browse=처리할 파일 선택... project.new.dialog.sources.label=참고 자료 (선택 사항) project.new.dialog.sources.add=소스 추가 project.new.dialog.error.empty.name=프로젝트 이름은 비울 수 없습니다 -project.new.dialog.error.create.failed=프로젝트 생성에 실패했습니다: {0} +project.new.dialog.error.create.failed=프로젝트 생성에 실패했습니다\: {0} project.new.dialog.name.error.empty=프로젝트 이름은 비워둘 수 없습니다 project.new.dialog.button.create=프로젝트 생성 project.new.dialog.button.cancel=취소 -project.new.dialog.success.title=프로젝트가 성공적으로 생성되었습니다! +project.new.dialog.success.title=프로젝트가 성공적으로 생성되었습니다\! project.new.dialog.success.message=프로젝트 ''{0}''가 생성되었습니다. project.new.dialog.success.countdown={0}초 후에 닫힙니다... project.new.dialog.success.close=지금 닫기 @@ -185,7 +192,7 @@ projects.title=프로젝트 projects.description=주제별로 채팅을 구성하고 파일, 폴더 또는 URL을 지식 소스로 첨부하여, AI가 항상 해당 프로젝트에 대한 올바른 컨텍스트를 갖도록 합니다. projects.error=❌ {0} projects.empty=프로젝트를 찾을 수 없습니다. -projects.empty.hint=💡 새 프로젝트를 생성하여 채팅 세션을 정리하세요! +projects.empty.hint=💡 새 프로젝트를 생성하여 채팅 세션을 정리하세요\! projects.search.placeholder=이름으로 검색… projects.search.empty="{0}"과(와) 일치하는 프로젝트가 없습니다. projects.col.name=이름 @@ -196,13 +203,16 @@ projects.sources.expand=참고 자료 표시 projects.sources.collapse=참고 자료 숨기기 projects.sources.empty.title=아직 참조 자료가 없습니다 projects.sources.empty.description=문서를 추가하면 Askimo가 질문에 답변할 때 이를 참조할 수 있습니다 -projects.sources.info.tooltip=참조 자료는 Askimo가 사용자의 구체적인 맥락을 이해하는 데 도움이 됩니다.\n\n\ -질문에 답변할 때 Askimo가 참조해야 할 정보가 포함된 폴더, 파일 또는 웹사이트를 추가하세요.\n\n\ -예:\n\ +projects.sources.info.tooltip=참조 자료는 Askimo가 사용자의 구체적인 맥락을 이해하는 데 도움이 됩니다.\n\ +\n\ +질문에 답변할 때 Askimo가 참조해야 할 정보가 포함된 폴더, 파일 또는 웹사이트를 추가하세요.\n\ +\n\ +예\:\n\ • 프로젝트 문서\n\ • 회사 지식 베이스\n\ • 기술 사양서\n\ -• 연구 논문\n\n\ +• 연구 논문\n\ +\n\ Askimo는 이러한 자료를 검색하여 더 정확하고 맥락에 맞는 답변을 제공합니다. projects.sources.type.local_folders=로컬 폴더 projects.sources.type.local_files=로컬 파일 @@ -229,8 +239,8 @@ project.reindex=프로젝트 재인덱싱 project.menu.tooltip=프로젝트 메뉴 project.new.chat.placeholder={0}에서 새 채팅 project.recent.chats=최근 채팅 -project.no.chats=아직 채팅이 없습니다. 아래에서 새 채팅을 시작하세요! -project.indexing.label=지식 소스 인덱싱: {0} +project.no.chats=아직 채팅이 없습니다. 아래에서 새 채팅을 시작하세요\! +project.indexing.label=지식 소스 인덱싱\: {0} project.indexing.queued=인덱싱 대기 중 - 다른 프로젝트가 완료되기를 기다리는 중... project.indexing.failed=인덱싱에 실패했습니다. 프로젝트 메뉴에서 다시 인덱싱을 시도하세요. project.indexing.ready.label=인덱싱됨 @@ -245,12 +255,11 @@ session.error.removing=세션을 프로젝트에서 제거하지 못했습니다 # Settings settings.title=설정 -settings.general=일반 settings.appearance=모양 settings.appearance.accent=강조 색상 settings.appearance.accent.description=단일 강조 색상을 안전하게 사용자 지정합니다. Askimo는 이를 주요 UI 강조에 적용하고, 읽기 쉬움을 위해 관련 색상을 파생합니다. settings.appearance.accent.label=강조 색상 (Hex) -settings.appearance.accent.invalid=유효한 16진수 색상을 입력하세요. 예: #0284C7 +settings.appearance.accent.invalid=유효한 16진수 색상을 입력하세요. 예\: \#0284C7 settings.appearance.accent.swatch.primary=기본 settings.appearance.accent.swatch.primary.container=컨테이너 settings.appearance.accent.swatch.on.primary.container=컨테이너 위 @@ -274,7 +283,7 @@ settings.network.description=네트워크 및 프록시 설정 구성 settings.mcp.servers=MCP 서버 settings.skills=스킬 settings.skills.description=스킬은 사용자의 기기에서 직접 실행되는 재사용 가능한 AI 에이전트입니다. 각 스킬은 시스템 프롬프트와 지침을 담고 있는 Markdown 파일입니다. 스킬을 실행하면 {0}를 통해 실행되며 장치 파일을 읽고 쓰고, 셸 명령을 실행하며, 작업을 완료할 때까지 반복합니다. 복사 및 붙여넣기가 필요하지 않습니다. -settings.skills.runtimes=지원되는 런타임: +settings.skills.runtimes=지원되는 런타임\: settings.skills.directory=스킬 디렉터리 settings.skills.open.folder=폴더 열기 settings.skills.new.skill=새 스킬 @@ -317,12 +326,9 @@ settings.skills.add.folder=폴더 추가 settings.skills.add.folder.name=폴더 이름 settings.advanced=고급 settings.about=정보 -settings.model=모델 -settings.provider=제공자 settings.theme=테마 settings.save=저장 settings.cancel=취소 -settings.provider.change.button=변경 settings.model.change.button=변경 settings.change.button=변경 @@ -333,24 +339,16 @@ theme.dark=다크 theme.dark.description=항상 다크 테마 사용 theme.system=시스템 theme.system.description=시스템 테마 따르기 -theme.sepia=세피아 -theme.sepia.description=따뜻한 양피지 톤, 눈이 편안함 -theme.ocean=오션 -theme.ocean.description=부드러운 하늘빛 톤으로 차분하고 산뜻함 -theme.nord=노르드 -theme.nord.description=북극을 닮은 어두운 팔레트로 차갑고 집중감 있는 분위기 -theme.sage=세이지 -theme.sage.description=차분한 회녹색 톤으로 세련되고 안정감 있음 -theme.rose=로즈 -theme.rose.description=부드러운 블러시 핑크로 우아하고 따뜻함 -theme.indigo=인디고 -theme.indigo.description=짙은 보랏빛 푸른색으로 신비롭고 창의적임 settings.layout.density=레이아웃 밀도 settings.layout.density.description=앱 전체의 여백 및 패딩 밀도를 조정합니다. layout.density.comfortable=편안함 layout.density.comfortable.description=더 넓은 여백으로 편리하게 탐색 layout.density.compact=컴팩트 layout.density.compact.description=더 좊은 여백으로 더 많은 콘텐츠 표시 +layout.density.relaxed=여유 +layout.density.relaxed.description=가독성을 위해 여백을 조금 더 넓게 조정 +layout.density.spacious=넉넉함 +layout.density.spacious.description=초고DPI 디스플레이를 위한 최대 여백 settings.background.image=배경 이미지 settings.background.image.description=배경 이미지를 선택하세요 — 기본 제공 이미지를 고르거나 직접 이미지를 사용할 수 있습니다. 반투명 오버레이가 텍스트 가독성을 유지해 줍니다. 배경 이미지는 선택한 테마와는 별개로 적용됩니다. settings.background.image.browse=찾아보기 @@ -365,11 +363,11 @@ settings.log.viewer=로그 파일 settings.log.viewer.description=애플리케이션 로그 및 진단 보기 settings.log.viewer.view=로그 보기 settings.log.viewer.open_folder=로그 폴더 열기 -settings.log.viewer.path=로그 파일: {0} +settings.log.viewer.path=로그 파일\: {0} settings.log.viewer.dialog.title=애플리케이션 로그 settings.log.viewer.refresh=새로 고침 settings.log.viewer.copy=복사 -settings.log.viewer.copied=복사됨! +settings.log.viewer.copied=복사됨\! settings.log.viewer.loading=로그 불러오는 중... settings.log.viewer.error=로그 불러오기 실패 settings.log.viewer.empty=로그 없음 @@ -404,6 +402,31 @@ settings.proxy.password.placeholder=선택 사항 settings.proxy.system.info=ℹ️ 운영체제 설정의 시스템 프록시를 사용 중입니다 settings.proxy.socks5.no.auth.info=ℹ️ 현재 SOCKS5 인증은 지원되지 않습니다. 인증 없이 SOCKS5 프록시를 사용하거나 이 기능이 필요하다면 GitHub에 이슈를 등록해 주세요. +# Web Search Settings +settings.web_search=웹 검색 +settings.web_search.description=API 키 없이도 AI가 최신 정보를 조회할 수 있도록 내장 웹 검색을 활성화하세요. DuckDuckGo는 기본으로 작동합니다 — 더 높은 품질의 결과를 원하면 Brave 또는 Tavily로 업그레이드하세요. +settings.web_search.title=웹 검색 설정 +settings.web_search.enabled=활성화됨 +settings.web_search.zero_config_note=DuckDuckGo는 설정 없이 작동합니다. 더 높은 품질이나 더 많은 양의 결과를 원하고 해당 서비스의 API 키가 있는 경우에만 다른 백엔드를 선택하세요. +settings.web_search.backend=검색 백엔드 +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=무료, API 키 필요 없음. 개인정보를 보호하는 기본 옵션. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=빠르고 독립적인 인덱스. 무료 Brave Search API 키가 필요합니다. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=선택적 답변 추출 기능이 있는 AI 최적화 결과. Tavily API 키가 필요합니다. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=자체 SearxNG 인스턴스를 통한 개인정보 보호 메타 검색. API 키 불필요. +settings.web_search.api_key=API 키 +settings.web_search.api_key.placeholder=여기에 API 키를 붙여넣으세요 +settings.web_search.get_api_key=무료 API 키 받기 ↗ +settings.web_search.endpoint=SearxNG 인스턴스 URL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=검색 테스트 +settings.web_search.test.running=테스트 중... +settings.web_search.test.success=✅ 검색이 정상 작동 중 +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=게스트 사용자 user.profile.menu=사용자 프로필 메뉴 @@ -415,25 +438,25 @@ user.profile.name=이름 user.profile.email=이메일 user.profile.email.placeholder=your.email@example.com user.profile.occupation=직업 -user.profile.occupation.placeholder=예: 소프트웨어 개발자, 디자이너, 학생 +user.profile.occupation.placeholder=예\: 소프트웨어 개발자, 디자이너, 학생 user.profile.location=위치 -user.profile.location.placeholder=예: 샌프란시스코, CA +user.profile.location.placeholder=예\: 샌프란시스코, CA user.profile.bio=소개 user.profile.bio.placeholder=자신에 대해 간단히 알려주세요… user.profile.interests=관심사 user.profile.interests.description=관심 있는 주제를 선택하여 AI 경험을 개인화하세요 user.profile.interests.custom=사용자 지정 관심사 -user.profile.interests.custom.placeholder=예: 머신 러닝, 사진 +user.profile.interests.custom.placeholder=예\: 머신 러닝, 사진 user.profile.interests.custom.hint=여러 관심사는 쉼표로 구분하세요 # Welcome Dialog (First Run) -welcome.title=Askimo에 오신 것을 환영합니다! +welcome.title=Askimo에 오신 것을 환영합니다\! welcome.subtitle=AI 경험을 개인화할 수 있도록 도와주세요 welcome.avatar.optional=클릭하여 사진 추가 (선택 사항) welcome.name=이름 -welcome.name.placeholder=예: 홍길동 +welcome.name.placeholder=예\: 홍길동 welcome.occupation=직업 -welcome.occupation.placeholder=예: 소프트웨어 개발자 +welcome.occupation.placeholder=예\: 소프트웨어 개발자 welcome.interests=관심 있는 분야는 무엇인가요? welcome.interests.description=경험을 맞춤화할 수 있도록 몇 가지 주제를 선택하세요 welcome.skip=나중에 설정 @@ -466,6 +489,7 @@ user.interest.environment=환경 # Actions action.delete=삭제 +action.remove=삭제 action.edit=편집 action.pin=사이드바에 고정 action.unpin=사이드바에서 고정 해제 @@ -482,6 +506,7 @@ action.close=닫기 action.show.more=더 보기 action.show.less=접기 action.back=뒤로가기 +action.next=다음 action.retry=다시 시도 action.done=완료 action.refresh=새로고침 @@ -489,13 +514,37 @@ action.refresh=새로고침 # Happiness Gate (shown before Star Prompt) happiness.gate.title=Askimo는 어떠신가요? happiness.gate.subtitle=어떻게 사용하고 계신지 알려주세요 -happiness.gate.happy=정말 마음에 들어요! 😍 +happiness.gate.happy=정말 마음에 들어요\! 😍 happiness.gate.neutral=괜찮아요 🙂 happiness.gate.unhappy=별로예요 😕 -happiness.gate.feedback.title=개선에 도움을 주세요 -happiness.gate.feedback.message=피드백을 공유해 주시겠습니까? Askimo를 귀하와 모든 분들을 위해 더 나은 서비스로 만드는 데 도움이 됩니다. -happiness.gate.feedback.yes=네, 피드백을 공유합니다 -happiness.gate.feedback.no=아니요, 괜찮습니다 + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=어떤 점이 불편하신가요? +feedback.dialog.subtitle=해당하는 모든 항목을 선택해주세요. 귀하의 의견은 팀에 직접 전달됩니다. +feedback.comment.label=상세 내용 (선택 사항) +feedback.comment.placeholder=문제에 대한 설명이나 의견을 공유해주세요… +feedback.email.label=이메일 (선택 사항) +feedback.email.placeholder=you@example.com +feedback.email.hint=피드백에 대한 후속 조치를 위해서만 사용됩니다. 스팸 메일은 절대 보내지 않습니다. +feedback.action.skip=건너뛰기 +feedback.action.send=피드백 보내기 +feedback.thanks.title=소중한 의견 감사합니다\! +feedback.thanks.message=보내주신 의견은 Askimo를 개선하는 데 큰 도움이 됩니다. 정말 감사합니다. +feedback.thanks.close=닫기 + +feedback.remind.title=괜찮습니다\! +feedback.remind.message=도움말 메뉴 → 피드백 보내기를 통해 언제든지 의견을 보내주실 수 있습니다. +feedback.remind.got.it=알겠습니다 + +# Feedback reasons +feedback.reason.inaccurate=AI 응답이 정확하지 않음 +feedback.reason.slow=너무 느림 +feedback.reason.missing.feature=필요한 기능이 없음 +feedback.reason.broken=무언가 작동하지 않음 +feedback.reason.hard.to.use=사용하기 어려움 +feedback.reason.integration=통합 관련 문제 +feedback.reason.privacy=개인정보 보호 문제 +feedback.reason.other=기타 # Star Prompt star.prompt.title=Askimo를 즐기고 있나요? 전파해 주세요 💙 @@ -507,16 +556,27 @@ star.prompt.share.description=X, LinkedIn 또는 Facebook에서 네트워크에 star.prompt.maybe.later=지금은 아니요 star.prompt.already.starred=이미 별표 표시됨 ✓ star.prompt.social.proof=⭐ 이미 Askimo에 별표를 표시한 {0}명과 함께하세요 +star.prompt.thanks.title=정말 감사합니다\! 🌟 +star.prompt.thanks.message=여러분의 성원은 저희가 Askimo를 계속 발전시키는 데 큰 힘이 됩니다. +star.prompt.thanks.done=완료 ✓ +star.prompt.remind.title=괜찮습니다\! +star.prompt.remind.message=언제든지 도움말 메뉴 → Askimo 지원하기를 통해 저희를 후원하실 수 있습니다. +star.prompt.remind.got.it=확인 # Analytics Settings (Advanced section toggle) settings.analytics.title=익명 분석 -settings.analytics.description=익명 기능 사용 데이터를 Askimo 팀과 공유하여 다음에 무엇을 개발할지 우선순위를 정하는 데 도움이 됩니다. 대화, 프롬프트, 파일 내용, API 키는 절대 수집되지 않습니다. +settings.analytics.description=익명 기능 사용 데이터를 Askimo 팀과 공유하여 다음에 무엇을 개발할지 우선순위를 정하는 데 도움을 줍니다. 대화, 프롬프트, 파일 내용, API 키는 절대 수집되지 않습니다. # Hardware Acceleration Settings (Advanced section toggle) settings.hardware.acceleration.title=하드웨어 가속 settings.hardware.acceleration.description=GPU 가속 렌더링을 사용하여 UI 성능을 원활하게 합니다. 그래픽 문제가 발생하면 이 옵션을 비활성화하세요. settings.hardware.acceleration.description.windows=GPU 가속 렌더링(Direct3D/OpenGL)을 사용하여 UI 성능을 원활하게 합니다. G-Sync 또는 FreeSync 디스플레이에서 깜박임이나 불규칙한 재생 빈도 문제가 발생하면 이 옵션을 비활성화하세요. settings.hardware.acceleration.restart.notice=변경 사항을 적용하려면 Askimo를 다시 시작하세요. +settings.ui.scale.title=화면 배율 +settings.ui.scale.description=전체 UI 배율을 조정합니다. 변경 사항을 적용하려면 재시작이 필요합니다. +settings.ui.scale.option.system.default=시스템 기본값 +settings.ui.scale.restart.notice=배율 변경을 적용하려면 Askimo를 다시 시작하세요. +settings.ui.scale.learn.more=HiDPI 및 UI 스케일링에 대해 자세히 알아보기 settings.hardware.acceleration.restart.title=재시작 필요 settings.hardware.acceleration.restart.message=렌더링 변경 사항을 적용하려면 Askimo를 다시 시작하세요. settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync 감지됨 @@ -530,10 +590,8 @@ file.overwrite.message=이 파일은 이미 존재합니다. 덮어쓰시겠습 file.overwrite.confirm=덮어쓰기 file.name.too.long=파일 이름이 너무 깁니다. 더 짧은 이름을 사용해주세요 (최대 255자). - # About about.title={0} 정보 -action.remove=삭제 about.version=버전 about.buildDate=빌드 날짜 about.buildJdk=빌드 JDK @@ -565,6 +623,7 @@ shortcut.stop.ai.response=AI 응답 중지 shortcut.quit.application=애플리케이션 종료 shortcut.navigate.to.sessions=세션으로 이동 shortcut.navigate.to.projects=프로젝트로 이동 +shortcut.navigate.to.bookmarks=책갈피로 이동 shortcut.enter.fullscreen=전체 화면으로 전환 shortcut.close.search=검색 닫기 shortcut.next.search.result=다음 검색 결과 @@ -574,7 +633,7 @@ shortcut.send.message=메시지 전송 shortcut.new.line=새 줄 # Chat View -chat.welcome=Askimo에 오신 것을 환영합니다!\n아래에 메시지를 입력하여 대화를 시작하세요. +chat.welcome=Askimo에 오신 것을 환영합니다\!\n아래에 메시지를 입력하여 대화를 시작하세요. chat.no.active.session=사이드바에서 세션을 선택하거나 새 채팅을 시작하세요 chat.search.placeholder=대화 내 검색... chat.search.no.results=결과 없음 @@ -612,8 +671,7 @@ global.search.results.count={0}개 결과 global.search.results.count.plural={0}개 결과 # Rest of chat view strings -chat.directive=지시문: -chat.directive.none=없음 +chat.directive=지시문 chat.directive.new=새 지시문 chat.directive.manage=지시문 관리 chat.directive.learn.more=디렉티브 사용법을 배워보세요 @@ -623,7 +681,11 @@ chat.drop.files=파일을 드래그하여 대화에 첨부하세요 chat.create.image.menu=이미지 생성 chat.create.image.mode=이미지 chat.create.image.mode.cancel=이미지 생성 모드 취소 +chat.image.model.missing.title=이미지 모델이 구성되지 않았습니다 +chat.image.model.missing.message={0}에 설정된 이미지 모델이 없습니다. 설정 > AI 제공업체 > 이미지 생성 모델을 열고 먼저 모델 이름을 설정하세요. chat.tools.button=사용 가능한 도구 +chat.tools.button.disabled=사용 가능한 도구 ({0} 비활성화됨) +chat.tools.button.model.no.support=이 모델은 도구를 지원하지 않습니다 chat.tools.popup.title=사용 가능한 도구 chat.tools.popup.loading=서버 로딩 중... chat.tools.popup.no.servers.global=전역 MCP 서버가 설정되지 않았습니다. @@ -632,7 +694,6 @@ chat.tools.server.scope.global=전역 chat.tools.server.scope.project=프로젝트 chat.tools.server.scope.builtin=내장 chat.tools.tool.no.description=설명이 없습니다 -chat.tools.button.disabled=사용 가능한 도구 ({0} 비활성화됨) chat.reasoning.effort.label=생각 중 chat.reasoning.effort.tooltip=추론 노력 — 모델이 응답하기 전에 얼마나 깊이 생각할지 제어합니다 chat.reasoning.effort.off=끄기 @@ -644,12 +705,13 @@ chat.reasoning.effort.medium.description=깊이와 속도의 균형. 대부분 chat.reasoning.effort.high=높음 chat.reasoning.effort.high.description=철저한 추론, 높은 비용. 복잡한 문제 해결에 가장 적합합니다. chat.input.placeholder=메시지 입력... (Enter 전송, Shift+Enter 줄바꿈) +chat.input.placeholder.hint.attach={0}+A로 파일을 첨부하거나 여기에 드래그 앤 드롭하세요 chat.select.file=파일 선택 (여러 개 선택 가능) chat.attachment.remove=첨부 파일 삭제 chat.attachment.preview.loading=미리보기 불러오는 중… chat.attachment.preview.file.not.found=(파일을 찾을 수 없음) chat.attachment.preview.too.large=(파일이 너무 커서 미리볼 수 없음) -chat.attachment.preview.cannot.read=(파일을 읽을 수 없음: {0}) +chat.attachment.preview.cannot.read=(파일을 읽을 수 없음\: {0}) chat.attachment.preview.more.lines={0}줄 더 # Sessions View @@ -661,12 +723,12 @@ sessions.col.created=생성됨 sessions.col.updated=업데이트됨 sessions.error=❌ {0} sessions.empty=세션을 찾을 수 없습니다. -sessions.empty.hint=💡 새 대화를 시작해 첫 세션을 만들어 보세요! +sessions.empty.hint=💡 새 대화를 시작해 첫 세션을 만들어 보세요\! sessions.search.placeholder=제목으로 검색… sessions.search.empty="{0}"과(와) 일치하는 세션이 없습니다. -# 일반 테이블 페이지 매김 컨트롤 -table.page.size.label=페이지당 행 수: +# Generic table pagination controls +table.page.size.label=페이지당 행 수\: table.page=페이지 {0} / {1} table.page.previous=이전 페이지 table.page.next=다음 페이지 @@ -680,10 +742,9 @@ sessions.error.not.found=세션을 찾을 수 없습니다. sessions.error.rename.failed=이름 변경 실패. # ChatSessionService Errors - # Update Check update.dialog.title=소프트웨어 업데이트 -update.dialog.new.version.available=새로운 Askimo 버전 이용 가능! +update.dialog.new.version.available=새로운 Askimo 버전 이용 가능\! update.urgency.medium={0}개 버전 뒤처져 있습니다 — 중요한 버그 수정 및 신기능을 놓쳤을 수 있습니다. update.urgency.high={0}개 버전 뒤처져 있습니다 — 상당한 개선 사항을 놓치고 있습니다. 빨리 업데이트하세요. update.dialog.current.version.label=현재 버전 @@ -694,7 +755,7 @@ update.dialog.download=지금 다운로드 update.dialog.how.to.update=업데이트 방법 update.dialog.later=나중에 update.dialog.skip.version=이 버전 건너뛰기 -update.check.up.to.date=최신 버전을 사용 중입니다! +update.check.up.to.date=최신 버전을 사용 중입니다\! update.check.failed=업데이트 확인 실패 # Event Names @@ -716,44 +777,48 @@ settings.font.size=글꼴 크기 settings.font.line.spacing=줄 간격 settings.shortcuts=단축키 settings.shortcuts.description=생산성을 높이기 위해 사용 가능한 모든 키보드 단축키를 확인하세요 +settings.shortcuts.search=바로가기 검색... +settings.shortcuts.no_results=검색 결과에 일치하는 바로가기가 없습니다 settings.app.language=애플리케이션 언어 settings.app.language.translation.help=잘못된 부분이 있나요? 번역 개선에 도움을 주세요. settings.app.language.translation.contribute=Crowdin에서 기여하기 settings.ai.response.language=선호 응답 언어 settings.ai.response.language.description=AI가 특정 언어로 응답하도록 강제 (비워두면 자동 감지) settings.ai.response.language.auto=자동 감지 -settings.ai.response.language.tooltip=AI가 자동으로 언어를 감지하지만 다음 경우 재정의하세요:\n• 언어 학습 (몰입형 연습)\n• 전문적 일관성 (예: 코드 문서는 항상 영어로)\n• RAG 최적화 (지식 베이스 언어와 일치)\n• 교육 (한 언어로 질문하고 다른 언어로 설명)\n• 원치 않는 언어 전환 방지 -settings.model.select={0}의 모델 선택: +settings.ai.response.language.tooltip=AI가 자동으로 언어를 감지하지만 다음 경우 재정의하세요\:\n• 언어 학습 (몰입형 연습)\n• 전문적 일관성 (예\: 코드 문서는 항상 영어로)\n• RAG 최적화 (지식 베이스 언어와 일치)\n• 교육 (한 언어로 질문하고 다른 언어로 설명)\n• 원치 않는 언어 전환 방지 +settings.model.select={0}의 모델 선택\: settings.model.loading=모델 불러오는 중... settings.model.none=사용 가능한 모델 없음 settings.model.select.title=모델 선택 settings.model.current=현재 모델 settings.model.selected=선택된 모델 settings.model.new=새 모델 -settings.model.change.description=아래 목록에서 모델을 선택하세요: +settings.model.use.default=기본값 사용 +settings.model.change.description=아래 목록에서 모델을 선택하세요\: settings.model.search=모델 검색 settings.model.search.placeholder=모델 필터링 입력... settings.model.filtered={0}/{1} 모델 표시 중 settings.model.no.match=일치하는 모델 없음 -settings.model.no.results=일치하는 모델 없음 +settings.model.chat.filter.label=챗 모델 · {0}개 표시됨 +settings.model.chat.filter.show.all=모든 {0} 표시 settings.configure.title={0} 설정 구성 settings.test.connection.testing=테스트 중... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=제공자에 연결할 수 없습니다. API 키가 올바른지(클라우드 제공자의 경우) 또는 기본 URL에 도달할 수 있는지(로컬 제공자의 경우) 확인하십시오. 위의 도움말 링크를 사용하여 설정 지침을 찾을 수 있습니다. # Directives Dialog directive.manage.title=지시문 관리 -directive.manage.empty=지시문이 없습니다. 새로 만들어보세요! +directive.manage.empty=지시문이 없습니다. 새로 만들어보세요\! directive.edit.name.label=이름 directive.edit.name.placeholder=지시문 이름 입력... directive.edit.content.label=내용 directive.edit.content.placeholder=지시문 내용을 입력하세요... directive.edit.name.required=이름은 필수입니다 directive.edit.content.required=내용은 필수입니다 -directive.created=생성됨: {0} +directive.created=생성됨\: {0} directive.new.title=새 지시문 directive.new.guidelines=지시문은 AI가 메시지에 응답하는 방식을 안내합니다. 어조, 세부 수준, 형식 또는 필요한 특별 요구 사항에 대해 구체적으로 작성하세요. -directive.new.name.placeholder=예: concise-code, explain-like-im-5 +directive.new.name.placeholder=예\: concise-code, explain-like-im-5 directive.new.content.placeholder=지시문 내용을 입력... directive.new.apply.current=현재 세션에 적용 directive.new.create=생성 @@ -765,8 +830,8 @@ directive.export.tooltip=모든 지시문을 JSON 파일로 내보내 공유합 directive.export.filename=askimo-directives directive.import=가져오기 directive.import.tooltip=JSON 파일에서 지시문을 가져옵니다 -directive.import.result=가져오기 완료: {0}개 가져옴, {1}개 이름 변경됨, {2}개 건너뜀 -directive.import.error=가져오기 실패: 잘못되었거나 지원되지 않는 파일 형식입니다 +directive.import.result=가져오기 완료\: {0}개 가져옴, {1}개 이름 변경됨, {2}개 건너뜀 +directive.import.error=가져오기 실패\: 잘못되었거나 지원되지 않는 파일 형식입니다 # Log Levels log.level.error=오류 @@ -783,6 +848,8 @@ log.level.trace.description=모든 로그 표시 (가장 상세) # Message Components message.loading.previous=이전 메시지 불러오는 중... message.thinking=생각 중… ({0}s) +message.thinking.section.streaming=💭 생각 중... +message.thinking.section.done=💭 생각 message.copy=메시지 복사 message.copy.description=메시지 복사 message.edit=메시지 편집 @@ -809,13 +876,40 @@ message.ai.try.again.confirm.title=응답을 다시 생성하시겠습니까? message.ai.try.again.confirm.message=이 시점 이후의 모든 메시지가 삭제됩니다. 계속하시겠습니까? message.ai.try.again.confirm.cancel=취소 message.ai.try.again.confirm.confirm=다시 생성 +message.ai.fork=여기서 세션 포크(Fork) +message.ai.fork.description=이 대화를 새로운 독립 세션으로 포크(Fork)합니다 message.ai.export.pdf=PDF로 내보내기 message.ai.export.pdf.dialog.title=AI 응답을 PDF로 저장 +message.bookmark=메시지 북마크 +message.bookmark.remove=북마크 제거 +message.bookmark.description=이 메시지를 북마크합니다 message.edited.indicator=(편집됨) message.date.today=오늘 message.date.yesterday=어제 message.token.usage={0} 토큰 · {1} 입력 / {2} 출력 -message.token.usage.tooltip=이 응답에 사용된 토큰입니다.\n입력: AI로 전송된 프롬프트 및 컨텍스트.\n출력: AI가 생성한 응답. +message.token.usage.tooltip=이 응답에 사용된 토큰입니다.\n입력\: AI로 전송된 프롬프트 및 컨텍스트.\n출력\: AI가 생성한 응답. + +# Bookmarks +chat.bookmarks.button.tooltip=북마크 +chat.bookmarks.popover.title=고정된 메시지 +chat.bookmarks.popover.empty.title=아직 북마크가 없습니다 +chat.bookmarks.popover.empty.hint=메시지 아래의 북마크 아이콘으로 고정하세요 +bookmarks.title=북마크 +bookmarks.empty.title=아직 북마크가 없습니다 +bookmarks.empty.hint=메시지 아래의 핀 아이콘으로 북마크하세요 +bookmarks.session.untitled=제목 없는 대화 +bookmarks.message.count={0}개 고정됨 +bookmarks.role.user=나 +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=도구 실행 중... +tool.call.header.done={0}개의 도구 사용됨 +tool.call.status.done=완료 +tool.call.status.failed=실패 +tool.call.detail.arguments=인수 +tool.call.detail.result=결과 + attachment.download=첨부파일 다운로드 attachment.download.description=이 첨부파일 다운로드 attachment.save.file=첨부파일 저장 @@ -825,48 +919,62 @@ outdated.branch.header=이전 편집의 오래된 메시지 {0}개 (클릭하여 outdated.label=오래됨 # Provider Dialog -provider.change.title=제공자 변경 -provider.select.title=제공자 선택 +provider.manage.title=제공업체 관리 +provider.type.picker.title=제공업체 유형 선택 +provider.type.picker.prompt=추가할 제공업체 유형을 선택하세요\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=제공업체 추가 +provider.no.instances.hint=구성된 제공업체가 없습니다. 시작하려면 "제공업체 추가"를 클릭하세요. +provider.model.panel.select.hint=왼쪽에서 공급자를 선택하여 모델을 탐색하세요 +provider.model.panel.model.count={0}개 모델 +provider.model.default.badge=기본 +provider.instance.name.label=인스턴스 이름 +provider.instance.name.placeholder=예\: "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate="{0}" 이름의 프로바이더가 이미 존재합니다 provider.setup.required.title=AI 제공자 설정 필요 provider.setup.required.message=대화를 시작하기 전에 AI 제공자를 선택하고 구성해야 합니다. provider.setup.required.button=설정 -provider.select.prompt=제공자 선택: -provider.configure.prompt=구성: -provider.choose.placeholder=제공자 선택... +provider.configure.prompt=구성\: provider.setup.guide={0}를 설정하는 방법 provider.apikey.stored=API 키가 안전하게 저장되었습니다 provider.apikey.enter=API 키 입력 -provider.apikey.already.stored=이미 저장됨 provider.apikey.security.message=🔒 API 키는 암호화되어 안전하게 저장됩니다. 데이터는 절대 공유되지 않습니다. provider.apikey.security.link=데이터 보호 방식 알아보기 provider.not.set=설정되지 않음 # Provider Configuration - OpenAI -provider.openai.apikey.description=OpenAI API 키: https://platform.openai.com/account/api-keys +provider.openai.apikey.description=OpenAI API 키\: https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=API 키가 이미 저장됨. 비워두면 기존 키를 유지합니다. -provider.openai.setup.help=💡 OpenAI 사용을 위해 API 키가 필요합니다.\n\n1. https://platform.openai.com/account/api-keys 에서 키를 받으세요\n2. 설정 메뉴 또는 :change-settings 명령으로 추가하세요 +provider.openai.setup.help=💡 OpenAI 사용을 위해 API 키가 필요합니다.\n\n1. https\://platform.openai.com/account/api-keys 에서 키를 받으세요\n2. 설정 메뉴 또는 \:change-settings 명령으로 추가하세요 # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Anthropic API 키: https://console.anthropic.com/ +provider.anthropic.apikey.description=Anthropic API 키\: https\://console.anthropic.com/ provider.anthropic.apikey.stored=API 키가 이미 저장됨. -provider.anthropic.setup.help=💡 Anthropic 사용을 위해 API 키가 필요합니다.\n\n1. https://console.anthropic.com/ 에서 키를 받으세요\n2. 설정 또는 :change-settings 명령으로 구성하세요 +provider.anthropic.setup.help=💡 Anthropic 사용을 위해 API 키가 필요합니다.\n\n1. https\://console.anthropic.com/ 에서 키를 받으세요\n2. 설정 또는 \:change-settings 명령으로 구성하세요 +provider.anthropic.max_tokens.label=최대 토큰 수 +provider.anthropic.max_tokens.description=모델이 응답당 생성할 수 있는 최대 토큰 수 (생각 + 답변 합계). +provider.anthropic.thinking_budget_tokens.label=생각 예산 토큰 수 +provider.anthropic.thinking_budget_tokens.description=Anthropic이 생각하는 데 사용할 수 있는 최대 토큰 수입니다. 0으로 설정하면 모델이 자동으로 결정합니다 (권장). +provider.anthropic.thinking_max_tokens.label=생각 최대 토큰 수 +provider.anthropic.thinking_max_tokens.description=생각 기능이 활성화되었을 때의 총 토큰 제한 (생각 + 답변). 0으로 설정하면 대신 최대 토큰 수(Max Tokens)를 사용합니다. # Provider Configuration - Gemini -provider.gemini.apikey.description=Google AI Studio API 키: https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Google AI Studio API 키\: https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=API 키가 이미 저장됨. -provider.gemini.setup.help=💡 Gemini 사용을 위해 API 키가 필요합니다.\n\n1. https://aistudio.google.com/app/apikey 에서 키를 받으세요\n2. 설정에서 구성하거나 :change-settings 명령을 사용하세요 +provider.gemini.setup.help=💡 Gemini 사용을 위해 API 키가 필요합니다.\n\n1. https\://aistudio.google.com/app/apikey 에서 키를 받으세요\n2. 설정에서 구성하거나 \:change-settings 명령을 사용하세요 # Provider Configuration - XAI -provider.xai.apikey.description=XAI API 키: https://console.x.ai/ +provider.xai.apikey.description=XAI API 키\: https\://console.x.ai/ provider.xai.apikey.stored=API 키가 이미 저장됨. -provider.xai.setup.help=💡 XAI 사용을 위해 API 키가 필요합니다.\n\n1. https://console.x.ai/ 에서 키를 받으세요\n2. 설정 또는 :change-settings 명령으로 구성하세요 +provider.xai.setup.help=💡 XAI 사용을 위해 API 키가 필요합니다.\n\n1. https\://console.x.ai/ 에서 키를 받으세요\n2. 설정 또는 \:change-settings 명령으로 구성하세요 # Provider Configuration - Ollama -provider.ollama.baseurl.description=Ollama 기본 URL (기본값: http://localhost:11434) -provider.ollama.setup.help=💡 Ollama를 사용하려면 로컬에서 실행해야 합니다.\n\n1. https://ollama.ai/ 에서 설치\n2. 서비스 실행\n3. 필요 시 기본 URL 변경 +provider.ollama.baseurl.description=Ollama 기본 URL (기본값\: http\://localhost\:11434) +provider.ollama.setup.help=💡 Ollama를 사용하려면 로컬에서 실행해야 합니다.\n\n1. https\://ollama.ai/ 에서 설치\n2. 서비스 실행\n3. 필요 시 기본 URL 변경 # Provider Configuration - Docker AI -provider.docker.baseurl.description=Docker AI 기본 URL (기본값: http://localhost:12434) +provider.docker.baseurl.description=Docker AI 기본 URL (기본값\: http\://localhost\:12434) provider.docker.setup.help=💡 Docker AI를 사용하려면 로컬에서 실행해야 합니다.\n\n1. Docker AI가 설치되고 실행되는지 확인\n2. 서비스 실행\n3. 필요 시 기본 URL 변경 # Provider Configuration - LocalAI @@ -874,23 +982,30 @@ provider.localai.baseurl.description=LocalAI 기본 URL provider.localai.setup.help=💡 LocalAI를 사용하려면 먼저 실행해야 합니다.\n\n1. LocalAI 설치 및 실행\n2. 접근 가능한 기본 URL 구성 # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=LMStudio 기본 URL (기본값: http://localhost:1234) -provider.lmstudio.setup.help=💡 LMStudio 사용 방법:\n\n1. https://lmstudio.ai/ 에서 설치\n2. 로컬 서버 실행\n3. 필요 시 기본 URL 변경 +provider.lmstudio.baseurl.description=LMStudio 기본 URL (기본값\: http\://localhost\:1234) +provider.lmstudio.setup.help=💡 LMStudio 사용 방법\:\n\n1. https\://lmstudio.ai/ 에서 설치\n2. 로컬 서버 실행\n3. 필요 시 기본 URL 변경 provider.lmstudio.openai.compat.info=Askimo는 기본 LMStudio API(/api/v1/)가 아닌 OpenAI 호환 엔드포인트(/v1)를 사용합니다. # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=OpenAI 호환 인스턴스의 기본 URL +provider.openai_compatible.apikey.description=공급자용 API 키 (선택 사항 - 엔드포인트에 인증이 필요하지 않은 경우 비워 두세요) provider.openai_compatible.apikey.stored=API 키가 이미 안전하게 저장되었습니다. 기존 키를 유지하려면 비워두고, 업데이트하려면 새 키를 입력하세요. # System Resources system.share.feedback=피드백 공유 -system.ai.provider.tooltip=AI 제공자: {0}\n클릭하여 설정 +system.ai.provider.tooltip=AI 제공자\: {0}\n클릭하여 설정 system.diagnostics.title=시스템 진단 system.diagnostics.resources=리소스 system.diagnostics.jvm.memory=JVM 메모리 (사용됨 / 전체) system.diagnostics.cpu.usage=CPU 사용량 system.diagnostics.telemetry=텔레메트리 +# Telemetry export +telemetry.export.csv=CSV 내보내기 +telemetry.export.dialog.title=텔레메트리를 ZIP으로 내보내기 +telemetry.export.error.title=내보내기 실패 +telemetry.export.error.message=텔레메트리 데이터 내보내기 실패\: {0} + # Telemetry telemetry.reset=텔레메트리 데이터 재설정 telemetry.title=📊 세션 지표 @@ -906,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=총 쿼리 telemetry.rag.triggered.label=트리거됨 telemetry.rag.skipped.label=건너뜀 -telemetry.llm.calls=LLM 호출 -telemetry.llm.calls.count={0} 호출 -telemetry.llm.tokens={0} 토큰 -telemetry.llm.errors={0} 오류 -telemetry.total.tokens=총 토큰: {0} telemetry.llm.col.provider=제공자 telemetry.llm.col.model=모델 telemetry.llm.col.calls=호출 @@ -953,28 +1063,30 @@ export.format.html.benefit.2=어느 브라우저에서도 볼 수 있음 export.format.html.benefit.3=전문적인 외관 export.format.html.benefit.4=공유하기 쉬움 - # Error Messages -error.network=⚠️ AI 서비스{endpoint}에 연결할 수 없습니다\n\n다음을 확인하세요:\n• 인터넷 연결 상태\n• AI 서비스 URL (설정 확인)\n• 방화벽 설정\n• 서비스 사용 가능 여부 +error.network=⚠️ AI 서비스{endpoint}에 연결할 수 없습니다\n\n다음을 확인하세요\:\n• 인터넷 연결 상태\n• AI 서비스 URL (설정 확인)\n• 방화벽 설정\n• 서비스 사용 가능 여부 error.authentication=⚠️ API 키가 없거나 유효하지 않습니다{provider}\n\n설정에서 API 키를 입력하면 해결할 수 있습니다. -error.model_configuration=⚠️ 모델 구성 오류: {issue}\n\n다음 방법으로 해결하세요:\n1. 설정 열기\n2. AI 제공자 선택\n3. 목록에서 모델 선택 +error.model_not_found=⚠️ 모델을 찾을 수 없습니다\: {model}\n\n이 모델은 제공업체에 의해 더 이상 사용되지 않거나 제거되었을 수 있습니다. 다른 모델을 선택해 주세요. +error.provider_not_configured=⚠️ AI 제공자가 설정되지 않았습니다.\n\n채팅을 시작하려면\:\n1. 설정 열기\n2. AI 제공자 선택 (OpenAI, Ollama, Anthropic 등)\n3. API 키 입력 또는 연결 설정 error.rate_limit=⚠️ 사용량 제한을 초과했습니다\n{retryAfter}\n\nAPI 사용 한도에 도달했습니다. 잠시 기다린 후 다시 메시지를 보내세요. error.insufficient_credits=⚠️ 크레딧 부족\n\n크레딧 잔액이 너무 낮습니다.\n\n결제 페이지를 방문하여 크레딧을 추가하세요. -error.timeout=⚠️ {timeout}초 후 요청 시간이 초과되었습니다\n\n가능한 원인:\n• 서버 부하가 높음 - 잠시 후 다시 시도\n• 쿼리가 복잡함 - 더 간단하게 작성\n• 네트워크 지연 -error.invalid_request=⚠️ 잘못된 요청: {details}\n\n입력 내용을 확인한 뒤 다시 시도하세요. -error.system=⚠️ 시스템 오류\n\n예기치 않은 오류가 발생했습니다: {errorCode}\n\nAskimo 지원팀에 다음 정보를 함께 전달해 주세요:\n• 수행 중이던 작업\n• 위의 오류 코드\n• 타임스탬프 +error.timeout=⚠️ {timeout}초 후 요청 시간이 초과되었습니다\n\n가능한 원인\:\n• 서버 부하가 높음 - 잠시 후 다시 시도\n• 쿼리가 복잡함 - 더 간단하게 작성\n• 네트워크 지연 +error.context_length=⚠️ 컨텍스트 창 초과\n\n전체 입력(대화 기록 + 메시지 + 첨부 파일)이 너무 커서 이 모델이 처리할 수 없습니다.\n\n해결 방법\:\n• 새로운 채팅 세션을 시작하여 대화 기록을 지우세요\n• 메시지를 줄이거나 큰 첨부 파일을 제거하세요\n• 로컬 모델(Ollama / LM Studio / Docker)을 사용하는 경우, 설정에서 컨텍스트 크기를 늘리세요\n• 더 큰 컨텍스트 창을 지원하는 모델로 전환하세요 +error.invalid_request=⚠️ 잘못된 요청\: {details}\n\n입력 내용을 확인한 뒤 다시 시도하세요. +error.local_server=⚠️ 로컬 AI 서버 오류\!\n\nAI 서버 프로세스가 충돌하거나 모델을 로드하지 못했습니다. 이는 Askimo로 인한 문제가 아닙니다.\n\n가능한 원인\:\n• 모델 파일이 손상되었거나 불완전합니다 — 다시 다운로드해 보세요\n• RAM/VRAM 부족 — 더 작은 양자화(예\: Q8 대신 Q4)를 시도해 보세요\n• 현재 서버 버전에서 지원하지 않는 모델 형식\n• 서버 프로세스가 OS에 의해 종료됨(메모리 부족)\n\n해결 방법\:\n1. 로컬 AI 서버 로그를 확인하세요\n2. 서버를 재시작하고 다시 시도하세요\n3. 모델을 다시 다운로드하세요\n4. 다른 모델 또는 양자화 수준을 시도해 보세요\n\n기술적 세부 정보\: {details} +error.system=⚠️ 시스템 오류\n\n예기치 않은 오류가 발생했습니다\: {errorCode}\n\nAskimo 지원팀에 다음 정보를 함께 전달해 주세요\:\n• 수행 중이던 작업\n• 위의 오류 코드\n• 타임스탬프 # Model Availability Errors error.model.not_available.title.chat=모델을 사용할 수 없음 error.model.not_available.title.embedding=임베딩 모델을 사용할 수 없음 error.model.not_available.message.chat=모델 ''{0}''을(를) 사용할 수 없습니다. -error.model.not_available.message.embedding=임베딩 모델 ''{0}''을(를) 사용할 수 없습니다.\n\n임베딩 모델을 올바르게 설정하세요. +error.model.not_available.message.embedding=임베딩 모델 ''{0}''을(를) 로컬 프로바이더에서 사용할 수 없습니다.\n\n설정 → AI 프로바이더 로 이동하여 프로바이더 구성 카드에서 사용 가능한 임베딩 모델을 선택하세요. error.model.not_available.config_link=임베딩 모델 설정 -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=문제가 발생했습니다 -error.app.message=예기치 않은 오류가 발생했습니다: {0} +error.app.message=예기치 않은 오류가 발생했습니다\: {0} # Send Message Errors error.send_message.title=메시지 전송 실패 @@ -982,21 +1094,22 @@ error.send_message.title=메시지 전송 실패 # Indexing Errors error.indexing.model_not_found.title=임베딩 모델을 찾을 수 없음 error.indexing.model_not_found.message=임베딩 모델 ''{0}''을(를) 찾을 수 없습니다. 인덱싱 전에 {1}에서 해당 모델을 다운로드하거나 활성화하세요. +error.indexing.input_too_large.title=임베딩 입력이 너무 큼 +error.indexing.input_too_large.message=토큰 수가 모델의 최대 컨텍스트 크기를 초과하여 임베딩 모델이 [{0}]의 하나 이상의 세그먼트를 거부했습니다. 설정 → 인덱싱 → 청크당 최대 문자 수에서 청크 크기를 줄인 후 다시 인덱싱하십시오. error.indexing.io_error.title=IO 오류 error.indexing.io_error.message=인덱싱 중 IO 오류가 발생했습니다 error.indexing.unknown.title=인덱싱 오류 error.indexing.unknown.message=인덱싱 중 알 수 없는 오류가 발생했습니다 - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=임베딩 모델 상태 (RAG 기능에만 필요) -settings.embedding.not_available_rag_only=⚠️ {0}.\n\n참고: 이는 프로젝트 기반 RAG 기능에만 영향을 미칩니다. 일반 채팅 기능은 정상적으로 작동합니다. -settings.embedding.provider_unreachable=⚠️ 제공자에 연결할 수 없습니다: {0}.\n\n참고: 임베딩 모델은 프로젝트 기반 RAG 기능에만 필요합니다. -settings.embedding.check_failed=임베딩 모델 확인 실패: {0} +settings.embedding.not_available_rag_only=⚠️ {0}.\n\n참고\: 이는 프로젝트 기반 RAG 기능에만 영향을 미칩니다. 일반 채팅 기능은 정상적으로 작동합니다. +settings.embedding.provider_unreachable=⚠️ 제공자에 연결할 수 없습니다\: {0}.\n\n참고\: 임베딩 모델은 프로젝트 기반 RAG 기능에만 필요합니다. +settings.embedding.check_failed=임베딩 모델 확인 실패\: {0} settings.embedding.download_model=임베딩 모델 다운로드 -settings.embedding.download_success=✅ 임베딩 모델을 성공적으로 다운로드했습니다: {0} -settings.embedding.download_failed=❌ 임베딩 모델 다운로드에 실패했습니다: {0}. 수동으로 시도하세요: ollama pull {0} -settings.embedding.download_error=모델 다운로드 중 오류 발생: {0} +settings.embedding.download_success=✅ 임베딩 모델을 성공적으로 다운로드했습니다\: {0} +settings.embedding.download_failed=❌ 임베딩 모델 다운로드에 실패했습니다\: {0}. 수동으로 시도하세요\: ollama pull {0} +settings.embedding.download_error=모델 다운로드 중 오류 발생\: {0} settings.embedding.anthropic_no_embedding=Anthropic은 임베딩 모델을 제공하지 않습니다 settings.embedding.xai_no_embedding=xAI는 임베딩 모델을 제공하지 않습니다 @@ -1004,47 +1117,67 @@ settings.embedding.xai_no_embedding=xAI는 임베딩 모델을 제공하지 않 settings.rag.title=RAG 구성 settings.rag.description=프로젝트 기반 지식 검색을 위한 Retrieval-Augmented Generation 매개변수를 구성합니다 settings.rag.vector.max.results=벡터 검색 최대 결과 수 -settings.rag.vector.max.results.hint=벡터 검색에서 가져올 최대 문서 수 (기본값: 20) +settings.rag.vector.max.results.hint=벡터 검색에서 가져올 최대 문서 수 (기본값\: 20) settings.rag.vector.min.score=벡터 검색 최소 점수 -settings.rag.vector.min.score.hint=최소 유사도 점수 0.0–1.0 (기본값: 0.3) +settings.rag.vector.min.score.hint=최소 유사도 점수 0.0–1.0 (기본값\: 0.3) settings.rag.hybrid.max.results=하이브리드 최대 결과 수 -settings.rag.hybrid.max.results.hint=융합 후 최종 문서 수 (기본값: 15) +settings.rag.hybrid.max.results.hint=융합 후 최종 문서 수 (기본값\: 15) settings.rag.rank.fusion.constant=랭크 퓨전 상수 -settings.rag.rank.fusion.constant.hint=하이브리드 랭킹을 위한 RRF 상수 (기본값: 60) +settings.rag.rank.fusion.constant.hint=하이브리드 랭킹을 위한 RRF 상수 (기본값\: 60) settings.rag.use.absolute.paths=인용에서 절대 경로 사용 settings.rag.use.absolute.paths.hint=동일한 이름의 파일이 여러 개 있을 때 더 명확하게 하기 위해 AI 응답에 전체 파일 경로를 표시합니다 settings.rag.embedding.title=임베딩 구성 settings.rag.embedding.description=텍스트 분할 및 임베딩 매개변수를 구성합니다 settings.rag.embedding.max.chars.per.chunk=청크당 최대 문자 수 -settings.rag.embedding.max.chars.per.chunk.hint=각 텍스트 청크의 최대 문자 수 (기본값: 1500) +settings.rag.embedding.max.chars.per.chunk.hint=각 텍스트 청크의 최대 문자 수 (기본값\: 1500) settings.rag.embedding.chunk.overlap=청크 중첩 -settings.rag.embedding.chunk.overlap.hint=청크 간 중첩되는 문자 수 (기본값: 100) +settings.rag.embedding.chunk.overlap.hint=청크 간 중첩되는 문자 수 (기본값\: 100) settings.rag.embedding.models=제공자별 임베딩 모델 settings.rag.indexing.title=인덱싱 구성 settings.rag.indexing.description=인덱싱할 파일과 허용되는 최대 파일 크기를 제어합니다 settings.rag.indexing.max.file.bytes=최대 파일 크기 (바이트) settings.rag.indexing.max.file.bytes.hint=이 값보다 큰 파일은 인덱싱 중에 건너뜁니다. 너무 높게 설정하면 인덱싱 속도가 크게 느려질 수 있습니다. settings.rag.indexing.supported.extensions=지원되는 확장자 -settings.rag.indexing.supported.extensions.hint=인덱싱할 파일 확장자를 쉼표로 구분하여 입력합니다 (예: kt, java, py, md). 빈칸으로 두면 기본값을 사용합니다. +settings.rag.indexing.supported.extensions.hint=인덱싱할 파일 확장자를 쉼표로 구분하여 입력합니다 (예\: kt, java, py, md). 빈칸으로 두면 기본값을 사용합니다. settings.rag.indexing.exclude.file.names=제외할 파일 이름 -settings.rag.indexing.exclude.file.names.hint=항상 건너뛸 정확한 파일 이름을 쉼표로 구분하여 입력합니다 (예: package-lock.json, yarn.lock). +settings.rag.indexing.exclude.file.names.hint=항상 건너뛸 정확한 파일 이름을 쉼표로 구분하여 입력합니다 (예\: package-lock.json, yarn.lock). settings.rag.indexing.binary.extensions=바이너리 확장자 -settings.rag.indexing.binary.extensions.hint=인덱싱 중 바이너리로 처리되어 건너뛸 파일 확장자를 쉼표로 구분하여 입력합니다 (예: png, jpg, zip, exe). 빈칸으로 두면 기본값을 사용합니다. +settings.rag.indexing.binary.extensions.hint=인덱싱 중 바이너리로 처리되어 건너뛸 파일 확장자를 쉼표로 구분하여 입력합니다 (예\: png, jpg, zip, exe). 빈칸으로 두면 기본값을 사용합니다. settings.rag.indexing.embedding.batch.size=임베딩 배치 크기 settings.rag.indexing.embedding.batch.size.hint=요청당 임베딩 모델에 전송되는 텍스트 세그먼트 수입니다. 인덱싱이 느리고 원격 공급자(OpenAI, Gemini)를 사용하는 경우 100–500으로 늘려 보세요. 로컬 모델(Ollama, LM Studio)을 사용하는 경우 타임아웃을 방지하려면 낮게 유지하세요. -# Settings - Utility Models +## Settings - Models +settings.models.title=모델 +settings.models.description=모든 공급자에서 공유되는 전역 AI 모델 동작을 구성합니다. +settings.models.max.tool.calling.round.trips=최대 도구 호출 라운드 트립 +settings.models.max.tool.calling.round.trips.hint=AI가 단일 응답에서 수행할 수 있는 최대 도구 호출 횟수입니다 (기본값\: 10). 값이 높을수록 복잡한 에이전트 작업이 가능하지만 지연 시간과 비용이 증가합니다. + +# Memory Settings +settings.memory.title=메모리 설정 +settings.memory.description=AI가 모델의 컨텍스트 창 안에서 대화 기록을 관리하는 방식을 제어합니다. +settings.memory.mode=메모리 모드 +settings.memory.mode.compact=간결 +settings.memory.mode.compact.hint=낮은 토큰 비용, 적은 상세 정보 +settings.memory.mode.compact.description=적극적 요약. 토큰 비용이 낮고 자주 요약합니다. 매우 긴 세션이나 비용에 민감한 모델에 적합합니다. +settings.memory.mode.balanced=균형 +settings.memory.mode.balanced.hint=품질과 비용의 적절한 균형 +settings.memory.mode.balanced.description=품질과 비용의 적절한 균형. 메모리 예산의 40%에서 요약이 시작됩니다. 대부분의 세션에 적합합니다. +settings.memory.mode.detail=상세 +settings.memory.mode.detail.hint=높은 정확도, 더 많은 토큰 +settings.memory.mode.detail.description=최소 요약. 더 많은 원문 대화와 풍부한 요약을 유지합니다. 짧은 세션이나 정확한 기억이 중요할 때 적합합니다. + +## Settings - Utility Models settings.utility.models.title=유틸리티 모델 settings.utility.models.uses.selected=(선택된 모델 사용) settings.utility.models.local.note={0}는 로컬 제공자입니다 — 유틸리티 작업에는 현재 활성화된 채팅 모델이 자동으로 사용됩니다. -# Settings - Vision Models +## Settings - Vision Models settings.vision.models.title=비전 모델 ## Settings - Image Models settings.image.models.title=이미지 생성 모델 -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=모델 설정 settings.provider.model.config.description=특정 작업에 사용되는 기본 모델을 재정의합니다. 필드를 비워두면 제공자의 기본 모델이 사용됩니다. settings.provider.model.config.guide=AI 모델 구성 가이드 보기 @@ -1060,20 +1193,19 @@ file.viewer.title=파일 뷰어 file.viewer.title.with.name=파일 뷰어 - {0} file.viewer.dialog.close=닫기 file.viewer.copy.clipboard=클립보드에 복사 -file.viewer.copied=복사됨! +file.viewer.copied=복사됨\! # Mermaid Chart Renderer mermaid.setup.required.title=Mermaid CLI 필요 mermaid.setup.privacy.note=Askimo는 개인정보 보호를 위해 다이어그램을 로컬에서 렌더링합니다. mermaid.setup.instructions.title=설정 안내 -mermaid.setup.instructions.text=Askimo에서 Mermaid 다이어그램을 렌더링하려면 다음 설치 가이드를 참고하세요: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.text=Askimo에서 Mermaid 다이어그램을 렌더링하려면 다음 설치 가이드를 참고하세요\: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=설정 가이드 열기 mermaid.setup.button.copy.diagram=다이어그램 복사 -mermaid.diagram.source.label=다이어그램 소스: +mermaid.diagram.source.label=다이어그램 소스\: mermaid.rendering.progress=다이어그램 렌더링 중... mermaid.error.rendering.title=다이어그램 렌더링 오류 -mermaid.error.rendering.raw.label=원본 다이어그램: mermaid.error.unexpected.state=예기치 않은 상태입니다. 다시 시도하세요. mermaid.error.failed.load.image=다이어그램 이미지를 불러오지 못했습니다 mermaid.button.copy.code=코드 복사 @@ -1083,7 +1215,8 @@ mermaid.button.zoom.in=확대 mermaid.button.zoom.out=축소 mermaid.button.reset.zoom=확대/축소 초기화 mermaid.button.retry=다시 시도 -mermaid.feedback.copied=복사됨! +mermaid.feedback.copied=복사됨\! + # Reference Material knowledge.source.type.folder=폴더 (변경 사항 감시) @@ -1101,7 +1234,7 @@ mcp.instances.title=MCP 인스턴스 mcp.instances.description=사용 가능한 MCP 인스턴스입니다 mcp.instances.empty=구성된 MCP 인스턴스가 없습니다 mcp.instances.count={0} 인스턴스 -mcp.instance.server.label=서버: {0} +mcp.instance.server.label=서버\: {0} mcp.instance.delete.confirm.title=MCP 인스턴스를 삭제하시겠습니까? mcp.instance.delete.confirm.message=MCP 인스턴스 "{0}"를 정말로 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다. mcp.instance.enable.tooltip=이 MCP 인스턴스 활성화 @@ -1127,7 +1260,7 @@ mcp.instance.field.description=설명 mcp.instance.field.description.placeholder=이 서버가 수행하는 작업에 대한 간단한 설명 mcp.instance.field.transport=전송 유형 mcp.instance.field.command=명령어 템플릿 -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint={{parameter}} 플레이스홀더가 포함된 공백 구분 명령어 mcp.instance.validation.error.empty.id=서버 ID는 비워둘 수 없습니다 mcp.instance.validation.error.invalid.id.pattern=서버 ID는 소문자 문자, 숫자 및 하이픈만 포함해야 합니다 @@ -1136,20 +1269,20 @@ mcp.instance.validation.error.empty.command=명령어 템플릿은 비워둘 수 mcp.instance.validation.error.empty.parameter.key=매개변수 키는 비워둘 수 없습니다 mcp.instance.validation.error.empty.parameter.label=매개변수 라벨은 비워둘 수 없습니다 mcp.instance.env.label=환경 변수 (선택 사항) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=형식: KEY=값 또는 KEY={{parameter}} (1줄에 1쌍) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=형식\: KEY\=값 또는 KEY\={{parameter}} (1줄에 1쌍) mcp.instance.transport.stdio=Stdio (로컬 프로세스) mcp.instance.transport.http=HTTP (원격 서버) mcp.instance.http.url.label=URL 템플릿 -mcp.instance.http.url.placeholder=https://{{host}}/mcp 또는 https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp 또는 https\://api.example.com/mcp mcp.instance.http.url.hint=서버 엔드포인트 URL입니다. 동적 값에는 {{parameter}} 플레이스홀더를 사용합니다 mcp.instance.http.headers.label=HTTP 헤더 (선택 사항) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=형식: 헤더 이름=값 또는 헤더 이름={{parameter}} (1줄에 1쌍) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=형식\: 헤더 이름\=값 또는 헤더 이름\={{parameter}} (1줄에 1쌍) mcp.instance.http.timeout.label=시간 초과 (ms) mcp.instance.http.timeout.hint=요청 시간 초과를 밀리초 단위로 지정하세요 mcp.instance.validation.error.empty.url=URL 템플릿은 비워둘 수 없습니다 -mcp.instance.validation.error.invalid.url=URL 템플릿은 http:// 또는 https://로 시작해야 합니다 +mcp.instance.validation.error.invalid.url=URL 템플릿은 http\:// 또는 https\://로 시작해야 합니다 # MCP Integrations (Project View) mcp.instance.delete.tooltip=MCP 인스턴스 삭제 @@ -1160,7 +1293,7 @@ mcp.instance.field.serverId=서버 유형 # Add MCP Integration Dialog mcp.instance.name=MCP 이름 -mcp.instance.name.placeholder=예: 프로덕션 데이터베이스, 프로젝트 파일 +mcp.instance.name.placeholder=예\: 프로덕션 데이터베이스, 프로젝트 파일 mcp.instance.tools.title=사용 가능한 도구 mcp.instance.tools.count={0} 개의 도구가 사용 가능합니다 mcp.instance.tool.strategy.intent=의도 기반 @@ -1199,7 +1332,7 @@ mcp.tools.dialog.search.count={0} / {1} 도구 mcp.tools.dialog.search.empty=검색에 일치하는 도구가 없습니다 mcp.tools.dialog.export=도구 내보내기 mcp.tools.dialog.export.success={0}로 도구를 내보냈습니다 -mcp.tools.dialog.export.failed=도구 내보내기 실패: {0} +mcp.tools.dialog.export.failed=도구 내보내기 실패\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=MCP 서버 추가 @@ -1255,7 +1388,7 @@ file.viewer.close=뷰어 닫기 file.viewer.open.external=외부에서 열기 file.viewer.binary=바이너리 파일 — 텍스트로 미리 볼 수 없습니다. file.viewer.too.large=파일이 너무 커서 미리 볼 수 없습니다({0} KB). 최대 크기는 512 KB입니다. -file.viewer.error=파일을 읽을 수 없습니다: {0} +file.viewer.error=파일을 읽을 수 없습니다\: {0} file.viewer.select.prompt=위 트리에서 파일을 선택하여 내용을 미리 보세요 # Project Side Panel @@ -1267,12 +1400,11 @@ panel.reindex.confirm.title=중지하고 다시 인덱싱하시겠습니까? panel.reindex.confirm.message="{0}"이(가) 현재 인덱싱 중입니다. 현재 인덱싱을 중지하고 처음부터 다시 인덱싱하시겠습니까? panel.reindex.confirm.button=중지 및 재인덱싱 panel.reindex.confirm.cancel=취소 -panel.collapse=패널 접기 panel.collapse=패널 축소 # RAG Status rag.status.started=인덱싱 시작됨 -rag.status.inprogress=인덱싱 중: {0}% +rag.status.inprogress=인덱싱 중\: {0}% rag.status.inprogress.unknown=인덱싱 중... rag.status.queued=대기열 추가됨 — 다른 프로젝트의 인덱싱이 완료되기를 기다리는 중 rag.status.ready=준비 완료 @@ -1322,7 +1454,7 @@ plans.editor.label=YAML 내용 plans.editor.placeholder=여기에 플랜 YAML을 붙여넣거나 입력하세요... plans.editor.valid=유효한 YAML plans.editor.hint.title=참고 -plans.editor.hint.fields=필수: id, name, steps\n선택: description, icon, inputs, workflow\n단계 유형: text, multiline, toggle, number\n워크플로 유형: sequence, parallel, conditional +plans.editor.hint.fields=필수\: id, name, steps\n선택\: description, icon, inputs, workflow\n단계 유형\: text, multiline, toggle, number\n워크플로 유형\: sequence, parallel, conditional plans.editor.menu.edit=YAML 편집 plans.editor.ai.label=AI로 생성 plans.editor.ai.placeholder=이 계획이 수행할 작업을 알기 쉬운 말로 설명해주세요... @@ -1351,7 +1483,6 @@ skills.view.empty.search=검색어와 일치하는 기술이 없습니다 skills.view.manage=스킬 관리 skills.view.select.prompt=실행할 스킬을 선택하세요 skills.view.select.hint=오른쪽 스킬 패널에서 스킬을 선택하세요 -skills.view.select.skill=스킬을 선택하세요… skills.view.run=스킬 실행 skills.view.run.command=명령 보내기 skills.view.running=실행 중… @@ -1382,12 +1513,12 @@ skills.view.panel.collapse=패널 접기 skills.view.panel.expand=패널 펼치기 skills.view.tab.skills=스킬 skills.view.tab.workspace=작업 공간 -skills.view.last.run=마지막 실행: {0} +skills.view.last.run=마지막 실행\: {0} skills.view.category.uncategorized=기타 skills.view.search.placeholder=기술 검색 ... skills.view.search.clear=검색 지우기 skills.view.context.placeholder=무엇을 하고 싶으신가요? (선택 사항) -skills.view.command.mode.hint=명령 모드: /로 시작하는 입력은 에이전트 명령으로 실행됩니다. +skills.view.command.mode.hint=명령 모드\: /로 시작하는 입력은 에이전트 명령으로 실행됩니다. skills.view.system.prompt.preview=시스템 프롬프트 skills.view.response.title=응답 skills.view.followup.label=후속 질문 @@ -1397,7 +1528,7 @@ skills.view.history.empty=아직 실행 기록이 없습니다 skills.view.copy=복사 skills.view.system.prompt.file=파일 skills.view.system.prompt.files=파일 -skills.view.system.prompt.also.included=에이전트 컨텍스트에도 포함됨: +skills.view.system.prompt.also.included=에이전트 컨텍스트에도 포함됨\: skills.view.docs.tooltip=스킬 가이드 보기 skills.view.mode.agentic=에이전트형 skills.view.mode.manual=수동 @@ -1409,11 +1540,6 @@ skills.agentic.skills.available={0}개의 스킬을 에이전트 컨텍스트로 skills.agentic.no.skills.hint=아직 스킬이 없습니다 — 설정 → 스킬에서 스킬을 추가하여 에이전트에 특화된 기능을 제공하세요 skills.agentic.model.default=기본 모델 -# File / folder chooser -file.chooser.folder.select=선택 -file.chooser.folder.hint=폴더를 두 번 클릭하여 들어가세요. 인덱싱하려는 폴더로 이동한 다음 “선택”을 클릭하세요. -file.chooser.file.select=선택 - # Onboarding Wizard onboarding.title=Askimo에 오신 것을 환영합니다 onboarding.step.indicator={1}단계 중 {0}단계 @@ -1429,7 +1555,7 @@ onboarding.step.language.label=언어 # Onboarding Step 1: Analytics onboarding.step.analytics.title=Askimo를 모두에게 더 좋게 만드는 데 도움 주세요 onboarding.step.analytics.description=Askimo는 무료 오픈 소스입니다. 익명 사용 데이터 공유는 작은 기여이지만, 어떤 기능을 우선 개발할지 이해하는 데 큰 도움이 됩니다. -onboarding.step.analytics.collected.yes.features=✅ 사용된 기능들 (예: RAG, MCP 도구, 플랜, 스킬) +onboarding.step.analytics.collected.yes.features=✅ 사용된 기능들 (예\: RAG, MCP 도구, 플랜, 스킬) onboarding.step.analytics.collected.yes.version=✅ 앱 버전 및 운영체제 유형 onboarding.step.analytics.collected.no.conversations=❌ 대화 내용이나 프롬프트는 절대 제공하지 않음 onboarding.step.analytics.collected.no.personal=❌ 개인정보, 파일, API 키는 절대 수집하지 않습니다 @@ -1442,7 +1568,7 @@ onboarding.step.analytics.section.never=수집하지 않는 정보 onboarding.step.analytics.toggle.subtitle=가장 중요한 것에 집중할 수 있도록 도와줍니다 · 설정 → 고급에서 언제든지 변경 가능 # Onboarding Step 1: Welcome -onboarding.step.welcome.title=👋 Askimo에 오신 것을 환영합니다! +onboarding.step.welcome.title=👋 Askimo에 오신 것을 환영합니다\! onboarding.step.welcome.description=여러 AI 모델과 대화하고, 프로젝트로 지식을 정리하며, 스킬 및 플랜을 활용해 워크플로를 자동화할 수 있는 당신만의 AI 비서입니다. onboarding.step.welcome.feature1.title=💬 AI와 대화하기 onboarding.step.welcome.feature1.description=질문하거나, 과제 도움을 받거나, 어떤 AI 모델과도 자연스럽게 대화할 수 있습니다. @@ -1469,9 +1595,8 @@ onboarding.step.directives.feature2.description=모호한 질문엔 모호한 onboarding.step.directives.feature3.title=작업별로 적합한 전문가 onboarding.step.directives.feature3.description=학습엔 친절한 튜터, 디버깅땐 직설적 코드 리뷰어가 필요하신가요? 별도 지시문을 사용해 작업에 맞는 역할을 분리할 수 있습니다. onboarding.step.directives.link=예시와 팁 보기 - # Onboarding Step 6: Ready -onboarding.step.ready.title=🚀 준비 완료! +onboarding.step.ready.title=🚀 준비 완료\! onboarding.step.ready.description=모든 설정이 완료됐습니다. 첫 채팅을 시작하거나 아래 리소스를 확인해보세요. onboarding.step.ready.link.docs=📚 문서 보기 onboarding.step.ready.link.providers=🔧 AI 제공업체 설정 @@ -1481,13 +1606,13 @@ onboarding.step.ready.link.github=⭐ GitHub에서 별 주기 onboarding.step.persona.title=🎯 주로 어떤 작업을 하고 싶으신가요? onboarding.step.persona.description=귀하의 업무와 가장 비슷한 옵션을 선택하세요. Askimo가 가장 관련성 높은 기능을 보여드립니다. 보기 메뉴에서 언제든지 이를 변경할 수 있습니다. onboarding.step.persona.developer.description=코드 읽기 및 쓰기, 파일 리팩토링, 스캐폴딩 생성 또는 로컬 프로젝트에서 에이전트 작업 실행. -onboarding.step.persona.developer.features=활성화: Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.developer.features=활성화\: Skills (Gemini CLI, Claude Code), Projects onboarding.step.persona.researcher.description=주제 조사, 데이터 분석, 구조화된 보고서 작성 및 지식 기반 답변 얻기. -onboarding.step.persona.researcher.features=활성화: Plans, Projects (RAG) +onboarding.step.persona.researcher.features=활성화\: Plans, Projects (RAG) onboarding.step.persona.manager.description=이메일 초안 작성, 회의록 처리, 상태 보고서 작성 또는 다단계 콘텐츠 워크플로 실행. -onboarding.step.persona.manager.features=활성화: Plans +onboarding.step.persona.manager.features=활성화\: Plans onboarding.step.persona.everything.description=저는 여러 가지 작업을 혼합하여 합니다 — 모든 기능을 보여주시면 제가 무엇을 사용할지 결정하겠습니다. -onboarding.step.persona.everything.features=활성화: Skills, Plans, Projects, MCP, RAG +onboarding.step.persona.everything.features=활성화\: Skills, Plans, Projects, MCP, RAG # Persona labels persona.developer=💻 코드 작성 및 검토 diff --git a/desktop-shared/src/main/resources/i18n/messages_pt.properties b/desktop-shared/src/main/resources/i18n/messages_pt.properties new file mode 100644 index 000000000..99f7a162c --- /dev/null +++ b/desktop-shared/src/main/resources/i18n/messages_pt.properties @@ -0,0 +1,1621 @@ +# Askimo Desktop Application - English Strings + +# Application + +# Menu Items +menu.file=File +menu.new.project=New Project +menu.search.sessions=Search in Sessions +menu.export.backup=Export Backup... +menu.import.backup=Import Backup... +menu.invalidate.caches=Invalidate Caches... +menu.invalidate.caches.title=Invalidate Caches? +menu.invalidate.caches.message=This will delete all cached data (model capabilities, context sizes, etc.).\n\nAre you sure you want to continue? +menu.invalidate.caches.success.title=Caches Deleted +menu.invalidate.caches.success.message=All cache files have been successfully deleted. +menu.clear.preferences=Clear All Preferences... +menu.clear.preferences.title=Clear All Preferences? +menu.clear.preferences.message=This will reset all application preferences to their defaults (UI state, onboarding flags, saved inputs, etc.).\n\nThis is useful for testing a fresh install. The app will continue running.\n\nAre you sure? +menu.clear.preferences.success.title=Preferences Cleared +menu.clear.preferences.success.message=All application preferences have been reset to defaults. +menu.quit=Quit +menu.view=View +menu.view.discover=Discover +menu.view.plans=Plans +menu.view.skills=Skills +menu.view.projects=Project +menu.view.show.sidebar=Show Sidebar +menu.view.hide.sidebar=Hide Sidebar +menu.view.appearance=Appearance +menu.view.appearance.system=System +menu.view.appearance.light=Light +menu.view.appearance.dark=Dark +menu.view.fullscreen=Enter Full Screen +menu.view.bookmarks=View Bookmarks +menu.terminal=Terminal +menu.terminal.new=New Terminal +menu.help=Help +menu.documentation=Documentation +menu.help.gettingstarted=Getting Started +menu.help.release.notes=Release Notes +menu.help.star.github=⭐ Star on GitHub +menu.help.discord=💬 Join Discord Community +menu.help.share=🗣 Share Askimo +menu.help.share.x=Share on X / Twitter +menu.help.share.linkedin=Share on LinkedIn +menu.help.share.facebook=Share on Facebook +menu.help.share.text=Just discovered Askimo - an AI desktop app packed with RAG, MCP tools, multi-step Plans, and AI Skills. Works with Claude, Gemini, Codex, Ollama, OpenAI and more. One app for every AI workflow. https\://askimo.chat +menu.help.share.hackernews=Post on Hacker News +menu.eventlog=Event Log +menu.help.model.capabilities=Open Model Capabilities File +menu.dev.clear.account.preferences=[Dev] Clear Account Preferences +menu.about=About Askimo +menu.help.check.updates=Check for Updates... +menu.help.diagnostics=System Diagnostics... +menu.help.support.askimo=Support Askimo ⭐ + +# Common Dialog Buttons +dialog.cancel=Cancel +dialog.close=Close + +# Backup and Restore +backup.export.title=Export Backup +backup.export.success.title=Backup Exported +backup.export.success.message=Backup successfully exported to\:\n{0} +backup.export.error.title=Export Failed +backup.export.error.message=Failed to export backup\:\n{0} +backup.import.title=Import Backup +backup.import.confirm.title=Confirm Import +backup.import.confirm.message=This will replace all current data with the backup.\n\nA safety backup will be created automatically before importing.\n\nAre you sure you want to continue? +backup.import.success.title=Backup Imported +backup.import.success.message=Backup successfully imported.\n\nPlease restart Askimo for all changes to take effect. +backup.import.error.title=Import Failed +backup.import.error.message=Failed to import backup\:\n{0} + +# Event Log +eventlog.title=Event Log ({0}) +eventlog.clear=Clear Events +eventlog.dock.change=Change dock position +eventlog.dock.bottom=Dock to Bottom +eventlog.dock.left=Dock to Left +eventlog.dock.right=Dock to Right +eventlog.detach=Detach to separate window +eventlog.close=Close +eventlog.empty=No events yet +eventlog.unknown=Unknown +eventlog.window.title=Event Log - Developer Tools +eventlog.window.header=Event Log +eventlog.window.attach=Attach to Main Window +eventlog.window.events.count={0} events +eventlog.window.empty.message=No events yet. Events will appear here as they occur. + +# Chat Interface +chat.new=New Chat +chat.new.tooltip=New Chat ({0}+N) +chat.sessions=Sessions +chat.sessions.tooltip=View chat sessions + +# Sidebar +sidebar.expand=Expand sidebar +sidebar.collapse=Collapse sidebar +sidebar.pinned=Pinned + +# Discover View +discover.greeting.morning=Good morning, {0} +discover.greeting.afternoon=Good afternoon, {0} +discover.greeting.evening=Good evening, {0} +discover.stat.chats=Chats +discover.stat.projects=Projects +discover.stat.mcp=MCP Servers +discover.stat.plans=Plans +discover.stat.skills=Skills +discover.customize=Customize +discover.customize.show_token_usage=Show token usage card +discover.tokens.title=Top Models by Token Usage +discover.tokens.total={0} total +discover.tokens.view_details=View details +discover.tokens.empty=No token usage recorded yet. Start chatting to see stats here. +discover.explore.title=Explore Features +discover.explore.mcp.title=MCP Servers +discover.explore.mcp.desc=Extend Askimo with external tools and data sources via the Model Context Protocol. +discover.explore.rag.title=Knowledge Base (RAG) +discover.explore.rag.desc=Ground your AI with your own documents for more accurate, context-aware answers. +discover.explore.plans.title=Plans +discover.explore.plans.desc=Automate multi-step AI workflows and run them on demand with a single click. +discover.explore.skills.title=Skills +discover.explore.skills.desc=Run AI-powered skills backed by Gemini CLI or Claude Code directly from your workspace. +discover.recent.title=Recent Sessions +discover.recent.empty=No recent sessions yet. + +# Sessions +session.star=Star +session.unstar=Unstar +session.delete.confirm=Are you sure you want to delete this session? +session.delete.confirm.title=Delete Chat? +session.delete.confirm.message=Are you sure you want to delete "{0}"?\n\nThis action cannot be undone. +session.delete.confirm.button=Delete Chat +session.delete.confirm.cancel=Cancel +session.export=Export +session.export.title=Export Chat Session +session.export.description=Choose a format and location to export your chat session +session.export.select.format=Select Export Format +session.export.location=Save Location +session.export.file.path=File Path +session.export.browse=Browse +session.rename.title=Rename Title +session.rename.field.label=Title +session.rename.field.placeholder=Enter session title... +session.rename.error.empty=Title cannot be empty +session.export.file.chooser.title=Save export file +session.export.button.export=Export +session.export.success.title=Export Successful +session.export.success.message=Chat session has been successfully exported to\: + +# Projects +project.title=Projects +project.new=New Project +project.new.dialog.title=Create New Project +project.edit.dialog.title=Edit Project +project.new.dialog.name.label=Project Name +project.new.dialog.name.placeholder=Enter project name +project.new.dialog.description.label=Description (optional) +project.new.dialog.description.placeholder=Describe your project +project.new.dialog.folder.browse=Select Folder to Process... +project.new.dialog.file.browse=Select Files to Process... +project.new.dialog.sources.label=Reference Materials (optional) +project.new.dialog.sources.add=Add Source +project.new.dialog.error.empty.name=Project name cannot be empty +project.new.dialog.error.create.failed=Failed to create project\: {0} +project.new.dialog.name.error.empty=Project name cannot be empty +project.new.dialog.button.create=Create Project +project.new.dialog.button.cancel=Cancel +project.new.dialog.success.title=Project created successfully\! +project.new.dialog.success.message=Project ''{0}'' has been created. +project.new.dialog.success.countdown=Closing in {0} second{1}... +project.new.dialog.success.close=Close Now +project.dialog.url.title=Add URL Reference Material +project.dialog.url.description=Enter a URL to add web content as a reference material. The URL will be validated and checked for accessibility. +project.dialog.url.label=URL +project.dialog.url.button.add=Add URL +project.dialog.url.button.cancel=Cancel +project.dialog.url.button.validating=Validating... +project.delete=Delete Project +project.delete.confirm.title=Delete Project? +project.delete.confirm.message=Are you sure you want to delete the project "{0}"?\n\nAll sessions in this project will also be permanently deleted. +project.delete.confirm.button=Delete Project +project.delete.confirm.cancel=Cancel +project.not.found=Project not found +project.not.selected=No project selected + +# Projects View +projects.title=Projects +projects.description=Organize your chats around a topic and attach files, folders, or URLs as knowledge sources, so the AI always has the right context for that project. +projects.error=❌ {0} +projects.empty=No projects found. +projects.empty.hint=💡Create a new project to organize your chat sessions\! +projects.search.placeholder=Search by name… +projects.search.empty=No projects match "{0}". +projects.col.name=Name +projects.col.modified=Modified +projects.col.created=Created +projects.sources.count={0} reference material(s) +projects.sources.expand=Show reference materials +projects.sources.collapse=Hide reference materials +projects.sources.empty.title=No reference materials yet +projects.sources.empty.description=Add documents so Askimo can reference them when answering your questions +projects.sources.info.tooltip=Reference materials help Askimo understand your specific context.\n\ +\n\ +Add folders, files, or websites containing information you want Askimo to reference when answering questions.\n\ +\n\ +For example\:\n\ +• Your project documentation\n\ +• Company knowledge base\n\ +• Technical specifications\n\ +• Research papers\n\ +\n\ +Askimo will search these materials to provide more accurate, context-aware answers. +projects.sources.type.local_folders=Local Folders +projects.sources.type.local_files=Local Files +projects.sources.type.urls=URLs +projects.sources.add.tooltip=Add Reference Material +projects.sources.add.button=Add Reference Material +projects.sources.add.dialog.title=Add Reference Material +projects.sources.add.dialog.description=Select folders, files, or URLs to add as reference materials for this project. +projects.sources.add.dialog.button.add=Add +projects.sources.delete.tooltip=Delete reference material +projects.sources.guide=View Reference Materials Guide +projects.error.loading=Failed to load projects. Please try again. +projects.error.deleting=Failed to delete project. Please try again. +projects.error.updating=Failed to update project. Please try again. +projects.error.not.found=Project not found. +project.update.success=Project updated successfully. +project.error.loading=Failed to load project. Please try again. +project.error.loading_sessions=Failed to load project sessions. Please try again. +project.error.updating=Failed to update project. Please try again. +project.error.deleting_knowledge_source=Failed to delete reference material. Please try again. +project.knowledge_source.delete.success=Reference material deleted successfully. +project.edit=Edit Project +project.reindex=Re-index Project +project.menu.tooltip=Project menu +project.new.chat.placeholder=New chat in {0} +project.recent.chats=Recent Chats +project.no.chats=No chats yet. Start a new chat below\! +project.indexing.label=Indexing knowledge source\: {0} +project.indexing.queued=Indexing queued — waiting for "{0}" to finish... +project.indexing.failed=Indexing failed. Try re-indexing from the project menu. +project.indexing.ready.label=Indexed +project.indexing.ready.tooltip=Knowledge sources are indexed and ready for AI context +session.move.to.project=Move to Project +session.move.to.project.new=New Project +session.remove.from.project=Remove from {0} +session.move.success=Session moved to project successfully. +session.remove.success=Session removed from project. +session.error.moving=Failed to move session to project. Please try again. +session.error.removing=Failed to remove session from project. Please try again. + +# Settings +settings.title=Settings +settings.appearance=Appearance +settings.appearance.accent=Accent Color +settings.appearance.accent.description=Customize a single accent color safely. Askimo applies it to primary UI accents and derives related colors for readability. +settings.appearance.accent.label=Accent Color (Hex) +settings.appearance.accent.invalid=Enter a valid hex color like \#0284C7 +settings.appearance.accent.swatch.primary=Primary +settings.appearance.accent.swatch.primary.container=Container +settings.appearance.accent.swatch.on.primary.container=On Container +settings.appearance.accent.pick=Pick Color +settings.appearance.accent.pick.title=Select Accent Color +settings.appearance.accent.presets=Quick Presets +settings.appearance.accent.reset=Reset +settings.appearance.palette=Color Style +settings.appearance.palette.description=Choose how Askimo derives the full palette from your accent color. +settings.appearance.palette.balanced=Balanced +settings.appearance.palette.balanced.description=Natural Material-style palette with strong readability and familiar contrast. +settings.appearance.palette.vibrant=Vibrant +settings.appearance.palette.vibrant.description=More chroma and stronger supporting colors while keeping the selected hue recognizable. +settings.appearance.palette.literal=Literal +settings.appearance.palette.literal.description=Keeps the chosen accent closest to the original seed color. +settings.appearance.palette.soft=Soft +settings.appearance.palette.soft.description=More muted supporting colors for a calmer appearance. +settings.ai.provider=AI Provider +settings.network=Network +settings.network.description=Configure network and proxy settings +settings.mcp.servers=MCP Servers +settings.skills=Skills +settings.skills.description=Skills are reusable AI agents that run directly on your machine. Each skill is a Markdown file with a system prompt and instructions. When you run a skill, it executes via {0} — reading and writing your files, running shell commands, and iterating until the job is done. No copy-pasting required. +settings.skills.runtimes=Supported runtimes\: +settings.skills.directory=Skills directory +settings.skills.open.folder=Open Folder +settings.skills.new.skill=New Skill +settings.skills.import.github=Import from GitHub +settings.skills.import.github.description=Clone a GitHub repository containing skill (.md) files into your skills directory. Requires git on PATH. +settings.skills.import.github.url.label=GitHub Repository URL +settings.skills.import.github.button=Import +settings.skills.import.github.importing=Importing… +settings.skills.import.zip=Import from ZIP +settings.skills.import.zip.description=Import a local ZIP archive that contains skill folders (each skill folder should include a skill.md entry file). +settings.skills.import.zip.picker.title=Select ZIP skill pack +settings.skills.import.zip.pick.button=Choose ZIP File +settings.skills.import.zip.button=Import ZIP +settings.skills.import.zip.importing=Importing ZIP... +settings.skills.editor.name=Name +settings.skills.editor.description=Description +settings.skills.editor.system.prompt=System Prompt +settings.skills.editor.system.prompt.placeholder=Write the system prompt here… +settings.skills.editor.system.prompt.hint=This is the instruction given to the AI when the skill is active. +settings.skills.empty=No skills found +settings.skills.empty.hint=Use the + button to create your first skill +settings.skills.select.prompt=Select a skill from the panel to view or edit it +settings.skills.editor.empty.file=Empty file +settings.skills.editor.mode.read=Read +settings.skills.editor.mode.edit=Edit +settings.skills.editor.line.count={0} line +settings.skills.editor.line.count.plural={0} lines +settings.skills.new.skill.placeholder=my-skill +settings.skills.delete.file.title=Delete file +settings.skills.delete.file.confirm=Delete "{0}"? This cannot be undone. +settings.skills.delete.folder.title=Delete folder +settings.skills.delete.folder.confirm=Delete "{0}" and all skills inside it? This cannot be undone. +settings.skills.delete.all.title=Delete All Skills +settings.skills.delete.all.confirm=Delete all skills? This will permanently remove all skill folders and cannot be undone. +settings.skills.import.success.title=Import Successful +settings.skills.import.success.message=Successfully imported {0} skill(s) into "{1}". +settings.skills.add.file=Add File +settings.skills.add.file.name=File name +settings.skills.add.folder=Add Folder +settings.skills.add.folder.name=Folder name +settings.advanced=Advanced +settings.about=About +settings.theme=Theme +settings.save=Save +settings.cancel=Cancel +settings.model.change.button=Change +settings.change.button=Change + +# Theme +theme.light=Light +theme.light.description=Always use light theme +theme.dark=Dark +theme.dark.description=Always use dark theme +theme.system=System +theme.system.description=Follow system theme settings +settings.layout.density=Layout Density +settings.layout.density.description=Adjust spacing and padding density across the app. +layout.density.comfortable=Comfortable +layout.density.comfortable.description=More generous spacing for easier scanning +layout.density.compact=Compact +layout.density.compact.description=Tighter spacing to fit more content +layout.density.relaxed=Relaxed +layout.density.relaxed.description=Slightly larger spacing for better readability +layout.density.spacious=Spacious +layout.density.spacious.description=Largest spacing for ultra-high DPI screens +settings.background.image=Background Image +settings.background.image.description=Choose a background image — pick a preset or use your own image. A translucent overlay keeps text readable. Background images are independent of the selected theme. +settings.background.image.browse=Browse +settings.background.image.custom=Custom Image +settings.appearance.avatar.ai=AI Assistant Avatar +settings.appearance.avatar.ai.description=Customize the AI assistant's avatar in chat conversations. User avatar is managed in User Profile. +settings.appearance.avatar.ai.label=AI Avatar +settings.appearance.avatar.select=Select +settings.log.level=Log Level +settings.log.level.description=Control the verbosity of application logs +settings.log.viewer=Log Files +settings.log.viewer.description=View application logs and diagnostics +settings.log.viewer.view=View Logs +settings.log.viewer.open_folder=Open Log Folder +settings.log.viewer.path=Log file\: {0} +settings.log.viewer.dialog.title=Application Logs +settings.log.viewer.refresh=Refresh +settings.log.viewer.copy=Copy to Clipboard +settings.log.viewer.copied=Copied\! +settings.log.viewer.loading=Loading logs... +settings.log.viewer.error=Error loading logs +settings.log.viewer.empty=No logs available + +# Developer Mode +settings.developer.mode=Developer Mode +settings.developer.mode.description=Show detailed information about AI responses, prompts, and session metadata for debugging and development purposes. + +# Proxy Settings +settings.proxy.title=Proxy Configuration +settings.proxy.description=Configure HTTP proxy for all network connections to AI providers +settings.proxy.guide=View Proxy Configuration Guide +settings.proxy.type=Proxy Type +settings.proxy.type.none=No Proxy +settings.proxy.type.none.description=Direct connection without proxy +settings.proxy.type.http=HTTP Proxy +settings.proxy.type.http.description=Standard HTTP proxy server +settings.proxy.type.https=HTTPS Proxy +settings.proxy.type.https.description=HTTPS proxy server (uses same protocol as HTTP) +settings.proxy.type.socks5=SOCKS5 Proxy +settings.proxy.type.socks5.description=SOCKS5 proxy for advanced networking and privacy +settings.proxy.type.system=System Proxy +settings.proxy.type.system.description=Use operating system proxy settings automatically +settings.proxy.host=Proxy Host +settings.proxy.port=Proxy Port +settings.proxy.authentication=Proxy Authentication (Optional) +settings.proxy.authentication.description=Leave blank if your proxy doesn't require authentication +settings.proxy.username=Username +settings.proxy.username.placeholder=Optional +settings.proxy.password=Password +settings.proxy.password.placeholder=Optional +settings.proxy.system.info=ℹ️ Using system proxy settings from your operating system configuration +settings.proxy.socks5.no.auth.info=ℹ️ SOCKS5 authentication is not currently supported. Use SOCKS5 proxy without authentication, or create an issue on GitHub if you need this feature. + +# Web Search Settings +settings.web_search=Web Search +settings.web_search.description=Enable built-in web search so the AI can look up current information without any API key. DuckDuckGo works out of the box — upgrade to Brave or Tavily for higher quality results. +settings.web_search.title=Web Search Configuration +settings.web_search.enabled=Enabled +settings.web_search.zero_config_note=DuckDuckGo works with no setup. Select a different backend below only if you want higher-quality or higher-volume results and have an API key for that service. +settings.web_search.backend=Search Backend +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Free, no API key required. Privacy-respecting default. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Fast, independent index. Requires a free Brave Search API key. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=AI-optimised results with optional answer extraction. Requires a Tavily API key. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Privacy-respecting meta-search via your own SearxNG instance. No API key needed. +settings.web_search.api_key=API Key +settings.web_search.api_key.placeholder=Paste your API key here +settings.web_search.get_api_key=Get a free API key ↗ +settings.web_search.endpoint=SearxNG Instance URL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=Test Search +settings.web_search.test.running=Testing... +settings.web_search.test.success=✅ Search is working +settings.web_search.test.fail=❌ {0} + +# User Profile +user.profile.default_name=Guest User +user.profile.menu=User Profile Menu +user.profile.title=User Profile +user.profile.avatar=Avatar +user.profile.avatar.click_to_change=Click to change avatar +user.profile.basic_info=Basic Information +user.profile.name=Name +user.profile.email=Email +user.profile.email.placeholder=your.email@example.com +user.profile.occupation=Occupation +user.profile.occupation.placeholder=e.g., Software Developer, Designer, Student +user.profile.location=Location +user.profile.location.placeholder=e.g., San Francisco, CA +user.profile.bio=Bio +user.profile.bio.placeholder=Tell us a bit about yourself... +user.profile.interests=Interests +user.profile.interests.description=Select topics you're interested in to help personalize your AI experience +user.profile.interests.custom=Custom Interests +user.profile.interests.custom.placeholder=e.g., Machine Learning, Photography +user.profile.interests.custom.hint=Separate multiple interests with commas + +# Welcome Dialog (First Run) +welcome.title=Welcome to Askimo\! +welcome.subtitle=Help us personalize your AI experience +welcome.avatar.optional=Click to add photo (optional) +welcome.name=Your Name +welcome.name.placeholder=e.g., John Doe +welcome.occupation=Occupation +welcome.occupation.placeholder=e.g., Software Developer +welcome.interests=What are you interested in? +welcome.interests.description=Select a few topics to help us tailor your experience +welcome.skip=Set up later +welcome.get_started=Get Started +welcome.required_note=* Required field + +# User Menu +user.menu.edit_profile=Edit Profile +user.menu.settings=Settings +user.menu.about=About Askimo +user.menu.logout=Sign Out + +# User Interest Categories +user.interest.technology=Technology +user.interest.science=Science +user.interest.travel=Travel +user.interest.politics=Politics +user.interest.business=Business +user.interest.health=Health +user.interest.arts=Arts +user.interest.sports=Sports +user.interest.cooking=Cooking +user.interest.literature=Literature +user.interest.music=Music +user.interest.movies=Movies +user.interest.gaming=Gaming +user.interest.finance=Finance +user.interest.education=Education +user.interest.environment=Environment + +# Actions +action.delete=Delete +action.remove=Remove +action.edit=Edit +action.pin=Pin to sidebar +action.unpin=Unpin from sidebar +action.open=Open +action.export=Export +action.save=Save +action.rename=Rename +action.cancel=Cancel +action.create=Create +action.ok=OK +action.yes=Yes +action.no=No +action.close=Close +action.show.more=Show more +action.show.less=Show less +action.back=Back +action.next=Next +action.retry=Try Again +action.done=Done +action.refresh=Refresh + +# Happiness Gate (shown before Star Prompt) +happiness.gate.title=How are you finding Askimo? +happiness.gate.subtitle=Let us know how we're doing +happiness.gate.happy=Yes, I'm loving it\! 😍 +happiness.gate.neutral=It's okay 🙂 +happiness.gate.unhappy=Not really 😕 + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=What's not working for you? +feedback.dialog.subtitle=Select all that apply — your input goes straight to the team. +feedback.comment.label=Tell us more (optional) +feedback.comment.placeholder=Describe the issue or share your thoughts… +feedback.email.label=Your email (optional) +feedback.email.placeholder=you@example.com +feedback.email.hint=Only used to follow up on your feedback. We'll never spam you. +feedback.action.skip=Skip +feedback.action.send=Send Feedback +feedback.thanks.title=Thank you for your feedback\! +feedback.thanks.message=Your input helps us make Askimo better. We really appreciate it. +feedback.thanks.close=Close + +feedback.remind.title=No worries\! +feedback.remind.message=You can share feedback anytime from the Help menu → Share Feedback. +feedback.remind.got.it=Got it + +# Feedback reasons +feedback.reason.inaccurate=AI responses aren't accurate +feedback.reason.slow=It's too slow +feedback.reason.missing.feature=Missing a feature I need +feedback.reason.broken=Something is broken +feedback.reason.hard.to.use=It's hard to use +feedback.reason.integration=Integration issues +feedback.reason.privacy=Privacy concerns +feedback.reason.other=Something else + +# Star Prompt +star.prompt.title=Enjoying Askimo? Help spread the word 💙 +star.prompt.message=Askimo is free and open-source, built with community support. Two quick ways to help others discover it\: +star.prompt.star.button=Star on GitHub +star.prompt.star.description=Show your support and help others find the project. +star.prompt.share.button=Share +star.prompt.share.description=Tell your network about Askimo on X, LinkedIn, or Facebook. +star.prompt.maybe.later=Maybe later +star.prompt.already.starred=Already starred ✓ +star.prompt.social.proof=⭐ Join {0} people who already starred Askimo +star.prompt.thanks.title=Thank you so much\! 🌟 +star.prompt.thanks.message=Your support means a lot and helps us keep building Askimo. +star.prompt.thanks.done=Done ✓ +star.prompt.remind.title=No worries\! +star.prompt.remind.message=You can support us anytime from the Help menu → Support Askimo. +star.prompt.remind.got.it=Got it + +# Analytics Settings (Advanced section toggle) +settings.analytics.title=Anonymous Analytics +settings.analytics.description=Share anonymous feature usage data with the Askimo team to help prioritize what to build next. No conversations, prompts, file contents, or API keys are ever collected. + +# Hardware Acceleration Settings (Advanced section toggle) +settings.hardware.acceleration.title=Hardware Acceleration +settings.hardware.acceleration.description=Use GPU-accelerated rendering for smoother UI performance. Disable this if you experience graphical issues. +settings.hardware.acceleration.description.windows=Use GPU-accelerated rendering (Direct3D/OpenGL) for smoother UI performance. Disable this if you experience flickering or erratic refresh rates with G-Sync or FreeSync displays. +settings.hardware.acceleration.restart.notice=Restart Askimo for this change to take effect. +settings.ui.scale.title=Display Scale +settings.ui.scale.description=Adjust the overall UI scale. A restart is required for changes to take effect. +settings.ui.scale.option.system.default=System default +settings.ui.scale.restart.notice=Restart Askimo for the scale change to take effect. +settings.ui.scale.learn.more=Learn more about HiDPI & UI Scale +settings.hardware.acceleration.restart.title=Restart Required +settings.hardware.acceleration.restart.message=Please restart Askimo for the rendering change to take effect. +settings.hardware.acceleration.vrr.hint.title=G-Sync / FreeSync Detected +settings.hardware.acceleration.vrr.hint.message=Your display appears to use a high refresh rate, which may be paired with G-Sync or FreeSync. Some users experience flickering or erratic frame rates with hardware-accelerated rendering in this configuration. Would you like to switch to software rendering? (Requires restart) +settings.hardware.acceleration.vrr.hint.disable=Switch to Software Rendering +settings.hardware.acceleration.vrr.hint.keep=Keep Hardware Acceleration + +# File operations +file.overwrite.title=File Already Exists +file.overwrite.message=This file already exists. Do you want to overwrite it? +file.overwrite.confirm=Overwrite +file.name.too.long=The filename is too long. Please use a shorter filename (maximum 255 characters). + +# About +about.title=About {0} +about.version=Version +about.buildDate=Build Date +about.buildJdk=Build JDK +about.license=License +about.description=Description +about.description.text=A local-first AI agent platform for desktop and CLI. Chat with multiple providers (OpenAI, Anthropic, Gemini, xAI, Ollama, LM Studio and more), retrieve knowledge from local files and URLs via RAG, run multi-step AI workflows with Plans, execute scripts, and connect external tools via MCP—all on your machine. +about.copyright=Copyright (c) {0} {1} +about.runtime.info=Runtime Information +about.links=Links + +# Keyboard Shortcuts +shortcut.category.global=Global +shortcut.category.file=File +shortcut.category.view=View +shortcut.category.project=Project +shortcut.category.terminal=Terminal +shortcut.category.search=Search +shortcut.category.input=Input +shortcut.new.chat=New Chat +shortcut.new.terminal=New Terminal +shortcut.create.project=Create New Project +shortcut.export.backup=Export Backup +shortcut.import.backup=Import Backup +shortcut.search.in.chat=Search in Chat +shortcut.global.search=Global Search +shortcut.toggle.chat.history=Toggle Chat History +shortcut.open.settings=Open Settings +shortcut.stop.ai.response=Stop AI Response +shortcut.quit.application=Quit Application +shortcut.navigate.to.sessions=Navigate to Sessions +shortcut.navigate.to.projects=Navigate to Projects +shortcut.navigate.to.bookmarks=Navigate to Bookmarks +shortcut.enter.fullscreen=Enter Full Screen +shortcut.close.search=Close Search +shortcut.next.search.result=Next Search Result +shortcut.previous.search.result=Previous Search Result +shortcut.attach.file=Attach File +shortcut.send.message=Send Message +shortcut.new.line=New Line + +# Chat View +chat.welcome=Welcome to Askimo\!\nStart a conversation by typing a message below. +chat.no.active.session=Select a session from the sidebar or start a new chat +chat.search.placeholder=Search in conversation... +chat.search.no.results=No results +chat.search.not.found=No messages found matching "{0}" + +# Global Search +global.search.title=Search in Sessions +global.search.query=Search Query +global.search.query.placeholder=Search across all sessions... +global.search.filter.date=Date Range +global.search.sort.by=Sort By +global.search.button=Search + +# Date Filter Options +global.search.date.all.time=All Time +global.search.date.today=Today +global.search.date.last.7.days=Last 7 Days +global.search.date.last.30.days=Last 30 Days +global.search.date.last.3.months=Last 3 Months +global.search.date.last.year=Last Year + +# Sort By Options +global.search.sort.relevance=Relevance +global.search.sort.date.newest=Date (Newest First) +global.search.sort.date.oldest=Date (Oldest First) + +# Project Filter Options + +# Search States +global.search.searching=Searching... +global.search.no.results=No results found +global.search.no.results.hint=Try different search terms or filters +global.search.initial.message=Enter a search query to begin +global.search.results.count={0} result found +global.search.results.count.plural={0} results found + +# Rest of chat view strings +chat.directive=Directive +chat.directive.new=New Directive +chat.directive.manage=Manage Directives +chat.directive.learn.more=Learn how to use directives +chat.attach.file=Attach File ({0}+A) +chat.attach.file.menu=Add Attachments +chat.drop.files=Drop files to attach to the conversation +chat.create.image.menu=Create Image +chat.create.image.mode=Image +chat.create.image.mode.cancel=Cancel image creation mode +chat.image.model.missing.title=Image model not configured +chat.image.model.missing.message=No image model is set for {0}. Open Settings > AI Provider > Image Generation Models and set a model name first. +chat.tools.button=Available Tools +chat.tools.button.disabled=Available Tools ({0} disabled) +chat.tools.button.model.no.support=Tools are not supported by this model +chat.tools.popup.title=Available Tools +chat.tools.popup.loading=Loading servers... +chat.tools.popup.no.servers.global=No global MCP servers configured. +chat.tools.popup.manage=Manage MCP Servers +chat.tools.server.scope.global=Global +chat.tools.server.scope.project=Project +chat.tools.server.scope.builtin=Built-in +chat.tools.tool.no.description=No description available +chat.reasoning.effort.label=Thinking +chat.reasoning.effort.tooltip=Reasoning effort — controls how deeply the model thinks before responding +chat.reasoning.effort.off=Off +chat.reasoning.effort.off.description=Disables extended reasoning. The model responds directly without deep thinking. +chat.reasoning.effort.low=Low +chat.reasoning.effort.low.description=Faster response, lower cost. Best for straightforward tasks. +chat.reasoning.effort.medium=Medium +chat.reasoning.effort.medium.description=Balanced depth and speed. Suitable for most tasks. +chat.reasoning.effort.high=High +chat.reasoning.effort.high.description=Thorough reasoning, higher cost. Best for complex problem-solving. +chat.input.placeholder=Type your message... (Enter to send, Shift+Enter for new line) +chat.input.placeholder.hint.attach=Attach files with {0}+A, or drag and drop them here +chat.select.file=Select File(s) +chat.attachment.remove=Remove attachment +chat.attachment.preview.loading=Loading preview… +chat.attachment.preview.file.not.found=(File not found) +chat.attachment.preview.too.large=(File too large to preview) +chat.attachment.preview.cannot.read=(Cannot read file\: {0}) +chat.attachment.preview.more.lines={0} more lines + +# Sessions View +session.tooltip.started=Started +session.tooltip.last.activity=Last activity +sessions.title=Chat Sessions +sessions.col.title=Title +sessions.col.created=Created +sessions.col.updated=Updated +sessions.error=❌ {0} +sessions.empty=No chat sessions found. +sessions.empty.hint=💡Start a new conversation to create your first session\! +sessions.search.placeholder=Search by title… +sessions.search.empty=No sessions match "{0}". + +# Generic table pagination controls +table.page.size.label=Rows per page\: +table.page=Page {0} of {1} +table.page.previous=Previous page +table.page.next=Next page + +# SessionsViewModel Errors +sessions.error.loading=Failed to load sessions. Please try again. +sessions.error.deleting=Failed to delete session. Please try again. +sessions.error.updating=Failed to update session. Please try again. +sessions.error.renaming=Failed to rename session. Please try again. +sessions.error.not.found=Session not found. +sessions.error.rename.failed=Failed to rename session. + +# ChatSessionService Errors +# Update Check +update.dialog.title=Software Update +update.dialog.new.version.available=A new version of Askimo is available\! +update.urgency.medium=You are {0} versions behind — you may be missing important bug fixes and new features. +update.urgency.high=You are {0} versions behind — you are missing significant improvements. Please update soon. +update.dialog.current.version.label=Current Version +update.dialog.new.version.label=New Version +update.dialog.release.date=Release Date +update.dialog.release.notes=What's New +update.dialog.download=Download Now +update.dialog.how.to.update=How to Update +update.dialog.later=Later +update.dialog.skip.version=Skip This Version +update.check.up.to.date=You're using the latest version\! +update.check.failed=Update Check Failed + +# Event Names +event.update.available=🚀 New Version Available +event.details.action=Release Notes +event.update.download=Download Now +event.notification.empty=No events yet +event.notification.clear=Clear +event.notification.clear.all=Clear All +event.notification.group.errors=Background Errors +event.shell.error=Background Error +event.shell.error.cause.show=Show technical details +event.shell.error.cause.hide=Hide technical details + +# Settings View +settings.font.family.ui=UI Font Family +settings.font.family.code=Code Font Family +settings.font.size=Font Size +settings.font.line.spacing=Line Spacing +settings.shortcuts=Keyboard Shortcuts +settings.shortcuts.description=View all available keyboard shortcuts to improve your productivity +settings.shortcuts.search=Search shortcuts... +settings.shortcuts.no_results=No shortcuts match your search +settings.app.language=Application Language +settings.app.language.translation.help=See something wrong? Help us improve the translation. +settings.app.language.translation.contribute=Contribute on Crowdin +settings.ai.response.language=Preferred response language +settings.ai.response.language.description=Force AI to respond in a specific language (leave empty for auto-detect) +settings.ai.response.language.auto=Auto-detect +settings.ai.response.language.tooltip=AI auto-detects your language, but override when\:\n• Language learning (immersive practice)\n• Professional consistency (e.g., all code docs in English)\n• RAG optimization (match your knowledge base language)\n• Teaching (ask in one language, explain in another)\n• Prevent unwanted language switching +settings.model.select=Select a model for {0}\: +settings.model.loading=Loading models... +settings.model.none=No models available +settings.model.select.title=Select Model +settings.model.current=Current Model +settings.model.selected=Selected Model +settings.model.new=New Model +settings.model.use.default=Use default +settings.model.change.description=Choose a model from the list below\: +settings.model.search=Search Models +settings.model.search.placeholder=Type to filter models... +settings.model.filtered=Showing {0} of {1} models +settings.model.no.match=No models match your search +settings.model.chat.filter.label=Chat models · {0} shown +settings.model.chat.filter.show.all=Show all {0} +settings.configure.title=Configure {0} Settings +settings.test.connection.testing=Testing... +settings.placeholder.baseurl=http\://localhost\:11434 +provider.connection.failed=Could not connect to the provider. Please verify your API key is correct (for cloud providers) or your base URL is reachable (for local providers). You can find setup instructions using the help link above. + +# Directives Dialog +directive.manage.title=Manage Directives +directive.manage.empty=No directives available. Create one to get started\! +directive.edit.name.label=Name +directive.edit.name.placeholder=Enter directive name... +directive.edit.content.label=Content +directive.edit.content.placeholder=Enter directive instructions... +directive.edit.name.required=Name is required +directive.edit.content.required=Content is required +directive.created=Created\: {0} +directive.new.title=New Directive +directive.new.guidelines=Directives guide how the AI responds to your messages. Be specific about tone, detail level, format, or any special requirements you need. +directive.new.name.placeholder=e.g., concise-code, explain-like-im-5 +directive.new.content.placeholder=Enter the directive instructions... +directive.new.apply.current=Apply to the current chat session +directive.new.create=Create +directive.edit.title=Edit Directive +directive.edit.save=Save Changes +directive.scope.team=Shared +directive.export=Export +directive.export.tooltip=Export all directives to a JSON file to share with others +directive.export.filename=askimo-directives +directive.import=Import +directive.import.tooltip=Import directives from a JSON file +directive.import.result=Import complete\: {0} imported, {1} renamed, {2} skipped +directive.import.error=Failed to import\: invalid or unsupported file format + +# Log Levels +log.level.error=Error +log.level.error.description=Only show errors +log.level.warn=Warning +log.level.warn.description=Show warnings and errors +log.level.info=Info +log.level.info.description=Show general information (default) +log.level.debug=Debug +log.level.debug.description=Show detailed debug information +log.level.trace=Trace +log.level.trace.description=Show all log messages (most verbose) + +# Message Components +message.loading.previous=Loading previous messages... +message.thinking=Thinking... ({0}s) +message.thinking.section.streaming=💭 Thinking... +message.thinking.section.done=💭 Thought +message.copy=Copy message +message.copy.description=Copy message +message.edit=Edit message +code.copy=Copy code +code.copy.description=Copy code +code.run=Run +code.run.description=Run script +code.run.dialog.title=Run Code +code.run.dialog.message=Do you want to paste the command into the terminal, or execute it immediately? +code.run.dialog.paste=Paste Only +code.run.dialog.execute=Execute +message.edit.description=Edit message +message.editing.banner=Editing message +message.editing.banner.from=Editing message from {0} +message.cancel.edit=Cancel edit +message.send=Send +message.update.regenerate=Update & Regenerate +message.ai.edit=Edit AI response +message.ai.edit.description=Edit this AI response +message.ai.edit.content.label=AI Response Content +message.ai.try.again=Try again +message.ai.try.again.description=Resend the previous message and get a new response +message.ai.try.again.confirm.title=Regenerate response? +message.ai.try.again.confirm.message=This will delete all messages after this point. Do you want to continue? +message.ai.try.again.confirm.cancel=Cancel +message.ai.try.again.confirm.confirm=Regenerate +message.ai.fork=Fork session from here +message.ai.fork.description=Fork this conversation into a new independent session +message.ai.export.pdf=Export as PDF +message.ai.export.pdf.dialog.title=Save AI Response as PDF +message.bookmark=Bookmark message +message.bookmark.remove=Remove bookmark +message.bookmark.description=Bookmark this message +message.edited.indicator=(edited) +message.date.today=Today +message.date.yesterday=Yesterday +message.token.usage={0} tokens · {1} in / {2} out +message.token.usage.tooltip=Tokens used by this response.\nInput\: your prompt + context sent to the AI.\nOutput\: the AI-generated reply. + +# Bookmarks +chat.bookmarks.button.tooltip=Bookmarks +chat.bookmarks.popover.title=Pinned messages +chat.bookmarks.popover.empty.title=No bookmarks yet +chat.bookmarks.popover.empty.hint=Pin any message using the bookmark icon below it +bookmarks.title=Bookmarks +bookmarks.empty.title=No bookmarks yet +bookmarks.empty.hint=Bookmark any message using the pin icon below it +bookmarks.session.untitled=Untitled conversation +bookmarks.message.count={0} pinned +bookmarks.role.user=You +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=Running tool... +tool.call.header.done=Used {0} tool(s) +tool.call.status.done=Done +tool.call.status.failed=Failed +tool.call.detail.arguments=Arguments +tool.call.detail.result=Result + +attachment.download=Download attachment +attachment.download.description=Download this file attachment +attachment.save.file=Save Attachment +outdated.expand=Expand outdated messages +outdated.collapse=Collapse outdated messages +outdated.branch.header={0} outdated messages from previous edit (click to expand) +outdated.label=outdated + +# Provider Dialog +provider.manage.title=Manage Providers +provider.type.picker.title=Choose Provider Type +provider.type.picker.prompt=Select the type of provider to add\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Add Provider +provider.no.instances.hint=No providers configured yet. Click "Add Provider" to get started. +provider.model.panel.select.hint=Select a provider on the left to browse its models +provider.model.panel.model.count={0} models +provider.model.default.badge=Default +provider.instance.name.label=Instance name +provider.instance.name.placeholder=e.g. "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=A provider named "{0}" already exists +provider.setup.required.title=Setup AI Provider +provider.setup.required.message=Before you can start chatting, you need to set up an AI provider. Please select a provider from the list and configure it. +provider.setup.required.button=Set Up Provider +provider.configure.prompt=Configure provider\: +provider.setup.guide=How to set up {0} +provider.apikey.stored=API key stored securely +provider.apikey.enter=Enter API key +provider.apikey.security.message=🔒 Your API key is encrypted and stored securely. We never share your data. +provider.apikey.security.link=Learn how we protect your data +provider.not.set=Not set + +# Provider Configuration - OpenAI +provider.openai.apikey.description=Your OpenAI API key from https\://platform.openai.com/account/api-keys +provider.openai.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. +provider.openai.setup.help=💡To use OpenAI, you need to provide an API key.\n\n1. Get your API key from\: https\://platform.openai.com/account/api-keys\n2. Then set it in the Settings or using\: \:change-settings\n\nGet an API key here\: https\://platform.openai.com/api-keys + +# Provider Configuration - Anthropic +provider.anthropic.apikey.description=Your Anthropic API key from https\://console.anthropic.com/ +provider.anthropic.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. +provider.anthropic.setup.help=💡To use Anthropic, you need to provide an API key.\n\n1. Get your API key from\: https\://console.anthropic.com/\n2. Then set it in the Settings or using\: \:change-settings +provider.anthropic.max_tokens.label=Max Tokens +provider.anthropic.max_tokens.description=Maximum tokens the model can generate per response (thinking + answer combined). +provider.anthropic.thinking_budget_tokens.label=Thinking Budget Tokens +provider.anthropic.thinking_budget_tokens.description=Max tokens Anthropic can spend on thinking. Set to 0 to let the model decide automatically (recommended). +provider.anthropic.thinking_max_tokens.label=Thinking Max Tokens +provider.anthropic.thinking_max_tokens.description=Total token cap when thinking is active (thinking + answer). Set to 0 to use Max Tokens instead. + +# Provider Configuration - Gemini +provider.gemini.apikey.description=Your Google AI Studio API key from https\://aistudio.google.com/app/apikey +provider.gemini.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. +provider.gemini.setup.help=💡To use Gemini, you need to provide an API key.\n\n1. Get your API key from\: https\://aistudio.google.com/app/apikey\n2. Then set it in the Settings or using\: \:change-settings + +# Provider Configuration - XAI +provider.xai.apikey.description=Your XAI API key from https\://console.x.ai/ +provider.xai.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. +provider.xai.setup.help=💡To use XAI, you need to provide an API key.\n\n1. Get your API key from\: https\://console.x.ai/\n2. Then set it in the Settings or using\: \:change-settings + +# Provider Configuration - Ollama +provider.ollama.baseurl.description=The base URL for your Ollama instance (default\: http\://localhost\:11434) +provider.ollama.setup.help=💡To use Ollama, you need to have it running locally.\n\n1. Install Ollama from\: https\://ollama.ai/\n2. Start Ollama service\n3. Optionally configure the base URL if not using default + +# Provider Configuration - Docker AI +provider.docker.baseurl.description=The base URL for your Docker AI instance (default\: http\://localhost\:12434) +provider.docker.setup.help=💡To use Docker AI, you need to have it running locally.\n\n1. Ensure Docker AI is installed and running\n2. Start Docker AI service\n3. Optionally configure the base URL if not using default + +# Provider Configuration - LocalAI +provider.localai.baseurl.description=The base URL for your LocalAI instance +provider.localai.setup.help=💡To use LocalAI, you need to have it running.\n\n1. Install and start LocalAI\n2. Configure the base URL where LocalAI is accessible + +# Provider Configuration - LMStudio +provider.lmstudio.baseurl.description=The base URL for your LMStudio instance (default\: http\://localhost\:1234) +provider.lmstudio.setup.help=💡To use LMStudio, you need to have it running locally.\n\n1. Install LMStudio from\: https\://lmstudio.ai/\n2. Start the local server\n3. Optionally configure the base URL if not using default +provider.lmstudio.openai.compat.info=Askimo uses OpenAI-compatible endpoints (/v1), not the native LMStudio API (/api/v1/). + +# Provider Configuration - Open AI Compatible +provider.openai_compatible.baseurl.description=The base URL for your OpenAI Compatible instance +provider.openai_compatible.apikey.description=API key for the provider (optional - leave blank if the endpoint does not require authentication) +provider.openai_compatible.apikey.stored=API key already stored securely. Leave blank to keep existing key, or enter a new one to update. + +# System Resources +system.share.feedback=Share feedback +system.ai.provider.tooltip=AI Provider\: {0}\nClick to configure +system.diagnostics.title=System Diagnostics +system.diagnostics.resources=Resources +system.diagnostics.jvm.memory=JVM Memory (used / total) +system.diagnostics.cpu.usage=CPU Usage +system.diagnostics.telemetry=Telemetry + +# Telemetry export +telemetry.export.csv=Export CSV +telemetry.export.dialog.title=Export Telemetry as ZIP +telemetry.export.error.title=Export Failed +telemetry.export.error.message=Failed to export telemetry data\: {0} + +# Telemetry +telemetry.reset=Reset telemetry data +telemetry.title=📊 Session Metrics +telemetry.no.data=No metrics collected yet. Send a message to see telemetry data. +telemetry.rag.efficiency=RAG Efficiency +telemetry.rag.triggered={0}/{1} triggered +telemetry.classification=Classification +telemetry.classification.time=avg decision time +telemetry.retrieval=Retrieval +telemetry.retrieval.chunks={0} chunks avg +telemetry.tab.rag=RAG +telemetry.tab.llm=LLM +telemetry.rag.total.queries=Total Queries +telemetry.rag.triggered.label=Triggered +telemetry.rag.skipped.label=Skipped +telemetry.llm.col.provider=Provider +telemetry.llm.col.model=Model +telemetry.llm.col.calls=Calls +telemetry.llm.col.tokens=Tokens +telemetry.llm.col.avg.duration=Avg Duration +telemetry.llm.col.errors=Errors +telemetry.llm.col.total=Total + +# Developer Mode +developer.menu.show.session.summary=Show Session Summary +developer.session.memory.title=Session Memory +developer.session.memory.loading=Loading session memory... +developer.session.memory.not.found=No memory found for this session +developer.session.memory.summary=Memory Summary +developer.session.memory.messages=Memory Messages +developer.session.memory.word.count={0} words +developer.session.memory.empty=(Empty) + +# Export Format - Markdown +export.format.markdown.name=Markdown +export.format.markdown.description=Human-readable text format +export.format.markdown.benefit.1=Easy to read and edit +export.format.markdown.benefit.2=Works in any text editor +export.format.markdown.benefit.3=Perfect for documentation +export.format.markdown.benefit.4=GitHub compatible + +# Export Format - JSON +export.format.json.name=JSON +export.format.json.description=Structured data format +export.format.json.benefit.1=Machine-readable +export.format.json.benefit.2=Easy to parse and process +export.format.json.benefit.3=Can be re-imported +export.format.json.benefit.4=Perfect for integrations + +# Export Format - HTML +export.format.html.name=HTML +export.format.html.description=Formatted web page +export.format.html.benefit.1=Beautiful presentation +export.format.html.benefit.2=View in any browser +export.format.html.benefit.3=Professional appearance +export.format.html.benefit.4=Easy to share + +# Error Messages +error.network=⚠️ Cannot connect to AI service{endpoint}\n\nPlease check\:\n• Your internet connection\n• AI service URL (check settings)\n• Firewall settings\n• Service availability +error.authentication=⚠️ API key is invalid or missing{provider}\n\nFix this by setting your API key in Settings. +error.model_not_found=⚠️ Model not found\: {model}\n\nThis model may have been deprecated or removed by the provider. Please select a different model. +error.provider_not_configured=⚠️ No AI provider configured.\n\nTo start chatting\:\n1. Open Settings\n2. Select an AI provider (OpenAI, Ollama, Anthropic, etc.)\n3. Enter your API key or configure the connection +error.rate_limit=⚠️ Rate limit exceeded\n{retryAfter}\n\nYou''ve reached your API usage limit. Please wait before sending more messages. +error.insufficient_credits=⚠️ Insufficient API credits\n\nYour credit balance has been exhausted.\n\nPlease go to Plans & Billing to top up your credits.\n\nerror.timeout\=⚠️ Request timed out after {timeout} seconds\n\nThis might be due to\:\n• High server load - try again in a moment\n• Complex query - try simplifying\n• Network latency +error.timeout=⚠️ Request timed out after {timeout} seconds\n\nPossible causes\:\n• High server load – please try again later\n• Complex request – simplify your input\n• Network delays +error.context_length=⚠️ Context window exceeded\n\nThe total input (conversation history + your message + attachments) is too large for this model to process.\n\nTo fix this\:\n• Start a new chat session to clear the conversation history\n• Shorten your message or remove large attachments\n• If using a local model (Ollama / LM Studio / Docker), increase the context size in its settings\n• Switch to a model with a larger context window +error.invalid_request=⚠️ Invalid request\: {details}\n\nPlease check your input and try again. +error.local_server=⚠️ Local AI server error\!\n\nThe AI server process crashed or failed to load the model. This is not caused by Askimo.\n\nPossible causes\:\n• The model file is corrupted or incomplete — try re-downloading it\n• Not enough RAM/VRAM — try a smaller quantization (e.g. Q4 instead of Q8)\n• Unsupported model format for the current server version\n• The server process was killed by the OS (out-of-memory)\n\nWhat to do\:\n1. Check your local AI server logs for the full error\n2. Restart the server and try again\n3. Re-pull or re-download the model\n4. Try a different model or quantization level\n\nTechnical details\: {details} +error.system=⚠️ System Error\n\nAn unexpected error occurred\: {errorCode}\n\nPlease contact Askimo support with\:\n• What you were doing\n• The error code above\n• The timestamp + +# Model Availability Errors +error.model.not_available.title.chat=Model Not Available +error.model.not_available.title.embedding=Embedding Model Not Available +error.model.not_available.message.chat=Model ''{0}'' is not available. +error.model.not_available.message.embedding=Embedding model ''{0}'' is not available in your local provider.\n\nGo to Settings → AI Provider and select an available embedding model under the provider configuration card. +error.model.not_available.config_link=Configure Embedding Model +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration + +# Generic Application Errors +error.app.title=Something Went Wrong +error.app.message=An unexpected error occurred\: {0} + +# Send Message Errors +error.send_message.title=Failed to Send Message + +# Indexing Errors +error.indexing.model_not_found.title=Embedding Model Not Found +error.indexing.model_not_found.message=The embedding model ''{0}'' was not found. Please pull or enable this embedding model from {1} before indexing. +error.indexing.input_too_large.title=Embedding Input Too Large +error.indexing.input_too_large.message=The embedding model rejected one or more segments from [{0}] because the token count exceeds the model''s maximum context size. Reduce the chunk size in Settings → Indexing → Max chars per chunk, then re-index. +error.indexing.io_error.title=IO Error +error.indexing.io_error.message=An IO error occurred during indexing +error.indexing.unknown.title=Indexing Error +error.indexing.unknown.message=An unknown error occurred during indexing + +# Settings - Embedding Models (for RAG features) +settings.embedding.rag_feature_only=Embedding Model Status (Required for RAG Features Only) +settings.embedding.not_available_rag_only=⚠️ {0}.\n\nNote\: This only affects project-based RAG features. Regular chat functionality will work normally. +settings.embedding.provider_unreachable=⚠️ Cannot connect to provider\: {0}.\n\nNote\: Embedding models are only needed for project-based RAG features. +settings.embedding.check_failed=Failed to check embedding model\: {0} +settings.embedding.download_model=Download Embedding Model +settings.embedding.download_success=✅ Successfully downloaded embedding model\: {0} +settings.embedding.download_failed=❌ Failed to download embedding model\: {0}. Please try manually\: ollama pull {0} +settings.embedding.download_error=Error downloading model\: {0} +settings.embedding.anthropic_no_embedding=Anthropic does not provide embedding models +settings.embedding.xai_no_embedding=xAI does not provide embedding models + +# RAG Configuration +settings.rag.title=RAG Configuration +settings.rag.description=Configure Retrieval-Augmented Generation parameters for project-based knowledge retrieval +settings.rag.vector.max.results=Vector Search Max Results +settings.rag.vector.max.results.hint=Maximum documents from vector search (default\: 20) +settings.rag.vector.min.score=Vector Search Min Score +settings.rag.vector.min.score.hint=Minimum similarity score 0.0-1.0 (default\: 0.3) +settings.rag.hybrid.max.results=Hybrid Max Results +settings.rag.hybrid.max.results.hint=Final document count after fusion (default\: 15) +settings.rag.rank.fusion.constant=Rank Fusion Constant +settings.rag.rank.fusion.constant.hint=RRF constant for hybrid ranking (default\: 60) +settings.rag.use.absolute.paths=Use Absolute Paths in Citations +settings.rag.use.absolute.paths.hint=Show full file paths in AI responses for better clarity when multiple files have the same name +settings.rag.embedding.title=Embedding Configuration +settings.rag.embedding.description=Configure text chunking and embedding parameters +settings.rag.embedding.max.chars.per.chunk=Max Characters Per Chunk +settings.rag.embedding.max.chars.per.chunk.hint=Maximum characters in each text chunk (default\: 1500) +settings.rag.embedding.chunk.overlap=Chunk Overlap +settings.rag.embedding.chunk.overlap.hint=Number of overlapping characters between chunks (default\: 100) +settings.rag.embedding.models=Embedding Models by Provider +settings.rag.indexing.title=Indexing Configuration +settings.rag.indexing.description=Control which files are indexed and the maximum file size allowed +settings.rag.indexing.max.file.bytes=Max File Size (bytes) +settings.rag.indexing.max.file.bytes.hint=Files larger than this are skipped during indexing. Setting it too high may slow down indexing significantly. +settings.rag.indexing.supported.extensions=Supported Extensions +settings.rag.indexing.supported.extensions.hint=Comma-separated file extensions to index (e.g. kt, java, py, md). Leave empty to use the built-in defaults. +settings.rag.indexing.exclude.file.names=Excluded File Names +settings.rag.indexing.exclude.file.names.hint=Comma-separated exact file names to always skip (e.g. package-lock.json, yarn.lock). +settings.rag.indexing.binary.extensions=Binary Extensions +settings.rag.indexing.binary.extensions.hint=Comma-separated file extensions treated as binary and skipped during indexing (e.g. png, jpg, zip, exe). Leave empty to use the built-in defaults. +settings.rag.indexing.embedding.batch.size=Embedding Batch Size +settings.rag.indexing.embedding.batch.size.hint=Number of text segments sent to the embedding model per request. If indexing feels slow and you use a remote provider (OpenAI, Gemini), try increasing to 100–500. If you use a local model (Ollama, LM Studio), keep this low to avoid timeouts. + +## Settings - Models +settings.models.title=Models +settings.models.description=Configure global AI model behavior shared across all providers. +settings.models.max.tool.calling.round.trips=Max Tool-Calling Round Trips +settings.models.max.tool.calling.round.trips.hint=Maximum number of tool calls the AI can make in a single response (default\: 10). Higher values allow more complex agent tasks but increase latency and cost. + +# Memory Settings +settings.memory.title=Memory Settings +settings.memory.description=Controls how the AI manages conversation history to stay within the model's context window. +settings.memory.mode=Memory Mode +settings.memory.mode.compact=Compact +settings.memory.mode.compact.hint=Lower token cost, less detail +settings.memory.mode.compact.description=Aggressive summarization. Lower token cost, summarizes early and often. Best for very long sessions or cost-sensitive models. +settings.memory.mode.balanced=Balanced +settings.memory.mode.balanced.hint=Good quality/cost trade-off +settings.memory.mode.balanced.description=Good quality/cost trade-off. Fires summarization at 40% of the memory budget. Suitable for most sessions. +settings.memory.mode.detail=Detail +settings.memory.mode.detail.hint=High fidelity, more tokens +settings.memory.mode.detail.description=Minimal summarization. Keeps more verbatim turns and richer summaries. Best for short sessions or when precise recall matters. + +## Settings - Utility Models +settings.utility.models.title=Utility Models +settings.utility.models.uses.selected=(uses selected model) +settings.utility.models.local.note={0} is a local provider — the active chat model is used automatically for utility tasks. + +## Settings - Vision Models +settings.vision.models.title=Vision Models + +## Settings - Image Models +settings.image.models.title=Image Generation Models + +## Settings - Provider Model Config +settings.provider.model.config.title=Model Configuration +settings.provider.model.config.description=Override the default models used for specific tasks. Leave a field blank to use the provider default. +settings.provider.model.config.guide=View AI Model Configuration Guide +settings.provider.model.utility.hint=Low-cost model for background tasks (title generation, summarization, etc.) +settings.provider.model.vision.hint=Model used for image understanding, screenshots, and visual content +settings.provider.model.image.hint=Model used to generate images from text descriptions +settings.provider.model.embedding.hint=Model used to generate vector embeddings for RAG knowledge base search + +settings.model.placeholder.enter=Enter {0} model + +# File Viewer Dialog +file.viewer.title=File Viewer +file.viewer.title.with.name=File Viewer - {0} +file.viewer.dialog.close=Close +file.viewer.copy.clipboard=Copy to Clipboard +file.viewer.copied=Copied\! + +# Mermaid Chart Renderer +mermaid.setup.required.title=Mermaid CLI Required +mermaid.setup.privacy.note=Askimo renders diagrams locally to protect your privacy. +mermaid.setup.instructions.title=Setup Instructions +mermaid.setup.instructions.text=To render Mermaid diagrams in Askimo, please follow the installation guide at\: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.button.open.guide=Open Setup Guide +mermaid.setup.button.copy.diagram=Copy Diagram +mermaid.diagram.source.label=Diagram Source\: +mermaid.rendering.progress=Rendering diagram... +mermaid.error.rendering.title=Error rendering diagram +mermaid.error.unexpected.state=Unexpected state. Please try again. +mermaid.error.failed.load.image=Failed to load diagram image +mermaid.button.copy.code=Copy Code +mermaid.button.download=Download +mermaid.button.expand=Expand +mermaid.button.zoom.in=Zoom In +mermaid.button.zoom.out=Zoom Out +mermaid.button.reset.zoom=Reset Zoom +mermaid.button.retry=Retry +mermaid.feedback.copied=Copied\! + + +# Reference Material +knowledge.source.type.folder=Folder (watched for changes) +knowledge.source.type.file=Files (static) +knowledge.source.type.url=URL (web content) + +# MCP Server Management +mcp.servers.title=MCP Server Templates +mcp.servers.guide=View MCP Integration Guide +mcp.instance.add.tooltip=Add a MCP instance + +# Global MCP Instances +mcp.instance.add=MCP Instance +mcp.instances.title=MCP Instances +mcp.instances.description=These MCP instances are available +mcp.instances.empty=No MCP instances configured +mcp.instances.count={0} instance(s) +mcp.instance.server.label=Server\: {0} +mcp.instance.delete.confirm.title=Delete MCP Instance? +mcp.instance.delete.confirm.message=Are you sure you want to delete the mcp instance "{0}"? This cannot be undone. +mcp.instance.enable.tooltip=Enable this MCP instance +mcp.instance.disable.tooltip=Disable this MCP instance +mcp.instance.add.dialog.title=Add MCP Instance +mcp.instance.add.dialog.description=Create a MCP instance that will be available in Universal Chat +mcp.instance.edit.dialog.title=Edit MCP Instance +mcp.instance.edit.dialog.description=Modify the configuration of this MCP instance +mcp.instance.edit.tooltip=Edit this MCP instance +mcp.instance.field.args=Arguments (Optional) +mcp.instance.field.args.placeholder=--port 3000 --verbose +mcp.instance.field.args.hint=Command line arguments (space-separated) +mcp.instance.field.workingdir=Working Directory (Optional) +mcp.instance.field.workingdir.hint=Directory where the MCP server process will run. Relative file paths will be resolved from here. +mcp.instance.test.connection=Test Connection +mcp.instance.test.success=Connection successful +mcp.instance.test.failed=Connection failed +mcp.instance.connection.status=Connection Status +mcp.instance.connection.info=Click "Save" to test connection and create the instance + +# MCP Server Dialog +mcp.instance.field.description=Description +mcp.instance.field.description.placeholder=Brief description of what this server does +mcp.instance.field.transport=Transport Type +mcp.instance.field.command=Command Template +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} +mcp.instance.field.command.hint=Space-separated command with {{parameter}} placeholders +mcp.instance.validation.error.empty.id=Server ID cannot be empty +mcp.instance.validation.error.invalid.id.pattern=Server ID must contain only lowercase letters, numbers, and hyphens +mcp.instance.validation.error.empty.name=Server name cannot be empty +mcp.instance.validation.error.empty.command=Command template cannot be empty +mcp.instance.validation.error.empty.parameter.key=Parameter key cannot be empty +mcp.instance.validation.error.empty.parameter.label=Parameter label cannot be empty +mcp.instance.env.label=Environment Variables (Optional) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=Format\: KEY\=value or KEY\={{parameter}} (one per line) +mcp.instance.transport.stdio=Stdio (Local Process) +mcp.instance.transport.http=HTTP (Remote Server) +mcp.instance.http.url.label=URL +mcp.instance.http.url.placeholder=https\://{{host}}/mcp or https\://api.example.com/mcp +mcp.instance.http.url.hint=Server endpoint URL. Use {{parameter}} placeholders for dynamic values +mcp.instance.http.headers.label=HTTP Headers (Optional) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=Format\: Header-Name\=value or Header-Name\={{parameter}} (one per line) +mcp.instance.http.timeout.label=Timeout (ms) +mcp.instance.http.timeout.hint=Request timeout in milliseconds +mcp.instance.validation.error.empty.url=URL cannot be empty +mcp.instance.validation.error.invalid.url=URL must start with http\:// or https\:// + +# MCP Integrations (Project View) +mcp.instance.delete.tooltip=Delete MCP instance +mcp.instance.view.tools.tooltip=View available tools + +# MCP Instance Fields +mcp.instance.field.serverId=Server Type + +# Add MCP Integration Dialog +mcp.instance.name=MCP Name +mcp.instance.name.placeholder=e.g., Production Database, Project Files +mcp.instance.tools.title=Available Tools +mcp.instance.tools.count={0} tools available +mcp.instance.tool.strategy.intent=Intent-Based +mcp.instance.tool.strategy.followup=Follow-Up +mcp.instance.tool.strategy.both=Both +mcp.instance.tool.strategy.unknown=Unknown +mcp.instance.password.hide=Hide password +mcp.instance.password.show=Show password + +# MCP Tool Categories +mcp.tool.category.DATABASE.desc=Database queries and operations +mcp.tool.category.NETWORK.desc=HTTP requests and API calls +mcp.tool.category.FILE_READ.desc=File system read operations +mcp.tool.category.FILE_WRITE.desc=File system write operations +mcp.tool.category.VISUALIZE.desc=Data visualization and charting +mcp.tool.category.EXECUTE.desc=Code execution and commands +mcp.tool.category.SEARCH.desc=Search and retrieval operations +mcp.tool.category.TRANSFORM.desc=Data transformation +mcp.tool.category.VERSION_CONTROL.desc=Git and version control +mcp.tool.category.COMMUNICATION.desc=Email, messaging, notifications +mcp.tool.category.MONITORING.desc=Logging and monitoring +mcp.tool.category.WEATHER.desc=Weather data and forecasts +mcp.tool.category.WEB_SEARCH.desc=Web search and page reading +mcp.tool.category.DATETIME.desc=Date and time operations +mcp.tool.category.OTHER.desc=Unclassified tools + +# MCP Tools Dialog +mcp.tools.dialog.title=Available Tools - {0} +mcp.tools.dialog.instance.info=Instance Information +mcp.tools.dialog.parameters=Parameters +mcp.tools.dialog.loading=Loading available tools... +mcp.tools.dialog.empty=No tools available for this integration +mcp.tools.dialog.count=Found {0} tool(s) +mcp.tools.dialog.search.placeholder=Search by name or description... +mcp.tools.dialog.search.count={0} of {1} tool(s) +mcp.tools.dialog.search.empty=No tools match your search +mcp.tools.dialog.export=Export Tools +mcp.tools.dialog.export.success=Tools exported to {0} +mcp.tools.dialog.export.failed=Failed to export tools\: {0} + +# MCP Server Catalog Dialog +mcp.catalog.dialog.title=Add MCP Server +mcp.catalog.dialog.description=Choose a popular integration from the catalog, or configure one manually. +mcp.catalog.search.placeholder=Search servers… +mcp.catalog.search.empty=No servers match your search. +mcp.catalog.category.popular=Popular +mcp.catalog.card.credentials.required={0} credential(s) required +mcp.catalog.card.no.credentials=No credentials required +mcp.catalog.card.configure=Configure +mcp.catalog.action.cancel=Cancel +mcp.catalog.action.manual=Manual Setup + +# MCP Instance Template Parameters +mcp.instance.template.no.credentials=✅ No credentials required — this server works out of the box. +mcp.instance.template.config.title=Configuration +mcp.instance.template.config.description=Fill in the credentials required for this integration. Values are stored securely on your device. +mcp.instance.template.param.optional= (optional) +mcp.instance.template.advanced.show=Advanced settings +mcp.instance.template.advanced.hide=Hide advanced settings + +# RAG Sources Tree +rag.tree.expand=Expand +rag.tree.collapse=Collapse +rag.tree.folder.open=Open in File Browser +rag.tree.folder.copy.path=Copy Path +rag.tree.file.open=Open File +rag.tree.file.open.folder=Open Containing Folder +rag.tree.file.copy.path=Copy Path +rag.tree.url.open=Open in Browser +rag.tree.url.copy=Copy URL +rag.tree.remove=Remove Reference Material +rag.tree.file.preview=Preview File +rag.tree.chat.select=Add to Chat +rag.tree.chat.deselect=Remove from Chat +rag.tree.chat.selected={0} file(s) selected +rag.tree.chat.clear=Clear +rag.tree.chat.add=Add to Chat +rag.tree.search.placeholder=Search files... +rag.tree.search.clear=Clear search +rag.tree.search.indexing=Building file index... +rag.tree.search.no.results=No files match your search +rag.tree.search.results.count={0} result(s) +rag.tree.search.results.capped=Showing first {0} results +rag.tree.status.indexed=Indexed +rag.tree.status.not_indexed=Not indexed + +# File Viewer Pane +file.viewer.loading=Loading... +file.viewer.lines={0} lines +file.viewer.copy=Copy content +file.viewer.close=Close viewer +file.viewer.open.external=Open Externally +file.viewer.binary=Binary file — cannot preview as text. +file.viewer.too.large=File is too large to preview ({0} KB). Maximum is 512 KB. +file.viewer.error=Could not read file\: {0} +file.viewer.select.prompt=Select a file from the tree above to preview its contents + +# Project Side Panel +panel.tab.rag.sources=RAG Sources +panel.context.menu=Context menu +panel.context.add.material=Add Reference Material +panel.context.reindex=Reindex project +panel.reindex.confirm.title=Stop and Re-index? +panel.reindex.confirm.message="{0}" is currently being indexed. Stop the current indexing and re-index from scratch? +panel.reindex.confirm.button=Stop and Re-index +panel.reindex.confirm.cancel=Cancel +panel.collapse=Collapse panel + +# RAG Status +rag.status.started=Indexing Started +rag.status.inprogress=Indexing\: {0}% +rag.status.inprogress.unknown=Indexing... +rag.status.queued=Queued — waiting for another project to finish indexing +rag.status.ready=Ready +rag.status.failed=Indexing Failed +rag.status.not.indexed=Not Indexed + +# RAG Empty State +rag.empty.title=No Knowledge Sources +rag.empty.description=Add files or folders to enable RAG\nfor this project +rag.empty.button.add=Add Sources + +# Plans +plans.nav.title=Plans +plans.title=Plans +plans.docs.tooltip=View Plans Guide +plans.description=Run AI-powered multi-step workflows +plans.empty=No plans available +plans.run=Run Plan +plans.running=Running... +plans.clear.result=Clear +plans.result.title=Result +plans.result.pinned=Pinned result +plans.result.pin=Pin for comparison +plans.result.unpin=Remove pin +plans.export=Export +plans.export.result.pdf=Export Result as PDF +plans.export.result.word=Export Result as Word +plans.export.fullrun.pdf=Export Full Run as PDF +plans.export.fullrun.word=Export Full Run as Word +plans.steps.title=Steps +plans.steps.running=Running +plans.steps.duration.hour=h +plans.steps.duration.minute=m +plans.steps.duration.second=s +plans.steps.duration.less.than.one.second=< 1s +plans.detail.inputs=Inputs +plans.detail.how.it.works=How it works +plans.detail.step=step +plans.detail.steps=steps +plans.retry=Retry +plans.history.title=Run History +plans.history.empty=No runs yet +plans.history.restore=Restore inputs from this run +plans.editor.title.new=New Plan +plans.editor.title.edit=Edit Plan +plans.editor.label=YAML Content +plans.editor.placeholder=Paste or type your plan YAML here... +plans.editor.valid=Valid YAML +plans.editor.hint.title=Reference +plans.editor.hint.fields=Required\: id, name, steps\nOptional\: description, icon, inputs, workflow\nStep types\: text, multiline, toggle, number\nWorkflow types\: sequence, parallel, conditional +plans.editor.menu.edit=Edit YAML +plans.editor.ai.label=Generate with AI +plans.editor.ai.placeholder=Describe what you want this plan to do in plain English... +plans.editor.ai.generate=Generate +plans.editor.ai.hint=AI will generate the YAML — you can review and edit it before saving. +plans.editor.docs.link=View documentation ↗ +plans.duplicate=Duplicate & Edit +plans.tab.builtin=Built-in +plans.tab.my.plans=My Plans +plans.tab.my.plans.empty=You have no plans yet +plans.tab.my.plans.empty.hint=Duplicate a built-in plan or create your own with + +plans.followup.placeholder=Ask a follow-up question or request a change... +plans.followup.send=Send +plans.followup.label=Follow-up +plans.interactive.question.label=Question +plans.interactive.answer.placeholder=Type your answer... +plans.interactive.send=Submit Answer +plans.interactive.skip=Skip (leave blank) + +#Skills +skills.nav.title=Skills +skills.view.title=Skills +skills.view.empty=No skills yet +skills.view.empty.hint=Create skills in Settings → Skills to get started +skills.view.empty.search=No skills match your search +skills.view.manage=Manage Skills +skills.view.select.prompt=Select a skill to run +skills.view.select.hint=Select a skill from the list on the left to run it +skills.view.run=Run Skill +skills.view.run.command=Send Command +skills.view.running=Running… +skills.view.no.agent=No agent installed +skills.view.agent.not.installed=Not installed +skills.view.agent.install.hint={0} is not installed. See the installation guide. +skills.view.agent.configure=Configure agents +skills.view.agent.needs.key={0} is installed but needs an API key to run skills. +skills.view.agent.key.placeholder=Paste API key here +skills.view.response.error=Error +skills.view.workdir.change=Change +skills.view.workdir.open=Open folder +skills.view.workspace=Workspace +skills.view.workspace.empty=No files in workspace +skills.view.workspace.copy.path=Copy Path +skills.view.workspace.open.file=Open File +skills.view.workspace.open.folder=Open Containing Folder +skills.view.workspace.new=New… +skills.view.workspace.new.folder=New Folder +skills.view.workspace.new.file=New File +skills.view.workspace.new.subfolder=New Subfolder +skills.view.workspace.new.file.here=New File Here +skills.view.workspace.name.placeholder=Name +skills.view.workspace.duplicate=Duplicate +skills.view.workspace.delete.confirm.title=Delete "{0}"? +skills.view.workspace.delete.confirm.message=This action cannot be undone. +skills.view.panel.collapse=Collapse panel +skills.view.panel.expand=Expand panel +skills.view.tab.skills=Skills +skills.view.tab.workspace=Workspace +skills.view.last.run=Last run\: {0} +skills.view.category.uncategorized=Other +skills.view.search.placeholder=Search skills ... +skills.view.search.clear=Clear search +skills.view.context.placeholder=What would you like to do? (optional) +skills.view.command.mode.hint=Command mode\: input starting with / runs as an agent command. +skills.view.system.prompt.preview=System Prompt +skills.view.response.title=Response +skills.view.followup.label=Follow-up +skills.view.followup.placeholder=Ask a follow-up question or request a change... +skills.view.followup.send=Send +skills.view.history.empty=No runs yet +skills.view.copy=Copy +skills.view.system.prompt.file=file +skills.view.system.prompt.files=files +skills.view.system.prompt.also.included=Also included in agent context\: +skills.view.docs.tooltip=View Skills Guide +skills.view.mode.agentic=Agentic +skills.view.mode.manual=Manual + +# Agentic run mode +skills.agentic.run=Run +skills.agentic.goal.placeholder=Describe your goal — the agent will select the right skills automatically… +skills.agentic.skills.available={0} skills available as agent context +skills.agentic.no.skills.hint=No skills yet — add skills in Settings → Skills to give the agent specialized capabilities +skills.agentic.model.default=Default model + +# Onboarding Wizard +onboarding.title=Welcome to Askimo +onboarding.step.indicator=Step {0} of {1} +onboarding.previous=Previous +onboarding.next=Next +onboarding.finish=Start Chatting + +# Onboarding Step 0: Language +onboarding.step.language.title=🌍 Choose Your Language +onboarding.step.language.description=Select the language you'd like to use in Askimo. You can change it anytime in Settings. +onboarding.step.language.label=Language + +# Onboarding Step 1: Analytics +onboarding.step.analytics.title=Help make Askimo better for everyone +onboarding.step.analytics.description=Askimo is free and open-source. Sharing anonymous usage data is one small way to give back. It helps us understand what to build next. +onboarding.step.analytics.collected.yes.features=✅ Which features are used (e.g., RAG, MCP tools, Plans, Skills) +onboarding.step.analytics.collected.yes.version=✅ App version and OS type +onboarding.step.analytics.collected.no.conversations=❌ No conversation content or prompts +onboarding.step.analytics.collected.no.personal=❌ No personal data, files, or API keys. Ever. +onboarding.step.analytics.toggle.on=Yes, help improve Askimo ❤️ +onboarding.step.analytics.toggle.off=No thanks +onboarding.step.analytics.learn_more=Learn more about our privacy policy +onboarding.step.analytics.tagline=100% anonymous · no conversations · no personal data +onboarding.step.analytics.section.collected=What we collect +onboarding.step.analytics.section.never=What we never collect +onboarding.step.analytics.toggle.subtitle=Helps us focus on what matters most · changeable anytime in Settings → Advanced + +# Onboarding Step 1: Welcome +onboarding.step.welcome.title=👋 Welcome to Askimo\! +onboarding.step.welcome.description=Your personal AI assistant. Chat with multiple AI models, organize knowledge in projects, and automate workflows with skills and plans. +onboarding.step.welcome.feature1.title=💬 Chat with AI +onboarding.step.welcome.feature1.description=Ask questions, get help with tasks, or have a conversation with any AI model. +onboarding.step.welcome.feature2.title=📁 Organize with Projects +onboarding.step.welcome.feature2.description=Group chats and attach knowledge sources so AI always has the right context. +onboarding.step.welcome.feature3.title=⚡ Automate with Skills & Plans +onboarding.step.welcome.feature3.description=Create reusable AI workflows and multi-step plans that run automatically. + +# Onboarding Step 2: Profile +onboarding.step.profile.title=Tell us about yourself +onboarding.step.profile.description=Your profile helps Askimo personalize AI responses to suit your background and needs. You can update it anytime in Settings. +onboarding.step.profile.name.label=Your name +onboarding.step.profile.name.placeholder=Jane Smith +onboarding.step.profile.occupation.label=Occupation (optional) +onboarding.step.profile.occupation.placeholder=Software Engineer, Researcher, Designer… + +# Onboarding Step 3: Directives +onboarding.step.directives.title=✨ Make Every Reply Work for You +onboarding.step.directives.description=Write one short instruction and the AI follows it for the entire conversation. No re-explaining. No repetition. +onboarding.step.directives.feature1.title=The AI thinks like you +onboarding.step.directives.feature1.description=Tell it your role, your rules, your preferred format once. Every reply automatically follows, from the first message to the last. +onboarding.step.directives.feature2.title=Get the answer you actually want +onboarding.step.directives.feature2.description=Vague questions get vague answers. A directive like "reply in bullet points, max 5 lines" turns a generic AI into a specialist that matches how you think. +onboarding.step.directives.feature3.title=The right expert for every job +onboarding.step.directives.feature3.description=Need a patient tutor for learning and a blunt code reviewer for debugging? Keep separate directives and get the right mindset for each task. +onboarding.step.directives.link=See examples and tips +# Onboarding Step 6: Ready +onboarding.step.ready.title=🚀 You're all set\! +onboarding.step.ready.description=Everything is configured and ready to go. Start your first chat or explore the resources below. +onboarding.step.ready.link.docs=📚 Browse Documentation +onboarding.step.ready.link.providers=🔧 Configure AI Providers +onboarding.step.ready.link.github=⭐ Star us on GitHub + +# Onboarding Step 5: Persona +onboarding.step.persona.title=🎯 What do you mainly want to do? +onboarding.step.persona.description=Pick the option that sounds most like your work. Askimo will show the most relevant features. You can always change this from the View menu. +onboarding.step.persona.developer.description=Read and write code, refactor files, generate scaffolding, or run agentic tasks on your local project. +onboarding.step.persona.developer.features=Enables\: Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.researcher.description=Research topics, analyse data, write structured reports, and get knowledge-grounded answers. +onboarding.step.persona.researcher.features=Enables\: Plans, Projects (RAG) +onboarding.step.persona.manager.description=Draft emails, process meeting notes, write status reports, or run multi-step content workflows. +onboarding.step.persona.manager.features=Enables\: Plans +onboarding.step.persona.everything.description=I do a mix of things — show me all features and I will decide what to use. +onboarding.step.persona.everything.features=Enables\: Skills, Plans, Projects, MCP, RAG + +# Persona labels +persona.developer=💻 Write and review code +persona.researcher=🔬 Research and analyse +persona.manager=📋 Write and organise +persona.everything=⚡ I do a mix of things diff --git a/desktop-shared/src/main/resources/i18n/messages_vi_VN.properties b/desktop-shared/src/main/resources/i18n/messages_vi_VN.properties index b10b3a216..bd1fd7065 100644 --- a/desktop-shared/src/main/resources/i18n/messages_vi_VN.properties +++ b/desktop-shared/src/main/resources/i18n/messages_vi_VN.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - English Strings +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=Hệ thống menu.view.appearance.light=Sáng menu.view.appearance.dark=Tối menu.view.fullscreen=Chuyển sang toàn màn hình +menu.view.bookmarks=Xem dấu trang menu.terminal=Terminal menu.terminal.new=Terminal mới menu.help=Trợ giúp @@ -43,24 +44,15 @@ menu.help.share=🗣 Chia sẻ Askimo menu.help.share.x=Chia sẻ trên X / Twitter menu.help.share.linkedin=Chia sẻ trên LinkedIn menu.help.share.facebook=Chia sẻ trên Facebook -menu.help.share.text=Khám phá Askimo — ứng dụng AI miễn phí chạy cục bộ trên máy tính. Hỗ trợ Ollama, OpenAI, Anthropic và nhiều hơn. https://askimo.chat +menu.help.share.text=Khám phá Askimo — ứng dụng AI miễn phí chạy cục bộ trên máy tính. Hỗ trợ Ollama, OpenAI, Anthropic và nhiều hơn. https\://askimo.chat menu.help.share.hackernews=Bài đăng trên Hacker News menu.eventlog=Nhật ký sự kiện menu.help.model.capabilities=Mở tệp khả năng mô hình -chat.reasoning.effort.label=Đang suy nghĩ -chat.reasoning.effort.tooltip=Mức độ suy luận — kiểm soát mức độ mô hình suy nghĩ sâu như thế nào trước khi phản hồi -chat.reasoning.effort.off=Tắt -chat.reasoning.effort.off.description=Vô hiệu hóa suy luận mở rộng. Mô hình phản hồi trực tiếp mà không cần suy nghĩ sâu. -chat.reasoning.effort.low=Thấp -chat.reasoning.effort.low.description=Phản hồi nhanh hơn, chi phí thấp hơn. Tốt nhất cho các tác vụ đơn giản. -chat.reasoning.effort.medium=Trung bình -chat.reasoning.effort.medium.description=Cân bằng giữa độ sâu và tốc độ. Phù hợp cho hầu hết các tác vụ. -chat.reasoning.effort.high=Cao -chat.reasoning.effort.high.description=Suy luận kỹ lưỡng, chi phí cao hơn. Tốt nhất cho việc giải quyết các vấn đề phức tạp. menu.dev.clear.account.preferences=[Dev] Xóa cài đặt tài khoản menu.about=Giới thiệu Askimo menu.help.check.updates=Kiểm tra cập nhật... menu.help.diagnostics=Chẩn đoán hệ thống... +menu.help.support.askimo=Hỗ trợ Askimo ⭐ # Common Dialog Buttons dialog.cancel=Hủy @@ -69,16 +61,16 @@ dialog.close=Đóng # Backup and Restore backup.export.title=Xuất bản sao lưu backup.export.success.title=Đã xuất bản sao lưu -backup.export.success.message=Đã xuất bản sao lưu thành công vào:\n{0} +backup.export.success.message=Đã xuất bản sao lưu thành công vào\:\n{0} backup.export.error.title=Xuất thất bại -backup.export.error.message=Không thể xuất bản sao lưu:\n{0} +backup.export.error.message=Không thể xuất bản sao lưu\:\n{0} backup.import.title=Nhập bản sao lưu backup.import.confirm.title=Xác nhận nhập backup.import.confirm.message=Thao tác này sẽ thay thế toàn bộ dữ liệu hiện tại bằng bản sao lưu.\n\nMột bản sao lưu an toàn sẽ được tạo tự động trước khi nhập.\n\nBạn có chắc chắn muốn tiếp tục không? backup.import.success.title=Đã nhập bản sao lưu backup.import.success.message=Đã nhập bản sao lưu thành công.\n\nVui lòng khởi động lại Askimo để áp dụng tất cả thay đổi. backup.import.error.title=Nhập thất bại -backup.import.error.message=Không thể nhập bản sao lưu:\n{0} +backup.import.error.message=Không thể nhập bản sao lưu\:\n{0} # Event Log eventlog.title=Nhật ký sự kiện ({0}) @@ -117,6 +109,12 @@ discover.stat.projects=Dự án discover.stat.mcp=Máy chủ MCP discover.stat.plans=Kế hoạch discover.stat.skills=Kỹ năng +discover.customize=Tùy chỉnh +discover.customize.show_token_usage=Hiển thị thẻ sử dụng token +discover.tokens.title=Các model hàng đầu theo mức sử dụng token +discover.tokens.total=Tổng {0} +discover.tokens.view_details=Xem chi tiết +discover.tokens.empty=Chưa có dữ liệu sử dụng token. Hãy bắt đầu trò chuyện để xem thống kê tại đây. discover.explore.title=Khám phá tính năng discover.explore.mcp.title=Máy chủ MCP discover.explore.mcp.desc=Mở rộng Askimo bằng các công cụ bên ngoài và nguồn dữ liệu thông qua Model Context Protocol. @@ -151,7 +149,7 @@ session.rename.error.empty=Tiêu đề không được để trống session.export.file.chooser.title=Lưu lịch sử trò chuyện session.export.button.export=Xuất session.export.success.title=Xuất thành công -session.export.success.message=Phiên trò chuyện đã được xuất đến: +session.export.success.message=Phiên trò chuyện đã được xuất đến\: # Projects project.title=Dự án @@ -167,11 +165,11 @@ project.new.dialog.file.browse=Chọn tệp để xử lý... project.new.dialog.sources.label=Tài liệu tham khảo (tùy chọn) project.new.dialog.sources.add=Thêm nguồn project.new.dialog.error.empty.name=Tên dự án không được để trống -project.new.dialog.error.create.failed=Không thể tạo dự án: {0} +project.new.dialog.error.create.failed=Không thể tạo dự án\: {0} project.new.dialog.name.error.empty=Tên dự án không được để trống project.new.dialog.button.create=Tạo dự án project.new.dialog.button.cancel=Hủy -project.new.dialog.success.title=Dự án đã được tạo thành công! +project.new.dialog.success.title=Dự án đã được tạo thành công\! project.new.dialog.success.message=Dự án ''{0}'' đã được tạo. project.new.dialog.success.countdown=Đóng sau {0} giây{1}... project.new.dialog.success.close=Đóng ngay @@ -194,7 +192,7 @@ projects.title=Dự án projects.description=Tổ chức các cuộc trò chuyện của bạn xoay quanh một chủ đề và đính kèm các tệp, thư mục hoặc URL làm nguồn kiến thức, để AI luôn có đúng ngữ cảnh cho dự án đó. projects.error=❌ {0} projects.empty=Không tìm thấy dự án nào. -projects.empty.hint=💡 Tạo dự án mới để tổ chức các phiên trò chuyện! +projects.empty.hint=💡 Tạo dự án mới để tổ chức các phiên trò chuyện\! projects.search.placeholder=Tìm kiếm theo tên… projects.search.empty=Không có dự án nào khớp với "{0}". projects.col.name=Tên @@ -205,13 +203,16 @@ projects.sources.expand=Hiển thị tài liệu tham khảo projects.sources.collapse=Ẩn tài liệu tham khảo projects.sources.empty.title=Chưa có tài liệu tham chiếu projects.sources.empty.description=Thêm tài liệu để Askimo có thể tham chiếu khi trả lời câu hỏi của bạn -projects.sources.info.tooltip=Tài liệu tham chiếu giúp Askimo hiểu rõ bối cảnh cụ thể của bạn.\n\n\ -Thêm thư mục, tệp hoặc trang web chứa thông tin mà bạn muốn Askimo tham chiếu khi trả lời câu hỏi.\n\n\ -Ví dụ:\n\ +projects.sources.info.tooltip=Tài liệu tham chiếu giúp Askimo hiểu rõ bối cảnh cụ thể của bạn.\n\ +\n\ +Thêm thư mục, tệp hoặc trang web chứa thông tin mà bạn muốn Askimo tham chiếu khi trả lời câu hỏi.\n\ +\n\ +Ví dụ\:\n\ • Tài liệu dự án\n\ • Cơ sở tri thức của công ty\n\ • Thông số kỹ thuật\n\ -• Bài nghiên cứu\n\n\ +• Bài nghiên cứu\n\ +\n\ Askimo sẽ tìm kiếm trong các tài liệu này để cung cấp câu trả lời chính xác và phù hợp với ngữ cảnh hơn. projects.sources.type.local_folders=Thư Mục Cục Bộ projects.sources.type.local_files=Tệp Cục Bộ @@ -238,8 +239,8 @@ project.reindex=Lập chỉ mục lại dự án project.menu.tooltip=Menu dự án project.new.chat.placeholder=Cuộc trò chuyện mới trong {0} project.recent.chats=Cuộc trò chuyện gần đây -project.no.chats=Chưa có cuộc trò chuyện nào. Hãy bắt đầu một cuộc trò chuyện mới bên dưới! -project.indexing.label=Đang lập chỉ mục nguồn kiến thức: {0} +project.no.chats=Chưa có cuộc trò chuyện nào. Hãy bắt đầu một cuộc trò chuyện mới bên dưới\! +project.indexing.label=Đang lập chỉ mục nguồn kiến thức\: {0} project.indexing.queued=Đang xếp hàng lập chỉ mục - chờ dự án khác hoàn thành... project.indexing.failed=Lập chỉ mục thất bại. Hãy thử lập chỉ mục lại từ menu dự án. project.indexing.ready.label=Đã lập chỉ mục @@ -254,12 +255,11 @@ session.error.removing=Không thể xóa phiên khỏi dự án. Vui lòng thử # Settings settings.title=Cài đặt -settings.general=Chung settings.appearance=Giao diện settings.appearance.accent=Màu nhấn settings.appearance.accent.description=Tùy chỉnh an toàn một màu nhấn duy nhất. Askimo sẽ áp dụng nó cho các điểm nhấn giao diện chính và tạo các màu liên quan để đảm bảo dễ đọc. settings.appearance.accent.label=Màu nhấn (Hex) -settings.appearance.accent.invalid=Hãy nhập một màu hex hợp lệ như #0284C7 +settings.appearance.accent.invalid=Hãy nhập một màu hex hợp lệ như \#0284C7 settings.appearance.accent.swatch.primary=Chính settings.appearance.accent.swatch.primary.container=Vùng chứa settings.appearance.accent.swatch.on.primary.container=Trên vùng chứa @@ -283,7 +283,7 @@ settings.network.description=Cấu hình cài đặt mạng và proxy settings.mcp.servers=Máy chủ MCP settings.skills=Kỹ năng settings.skills.description=Skills là các tác nhân AI tái sử dụng được chạy trực tiếp trên máy của bạn. Mỗi skill là một tệp Markdown với lời nhắc hệ thống và hướng dẫn. Khi bạn chạy một skill, nó sẽ được thực thi qua {0} — đọc và ghi các tệp của bạn, chạy các lệnh shell và lặp cho đến khi công việc hoàn tất. Không yêu cầu sao chép và dán. -settings.skills.runtimes=Các môi trường chạy được hỗ trợ: +settings.skills.runtimes=Các môi trường chạy được hỗ trợ\: settings.skills.directory=Thư mục kỹ năng settings.skills.open.folder=Mở thư mục settings.skills.new.skill=Kỹ năng mới @@ -326,11 +326,11 @@ settings.skills.add.folder=Thêm thư mục settings.skills.add.folder.name=Tên thư mục settings.advanced=Nâng cao settings.about=Giới thiệu -settings.model=Mô hình -settings.provider=Nhà cung cấp settings.theme=Chủ đề settings.save=Lưu settings.cancel=Hủy +settings.model.change.button=Đổi mô hình +settings.change.button=Đổi cài đặt # Theme theme.light=Sáng @@ -339,24 +339,16 @@ theme.dark=Tối theme.dark.description=Luôn dùng chủ đề tối theme.system=Hệ thống theme.system.description=Theo chủ đề hệ thống -theme.sepia=Nâu Sepia -theme.sepia.description=Tông màu ấm áp, dễ chịu cho mắt -theme.ocean=Đại dương -theme.ocean.description=Tông xanh da trời dịu nhẹ, êm dịu và tươi mát -theme.nord=Nord -theme.nord.description=Bảng màu tối Bắc Cực, mát lạnh và tập trung -theme.sage=Xanh xô thơm -theme.sage.description=Tông xanh xám dịu, tinh tế và điềm tĩnh -theme.rose=Hồng -theme.rose.description=Màu hồng phấn nhẹ, thanh lịch và ấm áp -theme.indigo=Chàm -theme.indigo.description=Xanh tím đậm, huyền bí và sáng tạo settings.layout.density=Mật độ bố cục settings.layout.density.description=Điều chỉnh khoảng cách và phần đệm trong toàn bộ ứng dụng. layout.density.comfortable=Thoải mái layout.density.comfortable.description=Khoảng cách rộng hơn để dễ xem layout.density.compact=Gọn layout.density.compact.description=Khoảng cách chặt hơn để hiển thị nhiều nội dung hơn +layout.density.relaxed=Thoáng +layout.density.relaxed.description=Khoảng cách lớn hơn một chút để cải thiện khả năng đọc +layout.density.spacious=Rộng rãi +layout.density.spacious.description=Khoảng cách lớn nhất cho màn hình DPI siêu cao settings.background.image=Ảnh nền settings.background.image.description=Chọn ảnh nền — chọn một ảnh có sẵn hoặc dùng ảnh của riêng bạn. Một lớp phủ trong mờ giúp văn bản luôn dễ đọc. Ảnh nền hoạt động độc lập với chủ đề đã chọn. settings.background.image.browse=Duyệt @@ -371,11 +363,11 @@ settings.log.viewer=Tệp log settings.log.viewer.description=Xem log và thông tin chẩn đoán settings.log.viewer.view=Xem log settings.log.viewer.open_folder=Mở thư mục log -settings.log.viewer.path=Tệp log: {0} +settings.log.viewer.path=Tệp log\: {0} settings.log.viewer.dialog.title=Log ứng dụng settings.log.viewer.refresh=Tải lại settings.log.viewer.copy=Sao chép -settings.log.viewer.copied=Đã sao chép! +settings.log.viewer.copied=Đã sao chép\! settings.log.viewer.loading=Đang tải log... settings.log.viewer.error=Lỗi khi tải log settings.log.viewer.empty=Không có log @@ -410,6 +402,31 @@ settings.proxy.password.placeholder=Tùy chọn settings.proxy.system.info=ℹ️ Đang sử dụng cài đặt proxy của hệ điều hành settings.proxy.socks5.no.auth.info=ℹ️ Hiện tại chưa hỗ trợ xác thực SOCKS5. Vui lòng sử dụng proxy SOCKS5 không cần xác thực hoặc tạo issue trên GitHub nếu bạn cần tính năng này. +# Web Search Settings +settings.web_search=Tìm kiếm web +settings.web_search.description=Bật tìm kiếm web tích hợp để AI có thể tra cứu thông tin hiện tại mà không cần khóa API. DuckDuckGo hoạt động ngay lập tức — nâng cấp lên Brave hoặc Tavily để có kết quả chất lượng cao hơn. +settings.web_search.title=Cấu hình tìm kiếm web +settings.web_search.enabled=Đã bật +settings.web_search.zero_config_note=DuckDuckGo hoạt động mà không cần cài đặt. Chỉ chọn backend khác bên dưới nếu bạn muốn kết quả chất lượng cao hơn hoặc số lượng nhiều hơn và có khóa API cho dịch vụ đó. +settings.web_search.backend=Backend tìm kiếm +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=Miễn phí, không cần khóa API. Mặc định tôn trọng quyền riêng tư. +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=Nhanh, chỉ mục độc lập. Yêu cầu khóa API Brave Search miễn phí. +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=Kết quả được tối ưu hóa cho AI với tính năng trích xuất câu trả lời tùy chọn. Yêu cầu khóa API Tavily. +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=Tìm kiếm meta tôn trọng quyền riêng tư qua phiên bản SearxNG của riêng bạn. Không cần khóa API. +settings.web_search.api_key=Khóa API +settings.web_search.api_key.placeholder=Dán khóa API của bạn vào đây +settings.web_search.get_api_key=Nhận khóa API miễn phí ↗ +settings.web_search.endpoint=URL phiên bản SearxNG +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=Kiểm tra tìm kiếm +settings.web_search.test.running=Đang kiểm tra... +settings.web_search.test.success=✅ Tìm kiếm đang hoạt động +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=Người dùng khách user.profile.menu=Menu hồ sơ người dùng @@ -421,25 +438,25 @@ user.profile.name=Tên user.profile.email=Email user.profile.email.placeholder=your.email@example.com user.profile.occupation=Nghề nghiệp -user.profile.occupation.placeholder=vd: Lập trình viên, Nhà thiết kế, Sinh viên +user.profile.occupation.placeholder=vd\: Lập trình viên, Nhà thiết kế, Sinh viên user.profile.location=Vị trí -user.profile.location.placeholder=vd: San Francisco, CA +user.profile.location.placeholder=vd\: San Francisco, CA user.profile.bio=Giới thiệu user.profile.bio.placeholder=Hãy chia sẻ một chút về bạn… user.profile.interests=Sở thích user.profile.interests.description=Chọn các chủ đề bạn quan tâm để cá nhân hóa trải nghiệm AI user.profile.interests.custom=Sở thích tùy chỉnh -user.profile.interests.custom.placeholder=vd: Học máy, Nhiếp ảnh +user.profile.interests.custom.placeholder=vd\: Học máy, Nhiếp ảnh user.profile.interests.custom.hint=Phân tách nhiều sở thích bằng dấu phẩy # Welcome Dialog (First Run) -welcome.title=Chào mừng đến với Askimo! +welcome.title=Chào mừng đến với Askimo\! welcome.subtitle=Hãy giúp chúng tôi cá nhân hóa trải nghiệm AI của bạn welcome.avatar.optional=Nhấp để thêm ảnh (tùy chọn) welcome.name=Tên của bạn -welcome.name.placeholder=vd: Nguyễn Văn A +welcome.name.placeholder=vd\: Nguyễn Văn A welcome.occupation=Nghề nghiệp -welcome.occupation.placeholder=vd: Lập trình viên phần mềm +welcome.occupation.placeholder=vd\: Lập trình viên phần mềm welcome.interests=Bạn quan tâm đến điều gì? welcome.interests.description=Chọn một vài chủ đề để chúng tôi điều chỉnh trải nghiệm cho bạn welcome.skip=Thiết lập sau @@ -472,6 +489,7 @@ user.interest.environment=Môi trường # Actions action.delete=Xóa +action.remove=Xóa action.edit=Chỉnh sửa action.pin=Ghim vào thanh bên action.unpin=Bỏ ghim khỏi thanh bên @@ -488,22 +506,45 @@ action.close=Đóng action.show.more=Xem thêm action.show.less=Thu gọn action.back=Quay lại +action.next=Tiếp theo action.retry=Thử lại action.done=Hoàn thành action.refresh=Tải lại - - # Happiness Gate (shown before Star Prompt) happiness.gate.title=Bạn thấy Askimo thế nào? happiness.gate.subtitle=Cho chúng tôi biết trải nghiệm của bạn -happiness.gate.happy=Tôi rất thích! 😍 +happiness.gate.happy=Tôi rất thích\! 😍 happiness.gate.neutral=Ổn 🙂 happiness.gate.unhappy=Chưa thực sự ưng 😕 -happiness.gate.feedback.title=Giúp chúng tôi cải thiện -happiness.gate.feedback.message=Bạn có muốn chia sẻ phản hồi của mình không? Điều này giúp chúng tôi làm cho Askimo trở nên tốt hơn cho bạn và mọi người khác. -happiness.gate.feedback.yes=Có, chia sẻ phản hồi -happiness.gate.feedback.no=Không, cảm ơn + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=Điều gì đang làm bạn chưa hài lòng? +feedback.dialog.subtitle=Chọn tất cả những mục phù hợp — phản hồi của bạn sẽ được gửi trực tiếp đến nhóm của chúng tôi. +feedback.comment.label=Cho chúng tôi biết thêm (tùy chọn) +feedback.comment.placeholder=Mô tả vấn đề hoặc chia sẻ suy nghĩ của bạn… +feedback.email.label=Email của bạn (tùy chọn) +feedback.email.placeholder=you@example.com +feedback.email.hint=Chỉ được sử dụng để theo dõi phản hồi của bạn. Chúng tôi sẽ không bao giờ gửi thư rác. +feedback.action.skip=Bỏ qua +feedback.action.send=Gửi phản hồi +feedback.thanks.title=Cảm ơn bạn đã phản hồi\! +feedback.thanks.message=Đóng góp của bạn giúp chúng tôi cải thiện Askimo tốt hơn. Chúng tôi rất trân trọng điều đó. +feedback.thanks.close=Đóng + +feedback.remind.title=Không sao đâu\! +feedback.remind.message=Bạn có thể chia sẻ phản hồi bất cứ lúc nào từ menu Trợ giúp → Gửi phản hồi. +feedback.remind.got.it=Đã hiểu + +# Feedback reasons +feedback.reason.inaccurate=Câu trả lời của AI không chính xác +feedback.reason.slow=Quá chậm +feedback.reason.missing.feature=Thiếu tính năng tôi cần +feedback.reason.broken=Có lỗi xảy ra +feedback.reason.hard.to.use=Khó sử dụng +feedback.reason.integration=Vấn đề về tích hợp +feedback.reason.privacy=Lo ngại về quyền riêng tư +feedback.reason.other=Vấn đề khác # Star Prompt star.prompt.title=Bạn thích Askimo? Giúp lan tỏa 💙 @@ -515,6 +556,12 @@ star.prompt.share.description=Kể cho mạng lưới của bạn về Askimo tr star.prompt.maybe.later=Để sau star.prompt.already.starred=Đã gắn sao ✓ star.prompt.social.proof=⭐ Tham gia cùng {0} người đã gắn sao cho Askimo +star.prompt.thanks.title=Cảm ơn bạn rất nhiều\! 🌟 +star.prompt.thanks.message=Sự ủng hộ của bạn có ý nghĩa rất lớn và giúp chúng tôi tiếp tục phát triển Askimo. +star.prompt.thanks.done=Xong ✓ +star.prompt.remind.title=Không vấn đề gì\! +star.prompt.remind.message=Bạn có thể ủng hộ chúng tôi bất cứ lúc nào từ menu Trợ giúp → Ủng hộ Askimo. +star.prompt.remind.got.it=Đã hiểu # Analytics Settings (Advanced section toggle) settings.analytics.title=Phân tích ẩn danh @@ -525,6 +572,11 @@ settings.hardware.acceleration.title=Tăng tốc phần cứng settings.hardware.acceleration.description=Sử dụng kết xuất tăng tốc bởi GPU để có hiệu suất giao diện mượt mà hơn. Hãy tắt tùy chọn này nếu bạn gặp sự cố về đồ họa. settings.hardware.acceleration.description.windows=Sử dụng kết xuất tăng tốc bởi GPU (Direct3D/OpenGL) để có hiệu suất giao diện mượt mà hơn. Hãy tắt tùy chọn này nếu bạn gặp hiện tượng nhấp nháy hoặc tốc độ làm mới thất thường với màn hình G-Sync hoặc FreeSync. settings.hardware.acceleration.restart.notice=Khởi động lại Askimo để thay đổi này có hiệu lực. +settings.ui.scale.title=Tỷ lệ hiển thị +settings.ui.scale.description=Điều chỉnh tỷ lệ giao diện người dùng tổng thể. Cần khởi động lại để các thay đổi có hiệu lực. +settings.ui.scale.option.system.default=Mặc định hệ thống +settings.ui.scale.restart.notice=Khởi động lại Askimo để thay đổi tỷ lệ có hiệu lực. +settings.ui.scale.learn.more=Tìm hiểu thêm về HiDPI & Tỷ lệ UI settings.hardware.acceleration.restart.title=Yêu cầu khởi động lại settings.hardware.acceleration.restart.message=Vui lòng khởi động lại Askimo để thay đổi kết xuất có hiệu lực. settings.hardware.acceleration.vrr.hint.title=Đã phát hiện G-Sync / FreeSync @@ -538,10 +590,8 @@ file.overwrite.message=Tệp này đã tồn tại. Bạn có muốn ghi đè kh file.overwrite.confirm=Ghi đè file.name.too.long=Tên tệp quá dài. Vui lòng dùng tên ngắn hơn (tối đa 255 ký tự). - # About about.title=Giới thiệu {0} -action.remove=Xóa about.version=Phiên bản about.buildDate=Ngày build about.buildJdk=JDK build @@ -573,6 +623,7 @@ shortcut.stop.ai.response=Dừng phản hồi AI shortcut.quit.application=Thoát ứng dụng shortcut.navigate.to.sessions=Đi tới phiên shortcut.navigate.to.projects=Đi tới Dự án +shortcut.navigate.to.bookmarks=Điều hướng đến dấu trang shortcut.enter.fullscreen=Chuyển sang toàn màn hình shortcut.close.search=Đóng tìm kiếm shortcut.next.search.result=Kết quả tìm kiếm tiếp theo @@ -582,7 +633,7 @@ shortcut.send.message=Gửi tin nhắn shortcut.new.line=Dòng mới # Chat View -chat.welcome=Chào mừng đến Askimo!\nBắt đầu trò chuyện bằng cách nhập tin nhắn bên dưới. +chat.welcome=Chào mừng đến Askimo\!\nBắt đầu trò chuyện bằng cách nhập tin nhắn bên dưới. chat.no.active.session=Chọn một phiên trong thanh bên hoặc bắt đầu cuộc trò chuyện mới chat.search.placeholder=Tìm trong cuộc trò chuyện... chat.search.no.results=Không có kết quả @@ -620,8 +671,7 @@ global.search.results.count={0} kết quả global.search.results.count.plural={0} kết quả # Rest of chat view strings -chat.directive=Chỉ thị: -chat.directive.none=Không có +chat.directive=Chỉ thị chat.directive.new=Chỉ thị mới chat.directive.manage=Quản lý chỉ thị chat.directive.learn.more=Tìm hiểu cách sử dụng chỉ thị @@ -631,7 +681,11 @@ chat.drop.files=Kéo thả tệp để đính kèm vào cuộc trò chuyện chat.create.image.menu=Tạo hình ảnh chat.create.image.mode=Hình ảnh chat.create.image.mode.cancel=Hủy chế độ tạo hình ảnh +chat.image.model.missing.title=Chưa cấu hình mô hình hình ảnh +chat.image.model.missing.message=Chưa đặt mô hình hình ảnh cho {0}. Mở Cài đặt > Nhà cung cấp AI > Mô hình tạo hình ảnh và đặt tên mô hình trước. chat.tools.button=Công cụ khả dụng +chat.tools.button.disabled=Công cụ khả dụng ({0} bị vô hiệu hóa) +chat.tools.button.model.no.support=Các công cụ không được hỗ trợ bởi mô hình này chat.tools.popup.title=Công cụ khả dụng chat.tools.popup.loading=Đang tải máy chủ... chat.tools.popup.no.servers.global=Chưa cấu hình máy chủ MCP toàn cục. @@ -640,14 +694,24 @@ chat.tools.server.scope.global=Toàn cục chat.tools.server.scope.project=Dự án chat.tools.server.scope.builtin=Tích hợp sẵn chat.tools.tool.no.description=Không có mô tả -chat.tools.button.disabled=Công cụ khả dụng ({0} bị vô hiệu hóa) +chat.reasoning.effort.label=Đang suy nghĩ +chat.reasoning.effort.tooltip=Mức độ suy luận — kiểm soát mức độ mô hình suy nghĩ sâu như thế nào trước khi phản hồi +chat.reasoning.effort.off=Tắt +chat.reasoning.effort.off.description=Vô hiệu hóa suy luận mở rộng. Mô hình phản hồi trực tiếp mà không cần suy nghĩ sâu. +chat.reasoning.effort.low=Thấp +chat.reasoning.effort.low.description=Phản hồi nhanh hơn, chi phí thấp hơn. Tốt nhất cho các tác vụ đơn giản. +chat.reasoning.effort.medium=Trung bình +chat.reasoning.effort.medium.description=Cân bằng giữa độ sâu và tốc độ. Phù hợp cho hầu hết các tác vụ. +chat.reasoning.effort.high=Cao +chat.reasoning.effort.high.description=Suy luận kỹ lưỡng, chi phí cao hơn. Tốt nhất cho việc giải quyết các vấn đề phức tạp. chat.input.placeholder=Nhập tin nhắn... (Enter để gửi, Shift+Enter để xuống dòng) +chat.input.placeholder.hint.attach=Đính kèm tệp bằng {0}+A hoặc kéo và thả vào đây chat.select.file=Chọn tệp (nhiều tệp) chat.attachment.remove=Xóa tệp đính kèm chat.attachment.preview.loading=Đang tải bản xem trước… chat.attachment.preview.file.not.found=(Không tìm thấy tệp) chat.attachment.preview.too.large=(Tệp quá lớn để xem trước) -chat.attachment.preview.cannot.read=(Không thể đọc tệp: {0}) +chat.attachment.preview.cannot.read=(Không thể đọc tệp\: {0}) chat.attachment.preview.more.lines=thêm {0} dòng # Sessions View @@ -659,12 +723,12 @@ sessions.col.created=Đã tạo sessions.col.updated=Đã cập nhật sessions.error=❌ {0} sessions.empty=Không có phiên trò chuyện. -sessions.empty.hint=💡 Bắt đầu một cuộc trò chuyện mới để tạo phiên đầu tiên! +sessions.empty.hint=💡 Bắt đầu một cuộc trò chuyện mới để tạo phiên đầu tiên\! sessions.search.placeholder=Tìm kiếm theo tiêu đề… sessions.search.empty=Không có phiên nào khớp với "{0}". -# Điều khiển phân trang bảng chung -table.page.size.label=Số hàng mỗi trang: +# Generic table pagination controls +table.page.size.label=Số hàng mỗi trang\: table.page=Trang {0} trên {1} table.page.previous=Trang trước table.page.next=Trang tiếp theo @@ -680,7 +744,7 @@ sessions.error.rename.failed=Đổi tên thất bại. # ChatSessionService Errors # Update Check update.dialog.title=Cập nhật phần mềm -update.dialog.new.version.available=Có phiên bản Askimo mới! +update.dialog.new.version.available=Có phiên bản Askimo mới\! update.urgency.medium=Bạn đang dùng phiên bản cũ hơn {0} bản — bạn có thể đã bỏ lỡ các bản sửa lỗi quan trọng và tính năng mới. update.urgency.high=Bạn đang dùng phiên bản cũ hơn {0} bản — bạn đang bỏ lỡ nhiều cải tiến đáng kể. Vui lòng cập nhật sớm. update.dialog.current.version.label=Phiên bản hiện tại @@ -691,7 +755,7 @@ update.dialog.download=Tải ngay update.dialog.how.to.update=Cách cập nhật update.dialog.later=Để sau update.dialog.skip.version=Bỏ qua phiên bản này -update.check.up.to.date=Bạn đang sử dụng phiên bản mới nhất! +update.check.up.to.date=Bạn đang sử dụng phiên bản mới nhất\! update.check.failed=Kiểm tra cập nhật thất bại # Event Names @@ -713,44 +777,45 @@ settings.font.size=Cỡ chữ settings.font.line.spacing=Giãn dòng settings.shortcuts=Phím tắt settings.shortcuts.description=Xem tất cả các phím tắt có sẵn để nâng cao năng suất làm việc +settings.shortcuts.search=Tìm kiếm lối tắt... +settings.shortcuts.no_results=Không có lối tắt nào khớp với tìm kiếm của bạn settings.app.language=Ngôn ngữ ứng dụng settings.app.language.translation.help=Bạn thấy có gì đó sai? Hãy giúp chúng tôi cải thiện bản dịch. settings.app.language.translation.contribute=Đóng góp trên Crowdin settings.ai.response.language=Ngôn ngữ phản hồi ưu tiên settings.ai.response.language.description=Bắt AI phản hồi bằng một ngôn ngữ cụ thể (để trống để tự động phát hiện) settings.ai.response.language.auto=Tự động phát hiện -settings.ai.response.language.tooltip=AI tự động phát hiện ngôn ngữ, nhưng nên ghi đè khi:\n• Học ngôn ngữ mới (luyện tập nhập vai)\n• Tính nhất quán chuyên nghiệp (ví dụ: tài liệu code luôn bằng tiếng Anh)\n• Tối ưu hóa RAG (khớp ngôn ngữ cơ sở tri thức)\n• Dạy học (hỏi bằng ngôn ngữ này, giải thích bằng ngôn ngữ khác)\n• Ngăn chặn chuyển đổi ngôn ngữ không mong muốn -settings.model.select=Chọn mô hình cho {0}: +settings.ai.response.language.tooltip=AI tự động phát hiện ngôn ngữ, nhưng nên ghi đè khi\:\n• Học ngôn ngữ mới (luyện tập nhập vai)\n• Tính nhất quán chuyên nghiệp (ví dụ\: tài liệu code luôn bằng tiếng Anh)\n• Tối ưu hóa RAG (khớp ngôn ngữ cơ sở tri thức)\n• Dạy học (hỏi bằng ngôn ngữ này, giải thích bằng ngôn ngữ khác)\n• Ngăn chặn chuyển đổi ngôn ngữ không mong muốn +settings.model.select=Chọn mô hình cho {0}\: settings.model.loading=Đang tải mô hình... settings.model.none=Không có mô hình -settings.provider.change.button=Đổi nhà cung cấp -settings.model.change.button=Đổi mô hình -settings.change.button=Đổi cài đặt settings.model.select.title=Chọn mô hình settings.model.current=Mô hình hiện tại settings.model.selected=Mô hình đã chọn settings.model.new=Mô hình mới -settings.model.change.description=Chọn một mô hình từ danh sách dưới đây: +settings.model.use.default=Sử dụng mặc định +settings.model.change.description=Chọn một mô hình từ danh sách dưới đây\: settings.model.search=Tìm mô hình settings.model.search.placeholder=Nhập để lọc mô hình... settings.model.filtered=Hiển thị {0}/{1} mô hình settings.model.no.match=Không có mô hình phù hợp -settings.model.no.results=Không có mô hình phù hợp +settings.model.chat.filter.label=Mô hình chat · đã hiển thị {0} +settings.model.chat.filter.show.all=Hiển thị tất cả {0} settings.configure.title=Cấu hình {0} settings.test.connection.testing=Đang kiểm tra... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=Não foi possível conectar ao provedor. Verifique se a sua chave API está correta (para provedores em nuvem) ou se a sua URL base está acessível (para provedores locais). Você pode encontrar instruções de configuração usando o link de ajuda acima. # Directives Dialog directive.manage.title=Quản lý chỉ thị -directive.manage.empty=Chưa có chỉ thị. Hãy tạo mới! +directive.manage.empty=Chưa có chỉ thị. Hãy tạo mới\! directive.edit.name.label=Tên directive.edit.name.placeholder=Nhập tên chỉ thị... directive.edit.content.label=Nội dung directive.edit.content.placeholder=Nhập hướng dẫn... directive.edit.name.required=Yêu cầu tên directive.edit.content.required=Yêu cầu nội dung -directive.created=Tạo lúc: {0} +directive.created=Tạo lúc\: {0} directive.new.title=Chỉ thị mới directive.new.guidelines=Chỉ thị hướng dẫn cách AI phản hồi tin nhắn của bạn. Hãy cụ thể về giọng điệu, mức độ chi tiết, định dạng hoặc bất kỳ yêu cầu đặc biệt nào bạn cần. directive.new.name.placeholder=v.d., concise-code, explain-like-im-5 @@ -765,8 +830,8 @@ directive.export.tooltip=Xuất tất cả các chỉ thị ra tệp JSON để directive.export.filename=askimo-directives directive.import=Nhập directive.import.tooltip=Nhập chỉ thị từ tệp JSON -directive.import.result=Nhập hoàn tất: {0} đã nhập, {1} đã đổi tên, {2} đã bỏ qua -directive.import.error=Nhập thất bại: định dạng tệp không hợp lệ hoặc không được hỗ trợ +directive.import.result=Nhập hoàn tất\: {0} đã nhập, {1} đã đổi tên, {2} đã bỏ qua +directive.import.error=Nhập thất bại\: định dạng tệp không hợp lệ hoặc không được hỗ trợ # Log Levels log.level.error=Lỗi @@ -783,6 +848,8 @@ log.level.trace.description=Chi tiết nhất # Message Components message.loading.previous=Đang tải các tin nhắn trước... message.thinking=Đang suy nghĩ… ({0}s) +message.thinking.section.streaming=💭 Đang suy nghĩ... +message.thinking.section.done=💭 Suy nghĩ message.copy=Sao chép tin nhắn message.copy.description=Sao chép tin nhắn message.edit=Chỉnh sửa tin nhắn @@ -809,13 +876,40 @@ message.ai.try.again.confirm.title=Tạo lại phản hồi? message.ai.try.again.confirm.message=Tất cả các tin nhắn sau thời điểm này sẽ bị xóa. Bạn có muốn tiếp tục không? message.ai.try.again.confirm.cancel=Hủy message.ai.try.again.confirm.confirm=Tạo lại +message.ai.fork=Fork phiên từ đây +message.ai.fork.description=Fork cuộc trò chuyện này thành một phiên mới độc lập message.ai.export.pdf=Xuất ra PDF message.ai.export.pdf.dialog.title=Lưu phản hồi AI dưới dạng PDF +message.bookmark=Đánh dấu tin nhắn +message.bookmark.remove=Xóa dấu trang +message.bookmark.description=Đánh dấu tin nhắn này message.edited.indicator=(đã chỉnh sửa) message.date.today=Hôm nay message.date.yesterday=Hôm qua message.token.usage={0} token · {1} vào / {2} ra -message.token.usage.tooltip=Số token được sử dụng bởi phản hồi này.\nĐầu vào: prompt của bạn + ngữ cảnh được gửi đến AI.\nĐầu ra: phản hồi do AI tạo ra. +message.token.usage.tooltip=Số token được sử dụng bởi phản hồi này.\nĐầu vào\: prompt của bạn + ngữ cảnh được gửi đến AI.\nĐầu ra\: phản hồi do AI tạo ra. + +# Bookmarks +chat.bookmarks.button.tooltip=Dấu trang +chat.bookmarks.popover.title=Tin nhắn đã ghim +chat.bookmarks.popover.empty.title=Chưa có dấu trang +chat.bookmarks.popover.empty.hint=Ghim tin nhắn bằng biểu tượng dấu trang bên dưới +bookmarks.title=Dấu trang +bookmarks.empty.title=Chưa có dấu trang +bookmarks.empty.hint=Đánh dấu tin nhắn bằng biểu tượng ghim bên dưới +bookmarks.session.untitled=Cuộc trò chuyện chưa đặt tên +bookmarks.message.count={0} đã ghim +bookmarks.role.user=Bạn +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=Đang chạy công cụ... +tool.call.header.done=Đã sử dụng {0} công cụ +tool.call.status.done=Hoàn tất +tool.call.status.failed=Thất bại +tool.call.detail.arguments=Đối số +tool.call.detail.result=Kết quả + attachment.download=Tải xuống tệp đính kèm attachment.download.description=Tải xuống tệp đính kèm này attachment.save.file=Lưu tệp đính kèm @@ -825,48 +919,62 @@ outdated.branch.header={0} tin nhắn cũ từ lần chỉnh sửa trước (nh outdated.label=cũ # Provider Dialog -provider.change.title=Đổi nhà cung cấp -provider.select.title=Chọn nhà cung cấp +provider.manage.title=Quản lý nhà cung cấp +provider.type.picker.title=Chọn loại nhà cung cấp +provider.type.picker.prompt=Chọn loại nhà cung cấp để thêm\: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=Thêm nhà cung cấp +provider.no.instances.hint=Chưa có nhà cung cấp nào được cấu hình. Nhấp vào "Thêm nhà cung cấp" để bắt đầu. +provider.model.panel.select.hint=Chọn nhà cung cấp ở bên trái để duyệt các mô hình +provider.model.panel.model.count={0} mô hình +provider.model.default.badge=Mặc định +provider.instance.name.label=Tên phiên bản +provider.instance.name.placeholder=Ví dụ\: "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=Nhà cung cấp có tên "{0}" đã tồn tại provider.setup.required.title=Thiết lập nhà cung cấp AI provider.setup.required.message=Hãy chọn và cấu hình nhà cung cấp AI trước khi bắt đầu trò chuyện. provider.setup.required.button=Thiết lập -provider.select.prompt=Chọn nhà cung cấp: -provider.configure.prompt=Cấu hình: -provider.choose.placeholder=Chọn nhà cung cấp... +provider.configure.prompt=Cấu hình\: provider.setup.guide=Cách thiết lập {0} provider.apikey.stored=API key đã lưu an toàn provider.apikey.enter=Nhập API key -provider.apikey.already.stored=Đã lưu provider.apikey.security.message=🔒 API key của bạn được mã hóa và lưu trữ an toàn. Chúng tôi không chia sẻ dữ liệu. provider.apikey.security.link=Tìm hiểu cách chúng tôi bảo vệ dữ liệu của bạn provider.not.set=Chưa thiết lập # Provider Configuration - OpenAI -provider.openai.apikey.description=API key OpenAI từ https://platform.openai.com/account/api-keys +provider.openai.apikey.description=API key OpenAI từ https\://platform.openai.com/account/api-keys provider.openai.apikey.stored=API key đã lưu. Để trống để giữ nguyên hoặc nhập key mới để cập nhật. -provider.openai.setup.help=💡 Để sử dụng OpenAI, bạn cần API key.\n\n1. Lấy key từ: https://platform.openai.com/account/api-keys\n2. Thiết lập trong Cài đặt hoặc dùng :change-settings\n\nLấy key tại: https://platform.openai.com/api-keys +provider.openai.setup.help=💡 Để sử dụng OpenAI, bạn cần API key.\n\n1. Lấy key từ\: https\://platform.openai.com/account/api-keys\n2. Thiết lập trong Cài đặt hoặc dùng \:change-settings\n\nLấy key tại\: https\://platform.openai.com/api-keys # Provider Configuration - Anthropic -provider.anthropic.apikey.description=API key Anthropic từ https://console.anthropic.com/ +provider.anthropic.apikey.description=API key Anthropic từ https\://console.anthropic.com/ provider.anthropic.apikey.stored=API key đã lưu. Để trống để giữ nguyên hoặc nhập mới để cập nhật. -provider.anthropic.setup.help=💡 Để sử dụng Anthropic, bạn cần API key.\n\n1. Lấy từ https://console.anthropic.com/\n2. Thiết lập trong Cài đặt hoặc dùng :change-settings +provider.anthropic.setup.help=💡 Để sử dụng Anthropic, bạn cần API key.\n\n1. Lấy từ https\://console.anthropic.com/\n2. Thiết lập trong Cài đặt hoặc dùng \:change-settings +provider.anthropic.max_tokens.label=Số Token Tối đa +provider.anthropic.max_tokens.description=Số lượng token tối đa mà mô hình có thể tạo cho mỗi phản hồi (suy nghĩ + câu trả lời được kết hợp). +provider.anthropic.thinking_budget_tokens.label=Token Ngân sách Suy nghĩ +provider.anthropic.thinking_budget_tokens.description=Số lượng token tối đa mà Anthropic có thể dành cho việc suy nghĩ. Đặt là 0 để để mô hình tự quyết định (khuyên dùng). +provider.anthropic.thinking_max_tokens.label=Token Tối đa cho Suy nghĩ +provider.anthropic.thinking_max_tokens.description=Giới hạn token tổng khi tính năng suy nghĩ đang hoạt động (suy nghĩ + câu trả lời). Đặt là 0 để sử dụng Số Token Tối đa thay thế. # Provider Configuration - Gemini -provider.gemini.apikey.description=API key Google AI Studio từ https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=API key Google AI Studio từ https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=API key đã lưu.Để trống để giữ nguyên hoặc nhập mới. -provider.gemini.setup.help=💡 Để sử dụng Gemini, bạn cần API key.\n\n1. Lấy key tại https://aistudio.google.com/app/apikey\n2. Thiết lập trong Cài đặt hoặc dùng :change-settings +provider.gemini.setup.help=💡 Để sử dụng Gemini, bạn cần API key.\n\n1. Lấy key tại https\://aistudio.google.com/app/apikey\n2. Thiết lập trong Cài đặt hoặc dùng \:change-settings # Provider Configuration - XAI -provider.xai.apikey.description=API key XAI từ https://console.x.ai/ +provider.xai.apikey.description=API key XAI từ https\://console.x.ai/ provider.xai.apikey.stored=API key đã lưu. -provider.xai.setup.help=💡 Để dùng XAI, bạn cần API key.\n\n1. Lấy tại https://console.x.ai/\n2. Thiết lập trong Cài đặt hoặc dùng :change-settings +provider.xai.setup.help=💡 Để dùng XAI, bạn cần API key.\n\n1. Lấy tại https\://console.x.ai/\n2. Thiết lập trong Cài đặt hoặc dùng \:change-settings # Provider Configuration - Ollama -provider.ollama.baseurl.description=Base URL cho Ollama (mặc định http://localhost:11434) -provider.ollama.setup.help=💡 Để dùng Ollama, bạn cần chạy nó cục bộ.\n\n1. Cài từ https://ollama.ai/\n2. Chạy dịch vụ Ollama\n3. Tùy chọn thay đổi base URL +provider.ollama.baseurl.description=Base URL cho Ollama (mặc định http\://localhost\:11434) +provider.ollama.setup.help=💡 Để dùng Ollama, bạn cần chạy nó cục bộ.\n\n1. Cài từ https\://ollama.ai/\n2. Chạy dịch vụ Ollama\n3. Tùy chọn thay đổi base URL # Provider Configuration - Docker AI -provider.docker.baseurl.description=Base URL cho Docker AI (mặc định http://localhost:12434) +provider.docker.baseurl.description=Base URL cho Docker AI (mặc định http\://localhost\:12434) provider.docker.setup.help=💡 Để dùng Docker AI, bạn cần chạy nó cục bộ.\n\n1. Đảm bảo Docker AI đã cài và chạy\n2. Chạy dịch vụ Docker AI\n3. Tùy chọn thay đổi base URL # Provider Configuration - LocalAI @@ -874,23 +982,30 @@ provider.localai.baseurl.description=Base URL cho LocalAI provider.localai.setup.help=💡 Để dùng LocalAI, cần chạy LocalAI.\n\n1. Cài và chạy LocalAI\n2. Thiết lập base URL tương ứng # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=Base URL LMStudio (mặc định http://localhost:1234) -provider.lmstudio.setup.help=💡 Để dùng LMStudio:\n\n1. Cài từ https://lmstudio.ai/\n2. Chạy server cục bộ\n3. Tùy chọn thay đổi base URL +provider.lmstudio.baseurl.description=Base URL LMStudio (mặc định http\://localhost\:1234) +provider.lmstudio.setup.help=💡 Để dùng LMStudio\:\n\n1. Cài từ https\://lmstudio.ai/\n2. Chạy server cục bộ\n3. Tùy chọn thay đổi base URL provider.lmstudio.openai.compat.info=Askimo sử dụng các endpoint tương thích OpenAI (/v1), không phải API LMStudio gốc (/api/v1/). # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=URL cơ sở cho phiên bản tương thích OpenAI của bạn +provider.openai_compatible.apikey.description=Khóa API cho nhà cung cấp (tùy chọn - để trống nếu endpoint không yêu cầu xác thực) provider.openai_compatible.apikey.stored=Khóa API đã được lưu trữ an toàn. Để trống để giữ khóa hiện có hoặc nhập khóa mới để cập nhật. # System Resources system.share.feedback=Chia sẻ phản hồi -system.ai.provider.tooltip=Nhà cung cấp AI: {0}\nNhấn để cấu hình +system.ai.provider.tooltip=Nhà cung cấp AI\: {0}\nNhấn để cấu hình system.diagnostics.title=Chẩn đoán hệ thống system.diagnostics.resources=Tài nguyên system.diagnostics.jvm.memory=Bộ nhớ JVM (đã dùng / tổng) system.diagnostics.cpu.usage=Mức sử dụng CPU system.diagnostics.telemetry=Đo từ xa +# Telemetry export +telemetry.export.csv=Xuất CSV +telemetry.export.dialog.title=Xuất Dữ Liệu Đo Lường thành ZIP +telemetry.export.error.title=Xuất Thất Bại +telemetry.export.error.message=Không thể xuất dữ liệu đo lường\: {0} + # Telemetry telemetry.reset=Đặt lại dữ liệu telemetry telemetry.title=📊 Chỉ số phiên làm việc @@ -906,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=Tổng số truy vấn telemetry.rag.triggered.label=Đã kích hoạt telemetry.rag.skipped.label=Đã bỏ qua -telemetry.llm.calls=Cuộc gọi LLM -telemetry.llm.calls.count={0} cuộc gọi -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} lỗi -telemetry.total.tokens=Tổng số Token: {0} telemetry.llm.col.provider=Nhà cung cấp telemetry.llm.col.model=Mô hình telemetry.llm.col.calls=Cuộc gọi @@ -954,49 +1064,52 @@ export.format.html.benefit.3=Giao diện chuyên nghiệp export.format.html.benefit.4=Dễ chia sẻ # Error Messages -error.network=⚠️ Không thể kết nối tới dịch vụ AI{endpoint}\n\nVui lòng kiểm tra:\n• Kết nối internet của bạn\n• URL dịch vụ AI (kiểm tra cài đặt)\n• Cấu hình tường lửa\n• Trạng thái hoạt động của dịch vụ +error.network=⚠️ Không thể kết nối tới dịch vụ AI{endpoint}\n\nVui lòng kiểm tra\:\n• Kết nối internet của bạn\n• URL dịch vụ AI (kiểm tra cài đặt)\n• Cấu hình tường lửa\n• Trạng thái hoạt động của dịch vụ error.authentication=⚠️ API key bị thiếu hoặc không hợp lệ{provider}\n\nHãy vào Cài đặt để thiết lập API key của bạn. -error.model_configuration=⚠️ Lỗi cấu hình mô hình: {issue}\n\nCách khắc phục:\n1. Mở Cài đặt\n2. Chọn nhà cung cấp AI\n3. Chọn một mô hình từ danh sách +error.model_not_found=⚠️ Không tìm thấy mô hình\: {model}\n\nMô hình này có thể đã bị ngừng sử dụng hoặc xóa bởi nhà cung cấp. Vui lòng chọn mô hình khác. +error.provider_not_configured=⚠️ Chưa cấu hình nhà cung cấp AI.\n\nĐể bắt đầu trò chuyện\:\n1. Mở Cài đặt\n2. Chọn nhà cung cấp AI (OpenAI, Ollama, Anthropic, v.v.)\n3. Nhập API key hoặc cấu hình kết nối error.rate_limit=⚠️ Đã vượt giới hạn tốc độ\n{retryAfter}\n\nBạn đã đạt giới hạn sử dụng API. Vui lòng chờ một chút trước khi gửi thêm tin nhắn. error.insufficient_credits=⚠️ Không đủ tín dụng\n\nSố dư tín dụng quá thấp.\n\nVui lòng truy cập trang thanh toán để thêm tín dụng. -error.timeout=⚠️ Yêu cầu đã hết thời gian chờ sau {timeout} giây\n\nNguyên nhân có thể do:\n• Máy chủ đang quá tải - hãy thử lại sau ít phút\n• Truy vấn quá phức tạp - hãy thử đơn giản hóa\n• Độ trễ mạng -error.invalid_request=⚠️ Yêu cầu không hợp lệ: {details}\n\nVui lòng kiểm tra nội dung nhập và thử lại. -error.system=⚠️ Lỗi hệ thống\n\nĐã xảy ra lỗi không mong muốn: {errorCode}\n\nVui lòng liên hệ hỗ trợ Askimo và cung cấp:\n• Bạn đang làm gì\n• Mã lỗi ở trên\n• Thời điểm xảy ra lỗi +error.timeout=⚠️ Yêu cầu đã hết thời gian chờ sau {timeout} giây\n\nNguyên nhân có thể do\:\n• Máy chủ đang quá tải - hãy thử lại sau ít phút\n• Truy vấn quá phức tạp - hãy thử đơn giản hóa\n• Độ trễ mạng +error.context_length=⚠️ Đã vượt quá cửa sổ ngữ cảnh (context window)\n\nTổng dữ liệu đầu vào (lịch sử trò chuyện + tin nhắn của bạn + tệp đính kèm) quá lớn để mô hình này có thể xử lý.\n\nĐể khắc phục\:\n• Bắt đầu một phiên trò chuyện mới để xóa lịch sử trò chuyện\n• Rút ngắn tin nhắn hoặc xóa các tệp đính kèm lớn\n• Nếu bạn đang sử dụng mô hình cục bộ (Ollama / LM Studio / Docker), hãy tăng kích thước ngữ cảnh trong phần cài đặt của mô hình đó\n• Chuyển sang mô hình có cửa sổ ngữ cảnh lớn hơn +error.invalid_request=⚠️ Yêu cầu không hợp lệ\: {details}\n\nVui lòng kiểm tra nội dung nhập và thử lại. +error.local_server=⚠️ Lỗi máy chủ AI cục bộ\!\n\nTiến trình máy chủ AI đã bị sập hoặc không thể tải mô hình. Đây không phải lỗi do Askimo gây ra.\n\nNguyên nhân có thể\:\n• Tệp mô hình bị hỏng hoặc không đầy đủ — thử tải lại\n• Không đủ RAM/VRAM — thử lượng tử hóa nhỏ hơn (ví dụ\: Q4 thay vì Q8)\n• Định dạng mô hình không được hỗ trợ bởi phiên bản máy chủ hiện tại\n• Tiến trình máy chủ bị hệ điều hành kết thúc (hết bộ nhớ)\n\nCách xử lý\:\n1. Kiểm tra nhật ký máy chủ AI cục bộ của bạn\n2. Khởi động lại máy chủ và thử lại\n3. Tải lại mô hình\n4. Thử mô hình khác hoặc mức lượng tử hóa khác\n\nChi tiết kỹ thuật\: {details} +error.system=⚠️ Lỗi hệ thống\n\nĐã xảy ra lỗi không mong muốn\: {errorCode}\n\nVui lòng liên hệ hỗ trợ Askimo và cung cấp\:\n• Bạn đang làm gì\n• Mã lỗi ở trên\n• Thời điểm xảy ra lỗi # Model Availability Errors error.model.not_available.title.chat=Không khả dụng mô hình error.model.not_available.title.embedding=Không khả dụng mô hình embedding error.model.not_available.message.chat=Mô hình ''{0}'' không khả dụng. -error.model.not_available.message.embedding=Mô hình embedding ''{0}'' không khả dụng.\n\nVui lòng cấu hình đúng mô hình embedding. +error.model.not_available.message.embedding=Mô hình embedding ''{0}'' không khả dụng trong nhà cung cấp cục bộ của bạn.\n\nHãy vào Cài đặt → Nhà cung cấp AI và chọn một mô hình embedding khả dụng trong thẻ cấu hình nhà cung cấp. error.model.not_available.config_link=Cấu hình mô hình embedding -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=Đã xảy ra lỗi -error.app.message=Đã xảy ra lỗi không mong muốn: {0} +error.app.message=Đã xảy ra lỗi không mong muốn\: {0} # Send Message Errors error.send_message.title=Gửi tin nhắn thất bại - # Indexing Errors error.indexing.model_not_found.title=Không tìm thấy mô hình embedding error.indexing.model_not_found.message=Không tìm thấy mô hình embedding ''{0}''. Vui lòng tải hoặc bật mô hình này từ {1} trước khi lập chỉ mục. +error.indexing.input_too_large.title=Dữ liệu đầu vào embedding quá lớn +error.indexing.input_too_large.message=Mô hình embedding đã từ chối một hoặc nhiều phân đoạn từ [{0}] vì số lượng token vượt quá kích thước ngữ cảnh tối đa của mô hình. Hãy giảm kích thước đoạn (chunk) trong Cài đặt → Đánh chỉ mục → Số ký tự tối đa mỗi đoạn, sau đó thực hiện đánh chỉ mục lại. error.indexing.io_error.title=Lỗi IO error.indexing.io_error.message=Đã xảy ra lỗi IO trong quá trình lập chỉ mục error.indexing.unknown.title=Lỗi lập chỉ mục error.indexing.unknown.message=Đã xảy ra lỗi không xác định trong quá trình lập chỉ mục - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=Trạng thái mô hình embedding (chỉ cần cho tính năng RAG) -settings.embedding.not_available_rag_only=⚠️ {0}.\n\nLưu ý: Điều này chỉ ảnh hưởng đến các tính năng RAG theo dự án. Chức năng trò chuyện thông thường vẫn hoạt động bình thường. -settings.embedding.provider_unreachable=⚠️ Không thể kết nối tới nhà cung cấp: {0}.\n\nLưu ý: Mô hình embedding chỉ cần cho các tính năng RAG theo dự án. -settings.embedding.check_failed=Không thể kiểm tra mô hình embedding: {0} +settings.embedding.not_available_rag_only=⚠️ {0}.\n\nLưu ý\: Điều này chỉ ảnh hưởng đến các tính năng RAG theo dự án. Chức năng trò chuyện thông thường vẫn hoạt động bình thường. +settings.embedding.provider_unreachable=⚠️ Không thể kết nối tới nhà cung cấp\: {0}.\n\nLưu ý\: Mô hình embedding chỉ cần cho các tính năng RAG theo dự án. +settings.embedding.check_failed=Không thể kiểm tra mô hình embedding\: {0} settings.embedding.download_model=Tải mô hình embedding -settings.embedding.download_success=✅ Đã tải thành công mô hình embedding: {0} -settings.embedding.download_failed=❌ Không thể tải mô hình embedding: {0}. Vui lòng thử thủ công: ollama pull {0} -settings.embedding.download_error=Lỗi khi tải mô hình: {0} +settings.embedding.download_success=✅ Đã tải thành công mô hình embedding\: {0} +settings.embedding.download_failed=❌ Không thể tải mô hình embedding\: {0}. Vui lòng thử thủ công\: ollama pull {0} +settings.embedding.download_error=Lỗi khi tải mô hình\: {0} settings.embedding.anthropic_no_embedding=Anthropic không cung cấp mô hình embedding settings.embedding.xai_no_embedding=xAI không cung cấp mô hình embedding @@ -1004,47 +1117,67 @@ settings.embedding.xai_no_embedding=xAI không cung cấp mô hình embedding settings.rag.title=Cấu hình RAG settings.rag.description=Cấu hình các tham số Retrieval-Augmented Generation cho truy xuất tri thức theo dự án settings.rag.vector.max.results=Số kết quả tìm kiếm vector tối đa -settings.rag.vector.max.results.hint=Số lượng tài liệu tối đa từ tìm kiếm vector (mặc định: 20) +settings.rag.vector.max.results.hint=Số lượng tài liệu tối đa từ tìm kiếm vector (mặc định\: 20) settings.rag.vector.min.score=Điểm tối thiểu của tìm kiếm vector -settings.rag.vector.min.score.hint=Điểm tương đồng tối thiểu 0.0–1.0 (mặc định: 0.3) +settings.rag.vector.min.score.hint=Điểm tương đồng tối thiểu 0.0–1.0 (mặc định\: 0.3) settings.rag.hybrid.max.results=Số kết quả hybrid tối đa -settings.rag.hybrid.max.results.hint=Số lượng tài liệu cuối cùng sau khi hợp nhất (mặc định: 15) +settings.rag.hybrid.max.results.hint=Số lượng tài liệu cuối cùng sau khi hợp nhất (mặc định\: 15) settings.rag.rank.fusion.constant=Hằng số hợp nhất xếp hạng -settings.rag.rank.fusion.constant.hint=Hằng số RRF cho xếp hạng hybrid (mặc định: 60) +settings.rag.rank.fusion.constant.hint=Hằng số RRF cho xếp hạng hybrid (mặc định\: 60) settings.rag.use.absolute.paths=Sử dụng đường dẫn tuyệt đối trong trích dẫn settings.rag.use.absolute.paths.hint=Hiển thị đường dẫn đầy đủ của tệp trong câu trả lời của AI để rõ ràng hơn khi có nhiều tệp trùng tên settings.rag.embedding.title=Cấu hình embedding settings.rag.embedding.description=Cấu hình các tham số chia đoạn văn bản và embedding settings.rag.embedding.max.chars.per.chunk=Số ký tự tối đa mỗi đoạn -settings.rag.embedding.max.chars.per.chunk.hint=Số ký tự tối đa trong mỗi đoạn văn bản (mặc định: 1500) +settings.rag.embedding.max.chars.per.chunk.hint=Số ký tự tối đa trong mỗi đoạn văn bản (mặc định\: 1500) settings.rag.embedding.chunk.overlap=Chồng lấp đoạn -settings.rag.embedding.chunk.overlap.hint=Số ký tự chồng lấp giữa các đoạn (mặc định: 100) +settings.rag.embedding.chunk.overlap.hint=Số ký tự chồng lấp giữa các đoạn (mặc định\: 100) settings.rag.embedding.models=Mô hình embedding theo nhà cung cấp settings.rag.indexing.title=Cấu hình lập chỉ mục settings.rag.indexing.description=Kiểm soát những tệp nào được lập chỉ mục và kích thước tệp tối đa được phép settings.rag.indexing.max.file.bytes=Kích thước tệp tối đa (byte) settings.rag.indexing.max.file.bytes.hint=Các tệp lớn hơn giá trị này sẽ bị bỏ qua trong quá trình lập chỉ mục. Đặt giá trị quá cao có thể làm chậm quá trình lập chỉ mục đáng kể. settings.rag.indexing.supported.extensions=Phần mở rộng được hỗ trợ -settings.rag.indexing.supported.extensions.hint=Phần mở rộng tệp cách nhau bằng dấu phẩy để lập chỉ mục (vd: kt, java, py, md). Để trống để dùng mặc định tích hợp sẵn. +settings.rag.indexing.supported.extensions.hint=Phần mở rộng tệp cách nhau bằng dấu phẩy để lập chỉ mục (vd\: kt, java, py, md). Để trống để dùng mặc định tích hợp sẵn. settings.rag.indexing.exclude.file.names=Tên tệp bị loại trừ -settings.rag.indexing.exclude.file.names.hint=Tên tệp chính xác cách nhau bằng dấu phẩy luôn bị bỏ qua (vd: package-lock.json, yarn.lock). +settings.rag.indexing.exclude.file.names.hint=Tên tệp chính xác cách nhau bằng dấu phẩy luôn bị bỏ qua (vd\: package-lock.json, yarn.lock). settings.rag.indexing.binary.extensions=Phần mở rộng nhị phân -settings.rag.indexing.binary.extensions.hint=Phần mở rộng tệp cách nhau bằng dấu phẩy được coi là nhị phân và bỏ qua khi lập chỉ mục (vd: png, jpg, zip, exe). Để trống để dùng mặc định tích hợp sẵn. +settings.rag.indexing.binary.extensions.hint=Phần mở rộng tệp cách nhau bằng dấu phẩy được coi là nhị phân và bỏ qua khi lập chỉ mục (vd\: png, jpg, zip, exe). Để trống để dùng mặc định tích hợp sẵn. settings.rag.indexing.embedding.batch.size=Kích thước lô nhúng settings.rag.indexing.embedding.batch.size.hint=Số đoạn văn bản gửi đến mô hình nhúng mỗi yêu cầu. Nếu lập chỉ mục chậm và bạn dùng nhà cung cấp từ xa (OpenAI, Gemini), hãy thử tăng lên 100–500. Nếu dùng mô hình cục bộ (Ollama, LM Studio), hãy giữ thấp để tránh hết thời gian chờ. -# Settings - Utility Models +## Settings - Models +settings.models.title=Mô hình +settings.models.description=Cấu hình hành vi mô hình AI toàn cục được chia sẻ trên tất cả các nhà cung cấp. +settings.models.max.tool.calling.round.trips=Số lượt gọi công cụ tối đa +settings.models.max.tool.calling.round.trips.hint=Số lần gọi công cụ tối đa mà AI có thể thực hiện trong một phản hồi (mặc định\: 10). Giá trị cao hơn cho phép các tác vụ agent phức tạp hơn nhưng tăng độ trễ và chi phí. + +# Memory Settings +settings.memory.title=Cài đặt bộ nhớ +settings.memory.description=Kiểm soát cách AI quản lý lịch sử hội thoại để duy trì trong cửa sổ ngữ cảnh của mô hình. +settings.memory.mode=Chế độ bộ nhớ +settings.memory.mode.compact=Gọn nhẹ +settings.memory.mode.compact.hint=Chi phí token thấp, ít chi tiết hơn +settings.memory.mode.compact.description=Tóm tắt tích cực. Chi phí token thấp, tóm tắt sớm và thường xuyên. Phù hợp cho các phiên rất dài hoặc mô hình nhạy cảm với chi phí. +settings.memory.mode.balanced=Cân bằng +settings.memory.mode.balanced.hint=Cân bằng tốt giữa chất lượng và chi phí +settings.memory.mode.balanced.description=Cân bằng tốt giữa chất lượng và chi phí. Kích hoạt tóm tắt ở 40% ngân sách bộ nhớ. Phù hợp với hầu hết các phiên. +settings.memory.mode.detail=Chi tiết +settings.memory.mode.detail.hint=Độ trung thực cao, nhiều token hơn +settings.memory.mode.detail.description=Tóm tắt tối thiểu. Giữ lại nhiều lượt hội thoại nguyên văn và tóm tắt phong phú hơn. Phù hợp cho các phiên ngắn hoặc khi cần nhớ chính xác. + +## Settings - Utility Models settings.utility.models.title=Mô hình tiện ích settings.utility.models.uses.selected=(sử dụng mô hình đã chọn) settings.utility.models.local.note={0} là nhà cung cấp cục bộ — mô hình chat đang hoạt động sẽ tự động được sử dụng cho các tác vụ tiện ích. -# Settings - Vision Models +## Settings - Vision Models settings.vision.models.title=Mô hình thị giác ## Settings - Image Models settings.image.models.title=Mô hình tạo hình ảnh -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=Cấu hình mô hình settings.provider.model.config.description=Ghi đè các mô hình mặc định được dùng cho các tác vụ cụ thể. Để trống trường nếu muốn sử dụng mô hình mặc định của nhà cung cấp. settings.provider.model.config.guide=Xem hướng dẫn cấu hình mô hình AI @@ -1055,26 +1188,24 @@ settings.provider.model.embedding.hint=Mô hình dùng để tạo vector embedd settings.model.placeholder.enter=Nhập mô hình {0} - # File Viewer Dialog file.viewer.title=Trình xem tệp file.viewer.title.with.name=Trình xem tệp - {0} file.viewer.dialog.close=Đóng file.viewer.copy.clipboard=Sao chép vào clipboard -file.viewer.copied=Đã sao chép! +file.viewer.copied=Đã sao chép\! # Mermaid Chart Renderer mermaid.setup.required.title=Cần Mermaid CLI mermaid.setup.privacy.note=Askimo hiển thị sơ đồ cục bộ để bảo vệ quyền riêng tư của bạn. mermaid.setup.instructions.title=Hướng dẫn cài đặt -mermaid.setup.instructions.text=Để hiển thị sơ đồ Mermaid trong Askimo, vui lòng làm theo hướng dẫn cài đặt tại: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.text=Để hiển thị sơ đồ Mermaid trong Askimo, vui lòng làm theo hướng dẫn cài đặt tại\: +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=Mở hướng dẫn cài đặt mermaid.setup.button.copy.diagram=Sao chép sơ đồ -mermaid.diagram.source.label=Nguồn sơ đồ: +mermaid.diagram.source.label=Nguồn sơ đồ\: mermaid.rendering.progress=Đang hiển thị sơ đồ... mermaid.error.rendering.title=Lỗi hiển thị sơ đồ -mermaid.error.rendering.raw.label=Sơ đồ thô: mermaid.error.unexpected.state=Trạng thái không mong đợi. Vui lòng thử lại. mermaid.error.failed.load.image=Không thể tải hình ảnh sơ đồ mermaid.button.copy.code=Sao chép mã @@ -1084,7 +1215,8 @@ mermaid.button.zoom.in=Phóng to mermaid.button.zoom.out=Thu nhỏ mermaid.button.reset.zoom=Đặt lại thu phóng mermaid.button.retry=Thử lại -mermaid.feedback.copied=Đã sao chép! +mermaid.feedback.copied=Đã sao chép\! + # Reference Material knowledge.source.type.folder=Thư mục (theo dõi thay đổi) @@ -1102,7 +1234,7 @@ mcp.instances.title=Các Instance MCP mcp.instances.description=Các instance MCP này có sẵn mcp.instances.empty=Không có instance MCP nào được cấu hình mcp.instances.count={0} instance(s) -mcp.instance.server.label=Máy chủ: {0} +mcp.instance.server.label=Máy chủ\: {0} mcp.instance.delete.confirm.title=Bạn có muốn xóa Instance MCP không? mcp.instance.delete.confirm.message=Bạn có chắc chắn muốn xóa instance mcp "{0}"? Thao tác này không thể hoàn tác. mcp.instance.enable.tooltip=Kích hoạt instance MCP này @@ -1128,7 +1260,7 @@ mcp.instance.field.description=Mô tả mcp.instance.field.description.placeholder=Mô tả ngắn gọn về chức năng của máy chủ này mcp.instance.field.transport=Loại truyền tải mcp.instance.field.command=Mẫu lệnh -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=Lệnh phân tách bằng dấu cách với các placeholder {{parameter}} mcp.instance.validation.error.empty.id=ID máy chủ không được để trống mcp.instance.validation.error.invalid.id.pattern=ID máy chủ chỉ được chứa các chữ cái thường, số và dấu gạch nối @@ -1137,20 +1269,20 @@ mcp.instance.validation.error.empty.command=Mẫu lệnh không được để t mcp.instance.validation.error.empty.parameter.key=Khóa tham số không được để trống mcp.instance.validation.error.empty.parameter.label=Nhãn tham số không được để trống mcp.instance.env.label=Biến môi trường (Tùy chọn) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=Định dạng: KHÓA=giá trị hoặc KHÓA={{parameter}} (mỗi dòng một cặp) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=Định dạng\: KHÓA\=giá trị hoặc KHÓA\={{parameter}} (mỗi dòng một cặp) mcp.instance.transport.stdio=Stdio (Quy trình cục bộ) mcp.instance.transport.http=HTTP (Máy chủ từ xa) mcp.instance.http.url.label=Mẫu URL -mcp.instance.http.url.placeholder=https://{{host}}/mcp hoặc https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp hoặc https\://api.example.com/mcp mcp.instance.http.url.hint=URL endpoint máy chủ. Sử dụng placeholder {{parameter}} cho các giá trị động mcp.instance.http.headers.label=Tiêu đề HTTP (Tùy chọn) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=Định dạng: Tên-Tiêu đề=giá trị hoặc Tên-Tiêu đề={{parameter}} (mỗi dòng một cặp) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=Định dạng\: Tên-Tiêu đề\=giá trị hoặc Tên-Tiêu đề\={{parameter}} (mỗi dòng một cặp) mcp.instance.http.timeout.label=Thời gian chờ (ms) mcp.instance.http.timeout.hint=Thời gian chờ yêu cầu bằng mili giây mcp.instance.validation.error.empty.url=Mẫu URL không được để trống -mcp.instance.validation.error.invalid.url=Mẫu URL phải bắt đầu bằng http:// hoặc https:// +mcp.instance.validation.error.invalid.url=Mẫu URL phải bắt đầu bằng http\:// hoặc https\:// # MCP Integrations (Project View) mcp.instance.delete.tooltip=Xóa instance MCP @@ -1161,7 +1293,7 @@ mcp.instance.field.serverId=Loại máy chủ # Add MCP Integration Dialog mcp.instance.name=Tên MCP -mcp.instance.name.placeholder=Ví dụ: Cơ sở dữ liệu sản xuất, Tệp dự án +mcp.instance.name.placeholder=Ví dụ\: Cơ sở dữ liệu sản xuất, Tệp dự án mcp.instance.tools.title=Các công cụ có sẵn mcp.instance.tools.count={0} công cụ có sẵn mcp.instance.tool.strategy.intent=Dựa trên Ý định @@ -1200,7 +1332,7 @@ mcp.tools.dialog.search.count={0} trên {1} công cụ mcp.tools.dialog.search.empty=Không có công cụ nào khớp với tìm kiếm của bạn mcp.tools.dialog.export=Xuất công cụ mcp.tools.dialog.export.success=Các công cụ đã được xuất tới {0} -mcp.tools.dialog.export.failed=Lỗi khi xuất công cụ: {0} +mcp.tools.dialog.export.failed=Lỗi khi xuất công cụ\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=Thêm Máy chủ MCP @@ -1256,7 +1388,7 @@ file.viewer.close=Đóng trình xem file.viewer.open.external=Mở bên ngoài file.viewer.binary=Tệp nhị phân — không thể xem trước dưới dạng văn bản. file.viewer.too.large=Tệp quá lớn để xem trước ({0} KB). Tối đa là 512 KB. -file.viewer.error=Không thể đọc tệp: {0} +file.viewer.error=Không thể đọc tệp\: {0} file.viewer.select.prompt=Chọn một tệp từ cây bên trên để xem trước nội dung # Project Side Panel @@ -1269,11 +1401,10 @@ panel.reindex.confirm.message="{0}" đang được lập chỉ mục. Dừng qu panel.reindex.confirm.button=Dừng và lập chỉ mục lại panel.reindex.confirm.cancel=Hủy panel.collapse=Thu gọn bảng điều khiển -panel.collapse=Thu gọn bảng điều khiển # RAG Status rag.status.started=Bắt đầu lập chỉ mục -rag.status.inprogress=Đang lập chỉ mục: {0}% +rag.status.inprogress=Đang lập chỉ mục\: {0}% rag.status.inprogress.unknown=Đang lập chỉ mục... rag.status.queued=Đang xếp hàng — đang chờ dự án khác hoàn tất việc lập chỉ mục rag.status.ready=Sẵn sàng @@ -1323,7 +1454,7 @@ plans.editor.label=Nội dung YAML plans.editor.placeholder=Dán hoặc nhập YAML kế hoạch của bạn tại đây... plans.editor.valid=YAML hợp lệ plans.editor.hint.title=Tham khảo -plans.editor.hint.fields=Bắt buộc: id, name, steps\nTùy chọn: description, icon, inputs, workflow\nLoại bước: text, multiline, toggle, number\nLoại quy trình: sequence, parallel, conditional +plans.editor.hint.fields=Bắt buộc\: id, name, steps\nTùy chọn\: description, icon, inputs, workflow\nLoại bước\: text, multiline, toggle, number\nLoại quy trình\: sequence, parallel, conditional plans.editor.menu.edit=Chỉnh sửa YAML plans.editor.ai.label=Tạo bằng AI plans.editor.ai.placeholder=Mô tả những gì bạn muốn kế hoạch này thực hiện bằng ngôn ngữ đơn giản... @@ -1352,7 +1483,6 @@ skills.view.empty.search=Không có kỹ năng nào khớp với tìm kiếm c skills.view.manage=Quản lý kỹ năng skills.view.select.prompt=Chọn một kỹ năng để chạy skills.view.select.hint=Chọn một kỹ năng từ bảng Kỹ năng ở bên phải -skills.view.select.skill=Chọn một kỹ năng… skills.view.run=Chạy kỹ năng skills.view.run.command=Gửi lệnh skills.view.running=Đang chạy… @@ -1383,12 +1513,12 @@ skills.view.panel.collapse=Thu gọn bảng skills.view.panel.expand=Mở rộng bảng skills.view.tab.skills=Kỹ năng skills.view.tab.workspace=Không gian làm việc -skills.view.last.run=Lần chạy cuối: {0} +skills.view.last.run=Lần chạy cuối\: {0} skills.view.category.uncategorized=Khác skills.view.search.placeholder=Tìm kiếm kỹ năng ... skills.view.search.clear=Xóa tìm kiếm skills.view.context.placeholder=Bạn muốn làm gì? (tùy chọn) -skills.view.command.mode.hint=Chế độ lệnh: đầu vào bắt đầu bằng / sẽ được chạy như lệnh tác nhân. +skills.view.command.mode.hint=Chế độ lệnh\: đầu vào bắt đầu bằng / sẽ được chạy như lệnh tác nhân. skills.view.system.prompt.preview=System Prompt skills.view.response.title=Phản hồi skills.view.followup.label=Theo dõi @@ -1398,7 +1528,7 @@ skills.view.history.empty=Chưa có lượt chạy nào skills.view.copy=Sao chép skills.view.system.prompt.file=tệp skills.view.system.prompt.files=tệp -skills.view.system.prompt.also.included=Cũng được bao gồm trong ngữ cảnh agent: +skills.view.system.prompt.also.included=Cũng được bao gồm trong ngữ cảnh agent\: skills.view.docs.tooltip=Xem Hướng dẫn Kỹ năng skills.view.mode.agentic=Tác nhân skills.view.mode.manual=Thủ công @@ -1410,11 +1540,6 @@ skills.agentic.skills.available=Có {0} kỹ năng khả dụng làm ngữ cản skills.agentic.no.skills.hint=Chưa có kỹ năng nào — hãy thêm kỹ năng trong Cài đặt → Kỹ năng để cung cấp cho tác nhân các khả năng chuyên biệt skills.agentic.model.default=Mô hình mặc định -# File / folder chooser -file.chooser.folder.select=Chọn -file.chooser.folder.hint=Nhấp đúp vào một thư mục để mở. Khi bạn đang ở trong thư mục muốn lập chỉ mục, hãy nhấp vào “Chọn”. -file.chooser.file.select=Chọn - # Onboarding Wizard onboarding.title=Chào mừng đến với Askimo onboarding.step.indicator=Bước {0} trong {1} @@ -1430,7 +1555,7 @@ onboarding.step.language.label=Ngôn ngữ # Onboarding Step 1: Analytics onboarding.step.analytics.title=Giúp Askimo tốt hơn cho mọi người onboarding.step.analytics.description=Askimo là miễn phí và mã nguồn mở. Chia sẻ dữ liệu sử dụng ẩn danh là cách đóng góp nhỏ bé. Nó giúp chúng tôi biết tính năng nào nên phát triển tiếp theo. -onboarding.step.analytics.collected.yes.features=✅ Tính năng nào được dùng (ví dụ: RAG, công cụ MCP, Kế hoạch, Kỹ năng) +onboarding.step.analytics.collected.yes.features=✅ Tính năng nào được dùng (ví dụ\: RAG, công cụ MCP, Kế hoạch, Kỹ năng) onboarding.step.analytics.collected.yes.version=✅ Phiên bản ứng dụng và loại hệ điều hành onboarding.step.analytics.collected.no.conversations=❌ Không lấy nội dung hội thoại hay prompt onboarding.step.analytics.collected.no.personal=❌ Không bao giờ có dữ liệu cá nhân, tệp hay API key @@ -1443,7 +1568,7 @@ onboarding.step.analytics.section.never=Những gì chúng tôi không bao giờ onboarding.step.analytics.toggle.subtitle=Giúp chúng tôi tập trung vào những gì quan trọng nhất · có thể thay đổi bất cứ lúc nào trong Cài đặt → Nâng cao # Onboarding Step 1: Welcome -onboarding.step.welcome.title=👋 Chào mừng đến với Askimo! +onboarding.step.welcome.title=👋 Chào mừng đến với Askimo\! onboarding.step.welcome.description=Trợ lý AI cá nhân cho bạn. Trò chuyện với nhiều mô hình AI, tổ chức tri thức trong dự án, và tự động hóa công việc với kỹ năng và kế hoạch. onboarding.step.welcome.feature1.title=💬 Chat với AI onboarding.step.welcome.feature1.description=Đặt câu hỏi, nhận trợ giúp cho công việc hoặc trò chuyện với bất kỳ mô hình AI nào. @@ -1470,9 +1595,8 @@ onboarding.step.directives.feature2.description=Câu hỏi mơ hồ thì câu tr onboarding.step.directives.feature3.title=Chuyên gia phù hợp cho từng công việc onboarding.step.directives.feature3.description=Cần gia sư kiên nhẫn để học và người review code thẳng thắn khi debug? Giữ chỉ dẫn riêng biệt để AI vào đúng vai cho từng nhiệm vụ. onboarding.step.directives.link=Xem ví dụ và mẹo - # Onboarding Step 6: Ready -onboarding.step.ready.title=🚀 Mọi thứ đã sẵn sàng! +onboarding.step.ready.title=🚀 Mọi thứ đã sẵn sàng\! onboarding.step.ready.description=Bạn đã cấu hình xong. Hãy bắt đầu chat đầu tiên hoặc khám phá các tài nguyên bên dưới. onboarding.step.ready.link.docs=📚 Xem tài liệu onboarding.step.ready.link.providers=🔧 Cấu hình nhà cung cấp AI @@ -1482,16 +1606,16 @@ onboarding.step.ready.link.github=⭐ Star cho chúng tôi trên GitHub onboarding.step.persona.title=🎯 Bạn chủ yếu muốn làm gì? onboarding.step.persona.description=Chọn tùy chọn nghe giống công việc của bạn nhất. Askimo sẽ hiển thị các tính năng phù hợp nhất. Bạn luôn có thể thay đổi điều này từ menu Xem. onboarding.step.persona.developer.description=Đọc và viết mã, tái cấu trúc tệp, tạo giàn giáo (scaffolding) hoặc chạy các tác vụ đại lý trên dự án cục bộ của bạn. -onboarding.step.persona.developer.features=Kích hoạt: Skills (Gemini CLI, Claude Code), Projects +onboarding.step.persona.developer.features=Kích hoạt\: Skills (Gemini CLI, Claude Code), Projects onboarding.step.persona.researcher.description=Nghiên cứu các chủ đề, phân tích dữ liệu, viết báo cáo có cấu trúc và nhận câu trả lời dựa trên kiến thức. -onboarding.step.persona.researcher.features=Kích hoạt: Plans, Projects (RAG) +onboarding.step.persona.researcher.features=Kích hoạt\: Plans, Projects (RAG) onboarding.step.persona.manager.description=Soạn thảo email, xử lý ghi chú cuộc họp, viết báo cáo trạng thái hoặc chạy quy trình làm việc nội dung nhiều bước. -onboarding.step.persona.manager.features=Kích hoạt: Plans +onboarding.step.persona.manager.features=Kích hoạt\: Plans onboarding.step.persona.everything.description=Tôi làm nhiều việc kết hợp — hãy cho tôi xem tất cả các tính năng và tôi sẽ quyết định sử dụng gì. -onboarding.step.persona.everything.features=Kích hoạt: Skills, Plans, Projects, MCP, RAG +onboarding.step.persona.everything.features=Kích hoạt\: Skills, Plans, Projects, MCP, RAG # Persona labels persona.developer=💻 Viết và đánh giá mã persona.researcher=🔬 Nghiên cứu và phân tích persona.manager=📋 Viết và tổ chức -persona.everything=⚡ Tôi làm nhiều việc kết hợp \ No newline at end of file +persona.everything=⚡ Tôi làm nhiều việc kết hợp diff --git a/desktop-shared/src/main/resources/i18n/messages_zh_CN.properties b/desktop-shared/src/main/resources/i18n/messages_zh_CN.properties index c216282f1..428a01e62 100644 --- a/desktop-shared/src/main/resources/i18n/messages_zh_CN.properties +++ b/desktop-shared/src/main/resources/i18n/messages_zh_CN.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - English Strings +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=系统 menu.view.appearance.light=浅色 menu.view.appearance.dark=深色 menu.view.fullscreen=进入全屏 +menu.view.bookmarks=查看书签 menu.terminal=终端 menu.terminal.new=新建终端 menu.help=帮助 @@ -43,7 +44,7 @@ menu.help.share=🗣 分享 Askimo menu.help.share.x=分享到 X / Twitter menu.help.share.linkedin=分享到 LinkedIn menu.help.share.facebook=分享到 Facebook -menu.help.share.text=推荐 Askimo — 免费、本地优先的 AI 桌面客户端,支持 Ollama、OpenAI、Anthropic 等。 https://askimo.chat +menu.help.share.text=推荐 Askimo — 免费、本地优先的 AI 桌面客户端,支持 Ollama、OpenAI、Anthropic 等。 https\://askimo.chat menu.help.share.hackernews=发布到 Hacker News menu.eventlog=事件日志 menu.help.model.capabilities=打开模型功能文件 @@ -51,6 +52,7 @@ menu.dev.clear.account.preferences=[Dev] 清除账号首选项 menu.about=关于 Askimo menu.help.check.updates=检查更新... menu.help.diagnostics=系统诊断... +menu.help.support.askimo=支持 Askimo ⭐ # Common Dialog Buttons dialog.cancel=取消 @@ -107,6 +109,12 @@ discover.stat.projects=项目 discover.stat.mcp=MCP 服务器 discover.stat.plans=计划 discover.stat.skills=技能 +discover.customize=自定义 +discover.customize.show_token_usage=显示 Token 使用情况卡片 +discover.tokens.title=按 Token 使用量排名的模型 +discover.tokens.total=共 {0} +discover.tokens.view_details=查看详情 +discover.tokens.empty=暂无 Token 使用记录。开始聊天以在此处查看统计信息。 discover.explore.title=探索功能 discover.explore.mcp.title=MCP 服务器 discover.explore.mcp.desc=通过 Model Context Protocol,使用外部工具和数据源扩展 Askimo。 @@ -195,13 +203,16 @@ projects.sources.expand=显示参考资料 projects.sources.collapse=隐藏参考资料 projects.sources.empty.title=尚未添加参考资料 projects.sources.empty.description=添加文档后,Askimo 才能在回答问题时进行参考 -projects.sources.info.tooltip=参考资料可帮助 Askimo 理解您的具体上下文。\n\n\ -请添加包含您希望 Askimo 在回答问题时参考的信息的文件夹、文件或网站。\n\n\ +projects.sources.info.tooltip=参考资料可帮助 Askimo 理解您的具体上下文。\n\ +\n\ +请添加包含您希望 Askimo 在回答问题时参考的信息的文件夹、文件或网站。\n\ +\n\ 例如:\n\ • 项目文档\n\ • 公司知识库\n\ • 技术规格说明\n\ -• 研究论文\n\n\ +• 研究论文\n\ +\n\ Askimo 将搜索这些资料,以提供更准确、更具上下文感知的回答。 projects.sources.type.local_folders=本地文件夹 projects.sources.type.local_files=本地文件 @@ -229,7 +240,7 @@ project.menu.tooltip=项目菜单 project.new.chat.placeholder=在 {0} 中开始新聊天 project.recent.chats=最近的聊天 project.no.chats=还没有聊天记录。请在下方开始新的聊天! -project.indexing.label=正在索引知识源: {0} +project.indexing.label=正在索引知识源\: {0} project.indexing.queued=索引已排队 - 等待另一个项目完成... project.indexing.failed=索引失败。请尝试从项目菜单重新索引。 project.indexing.ready.label=已索引 @@ -244,12 +255,11 @@ session.error.removing=无法从项目中移除会话。请重试。 # Settings settings.title=设置 -settings.general=常规 settings.appearance=外观 settings.appearance.accent=强调色 settings.appearance.accent.description=安全地自定义单一强调色。Askimo 会将其应用于主要界面强调,并派生相关颜色以保证可读性。 settings.appearance.accent.label=强调色(Hex) -settings.appearance.accent.invalid=请输入有效的十六进制颜色,例如 #0284C7 +settings.appearance.accent.invalid=请输入有效的十六进制颜色,例如 \#0284C7 settings.appearance.accent.swatch.primary=主色 settings.appearance.accent.swatch.primary.container=容器 settings.appearance.accent.swatch.on.primary.container=容器前景 @@ -316,12 +326,9 @@ settings.skills.add.folder=添加文件夹 settings.skills.add.folder.name=文件夹名称 settings.advanced=高级 settings.about=关于 -settings.model=模型 -settings.provider=提供商 settings.theme=主题 settings.save=保存 settings.cancel=取消 -settings.provider.change.button=更改 settings.model.change.button=更改 settings.change.button=更改 @@ -332,24 +339,16 @@ theme.dark=深色 theme.dark.description=始终使用深色主题 theme.system=系统 theme.system.description=跟随系统主题 -theme.sepia=褐色 -theme.sepia.description=温暖的羊皮纸色调,护眼 -theme.ocean=海洋 -theme.ocean.description=柔和的天蓝色调,平静清新 -theme.nord=Nord -theme.nord.description=北极风深色调色板,冷静而专注 -theme.sage=鼠尾草 -theme.sage.description=低饱和灰绿色调,沉稳而雅致 -theme.rose=玫瑰 -theme.rose.description=柔和的腮红粉,优雅而温暖 -theme.indigo=靛蓝 -theme.indigo.description=深邃的紫蓝色,神秘而富有创意 settings.layout.density=布局密度 settings.layout.density.description=调整应用程序的间距和内边距密度。 layout.density.comfortable=舒适 layout.density.comfortable.description=更宽松的间距,方便浏览 layout.density.compact=紧凑 layout.density.compact.description=更紧密的间距以显示更多内容 +layout.density.relaxed=宽松 +layout.density.relaxed.description=稍大的间距以提升可读性 +layout.density.spacious=超宽松 +layout.density.spacious.description=为超高 DPI 屏幕提供最大间距 settings.background.image=背景图片 settings.background.image.description=选择背景图片——可选择预设图片或使用您自己的图片。半透明覆盖层可保持文字清晰易读。背景图片独立于所选主题。 settings.background.image.browse=浏览 @@ -403,6 +402,31 @@ settings.proxy.password.placeholder=可选 settings.proxy.system.info=ℹ️ 正在使用操作系统配置中的系统代理设置 settings.proxy.socks5.no.auth.info=ℹ️ 当前尚不支持 SOCKS5 认证。请使用无需认证的 SOCKS5 代理,或如果您需要此功能,请在 GitHub 上创建 issue。 +# Web Search Settings +settings.web_search=网络搜索 +settings.web_search.description=启用内置网络搜索,让 AI 无需 API 密鉅即可查找最新信息。DuckDuckGo 开筱即用 — 升级到 Brave 或 Tavily 可获得更高质量的结果。 +settings.web_search.title=网络搜索配置 +settings.web_search.enabled=已启用 +settings.web_search.zero_config_note=DuckDuckGo 无需设置即可使用。仅当您希望获得更高质量或更大量结果且拥有该服务的 API 密鉅时,才在下方选择其他后端。 +settings.web_search.backend=搜索后端 +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=免费,无需 API 密鉅。注重隐私的默认选项。 +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=快速,独立索引。需要免费的 Brave Search API 密鉅。 +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=AI 优化结果,支持可选的答案提取功能。需要 Tavily API 密鉅。 +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=通过您自己的 SearxNG 实例进行注重隐私的元搜索。无需 API 密鉅。 +settings.web_search.api_key=API 密鉅 +settings.web_search.api_key.placeholder=在此处粘贴您的 API 密鉅 +settings.web_search.get_api_key=获取免费 API 密鉅 ↗ +settings.web_search.endpoint=SearxNG 实例 URL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=测试搜索 +settings.web_search.test.running=测试中... +settings.web_search.test.success=✅ 搜索正常运行 +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=访客用户 user.profile.menu=用户资料菜单 @@ -465,6 +489,7 @@ user.interest.environment=环境 # Actions action.delete=删除 +action.remove=移除 action.edit=编辑 action.pin=固定到侧边栏 action.unpin=从侧边栏取消固定 @@ -481,22 +506,45 @@ action.close=关闭 action.show.more=显示更多 action.show.less=显示更少 action.back=返回 +action.next=下一步 action.retry=重试 action.done=完成 action.refresh=刷新 - - # Happiness Gate (shown before Star Prompt) happiness.gate.title=您觉得 Askimo 怎么样? happiness.gate.subtitle=让我们知道您的使用体验 happiness.gate.happy=非常喜欢!😍 happiness.gate.neutral=还不错 🙂 happiness.gate.unhappy=不太好 😕 -happiness.gate.feedback.title=帮助我们改进 -happiness.gate.feedback.message=您愿意分享您的反馈吗?这有助于我们为您和其他所有人把 Askimo 做得更好。 -happiness.gate.feedback.yes=是的,分享反馈 -happiness.gate.feedback.no=不了,谢谢 + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=什么地方没能满足您的需求? +feedback.dialog.subtitle=请勾选所有适用项 — 您的反馈将直接发送给团队。 +feedback.comment.label=详细说明(可选) +feedback.comment.placeholder=描述问题或分享您的想法… +feedback.email.label=您的电子邮箱(可选) +feedback.email.placeholder=you@example.com +feedback.email.hint=仅用于跟进您的反馈。我们绝不会发送垃圾邮件。 +feedback.action.skip=跳过 +feedback.action.send=发送反馈 +feedback.thanks.title=感谢您的反馈! +feedback.thanks.message=您的意见有助于我们完善 Askimo。非常感谢。 +feedback.thanks.close=关闭 + +feedback.remind.title=没关系! +feedback.remind.message=您可以随时通过“帮助”菜单 → “发送反馈”分享您的意见。 +feedback.remind.got.it=知道了 + +# Feedback reasons +feedback.reason.inaccurate=AI 回答不准确 +feedback.reason.slow=速度太慢 +feedback.reason.missing.feature=缺少我需要的功能 +feedback.reason.broken=出现错误 +feedback.reason.hard.to.use=很难使用 +feedback.reason.integration=集成问题 +feedback.reason.privacy=隐私顾虑 +feedback.reason.other=其他 # Star Prompt star.prompt.title=正在享受 Askimo 吗?帮忙传播消息 💙 @@ -508,6 +556,12 @@ star.prompt.share.description=在 X、LinkedIn 或 Facebook 上向您的网络 star.prompt.maybe.later=暂不 star.prompt.already.starred=已标星 ✓ star.prompt.social.proof=⭐ 加入 {0} 位已为 Askimo 标星的用户 +star.prompt.thanks.title=非常感谢! 🌟 +star.prompt.thanks.message=您的支持对我们意义重大,并能帮助我们继续打造 Askimo。 +star.prompt.thanks.done=完成 ✓ +star.prompt.remind.title=没关系! +star.prompt.remind.message=您可以随时通过“帮助”菜单 → “支持 Askimo”来给予我们支持。 +star.prompt.remind.got.it=知道了 # Analytics Settings (Advanced section toggle) settings.analytics.title=匿名分析 @@ -518,12 +572,17 @@ settings.hardware.acceleration.title=Tăng tốc phần cứng settings.hardware.acceleration.description=Sử dụng kết xuất tăng tốc bởi GPU để có hiệu suất giao diện mượt mà hơn. Hãy tắt tùy chọn này nếu bạn gặp sự cố về đồ họa. settings.hardware.acceleration.description.windows=Sử dụng kết xuất tăng tốc bởi GPU (Direct3D/OpenGL) để có hiệu suất giao diện mượt mà hơn. Hãy tắt tùy chọn này nếu bạn gặp hiện tượng nhấp nháy hoặc tốc độ làm mới thất thường với màn hình G-Sync hoặc FreeSync. settings.hardware.acceleration.restart.notice=Khởi động lại Askimo để thay đổi này có hiệu lực. -settings.hardware.acceleration.restart.title=Yêu cầu khởi động lại -settings.hardware.acceleration.restart.message=Vui lòng khởi động lại Askimo để thay đổi kết xuất có hiệu lực. -settings.hardware.acceleration.vrr.hint.title=Đã phát hiện G-Sync / FreeSync -settings.hardware.acceleration.vrr.hint.message=Màn hình của bạn dường như đang sử dụng tốc độ làm mới cao, có thể được ghép nối với G-Sync hoặc FreeSync. Một số người dùng gặp hiện tượng nhấp nháy hoặc tốc độ khung hình thất thường khi sử dụng kết xuất tăng tốc phần cứng trong cấu hình này. Bạn có muốn chuyển sang kết xuất phần mềm không? (Yêu cầu khởi động lại) -settings.hardware.acceleration.vrr.hint.disable=Chuyển sang kết xuất phần mềm -settings.hardware.acceleration.vrr.hint.keep=Giữ tăng tốc phần cứng +settings.ui.scale.title=显示缩放 +settings.ui.scale.description=调整整体 UI 缩放比例。需要重启才能使更改生效。 +settings.ui.scale.option.system.default=系统默认 +settings.ui.scale.restart.notice=重启 Askimo 以使缩放更改生效。 +settings.ui.scale.learn.more=了解有关 HiDPI 和 UI 缩放的更多信息 +settings.hardware.acceleration.restart.title=需要重启 +settings.hardware.acceleration.restart.message=请重启 Askimo 以使渲染更改生效。 +settings.hardware.acceleration.vrr.hint.title=检测到 G-Sync / FreeSync +settings.hardware.acceleration.vrr.hint.message=您的显示器似乎使用了高刷新率,且可能已启用 G-Sync 或 FreeSync。在此配置下,部分用户在使用硬件加速渲染时可能会遇到闪烁或帧率不稳定的情况。您想切换到软件渲染吗?(需要重启) +settings.hardware.acceleration.vrr.hint.disable=切换到软件渲染 +settings.hardware.acceleration.vrr.hint.keep=保持硬件加速 # File operations file.overwrite.title=文件已存在 @@ -531,10 +590,8 @@ file.overwrite.message=该文件已存在。你要覆盖它吗? file.overwrite.confirm=覆盖 file.name.too.long=文件名太长。请使用较短的文件名(最多 255 个字符)。 - # About about.title=关于 {0} -action.remove=移除 about.version=版本 about.buildDate=构建日期 about.buildJdk=构建 JDK @@ -566,6 +623,7 @@ shortcut.stop.ai.response=停止 AI 回复 shortcut.quit.application=退出应用 shortcut.navigate.to.sessions=前往会话 shortcut.navigate.to.projects=转到项目 +shortcut.navigate.to.bookmarks=导航到书签 shortcut.enter.fullscreen=进入全屏 shortcut.close.search=关闭搜索 shortcut.next.search.result=下一个搜索结果 @@ -574,7 +632,6 @@ shortcut.attach.file=附加文件 shortcut.send.message=发送消息 shortcut.new.line=新行 - # Chat View chat.welcome=欢迎使用 Askimo!\n在下方输入消息开始对话。 chat.no.active.session=从侧边栏选择一个会话,或开始新的聊天 @@ -614,8 +671,7 @@ global.search.results.count=找到{0}个结果 global.search.results.count.plural=找到{0}个结果 # Rest of chat view strings -chat.directive=指令: -chat.directive.none=无 +chat.directive=指令 chat.directive.new=新指令 chat.directive.manage=管理指令 chat.directive.learn.more=了解如何使用指令 @@ -625,7 +681,11 @@ chat.drop.files=拖拽文件以将其附加到对话中 chat.create.image.menu=创建图像 chat.create.image.mode=图像 chat.create.image.mode.cancel=取消图像创建模式 +chat.image.model.missing.title=未配置图像模型 +chat.image.model.missing.message=未为 {0} 设置图像模型。打开 设置 > AI 提供商 > 图像生成模型,并先设置模型名称。 chat.tools.button=可用工具 +chat.tools.button.disabled=可用工具({0} 已禁用) +chat.tools.button.model.no.support=此模型不支持工具 chat.tools.popup.title=可用工具 chat.tools.popup.loading=正在加载服务器... chat.tools.popup.no.servers.global=未配置全局 MCP 服务器。 @@ -634,7 +694,6 @@ chat.tools.server.scope.global=全局 chat.tools.server.scope.project=项目 chat.tools.server.scope.builtin=内置 chat.tools.tool.no.description=暂无描述 -chat.tools.button.disabled=可用工具({0} 已禁用) chat.reasoning.effort.label=思考 chat.reasoning.effort.tooltip=推理力度 — 控制模型在响应前思考的深度 chat.reasoning.effort.off=关闭 @@ -646,6 +705,7 @@ chat.reasoning.effort.medium.description=深度与速度平衡。适合大多数 chat.reasoning.effort.high=高 chat.reasoning.effort.high.description=彻底推理,成本较高。最适合解决复杂问题。 chat.input.placeholder=输入消息...(Enter 发送,Shift+Enter 换行) +chat.input.placeholder.hint.attach=使用 {0}+A 附加文件,或将其拖放到此处 chat.select.file=选择文件(可多选) chat.attachment.remove=移除附件 chat.attachment.preview.loading=正在加载预览… @@ -667,8 +727,8 @@ sessions.empty.hint=💡 开始新的聊天以创建第一个会话! sessions.search.placeholder=按标题搜索… sessions.search.empty=没有与 "{0}" 匹配的会话。 -# 通用表格分页控件 -table.page.size.label=每页行数: +# Generic table pagination controls +table.page.size.label=每页行数\: table.page=第 {0} 页 共 {1} 页 table.page.previous=上一页 table.page.next=下一页 @@ -717,6 +777,8 @@ settings.font.size=字号 settings.font.line.spacing=行间距 settings.shortcuts=快捷键 settings.shortcuts.description=查看所有可用的键盘快捷键,以提升您的工作效率 +settings.shortcuts.search=搜索快捷键... +settings.shortcuts.no_results=没有匹配搜索的快捷键 settings.app.language=应用语言 settings.app.language.translation.help=发现错误?帮助我们改进翻译。 settings.app.language.translation.contribute=在 Crowdin 上贡献 @@ -731,15 +793,17 @@ settings.model.select.title=选择模型 settings.model.current=当前模型 settings.model.selected=已选模型 settings.model.new=新模型 +settings.model.use.default=使用默认值 settings.model.change.description=从下面的列表中选择一个模型: settings.model.search=搜索模型 settings.model.search.placeholder=输入以筛选模型... settings.model.filtered=显示 {0}/{1} 个模型 settings.model.no.match=无匹配模型 -settings.model.no.results=无匹配模型 +settings.model.chat.filter.label=聊天模型 · 已显示 {0} +settings.model.chat.filter.show.all=显示所有 {0} settings.configure.title=配置 {0} settings.test.connection.testing=正在测试... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=无法连接到提供商。请验证您的 API 密钥是否正确(对于云提供商)或您的基础 URL 是否可达(对于本地提供商)。您可以使用上面的帮助链接找到设置说明。 # Directives Dialog @@ -784,6 +848,8 @@ log.level.trace.description=显示所有日志(最详细) # Message Components message.loading.previous=正在加载更早的消息... message.thinking=思考中… ({0}s) +message.thinking.section.streaming=💭 思考中... +message.thinking.section.done=💭 已思考 message.copy=复制消息 message.copy.description=复制消息 message.edit=编辑消息 @@ -810,13 +876,40 @@ message.ai.try.again.confirm.title=重新生成回复? message.ai.try.again.confirm.message=此操作将删除此位置之后的所有消息。是否继续? message.ai.try.again.confirm.cancel=取消 message.ai.try.again.confirm.confirm=重新生成 +message.ai.fork=从此处 Fork 会话 +message.ai.fork.description=将此对话 Fork 为一个新的独立会话 message.ai.export.pdf=导出为 PDF message.ai.export.pdf.dialog.title=将 AI 回复保存为 PDF +message.bookmark=收藏消息 +message.bookmark.remove=取消收藏 +message.bookmark.description=收藏此消息 message.edited.indicator=(已编辑) message.date.today=今天 message.date.yesterday=昨天 message.token.usage={0} 个 token · {1} 进 / {2} 出 -message.token.usage.tooltip=此回复使用的 token。\n输入: 您的 prompt + 发送给 AI 的上下文。\n输出: AI 生成的回复。 +message.token.usage.tooltip=此回复使用的 token。\n输入\: 您的 prompt + 发送给 AI 的上下文。\n输出\: AI 生成的回复。 + +# Bookmarks +chat.bookmarks.button.tooltip=书签 +chat.bookmarks.popover.title=已固定的消息 +chat.bookmarks.popover.empty.title=暂无书签 +chat.bookmarks.popover.empty.hint=点击消息下方的书签图标进行固定 +bookmarks.title=书签 +bookmarks.empty.title=暂无书签 +bookmarks.empty.hint=点击消息下方的固定图标添加书签 +bookmarks.session.untitled=未命名对话 +bookmarks.message.count=已固定 {0} 条 +bookmarks.role.user=你 +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=正在运行工具... +tool.call.header.done=已使用 {0} 个工具 +tool.call.status.done=已完成 +tool.call.status.failed=失败 +tool.call.detail.arguments=参数 +tool.call.detail.result=结果 + attachment.download=下载附件 attachment.download.description=下载此附件 attachment.save.file=保存附件 @@ -826,48 +919,62 @@ outdated.branch.header=来自上次编辑的 {0} 条过期消息(点击展开 outdated.label=过期 # Provider Dialog -provider.change.title=更换服务商 -provider.select.title=选择服务商 +provider.manage.title=管理服务商 +provider.type.picker.title=选择服务商类型 +provider.type.picker.prompt=选择要添加的服务商类型: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=添加服务商 +provider.no.instances.hint=尚未配置任何服务商。点击 "添加服务商" 以开始。 +provider.model.panel.select.hint=在左侧选择一个提供商以浏览其模型 +provider.model.panel.model.count={0} 个模型 +provider.model.default.badge=默认 +provider.instance.name.label=实例名称 +provider.instance.name.placeholder=例如 "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=名为"{0}"的提供商已存在 provider.setup.required.title=需要设置 AI 服务商 provider.setup.required.message=开始聊天前需选择并配置 AI 服务商。 provider.setup.required.button=设置 -provider.select.prompt=选择服务商: provider.configure.prompt=配置: -provider.choose.placeholder=请选择服务商... provider.setup.guide=如何设置 {0} provider.apikey.stored=API Key 已安全保存 provider.apikey.enter=输入 API Key -provider.apikey.already.stored=已保存 provider.apikey.security.message=🔒 您的 API Key 已加密并安全存储。我们不会共享数据。 provider.apikey.security.link=了解我们如何保护您的数据 provider.not.set=未设置 # Provider Configuration - OpenAI -provider.openai.apikey.description=OpenAI API Key(https://platform.openai.com/account/api-keys) +provider.openai.apikey.description=OpenAI API Key(https\://platform.openai.com/account/api-keys) provider.openai.apikey.stored=API Key 已保存。留空表示保留现有 Key。 -provider.openai.setup.help=使用 OpenAI 需要 API Key。\n\n1. 获取:https://platform.openai.com/account/api-keys\n2. 在设置中配置或使用 :change-settings +provider.openai.setup.help=使用 OpenAI 需要 API Key。\n\n1. 获取:https\://platform.openai.com/account/api-keys\n2. 在设置中配置或使用 \:change-settings # Provider Configuration - Anthropic -provider.anthropic.apikey.description=Anthropic API Key:https://console.anthropic.com/ +provider.anthropic.apikey.description=Anthropic API Key:https\://console.anthropic.com/ provider.anthropic.apikey.stored=API Key 已保存。 -provider.anthropic.setup.help=使用 Anthropic 需要 API Key。\n\n1. 获取:https://console.anthropic.com/\n2. 在设置中配置或使用 :change-settings +provider.anthropic.setup.help=使用 Anthropic 需要 API Key。\n\n1. 获取:https\://console.anthropic.com/\n2. 在设置中配置或使用 \:change-settings +provider.anthropic.max_tokens.label=最大 Token 数 +provider.anthropic.max_tokens.description=模型每次响应可生成的最大 Token 数(思考 + 回答的总和)。 +provider.anthropic.thinking_budget_tokens.label=思考预算 Token 数 +provider.anthropic.thinking_budget_tokens.description=Anthropic 用于思考的最大 Token 数。设置为 0 可让模型自动决定(推荐)。 +provider.anthropic.thinking_max_tokens.label=思考时最大 Token 数 +provider.anthropic.thinking_max_tokens.description=启用思考功能时的总 Token 上限(思考 + 回答)。设置为 0 以使用“最大 Token 数”代替。 # Provider Configuration - Gemini -provider.gemini.apikey.description=Google AI Studio API Key:https://aistudio.google.com/app/apikey +provider.gemini.apikey.description=Google AI Studio API Key:https\://aistudio.google.com/app/apikey provider.gemini.apikey.stored=API Key 已保存。 -provider.gemini.setup.help=使用 Gemini 需要 API Key。\n\n1. 获取:https://aistudio.google.com/app/apikey\n2. 在设置中配置或使用 :change-settings +provider.gemini.setup.help=使用 Gemini 需要 API Key。\n\n1. 获取:https\://aistudio.google.com/app/apikey\n2. 在设置中配置或使用 \:change-settings # Provider Configuration - XAI -provider.xai.apikey.description=XAI API Key:https://console.x.ai/ +provider.xai.apikey.description=XAI API Key:https\://console.x.ai/ provider.xai.apikey.stored=API Key 已保存。 -provider.xai.setup.help=使用 XAI 需要 API Key。\n\n1. 获取:https://console.x.ai/\n2. 在设置中配置或使用 :change-settings +provider.xai.setup.help=使用 XAI 需要 API Key。\n\n1. 获取:https\://console.x.ai/\n2. 在设置中配置或使用 \:change-settings # Provider Configuration - Ollama -provider.ollama.baseurl.description=Ollama 基础 URL(默认 http://localhost:11434) -provider.ollama.setup.help=使用 Ollama 需要本地运行。\n\n1. 安装:https://ollama.ai/\n2. 启动服务\n3. 如需可更改基础 URL +provider.ollama.baseurl.description=Ollama 基础 URL(默认 http\://localhost\:11434) +provider.ollama.setup.help=使用 Ollama 需要本地运行。\n\n1. 安装:https\://ollama.ai/\n2. 启动服务\n3. 如需可更改基础 URL # Provider Configuration - Docker AI -provider.docker.baseurl.description=Docker AI 基础 URL(默认 http://localhost:12434) +provider.docker.baseurl.description=Docker AI 基础 URL(默认 http\://localhost\:12434) provider.docker.setup.help=使用 Docker AI 需要本地运行。\n\n1. 确保 Docker AI 已安装并运行\n2. 启动服务\n3. 如需可更改基础 URL # Provider Configuration - LocalAI @@ -875,12 +982,13 @@ provider.localai.baseurl.description=LocalAI 基础 URL provider.localai.setup.help=使用 LocalAI 需先运行。\n\n1. 安装并启动 LocalAI\n2. 配置基础 URL # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=LMStudio 基础 URL(默认 http://localhost:1234) -provider.lmstudio.setup.help=使用 LMStudio:\n\n1. 安装:https://lmstudio.ai/\n2. 启动本地服务\n3. 可选更改基础 URL +provider.lmstudio.baseurl.description=LMStudio 基础 URL(默认 http\://localhost\:1234) +provider.lmstudio.setup.help=使用 LMStudio:\n\n1. 安装:https\://lmstudio.ai/\n2. 启动本地服务\n3. 可选更改基础 URL provider.lmstudio.openai.compat.info=Askimo 使用 OpenAI 兼容端点(/v1),而非 LMStudio 原生 API(/api/v1/)。 # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=您的OpenAI兼容实例的基础URL +provider.openai_compatible.apikey.description=提供商的 API 密钥(可选 - 如果端点不需要身份验证,请留空) provider.openai_compatible.apikey.stored=API密钥已安全存储。留空以保留现有密钥,或输入新密钥进行更新。 # System Resources @@ -892,6 +1000,12 @@ system.diagnostics.jvm.memory=JVM 内存 (已用 / 总计) system.diagnostics.cpu.usage=CPU 使用率 system.diagnostics.telemetry=遥测 +# Telemetry export +telemetry.export.csv=导出 CSV +telemetry.export.dialog.title=将遥测数据导出为 ZIP +telemetry.export.error.title=导出失败 +telemetry.export.error.message=导出遥测数据失败:{0} + # Telemetry telemetry.reset=重置遥测数据 telemetry.title=📊 会话指标 @@ -907,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=总查询数 telemetry.rag.triggered.label=已触发 telemetry.rag.skipped.label=已跳过 -telemetry.llm.calls=LLM 调用 -telemetry.llm.calls.count={0} 次调用 -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} 错误 -telemetry.total.tokens=总 Token 数: {0} telemetry.llm.col.provider=提供商 telemetry.llm.col.model=模型 telemetry.llm.col.calls=调用 @@ -954,24 +1063,26 @@ export.format.html.benefit.2=可在任何浏览器查看 export.format.html.benefit.3=专业外观 export.format.html.benefit.4=易于分享 - # Error Messages error.network=⚠️ 无法连接到 AI 服务{endpoint}\n\n请检查:\n• 网络连接\n• AI 服务地址(检查设置)\n• 防火墙设置\n• 服务是否可用 error.authentication=⚠️ API 密钥无效或缺失{provider}\n\n请在设置中配置您的 API 密钥以解决此问题。 -error.model_configuration=⚠️ 模型配置错误:{issue}\n\n解决方法:\n1. 打开设置\n2. 选择 AI 提供商\n3. 从列表中选择模型 +error.model_not_found=⚠️ 未找到模型:{model}\n\n该模型可能已被提供商弃用或删除。请选择其他模型。 +error.provider_not_configured=⚠️ 尚未配置 AI 提供商。\n\n开始聊天需要:\n1. 打开设置\n2. 选择 AI 提供商(OpenAI、Ollama、Anthropic 等)\n3. 输入 API Key 或配置连接 error.rate_limit=⚠️ 已超过速率限制\n{retryAfter}\n\n您已达到 API 使用上限,请稍后再发送消息。 error.insufficient_credits=⚠️ 积分不足\n\n您的积分余额过低。\n\n请前往提供商的账单页面充值。 error.timeout=⚠️ 请求在 {timeout} 秒后超时\n\n可能原因:\n• 服务器负载过高,请稍后重试\n• 请求过于复杂,请尝试简化\n• 网络延迟 +error.context_length=⚠️ 上下文窗口已超出限制\n\n总输入内容(对话历史记录 + 您的消息 + 附件)太大,此模型无法处理。\n\n解决方法:\n• 开始新的聊天会话以清除对话历史记录\n• 缩短您的消息或删除较大的附件\n• 如果使用本地模型(Ollama / LM Studio / Docker),请在设置中增加上下文大小\n• 切换到具有更大上下文窗口的模型 error.invalid_request=⚠️ 无效请求:{details}\n\n请检查输入内容后重试。 +error.local_server=⚠️ 本地 AI 服务器错误!\n\nAI 服务器进程崩溃或无法加载模型。这不是由 Askimo 引起的。\n\n可能原因:\n• 模型文件损坏或不完整 — 请尝试重新下载\n• RAM/VRAM 不足 — 请尝试更小的量化版本(例如 Q4 而非 Q8)\n• 当前服务器版本不支持该模型格式\n• 服务器进程被操作系统终止(内存不足)\n\n处理方法:\n1. 查看本地 AI 服务器日志\n2. 重启服务器后重试\n3. 重新下载模型\n4. 尝试其他模型或量化级别\n\n技术详情:{details} error.system=⚠️ 系统错误\n\n发生了意外错误:{errorCode}\n\n请联系 Askimo 支持,并提供:\n• 您的操作步骤\n• 上述错误代码\n• 发生时间 # Model Availability Errors error.model.not_available.title.chat=模型不可用 error.model.not_available.title.embedding=嵌入模型不可用 error.model.not_available.message.chat=模型 ''{0}'' 不可用。 -error.model.not_available.message.embedding=嵌入模型 ''{0}'' 不可用。\n\n请正确配置嵌入模型。 +error.model.not_available.message.embedding=嵌入模型 ''{0}'' 在本地提供商中不可用。\n\n请前往 设置 → AI 提供商,在提供商配置卡片中选择一个可用的嵌入模型。 error.model.not_available.config_link=配置嵌入模型 -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=出现错误 @@ -980,16 +1091,16 @@ error.app.message=发生了一个意外错误:{0} # Send Message Errors error.send_message.title=发送消息失败 - # Indexing Errors error.indexing.model_not_found.title=未找到嵌入模型 error.indexing.model_not_found.message=未找到嵌入模型 ''{0}''。请在索引前从 {1} 下载或启用该模型。 +error.indexing.input_too_large.title=嵌入输入过大 +error.indexing.input_too_large.message=由于 token 计数超过了模型的最大上下文大小,嵌入模型拒绝了来自 [{0}] 的一个或多个片段。请在 设置 → 索引 → 每个分块的最大字符数 中减小分块大小,然后重新索引。 error.indexing.io_error.title=IO 错误 error.indexing.io_error.message=索引过程中发生 IO 错误 error.indexing.unknown.title=索引错误 error.indexing.unknown.message=索引过程中发生未知错误 - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=嵌入模型状态(仅用于 RAG 功能) settings.embedding.not_available_rag_only=⚠️ {0}。\n\n说明:这只影响基于项目的 RAG 功能,普通聊天功能可正常使用。 @@ -1035,18 +1146,38 @@ settings.rag.indexing.binary.extensions.hint=以逗号分隔的在索引时被 settings.rag.indexing.embedding.batch.size=嵌入批处理大小 settings.rag.indexing.embedding.batch.size.hint=每次请求发送到嵌入模型的文本片段数量。如果索引速度较慢且您使用远程提供商(OpenAI、Gemini),可尝试增大至 100–500。如果使用本地模型(Ollama、LM Studio),请保持较低值以避免超时。 -# Settings - Utility Models +## Settings - Models +settings.models.title=模型 +settings.models.description=配置所有提供商共享的全局 AI 模型行为。 +settings.models.max.tool.calling.round.trips=最大工具调用轮次 +settings.models.max.tool.calling.round.trips.hint=AI 在单次响应中可以进行的最大工具调用次数(默认:10)。值越高允许执行越复杂的智能体任务,但会增加延迟和成本。 + +# Memory Settings +settings.memory.title=记忆设置 +settings.memory.description=控制 AI 如何管理对话历史以保持在模型上下文窗口范围内。 +settings.memory.mode=记忆模式 +settings.memory.mode.compact=紧凑 +settings.memory.mode.compact.hint=较低 token 消耗,细节较少 +settings.memory.mode.compact.description=积极摘要。token 消耗低,频繁摘要。适合超长会话或对成本敏感的模型。 +settings.memory.mode.balanced=均衡 +settings.memory.mode.balanced.hint=质量与成本的良好平衡 +settings.memory.mode.balanced.description=质量与成本的良好平衡。在记忆预算的 40% 时触发摘要。适合大多数会话。 +settings.memory.mode.detail=详细 +settings.memory.mode.detail.hint=高保真,更多 token +settings.memory.mode.detail.description=最少摘要。保留更多原文对话和更丰富的摘要。适合短会话或需要精确记忆的场景。 + +## Settings - Utility Models settings.utility.models.title=实用模型 settings.utility.models.uses.selected=(使用所选模型) settings.utility.models.local.note={0} 是本地提供商 —— 实用任务会自动使用当前活动的聊天模型。 -# Vision Models +## Settings - Vision Models settings.vision.models.title=视觉模型 ## Settings - Image Models settings.image.models.title=图像生成模型 -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=模型配置 settings.provider.model.config.description=为特定任务覆盖默认模型。若字段留空,则使用提供商的默认模型。 settings.provider.model.config.guide=查看 AI 模型配置指南 @@ -1057,7 +1188,6 @@ settings.provider.model.embedding.hint=用于生成向量嵌入以支持 RAG 知 settings.model.placeholder.enter=输入 {0} 模型 - # File Viewer Dialog file.viewer.title=文件查看器 file.viewer.title.with.name=文件查看器 - {0} @@ -1070,13 +1200,12 @@ mermaid.setup.required.title=需要 Mermaid CLI mermaid.setup.privacy.note=Askimo 在本地渲染图表,以保护你的隐私。 mermaid.setup.instructions.title=安装说明 mermaid.setup.instructions.text=要在 Askimo 中渲染 Mermaid 图表,请按照以下安装指南操作: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=打开安装指南 mermaid.setup.button.copy.diagram=复制图表 mermaid.diagram.source.label=图表来源: mermaid.rendering.progress=正在渲染图表... mermaid.error.rendering.title=渲染图表时出错 -mermaid.error.rendering.raw.label=原始图表: mermaid.error.unexpected.state=出现意外状态。请重试。 mermaid.error.failed.load.image=无法加载图表图像 mermaid.button.copy.code=复制代码 @@ -1088,6 +1217,7 @@ mermaid.button.reset.zoom=重置缩放 mermaid.button.retry=重试 mermaid.feedback.copied=已复制! + # Reference Material knowledge.source.type.folder=文件夹(监控更改) knowledge.source.type.file=文件(静态) @@ -1104,7 +1234,7 @@ mcp.instances.title=MCP 实例 mcp.instances.description=这些 MCP 实例可用 mcp.instances.empty=未配置 MCP 实例 mcp.instances.count={0} 个实例 -mcp.instance.server.label=服务器: {0} +mcp.instance.server.label=服务器\: {0} mcp.instance.delete.confirm.title=删除 MCP 实例? mcp.instance.delete.confirm.message=您确定要删除 mcp 实例 "{0}" 吗?此操作不可撤销。 mcp.instance.enable.tooltip=启用此 MCP 实例 @@ -1130,7 +1260,7 @@ mcp.instance.field.description=描述 mcp.instance.field.description.placeholder=关于此服务器做什么的简要描述 mcp.instance.field.transport=传输类型 mcp.instance.field.command=命令模板 -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=包含 {{parameter}} 占位符的空格分隔命令 mcp.instance.validation.error.empty.id=服务器 ID 不能为空 mcp.instance.validation.error.invalid.id.pattern=服务器 ID 只能包含小写字母、数字和连字符 @@ -1139,20 +1269,20 @@ mcp.instance.validation.error.empty.command=命令模板不能为空 mcp.instance.validation.error.empty.parameter.key=参数键不能为空 mcp.instance.validation.error.empty.parameter.label=参数标签不能为空 mcp.instance.env.label=环境变量 (可选) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=格式: KEY=值 或 KEY={{parameter}} (每行一个) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=格式\: KEY\=值 或 KEY\={{parameter}} (每行一个) mcp.instance.transport.stdio=Stdio (本地进程) mcp.instance.transport.http=HTTP (远程服务器) mcp.instance.http.url.label=URL 模板 -mcp.instance.http.url.placeholder=https://{{host}}/mcp 或 https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp 或 https\://api.example.com/mcp mcp.instance.http.url.hint=服务器端点 URL。使用 {{parameter}} 占位符用于动态值 mcp.instance.http.headers.label=HTTP 头部 (可选) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=格式: 头部名称=值 或 头部名称={{parameter}} (每行一个) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=格式\: 头部名称\=值 或 头部名称\={{parameter}} (每行一个) mcp.instance.http.timeout.label=超时时间 (ms) mcp.instance.http.timeout.hint=请求超时时间(毫秒) mcp.instance.validation.error.empty.url=URL 模板不能为空 -mcp.instance.validation.error.invalid.url=URL 模板必须以 http:// 或 https:// 开头 +mcp.instance.validation.error.invalid.url=URL 模板必须以 http\:// 或 https\:// 开头 # MCP Integrations (Project View) mcp.instance.delete.tooltip=删除 MCP 实例 @@ -1202,7 +1332,7 @@ mcp.tools.dialog.search.count={0} / {1} 个工具 mcp.tools.dialog.search.empty=没有工具匹配您的搜索 mcp.tools.dialog.export=导出工具 mcp.tools.dialog.export.success=已将工具导出到 {0} -mcp.tools.dialog.export.failed=导出工具失败: {0} +mcp.tools.dialog.export.failed=导出工具失败\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=添加 MCP 服务器 @@ -1271,7 +1401,6 @@ panel.reindex.confirm.message="{0}" 当前正在索引。停止当前索引并 panel.reindex.confirm.button=停止并重新索引 panel.reindex.confirm.cancel=取消 panel.collapse=折叠面板 -panel.collapse=折叠面板 # RAG Status rag.status.started=开始建立索引 @@ -1354,7 +1483,6 @@ skills.view.empty.search=没有找到符合您搜索条件的技能 skills.view.manage=管理技能 skills.view.select.prompt=选择要运行的技能 skills.view.select.hint=从右侧技能面板中选择一个技能 -skills.view.select.skill=选择一个技能… skills.view.run=运行技能 skills.view.run.command=发送命令 skills.view.running=正在运行… @@ -1400,7 +1528,7 @@ skills.view.history.empty=还没有运行记录 skills.view.copy=复制 skills.view.system.prompt.file=文件 skills.view.system.prompt.files=文件 -skills.view.system.prompt.also.included=也包含在代理上下文中: +skills.view.system.prompt.also.included=也包含在代理上下文中\: skills.view.docs.tooltip=查看技能指南 skills.view.mode.agentic=代理式 skills.view.mode.manual=手动 @@ -1412,11 +1540,6 @@ skills.agentic.skills.available={0} 个技能可作为代理上下文使用 skills.agentic.no.skills.hint=还没有技能 — 前往 设置 → 技能 添加技能,让代理具备专门能力 skills.agentic.model.default=默认模型 -# File / folder chooser -file.chooser.folder.select=选择 -file.chooser.folder.hint=双击文件夹即可进入。当你进入想要建立索引的文件夹后,点击“选择”。 -file.chooser.file.select=选择 - # Onboarding Wizard onboarding.title=欢迎使用 Askimo onboarding.step.indicator=第 {0} 步,共 {1} 步 @@ -1472,7 +1595,6 @@ onboarding.step.directives.feature2.description=模糊的问题只会得到模 onboarding.step.directives.feature3.title=每个任务都有对的专家 onboarding.step.directives.feature3.description=学习时需要耐心导师,调试时需要犀利点评?为不同任务设定不同指令,获得匹配角色的 AI 回复。 onboarding.step.directives.link=查看示例及技巧 - # Onboarding Step 6: Ready onboarding.step.ready.title=🚀 一切就绪! onboarding.step.ready.description=配置完成,准备就绪。现在就开始第一次聊天或探索以下资源吧。 @@ -1496,4 +1618,4 @@ onboarding.step.persona.everything.features=启用:Skills, Plans, Projects, MC persona.developer=💻 编写和审查代码 persona.researcher=🔬 研究和分析 persona.manager=📋 撰写和组织 -persona.everything=⚡ 我做各种混合的工作 \ No newline at end of file +persona.everything=⚡ 我做各种混合的工作 diff --git a/desktop-shared/src/main/resources/i18n/messages_zh_TW.properties b/desktop-shared/src/main/resources/i18n/messages_zh_TW.properties index cc73e3bfa..acb152136 100644 --- a/desktop-shared/src/main/resources/i18n/messages_zh_TW.properties +++ b/desktop-shared/src/main/resources/i18n/messages_zh_TW.properties @@ -1,4 +1,4 @@ -# Askimo Desktop Application - Traditional Chinese Strings (Comments Preserved) +# Askimo Desktop Application - English Strings # Application @@ -31,6 +31,7 @@ menu.view.appearance.system=系統 menu.view.appearance.light=淺色 menu.view.appearance.dark=深色 menu.view.fullscreen=進入全螢幕 +menu.view.bookmarks=查看書籤 menu.terminal=終端機 menu.terminal.new=新增終端機 menu.help=說明 @@ -43,7 +44,7 @@ menu.help.share=🗣 分享 Askimo menu.help.share.x=分享到 X / Twitter menu.help.share.linkedin=分享到 LinkedIn menu.help.share.facebook=分享到 Facebook -menu.help.share.text=推薦 Askimo — 免費、本地優先的 AI 桜面客戶端,支持 Ollama、OpenAI、Anthropic 等。 https://askimo.chat +menu.help.share.text=推薦 Askimo — 免費、本地優先的 AI 桜面客戶端,支持 Ollama、OpenAI、Anthropic 等。 https\://askimo.chat menu.help.share.hackernews=發佈到 Hacker News menu.eventlog=事件記錄 menu.help.model.capabilities=開啟模型功能檔案 @@ -51,6 +52,7 @@ menu.dev.clear.account.preferences=[Dev] 清除帳戶首選項 menu.about=關於 Askimo menu.help.check.updates=檢查更新... menu.help.diagnostics=系統診斷... +menu.help.support.askimo=支援 Askimo ⭐ # Common Dialog Buttons dialog.cancel=取消 @@ -107,6 +109,12 @@ discover.stat.projects=專案 discover.stat.mcp=MCP 伺服器 discover.stat.plans=計劃 discover.stat.skills=技能 +discover.customize=自訂 +discover.customize.show_token_usage=顯示 Token 使用量卡片 +discover.tokens.title=按 Token 使用量排名的模型 +discover.tokens.total=共 {0} +discover.tokens.view_details=查看詳情 +discover.tokens.empty=暫無 Token 使用記錄。開始聊天以在此處查看統計資訊。 discover.explore.title=探索功能 discover.explore.mcp.title=MCP 伺服器 discover.explore.mcp.desc=透過 Model Context Protocol,使用外部工具和資料來源擴充 Askimo。 @@ -195,13 +203,16 @@ projects.sources.expand=顯示參考資料 projects.sources.collapse=隱藏參考資料 projects.sources.empty.title=尚未新增參考資料 projects.sources.empty.description=新增文件後,Askimo 才能在回答問題時進行參考 -projects.sources.info.tooltip=參考資料可協助 Askimo 理解您的具體情境。\n\n\ -請新增包含您希望 Askimo 在回答問題時參考之資訊的資料夾、檔案或網站。\n\n\ +projects.sources.info.tooltip=參考資料可協助 Askimo 理解您的具體情境。\n\ +\n\ +請新增包含您希望 Askimo 在回答問題時參考之資訊的資料夾、檔案或網站。\n\ +\n\ 例如:\n\ • 專案文件\n\ • 公司知識庫\n\ • 技術規格文件\n\ -• 研究論文\n\n\ +• 研究論文\n\ +\n\ Askimo 會搜尋這些資料,以提供更準確且具情境理解的回答。 projects.sources.type.local_folders=本機資料夾 projects.sources.type.local_files=本機檔案 @@ -229,7 +240,7 @@ project.menu.tooltip=專案選單 project.new.chat.placeholder=在 {0} 中建立新聊天 project.recent.chats=最近的聊天 project.no.chats=尚未有聊天記錄。請在下方開始新的聊天! -project.indexing.label=正在索引知識源: {0} +project.indexing.label=正在索引知識源\: {0} project.indexing.queued=索引已排入佇列 - 等待另一個專案完成... project.indexing.failed=索引失敗。請嘗試從專案選單重新索引。 project.indexing.ready.label=已索引 @@ -244,12 +255,11 @@ session.error.removing=無法從專案中移除工作階段。請重試。 # Settings settings.title=設定 -settings.general=一般 settings.appearance=外觀 settings.appearance.accent=強調色 settings.appearance.accent.description=安全地自訂單一強調色。Askimo 會將其套用到主要介面強調,並衍生相關顏色以確保可讀性。 settings.appearance.accent.label=強調色 (Hex) -settings.appearance.accent.invalid=請輸入有效的十六進位顏色,例如 #0284C7 +settings.appearance.accent.invalid=請輸入有效的十六進位顏色,例如 \#0284C7 settings.appearance.accent.swatch.primary=主色 settings.appearance.accent.swatch.primary.container=容器 settings.appearance.accent.swatch.on.primary.container=容器前景 @@ -316,12 +326,9 @@ settings.skills.add.folder=新增資料夾 settings.skills.add.folder.name=資料夾名稱 settings.advanced=進階 settings.about=關於 -settings.model=模型 -settings.provider=提供者 settings.theme=主題 settings.save=儲存 settings.cancel=取消 -settings.provider.change.button=變更 settings.model.change.button=變更 settings.change.button=變更 @@ -332,24 +339,16 @@ theme.dark=深色 theme.dark.description=永遠使用深色主題 theme.system=系統 theme.system.description=依照系統主題 -theme.sepia=褐色 -theme.sepia.description=溫暖的羊皮紙色調,護眼舒適 -theme.ocean=海洋 -theme.ocean.description=柔和的天藍色調,平靜清新 -theme.nord=Nord -theme.nord.description=北極風深色調色盤,冷靜而專注 -theme.sage=鼠尾草 -theme.sage.description=低飽和灰綠色調,沉穩而雅緻 -theme.rose=玫瑰 -theme.rose.description=柔和的腮紅粉,優雅而溫暖 -theme.indigo=靛藍 -theme.indigo.description=深邃的紫藍色,神秘且富有創意 settings.layout.density=版面密度 settings.layout.density.description=調整應用程式的間距與內距密度。 layout.density.comfortable=舒適 layout.density.comfortable.description=更对鬆的間距,方便瀏覽 layout.density.compact=緊湊 layout.density.compact.description=更緊密的間距以顯示更多內容 +layout.density.relaxed=寬鬆 +layout.density.relaxed.description=稍大的間距以提升可讀性 +layout.density.spacious=超寬鬆 +layout.density.spacious.description=為超高 DPI 螢幕提供最大間距 settings.background.image=背景圖片 settings.background.image.description=選擇背景圖片——可選擇預設圖片或使用您自己的圖片。半透明覆蓋層可保持文字清晰易讀。背景圖片獨立於所選主題。 settings.background.image.browse=瀏覽 @@ -403,6 +402,31 @@ settings.proxy.password.placeholder=選用 settings.proxy.system.info=ℹ️ 正在使用作業系統設定中的系統代理 settings.proxy.socks5.no.auth.info=ℹ️ 目前尚未支援 SOCKS5 驗證。請使用不需驗證的 SOCKS5 代理,或若您需要此功能,請在 GitHub 上建立 issue。 +# Web Search Settings +settings.web_search=網路搜尋 +settings.web_search.description=啟用內建網路搜尋,讓 AI 無需 API 金鑰即可查詢最新資訊。DuckDuckGo 開筱即用 — 升級至 Brave 或 Tavily 可獲得更高品貪的結果。 +settings.web_search.title=網路搜尋設定 +settings.web_search.enabled=已啟用 +settings.web_search.zero_config_note=DuckDuckGo 無需設定即可使用。僅當您希望獲得更高品貪或更大量的結果且擁有該服務的 API 金鑰時,才選擇下方的其他後端。 +settings.web_search.backend=搜尋後端 +settings.web_search.backend.duckduckgo=DuckDuckGo +settings.web_search.backend.duckduckgo.description=免費,無需 API 金鑰。注重陰私的預設選項。 +settings.web_search.backend.brave=Brave Search +settings.web_search.backend.brave.description=快速,獨立索引。需要免費的 Brave Search API 金鑰。 +settings.web_search.backend.tavily=Tavily +settings.web_search.backend.tavily.description=AI 最佳化結果,支援選用的答案擷取功能。需要 Tavily API 金鑰。 +settings.web_search.backend.searxng=SearxNG +settings.web_search.backend.searxng.description=透過您自己的 SearxNG 執行個體進行注重陰私的元搜尋。無需 API 金鑰。 +settings.web_search.api_key=API 金鑰 +settings.web_search.api_key.placeholder=在此處貼上您的 API 金鑰 +settings.web_search.get_api_key=取得免費 API 金鑰 ↗ +settings.web_search.endpoint=SearxNG 執行個體 URL +settings.web_search.endpoint.placeholder=https\://search.example.com +settings.web_search.test=測試搜尋 +settings.web_search.test.running=測試中... +settings.web_search.test.success=✅ 搜尋正常運作 +settings.web_search.test.fail=❌ {0} + # User Profile user.profile.default_name=訪客使用者 user.profile.menu=使用者個人資料選單 @@ -465,6 +489,7 @@ user.interest.environment=環境 # Actions action.delete=刪除 +action.remove=移除 action.edit=編輯 action.pin=釘選到側邊欄 action.unpin=從側邊欄取消釘選 @@ -481,22 +506,45 @@ action.close=關閉 action.show.more=顯示更多 action.show.less=顯示更少 action.back=返回 +action.next=下一步 action.retry=重試 action.done=完成 action.refresh=重新整理 - - # Happiness Gate (shown before Star Prompt) happiness.gate.title=您覺得 Askimo 怎麼樣? happiness.gate.subtitle=讓我們知道您的使用體驗 happiness.gate.happy=非常喜歡!😍 happiness.gate.neutral=還不錯 🙂 happiness.gate.unhappy=不太好 😕 -happiness.gate.feedback.title=幫助我們改進 -happiness.gate.feedback.message=您願意分享您的回饋嗎?這有助於我們為您和其他所有人將 Askimo 變得更好。 -happiness.gate.feedback.yes=是的,分享回饋 -happiness.gate.feedback.no=不了,謝謝 + +# Inline Feedback Dialog (shown after neutral/unhappy sentiment) +feedback.dialog.title=什麼地方沒能滿足您的需求? +feedback.dialog.subtitle=請勾選所有適用項 — 您的意見將直接發送給團隊。 +feedback.comment.label=詳細說明(選填) +feedback.comment.placeholder=描述問題或分享您的想法… +feedback.email.label=您的電子郵件(選填) +feedback.email.placeholder=you@example.com +feedback.email.hint=僅用於跟進您的意見。我們絕對不會發送垃圾郵件。 +feedback.action.skip=略過 +feedback.action.send=發送意見回饋 +feedback.thanks.title=感謝您的意見回饋! +feedback.thanks.message=您的意見有助於我們完善 Askimo。非常感謝。 +feedback.thanks.close=關閉 + +feedback.remind.title=沒關係! +feedback.remind.message=您可以隨時透過「說明」選單 → 「發送意見回饋」分享您的意見。 +feedback.remind.got.it=知道了 + +# Feedback reasons +feedback.reason.inaccurate=AI 回答不準確 +feedback.reason.slow=速度太慢 +feedback.reason.missing.feature=缺少我需要的功能 +feedback.reason.broken=出現錯誤 +feedback.reason.hard.to.use=很難使用 +feedback.reason.integration=整合問題 +feedback.reason.privacy=隱私顧慮 +feedback.reason.other=其他 # Star Prompt star.prompt.title=正在享受 Askimo 吗?帮忙传播消息 💙 @@ -508,6 +556,12 @@ star.prompt.share.description=在 X、LinkedIn 或 Facebook 上向您的網絡 star.prompt.maybe.later=暫時不要 star.prompt.already.starred=已標星 ✓ star.prompt.social.proof=⭐ 加入 {0} 位已為 Askimo 標星的用戶 +star.prompt.thanks.title=非常感謝! 🌟 +star.prompt.thanks.message=您的支持對我們意義重大,並能幫助我們繼續打造 Askimo。 +star.prompt.thanks.done=完成 ✓ +star.prompt.remind.title=沒關係! +star.prompt.remind.message=您可以隨時透過「說明」選單 → 「支持 Askimo」來給予我們支持。 +star.prompt.remind.got.it=知道了 # Analytics Settings (Advanced section toggle) settings.analytics.title=匿名分析 @@ -518,6 +572,11 @@ settings.hardware.acceleration.title=硬體加速 settings.hardware.acceleration.description=使用 GPU 加速渲染以獲得更流暢的 UI 效能。若遇到圖形問題,請停用此項目。 settings.hardware.acceleration.description.windows=使用 GPU 加速渲染 (Direct3D/OpenGL) 以獲得更流暢的 UI 效能。若在使用 G-Sync 或 FreeSync 顯示器時遇到閃爍或不穩定的重新整理率,請停用此項目。 settings.hardware.acceleration.restart.notice=重啟 Askimo 以使此變更生效。 +settings.ui.scale.title=顯示縮放 +settings.ui.scale.description=調整整體 UI 縮放比例。需要重新啟動才能使變更生效。 +settings.ui.scale.option.system.default=系統預設 +settings.ui.scale.restart.notice=重啟 Askimo 以使縮放變更生效。 +settings.ui.scale.learn.more=了解更多關於 HiDPI 與 UI 縮放的資訊 settings.hardware.acceleration.restart.title=需要重啟 settings.hardware.acceleration.restart.message=請重啟 Askimo 以使渲染變更生效。 settings.hardware.acceleration.vrr.hint.title=已偵測到 G-Sync / FreeSync @@ -531,10 +590,8 @@ file.overwrite.message=此檔案已存在。你要覆寫它嗎? file.overwrite.confirm=覆寫 file.name.too.long=檔名太長。請使用較短的檔名(最多 255 個字元)。 - # About about.title=關於 {0} -action.remove=移除 about.version=版本 about.buildDate=建置日期 about.buildJdk=建置 JDK @@ -566,6 +623,7 @@ shortcut.stop.ai.response=停止 AI 回應 shortcut.quit.application=結束應用程式 shortcut.navigate.to.sessions=前往工作階段 shortcut.navigate.to.projects=前往專案 +shortcut.navigate.to.bookmarks=導航至書籤 shortcut.enter.fullscreen=進入全螢幕 shortcut.close.search=關閉搜尋 shortcut.next.search.result=下一個搜尋結果 @@ -613,8 +671,7 @@ global.search.results.count=找到{0}個結果 global.search.results.count.plural=找到{0}個結果 # Rest of chat view strings -chat.directive=指令: -chat.directive.none=無 +chat.directive=指令 chat.directive.new=新增指令 chat.directive.manage=管理指令 chat.directive.learn.more=了解如何使用指令 @@ -624,7 +681,11 @@ chat.drop.files=拖曳檔案以將其附加到對話中 chat.create.image.menu=建立影像 chat.create.image.mode=影像 chat.create.image.mode.cancel=取消影像建立模式 +chat.image.model.missing.title=尚未設定圖片模型 +chat.image.model.missing.message=尚未為 {0} 設定圖片模型。開啟 設定 > AI 提供者 > 圖片生成模型,並先設定模型名稱。 chat.tools.button=可用工具 +chat.tools.button.disabled=可用工具({0} 已停用) +chat.tools.button.model.no.support=此模型不支援工具 chat.tools.popup.title=可用工具 chat.tools.popup.loading=正在載入伺服器... chat.tools.popup.no.servers.global=尚未設定全域 MCP 伺服器。 @@ -633,7 +694,6 @@ chat.tools.server.scope.global=全域 chat.tools.server.scope.project=專案 chat.tools.server.scope.builtin=內建 chat.tools.tool.no.description=暫無描述 -chat.tools.button.disabled=可用工具({0} 已停用) chat.reasoning.effort.label=思考 chat.reasoning.effort.tooltip=推理力度 — 控制模型在回應前思考的深度 chat.reasoning.effort.off=關閉 @@ -645,6 +705,7 @@ chat.reasoning.effort.medium.description=深度與速度平衡。適合大多數 chat.reasoning.effort.high=高 chat.reasoning.effort.high.description=徹底推理,成本較高。最適合解決複雜問題。 chat.input.placeholder=輸入訊息...(Enter 送出,Shift+Enter 換行) +chat.input.placeholder.hint.attach=使用 {0}+A 附加檔案,或將其拖放到此處 chat.select.file=選擇檔案(可多選) chat.attachment.remove=移除附件 chat.attachment.preview.loading=正在載入預覽… @@ -666,8 +727,8 @@ sessions.empty.hint=💡 開始新的對話即可建立第一個工作階段! sessions.search.placeholder=按標題搜尋… sessions.search.empty=沒有與 "{0}" 相符的會話。 -# 通用表格分頁控制項 -table.page.size.label=每頁列數: +# Generic table pagination controls +table.page.size.label=每頁列數\: table.page=第 {0} 頁 共 {1} 頁 table.page.previous=上一頁 table.page.next=下一頁 @@ -681,7 +742,6 @@ sessions.error.not.found=找不到工作階段。 sessions.error.rename.failed=重新命名失敗。 # ChatSessionService Errors - # Update Check update.dialog.title=軟體更新 update.dialog.new.version.available=有可用的 Askimo 新版本! @@ -717,6 +777,8 @@ settings.font.size=字型大小 settings.font.line.spacing=行距 settings.shortcuts=快捷鍵 settings.shortcuts.description=查看所有可用的鍵盤快捷鍵,以提升您的工作效率 +settings.shortcuts.search=搜尋捷徑... +settings.shortcuts.no_results=沒有相符的捷徑 settings.app.language=應用程式語言 settings.app.language.translation.help=發現錯誤?幫助我們改進翻譯。 settings.app.language.translation.contribute=在 Crowdin 上貢獻 @@ -731,15 +793,17 @@ settings.model.select.title=選擇模型 settings.model.current=目前模型 settings.model.selected=已選取模型 settings.model.new=新模型 +settings.model.use.default=使用預設值 settings.model.change.description=從下方列表中選擇一個模型: settings.model.search=搜尋模型 settings.model.search.placeholder=輸入以篩選模型... settings.model.filtered=顯示 {0} / {1} 個模型 settings.model.no.match=沒有符合的模型 -settings.model.no.results=沒有符合的模型 +settings.model.chat.filter.label=聊天模型 · 已顯示 {0} +settings.model.chat.filter.show.all=顯示所有 {0} settings.configure.title=設定 {0} settings.test.connection.testing=測試中... -settings.placeholder.baseurl=http://localhost:11434 +settings.placeholder.baseurl=http\://localhost\:11434 provider.connection.failed=無法連接到提供商。請驗證您的 API 金鑰是否正確(對於雲端提供商)或您的基礎 URL 是否可達(對於本地提供商)。您可以使用上面的幫助連結找到設定說明。 # Directives Dialog @@ -784,6 +848,8 @@ log.level.trace.description=顯示所有日誌(最詳細) # Message Components message.loading.previous=正在載入先前訊息... message.thinking=思考中… ({0}s) +message.thinking.section.streaming=💭 思考中... +message.thinking.section.done=💭 已思考 message.copy=複製訊息 message.copy.description=複製訊息 message.edit=編輯訊息 @@ -810,13 +876,40 @@ message.ai.try.again.confirm.title=重新產生回應? message.ai.try.again.confirm.message=此操作將刪除此位置之後的所有訊息。是否要繼續? message.ai.try.again.confirm.cancel=取消 message.ai.try.again.confirm.confirm=重新產生 +message.ai.fork=從此處 Fork 會話 +message.ai.fork.description=將此對話 Fork 為一個新的獨立會話 message.ai.export.pdf=匯出為 PDF message.ai.export.pdf.dialog.title=將 AI 回覆儲存為 PDF +message.bookmark=收藏訊息 +message.bookmark.remove=取消收藏 +message.bookmark.description=收藏此訊息 message.edited.indicator=(已編輯) message.date.today=今天 message.date.yesterday=昨天 message.token.usage={0} 個 token · {1} 進 / {2} 出 -message.token.usage.tooltip=此回覆使用的 token。\n輸入: 您的 prompt + 傳送給 AI 的上下文。\n輸出: AI 產生的回覆。 +message.token.usage.tooltip=此回覆使用的 token。\n輸入\: 您的 prompt + 傳送給 AI 的上下文。\n輸出\: AI 產生的回覆。 + +# Bookmarks +chat.bookmarks.button.tooltip=書籤 +chat.bookmarks.popover.title=已固定的訊息 +chat.bookmarks.popover.empty.title=尚無書籤 +chat.bookmarks.popover.empty.hint=點擊訊息下方的書籤圖示進行固定 +bookmarks.title=書籤 +bookmarks.empty.title=尚無書籤 +bookmarks.empty.hint=點擊訊息下方的固定圖示新增書籤 +bookmarks.session.untitled=未命名對話 +bookmarks.message.count=已固定 {0} 則 +bookmarks.role.user=你 +bookmarks.role.ai=AI + +# Tool call display +tool.call.header.running=正在執行工具... +tool.call.header.done=已使用 {0} 個工具 +tool.call.status.done=已完成 +tool.call.status.failed=失敗 +tool.call.detail.arguments=參數 +tool.call.detail.result=結果 + attachment.download=下載附件 attachment.download.description=下載此附件 attachment.save.file=儲存附件 @@ -826,48 +919,62 @@ outdated.branch.header=先前編輯所遺留的 {0} 筆過期訊息(點擊展 outdated.label=過期 # Provider Dialog -provider.change.title=變更供應商 -provider.select.title=選擇供應商 +provider.manage.title=管理服務商 +provider.type.picker.title=選擇服務商類型 +provider.type.picker.prompt=選擇要新增的服務商類型: +provider.configure.new.title=Configure {0} +provider.edit.title=Edit "{0}" +provider.add.new=新增服務商 +provider.no.instances.hint=尚未設定任何服務商。點擊 "新增服務商" 以開始。 +provider.model.panel.select.hint=在左側選擇一個提供商以瀏覽其模型 +provider.model.panel.model.count={0} 個模型 +provider.model.default.badge=預設 +provider.instance.name.label=執行個體名稱 +provider.instance.name.placeholder=例如 "Work OpenAI", "ollama-macbook" +provider.instance.name.duplicate=名為「{0}」的提供商已存在 provider.setup.required.title=需要設定 AI 供應商 provider.setup.required.message=開始對話前,請先選擇並設定一個 AI 供應商。 provider.setup.required.button=設定 -provider.select.prompt=選擇供應商: provider.configure.prompt=設定供應商: -provider.choose.placeholder=選擇供應商... provider.setup.guide=如何設定 {0} provider.apikey.stored=API 金鑰已安全儲存 provider.apikey.enter=輸入 API 金鑰 -provider.apikey.already.stored=已儲存 provider.apikey.security.message=🔒 您的 API 金鑰已加密並安全儲存。我們絕不分享您的資料。 provider.apikey.security.link=了解我們如何保護您的資料 provider.not.set=尚未設定 # Provider Configuration - OpenAI -provider.openai.apikey.description=您的 OpenAI API 金鑰(https://platform.openai.com/account/api-keys) +provider.openai.apikey.description=您的 OpenAI API 金鑰(https\://platform.openai.com/account/api-keys) provider.openai.apikey.stored=API 金鑰已儲存。留白表示保持原金鑰,或輸入新金鑰以更新。 -provider.openai.setup.help=💡 若要使用 OpenAI,您必須提供 API 金鑰。\n\n1. 前往:https://platform.openai.com/account/api-keys\n2. 於設定中輸入或使用 :change-settings +provider.openai.setup.help=💡 若要使用 OpenAI,您必須提供 API 金鑰。\n\n1. 前往:https\://platform.openai.com/account/api-keys\n2. 於設定中輸入或使用 \:change-settings # Provider Configuration - Anthropic -provider.anthropic.apikey.description=您的 Anthropic API 金鑰(https://console.anthropic.com/) +provider.anthropic.apikey.description=您的 Anthropic API 金鑰(https\://console.anthropic.com/) provider.anthropic.apikey.stored=API 金鑰已儲存。留白代表保持現有設定。 -provider.anthropic.setup.help=💡 若要使用 Anthropic,請提供 API 金鑰。\n\n1. 取得位置:https://console.anthropic.com/\n2. 在設定中輸入或使用 :change-settings +provider.anthropic.setup.help=💡 若要使用 Anthropic,請提供 API 金鑰。\n\n1. 取得位置:https\://console.anthropic.com/\n2. 在設定中輸入或使用 \:change-settings +provider.anthropic.max_tokens.label=最大 Token 數 +provider.anthropic.max_tokens.description=模型每次回應可生成的最大 Token 數(思考 + 回答的總和)。 +provider.anthropic.thinking_budget_tokens.label=思考預算 Token 數 +provider.anthropic.thinking_budget_tokens.description=Anthropic 用於思考的最大 Token 數。設定為 0 可讓模型自動決定(推薦)。 +provider.anthropic.thinking_max_tokens.label=思考時最大 Token 數 +provider.anthropic.thinking_max_tokens.description=啟用思考功能時的總 Token 上限(思考 + 回答)。設定為 0 以使用「最大 Token 數」代替。 # Provider Configuration - Gemini -provider.gemini.apikey.description=您的 Google AI Studio API 金鑰(https://aistudio.google.com/app/apikey) +provider.gemini.apikey.description=您的 Google AI Studio API 金鑰(https\://aistudio.google.com/app/apikey) provider.gemini.apikey.stored=API 金鑰已儲存。 -provider.gemini.setup.help=💡 若要使用 Gemini,請提供 API 金鑰。\n\n1. 取得位置:https://aistudio.google.com/app/apikey\n2. 在設定中輸入或使用 :change-settings +provider.gemini.setup.help=💡 若要使用 Gemini,請提供 API 金鑰。\n\n1. 取得位置:https\://aistudio.google.com/app/apikey\n2. 在設定中輸入或使用 \:change-settings # Provider Configuration - XAI -provider.xai.apikey.description=您的 XAI API 金鑰(https://console.x.ai/) +provider.xai.apikey.description=您的 XAI API 金鑰(https\://console.x.ai/) provider.xai.apikey.stored=API 金鑰已儲存。 -provider.xai.setup.help=💡 若要使用 XAI,請提供 API 金鑰。\n\n1. 前往:https://console.x.ai/\n2. 在設定中輸入或使用 :change-settings +provider.xai.setup.help=💡 若要使用 XAI,請提供 API 金鑰。\n\n1. 前往:https\://console.x.ai/\n2. 在設定中輸入或使用 \:change-settings # Provider Configuration - Ollama -provider.ollama.baseurl.description=您的 Ollama 基本 URL(預設:http://localhost:11434) -provider.ollama.setup.help=💡 若要使用 Ollama,需在本機執行。\n\n1. 安裝:https://ollama.ai/\n2. 啟動服務\n3. 若非使用預設設定,可調整基本 URL +provider.ollama.baseurl.description=您的 Ollama 基本 URL(預設:http\://localhost\:11434) +provider.ollama.setup.help=💡 若要使用 Ollama,需在本機執行。\n\n1. 安裝:https\://ollama.ai/\n2. 啟動服務\n3. 若非使用預設設定,可調整基本 URL # Provider Configuration - Docker AI -provider.docker.baseurl.description=您的 Docker AI 基本 URL(預設:http://localhost:12434) +provider.docker.baseurl.description=您的 Docker AI 基本 URL(預設:http\://localhost\:12434) provider.docker.setup.help=💡 若要使用 Docker AI,需在本機執行。\n\n1. 確認已安裝並執行 Docker AI\n2. 啟動服務\n3. 若非使用預設設定,可調整基本 URL # Provider Configuration - LocalAI @@ -875,12 +982,13 @@ provider.localai.baseurl.description=您的 LocalAI 基本 URL provider.localai.setup.help=💡 若要使用 LocalAI,請先啟動服務。\n\n1. 安裝並啟動 LocalAI\n2. 設定可存取的 URL # Provider Configuration - LMStudio -provider.lmstudio.baseurl.description=您的 LMStudio 基本 URL(預設:http://localhost:1234) -provider.lmstudio.setup.help=💡 若要使用 LMStudio:\n\n1. 安裝:https://lmstudio.ai/\n2. 啟動本機伺服器\n3. 若需要,調整基本 URL +provider.lmstudio.baseurl.description=您的 LMStudio 基本 URL(預設:http\://localhost\:1234) +provider.lmstudio.setup.help=💡 若要使用 LMStudio:\n\n1. 安裝:https\://lmstudio.ai/\n2. 啟動本機伺服器\n3. 若需要,調整基本 URL provider.lmstudio.openai.compat.info=Askimo 使用 OpenAI 相容端點(/v1),而非 LMStudio 原生 API(/api/v1/)。 # Provider Configuration - Open AI Compatible provider.openai_compatible.baseurl.description=您的OpenAI相容執行個體的基礎URL +provider.openai_compatible.apikey.description=提供者的 API 金鑰(選填 - 若端點不需要驗證,請留空) provider.openai_compatible.apikey.stored=API金鑰已安全儲存。留空以保留現有金鑰,或輸入新金鑰進行更新。 # System Resources @@ -892,6 +1000,12 @@ system.diagnostics.jvm.memory=JVM 記憶體 (已使用 / 總計) system.diagnostics.cpu.usage=CPU 使用率 system.diagnostics.telemetry=遙測 +# Telemetry export +telemetry.export.csv=匯出 CSV +telemetry.export.dialog.title=將遙測資料匯出為 ZIP +telemetry.export.error.title=匯出失敗 +telemetry.export.error.message=無法匯出遙測資料:{0} + # Telemetry telemetry.reset=重設遙測資料 telemetry.title=📊 工作階段指標 @@ -907,11 +1021,6 @@ telemetry.tab.llm=LLM telemetry.rag.total.queries=總查詢數 telemetry.rag.triggered.label=已觸發 telemetry.rag.skipped.label=已跳過 -telemetry.llm.calls=LLM 呼叫 -telemetry.llm.calls.count={0} 次呼叫 -telemetry.llm.tokens={0} tok -telemetry.llm.errors={0} 錯誤 -telemetry.total.tokens=總 Token 數: {0} telemetry.llm.col.provider=提供者 telemetry.llm.col.model=模型 telemetry.llm.col.calls=呼叫 @@ -930,7 +1039,6 @@ developer.session.memory.messages=記憶訊息 developer.session.memory.word.count={0} 個字 developer.session.memory.empty=(空) - # Export Format - Markdown export.format.markdown.name=Markdown export.format.markdown.description=易於閱讀的文字格式 @@ -955,24 +1063,26 @@ export.format.html.benefit.2=可在任何瀏覽器檢視 export.format.html.benefit.3=專業外觀 export.format.html.benefit.4=容易分享 - # Error Messages error.network=⚠️ 無法連線至 AI 服務{endpoint}\n\n請檢查:\n• 網路連線\n• AI 服務位址(請確認設定)\n• 防火牆設定\n• 服務是否可用 error.authentication=⚠️ API 金鑰無效或缺失{provider}\n\n請至設定中設定您的 API 金鑰以解決此問題。 -error.model_configuration=⚠️ 模型設定錯誤:{issue}\n\n請依以下步驟修正:\n1. 開啟設定\n2. 選擇 AI 提供商\n3. 從清單中選擇模型 +error.model_not_found=⚠️ 找不到模型:{model}\n\n此模型可能已被提供商棄用或刪除。請選擇其他模型。 +error.provider_not_configured=⚠️ 尚未設定 AI 提供商。\n\n開始聊天需要:\n1. 開啟設定\n2. 選擇 AI 提供商(OpenAI、Ollama、Anthropic 等)\n3. 輸入 API 金鑰或設定連線 error.rate_limit=⚠️ 已超過使用速率限制\n{retryAfter}\n\n您已達到 API 使用上限,請稍後再嘗試傳送訊息。 error.insufficient_credits=⚠️ 積分不足\n\n您的積分餘額過低。\n\n請前往提供商的帳單頁面充值。 error.timeout=⚠️ 請求於 {timeout} 秒後逾時\n\n可能原因包括:\n• 伺服器負載過高,請稍後再試\n• 查詢內容過於複雜,請嘗試簡化\n• 網路延遲 +error.context_length=⚠️ 上下文視窗已超出限制\n\n總輸入內容(對話歷史記錄 + 您的訊息 + 附件)太大,此模型無法處理。\n\n解決方法:\n• 開始新的聊天對話以清除對話歷史記錄\n• 縮短您的訊息或刪除較大的附件\n• 如果使用本地模型(Ollama / LM Studio / Docker),請在設定中增加上下文大小\n• 切換到具有更大上下文視窗的模型 error.invalid_request=⚠️ 無效的請求:{details}\n\n請檢查輸入內容後再試一次。 +error.local_server=⚠️ 本地 AI 伺服器錯誤!\n\nAI 伺服器程序崩潰或無法載入模型。這不是由 Askimo 所引起的。\n\n可能原因:\n• 模型檔案損毀或不完整 — 請嘗試重新下載\n• RAM/VRAM 不足 — 請嘗試較小的量化版本(例如 Q4 而非 Q8)\n• 目前伺服器版本不支援此模型格式\n• 伺服器程序被作業系統終止(記憶體不足)\n\n處理方式:\n1. 查看本地 AI 伺服器日誌\n2. 重新啟動伺服器後重試\n3. 重新下載模型\n4. 嘗試其他模型或量化等級\n\n技術詳情:{details} error.system=⚠️ 系統錯誤\n\n發生未預期的錯誤:{errorCode}\n\n請聯絡 Askimo 支援,並提供:\n• 您當時的操作\n• 上方的錯誤代碼\n• 發生的時間 # Model Availability Errors error.model.not_available.title.chat=模型無法使用 error.model.not_available.title.embedding=嵌入模型無法使用 error.model.not_available.message.chat=模型 ''{0}'' 無法使用。 -error.model.not_available.message.embedding=嵌入模型 ''{0}'' 無法使用。\n\n請正確設定嵌入模型。 +error.model.not_available.message.embedding=嵌入模型 ''{0}'' 在本地提供商中無法使用。\n\n請前往 設定 → AI 提供商,在提供商設定卡片中選擇可用的嵌入模型。 error.model.not_available.config_link=設定嵌入模型 -error.model.not_available.config_url=https://askimo.chat/docs/desktop/rag/#embedding-model-configuration +error.model.not_available.config_url=https\://askimo.chat/docs/desktop/rag/\#embedding-model-configuration # Generic Application Errors error.app.title=發生錯誤 @@ -981,16 +1091,16 @@ error.app.message=發生未預期的錯誤:{0} # Send Message Errors error.send_message.title=傳送訊息失敗 - # Indexing Errors error.indexing.model_not_found.title=找不到嵌入模型 error.indexing.model_not_found.message=找不到嵌入模型 ''{0}''。請在索引前從 {1} 下載或啟用此模型。 +error.indexing.input_too_large.title=嵌入輸入過大 +error.indexing.input_too_large.message=由於 token 計數超過了模型的最大上下文大小,嵌入模型拒絕了來自 [{0}] 的一個或多個片段。請在 設定 → 索引 → 每個分塊的最大字元數 中減小分塊大小,然後重新索引。 error.indexing.io_error.title=IO 錯誤 error.indexing.io_error.message=索引過程中發生 IO 錯誤 error.indexing.unknown.title=索引錯誤 error.indexing.unknown.message=索引過程中發生未知錯誤 - # Settings - Embedding Models (for RAG features) settings.embedding.rag_feature_only=嵌入模型狀態(僅供 RAG 功能使用) settings.embedding.not_available_rag_only=⚠️ {0}。\n\n說明:此問題僅影響以專案為基礎的 RAG 功能,一般聊天功能可正常使用。 @@ -1036,18 +1146,38 @@ settings.rag.indexing.binary.extensions.hint=以逗號分隔的在索引時被 settings.rag.indexing.embedding.batch.size=嵌入批次大小 settings.rag.indexing.embedding.batch.size.hint=每次請求傳送至嵌入模型的文字片段數量。若索引速度慢且使用遠端提供商(OpenAI、Gemini),可嘗試增大至 100–500。若使用本地模型(Ollama、LM Studio),請保持較低值以避免逾時。 -# Settings - Utility Models +## Settings - Models +settings.models.title=模型 +settings.models.description=設定所有提供商共享的全域 AI 模型行為。 +settings.models.max.tool.calling.round.trips=最大工具呼叫來回次數 +settings.models.max.tool.calling.round.trips.hint=AI 在單次回應中可執行的最大工具呼叫次數(預設:10)。值越高可執行越複雜的智能體任務,但會增加延遲與成本。 + +# Memory Settings +settings.memory.title=記憶設定 +settings.memory.description=控制 AI 如何管理對話歷史以保持在模型上下文視窗範圍內。 +settings.memory.mode=記憶模式 +settings.memory.mode.compact=精簡 +settings.memory.mode.compact.hint=較低 token 消耗,細節較少 +settings.memory.mode.compact.description=積極摘要。token 消耗低,頻繁摘要。適合超長會話或對成本敏感的模型。 +settings.memory.mode.balanced=均衡 +settings.memory.mode.balanced.hint=品質與成本的良好平衡 +settings.memory.mode.balanced.description=品質與成本的良好平衡。在記憶預算的 40% 時觸發摘要。適合大多數會話。 +settings.memory.mode.detail=詳細 +settings.memory.mode.detail.hint=高保真,更多 token +settings.memory.mode.detail.description=最少摘要。保留更多原文對話和更豐富的摘要。適合短會話或需要精確記憶的場景。 + +## Settings - Utility Models settings.utility.models.title=工具模型 settings.utility.models.uses.selected=(使用所選模型) settings.utility.models.local.note={0} 是本地提供者 —— 工具任務會自動使用目前啟用的聊天模型。 -# Vision Models +## Settings - Vision Models settings.vision.models.title=視覺模型 ## Settings - Image Models settings.image.models.title=影像生成模型 -# Settings - Provider Model Config +## Settings - Provider Model Config settings.provider.model.config.title=模型設定 settings.provider.model.config.description=覆寫特定任務所使用的預設模型。若欄位留空,則使用提供者的預設模型。 settings.provider.model.config.guide=查看 AI 模型設定指南 @@ -1058,7 +1188,6 @@ settings.provider.model.embedding.hint=用於產生向量嵌入以支援 RAG 知 settings.model.placeholder.enter=輸入 {0} 模型 - # File Viewer Dialog file.viewer.title=檔案檢視器 file.viewer.title.with.name=檔案檢視器 - {0} @@ -1071,13 +1200,12 @@ mermaid.setup.required.title=需要 Mermaid CLI mermaid.setup.privacy.note=Askimo 會在本機渲染圖表,以保護您的隱私。 mermaid.setup.instructions.title=安裝說明 mermaid.setup.instructions.text=要在 Askimo 中渲染 Mermaid 圖表,請依照以下安裝指南進行: -mermaid.setup.instructions.link=https://askimo.chat/docs/desktop/mermaid-diagrams/ +mermaid.setup.instructions.link=https\://askimo.chat/docs/desktop/mermaid-diagrams/ mermaid.setup.button.open.guide=開啟安裝指南 mermaid.setup.button.copy.diagram=複製圖表 mermaid.diagram.source.label=圖表來源: mermaid.rendering.progress=正在渲染圖表... mermaid.error.rendering.title=渲染圖表時發生錯誤 -mermaid.error.rendering.raw.label=原始圖表: mermaid.error.unexpected.state=發生未預期的狀態。請再試一次。 mermaid.error.failed.load.image=無法載入圖表影像 mermaid.button.copy.code=複製程式碼 @@ -1089,6 +1217,7 @@ mermaid.button.reset.zoom=重設縮放 mermaid.button.retry=重試 mermaid.feedback.copied=已複製! + # Reference Material knowledge.source.type.folder=資料夾(監控變更) knowledge.source.type.file=檔案(靜態) @@ -1105,7 +1234,7 @@ mcp.instances.title=MCP 實例 mcp.instances.description=這些 MCP 實例可用 mcp.instances.empty=未配置 MCP 實例 mcp.instances.count={0} 個實例 -mcp.instance.server.label=伺服器: {0} +mcp.instance.server.label=伺服器\: {0} mcp.instance.delete.confirm.title=是否要刪除 MCP 實例? mcp.instance.delete.confirm.message=您確定要刪除 MCP 實例 "{0}" 嗎?此操作無法復原。 mcp.instance.enable.tooltip=啟用此 MCP 實例 @@ -1131,7 +1260,7 @@ mcp.instance.field.description=描述 mcp.instance.field.description.placeholder=此伺服器功能的簡短描述 mcp.instance.field.transport=傳輸類型 mcp.instance.field.command=命令範本 -mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2:--flag}} +mcp.instance.field.command.placeholder=npx -y mcp-server@latest {{param1}} {{?param2\:--flag}} mcp.instance.field.command.hint=包含 {{parameter}} 佔位符的空格分隔命令 mcp.instance.validation.error.empty.id=伺服器 ID 不能為空 mcp.instance.validation.error.invalid.id.pattern=伺服器 ID 只能包含小寫字母、數字和連字符 @@ -1140,20 +1269,20 @@ mcp.instance.validation.error.empty.command=命令範本不能為空 mcp.instance.validation.error.empty.parameter.key=參數鍵不能為空 mcp.instance.validation.error.empty.parameter.label=參數標籤不能為空 mcp.instance.env.label=環境變數 (可選) -mcp.instance.env.placeholder=API_KEY={{apiKey}}\nDEBUG={{debug}} -mcp.instance.env.hint=格式: KEY=值 或 KEY={{parameter}} (每行一個) +mcp.instance.env.placeholder=API_KEY\={{apiKey}}\nDEBUG\={{debug}} +mcp.instance.env.hint=格式\: KEY\=值 或 KEY\={{parameter}} (每行一個) mcp.instance.transport.stdio=Stdio (本地程序) mcp.instance.transport.http=HTTP (遠端伺服器) mcp.instance.http.url.label=URL 範本 -mcp.instance.http.url.placeholder=https://{{host}}/mcp 或 https://api.example.com/mcp +mcp.instance.http.url.placeholder=https\://{{host}}/mcp 或 https\://api.example.com/mcp mcp.instance.http.url.hint=伺服器端點 URL。可使用 {{parameter}} 佔位符用於動態值 mcp.instance.http.headers.label=HTTP 標頭 (可選) -mcp.instance.http.headers.placeholder=Authorization=Bearer {{apiKey}}\nX-Tenant-Id={{tenantId}} -mcp.instance.http.headers.hint=格式: 標頭名稱=值 或 標頭名稱={{parameter}} (每行一個) +mcp.instance.http.headers.placeholder=Authorization\=Bearer {{apiKey}}\nX-Tenant-Id\={{tenantId}} +mcp.instance.http.headers.hint=格式\: 標頭名稱\=值 或 標頭名稱\={{parameter}} (每行一個) mcp.instance.http.timeout.label=逾時時間 (ms) mcp.instance.http.timeout.hint=請求逾時時間(毫秒) mcp.instance.validation.error.empty.url=URL 範本不能為空 -mcp.instance.validation.error.invalid.url=URL 範本必須以 http:// 或 https:// 開頭 +mcp.instance.validation.error.invalid.url=URL 範本必須以 http\:// 或 https\:// 開頭 # MCP Integrations (Project View) mcp.instance.delete.tooltip=刪除 MCP 實例 @@ -1203,7 +1332,7 @@ mcp.tools.dialog.search.count={0} / {1} 個工具 mcp.tools.dialog.search.empty=沒有工具符合您的搜尋 mcp.tools.dialog.export=匯出工具 mcp.tools.dialog.export.success=已將工具匯出到 {0} -mcp.tools.dialog.export.failed=匯出工具失敗: {0} +mcp.tools.dialog.export.failed=匯出工具失敗\: {0} # MCP Server Catalog Dialog mcp.catalog.dialog.title=新增 MCP 伺服器 @@ -1272,7 +1401,6 @@ panel.reindex.confirm.message="{0}" 目前正在索引。停止目前的索引 panel.reindex.confirm.button=停止並重新索引 panel.reindex.confirm.cancel=取消 panel.collapse=收合面板 -panel.collapse=收合面板 # RAG Status rag.status.started=開始建立索引 @@ -1355,7 +1483,6 @@ skills.view.empty.search=沒有找到符合您搜尋條件的技能 skills.view.manage=管理技能 skills.view.select.prompt=選擇要執行的技能 skills.view.select.hint=從右側技能面板中選擇一個技能 -skills.view.select.skill=選擇一個技能… skills.view.run=執行技能 skills.view.run.command=傳送命令 skills.view.running=執行中… @@ -1401,7 +1528,7 @@ skills.view.history.empty=尚無執行記錄 skills.view.copy=複製 skills.view.system.prompt.file=檔案 skills.view.system.prompt.files=檔案 -skills.view.system.prompt.also.included=也包含在代理程式上下文中: +skills.view.system.prompt.also.included=也包含在代理程式上下文中\: skills.view.docs.tooltip=檢視技能指南 skills.view.mode.agentic=代理式 skills.view.mode.manual=手動 @@ -1413,11 +1540,6 @@ skills.agentic.skills.available={0} 個技能可作為代理程式上下文使 skills.agentic.no.skills.hint=還沒有技能 — 請在 設定 → 技能 新增技能,讓代理程式具備專門能力 skills.agentic.model.default=預設模型 -# File / folder chooser -file.chooser.folder.select=選取 -file.chooser.folder.hint=按兩下資料夾即可進入。當你進入想要建立索引的資料夾後,點擊「選取」。 -file.chooser.file.select=選取 - # Onboarding Wizard onboarding.title=歡迎使用 Askimo onboarding.step.indicator=第 {0} 步,共 {1} 步 @@ -1473,7 +1595,6 @@ onboarding.step.directives.feature2.description=模糊問題只會得到模糊 onboarding.step.directives.feature3.title=每項工作都有對的專家 onboarding.step.directives.feature3.description=學習時要耐心導師,Debug 時要率直審閱者?分開維護不同指令,讓每項任務都能符合心境。 onboarding.step.directives.link=參考範例和技巧 - # Onboarding Step 6: Ready onboarding.step.ready.title=🚀 一切準備就緒! onboarding.step.ready.description=所有內容都已配置好,現在可開始聊天或瀏覽以下資源。