diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/documentation/DocumentationsSettingsForm.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/documentation/DocumentationsSettingsForm.kt index 4266e2d0..56816ca3 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/settings/documentation/DocumentationsSettingsForm.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/documentation/DocumentationsSettingsForm.kt @@ -9,6 +9,7 @@ import com.intellij.ui.ToolbarDecorator import com.intellij.ui.dsl.builder.Align import com.intellij.ui.dsl.builder.panel import com.intellij.ui.table.JBTable +import ee.carlrobert.codegpt.CodeGPTBundle import java.awt.Dimension import javax.swing.table.DefaultTableModel @@ -47,7 +48,7 @@ class DocumentationsSettingsForm { } } row { - text("Documentations can be included in the chat suggestions popup by pressing the @ symbol.") + text(CodeGPTBundle.get("settingsConfigurable.documentations.description")) } } } diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ServiceConfigurableComponent.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ServiceConfigurableComponent.kt index cce04278..d3a91128 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ServiceConfigurableComponent.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ServiceConfigurableComponent.kt @@ -6,6 +6,7 @@ import com.intellij.openapi.options.ex.Settings import com.intellij.ui.components.ActionLink import com.intellij.ui.components.JBLabel import com.intellij.util.ui.FormBuilder +import ee.carlrobert.codegpt.CodeGPTBundle import ee.carlrobert.codegpt.settings.service.codegpt.CodeGPTServiceConfigurable import ee.carlrobert.codegpt.settings.service.codegpt.CodeGPTServiceForm import ee.carlrobert.codegpt.settings.service.custom.CustomServiceConfigurable @@ -18,7 +19,7 @@ class ServiceConfigurableComponent { var form: CodeGPTServiceForm = CodeGPTServiceForm() fun getPanel(): JPanel = FormBuilder.createFormBuilder() - .addComponent(JBLabel("All available providers that can be used with ProxyAI:")) + .addComponent(JBLabel(CodeGPTBundle.get("settingsConfigurable.providers.description"))) .addVerticalGap(8) .addComponent(FormBuilder.createFormBuilder() .setFormLeftIndent(20).apply { diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt index 8d5c7b70..53134e03 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/codegpt/CodeGPTServiceForm.kt @@ -25,7 +25,7 @@ class CodeGPTServiceForm { } private val enableNextEditsEnabledCheckBox = JBCheckBox( - "Enable next edits", + CodeGPTBundle.get("codeCompletionsForm.enableNextEditText"), service().state.nextEditsEnabled ) diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index dd19f9d7..92819767 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -7,12 +7,12 @@ org.jetbrains.kotlin com.intellij.modules.java com.intellij.modules.python - - - - - - + + + + + + Git4Idea @@ -30,43 +30,59 @@ - - - - - - - - - - - - - - + instance="ee.carlrobert.codegpt.settings.GeneralSettingsConfigurable"/> + + + + + + + + + + + + + + + parentId="settings.codegpt" + instance="ee.carlrobert.codegpt.telemetry.ui.preferences.TelemetryConfigurable" + id="tools.preferences.codegpt.telemetry" + displayName="Telemetry"/> + serviceImplementation="ee.carlrobert.codegpt.telemetry.core.service.TelemetryServiceFactory"/> @@ -81,14 +97,15 @@ + id="CodeGPTInlineCompletionProvider" + implementation="ee.carlrobert.codegpt.codecompletions.DebouncedCodeCompletionProvider"/> + factoryClass="ee.carlrobert.codegpt.toolwindow.ProxyAIToolWindowFactory"/> - + + implementation="ee.carlrobert.codegpt.statusbar.CodeGPTStatusBarWidgetFactory"/> @@ -96,168 +113,170 @@ + id="codegpt.acceptNextPrediction" + text="Accept Prediction" + class="ee.carlrobert.codegpt.predictions.AcceptNextPredictionRevisionAction"> + id="codegpt.triggerCustomPrediction" + text="Trigger Prediction Manually" + class="ee.carlrobert.codegpt.predictions.TriggerCustomPredictionAction"> + id="codegpt.openPrediction" + text="Open Prediction" + class="ee.carlrobert.codegpt.predictions.OpenPredictionAction"> + id="codegpt.acceptNextInlayWord" + text="Apply next word" + use-shortcut-of="EditorNextWord" + class="ee.carlrobert.codegpt.codecompletions.AcceptNextWordInlayAction"/> + id="codegpt.acceptNextInlayLine" + text="Apply next line" + use-shortcut-of="EditorLineEnd" + class="ee.carlrobert.codegpt.codecompletions.AcceptNextLineInlayAction"/> + text="ProxyAI" + class="com.intellij.openapi.actionSystem.DefaultActionGroup" + popup="true" + icon="ee.carlrobert.codegpt.Icons.DefaultSmall"> + id="CodeGPT.NewChat" + class="ee.carlrobert.codegpt.actions.editor.OpenNewChatAction" + text="New Chat" + description="Creates a new chat session"> + id="CodeGPT.ContextMenuEditCodeAction" + text="Edit Code" + description="Edit code from editor's context menu" + class="ee.carlrobert.codegpt.actions.editor.EditCodeContextMenuAction"> + id="CodeGPT.AskQuestion" + text="Ask Question" + class="ee.carlrobert.codegpt.actions.editor.AskQuestionAction"> + text="My Actions" + class="com.intellij.openapi.actionSystem.DefaultActionGroup"> + class="ee.carlrobert.codegpt.actions.editor.ShowEditorActionGroupAction" + text="Show ProxyAI Actions"> + text="ProxyAI" + class="com.intellij.openapi.actionSystem.DefaultActionGroup" + popup="true" + icon="ee.carlrobert.codegpt.Icons.DefaultSmall"> + id="CodeGPT.IncludeFilesInContextAction" + text="Include Files In Prompt" + class="ee.carlrobert.codegpt.actions.IncludeFilesInContextAction"/> + group-id="ProjectViewPopupMenu" + relative-to-action="ProjectViewPopupMenuRefactoringGroup" + anchor="before"/> + id="CodeGPT.ExplainGitCommitAction" + class="ee.carlrobert.codegpt.actions.ExplainGitCommitAction"/> + group-id="Vcs.Log.ContextMenu" + relative-to-action="Vcs.Log.CompareRevisions" + anchor="after"/> + id="CodeGPT.FloatingMenuEditCodeAction" + text="Edit Code" + description="Edit code from editor's floating menu" + class="ee.carlrobert.codegpt.actions.editor.EditCodeFloatingMenuAction"> + group-id="Floating.CodeToolbar" + relative-to-action="ProjectViewPopupMenuRefactoringGroup" + anchor="before"/> + id="CodeGPT.AddSelectionToContext" + class="ee.carlrobert.codegpt.actions.editor.AddSelectionToContextAction" + text="Include Selection in Prompt" + description="Adds the selected text to the ProxyAI context"> - - + + + id="codegpt.openSettings" + text="Open Settings" + class="ee.carlrobert.codegpt.actions.OpenSettingsAction"> + id="statusbar.enableCompletions" + class="ee.carlrobert.codegpt.actions.EnableCompletionsAction"> + id="statusbar.disableCompletions" + class="ee.carlrobert.codegpt.actions.DisableCompletionsAction"> + id="statusbar.startServer" + class="ee.carlrobert.codegpt.actions.StartServerAction"> + id="statusbar.stopServer" + class="ee.carlrobert.codegpt.actions.StopServerAction"> @@ -265,12 +284,12 @@ - + - - - - + + + + + id="CodeGPT.GenerateGitCommitMessage" + text="Generate Commit Message" + class="ee.carlrobert.codegpt.actions.GenerateCommitMessageAction"/> + id="CodeGPT.GenerateGitCommitMessageWithAdditionalInput" + text="Generate Commit Message with Additional Input" + class="ee.carlrobert.codegpt.actions.GenerateCommitMessageWithAdditionalInputAction"/> + id="CodeGPT.ReviewChanges" + text="Review Changes" + class="ee.carlrobert.codegpt.actions.ReviewChangesAction"/> \ No newline at end of file diff --git a/src/main/resources/messages/codegpt.properties b/src/main/resources/messages/codegpt.properties index 35245a69..4dd7d614 100644 --- a/src/main/resources/messages/codegpt.properties +++ b/src/main/resources/messages/codegpt.properties @@ -36,9 +36,16 @@ action.applyDirectly.title=Auto Apply action.explainGitCommit.title=Explain Commit with ProxyAI action.explainGitCommit.description=Generate a detailed explanation of the commit changes using ProxyAI settings.displayName=ProxyAI: Settings +settings.providers.displayName=Providers settings.models.displayName=Models +settings.prompts.displayName=Prompts +settings.documentations.displayName=Documentations +settings.configuration.displayName=Configuration +settings.advancedSettings.displayName=Advanced Settings settings.openaiQuotaExceeded=OpenAI quota exceeded. settingsConfigurable.displayName.label=Display name: +settingsConfigurable.providers.description=All available providers that can be used with ProxyAI: +settingsConfigurable.documentations.description=Documentations can be included in the chat suggestions popup by pressing the @ symbol. settingsConfigurable.service.codegpt.apiKey.comment=You can find the API key in your User settings. settingsConfigurable.service.codegpt.chatCompletionModel.comment=Choose a model optimized for conversational interactions, including assistance with general queries and explanations. settingsConfigurable.service.codegpt.codeCompletionModel.comment=Choose a model tailored for autocomplete-related tasks. @@ -279,6 +286,7 @@ imageAccordion.title=Attached image shared.image=Image shared.chatCompletions=Chat Completions shared.codeCompletions=Code Completions +codeCompletionsForm.enableNextEditText=Enable next edits codeCompletionsForm.enableFeatureText=Enable code completions codeCompletionsForm.parseResponseAsChatCompletions=Parse response as Chat Completions codeCompletionsForm.overrideFimTemplate.label=Use built-in FIM template @@ -395,3 +403,4 @@ conversation.status.count.plural={0} conversations conversation.status.sortedBy=Sorted by: {0} conversation.deleteConfirmation.message=Are you sure you want to delete this conversation? conversation.deleteConfirmation.title=Delete Conversation +chat.message.welcome=Hi {0}, I'm ProxyAI! You can ask me anything, but most people request help with their code. Here are a few examples of what you can ask me: diff --git a/src/main/resources/messages/codegpt_zh.properties b/src/main/resources/messages/codegpt_zh.properties new file mode 100644 index 00000000..289bcf1e --- /dev/null +++ b/src/main/resources/messages/codegpt_zh.properties @@ -0,0 +1,406 @@ +project.label=ProxyAI +notification.group.name=notification.group.name +notification.group.sticky.name=notification.group.sticky.name +action.generateCommitMessage.title=\u751F\u6210\u63D0\u4EA4\u4FE1\u606F +action.generateCommitMessage.description=\u751F\u6210Git\u63D0\u4EA4\u4FE1\u606F +action.generateCommitMessage.serviceWarning=\u53EA\u80FD\u901A\u8FC7OpenAI\u3001\u81EA\u5B9A\u4E49OpenAI\u6216Azure\u670D\u52A1\u751F\u6210\u6D88\u606F +action.generateCommitMessage.missingCredentials=\u672A\u63D0\u4F9B\u51ED\u636E +action.includeFilesInContext.title=\u6DFB\u52A0\u5230\u5BF9\u8BDD\u4E2D... +action.includeFileInContext.title=\u6DFB\u52A0\u6587\u4EF6\u5230\u5BF9\u8BDD\u4E2D... +action.includeFilesInContext.dialog.title=\u6DFB\u52A0\u5230\u5BF9\u8BDD\u4E2D +action.includeFilesInContext.dialog.description=\u9009\u62E9\u60A8\u5E0C\u671B\u5305\u542B\u5728\u6700\u7EC8\u63D0\u793A\u4E2D\u7684\u6587\u4EF6 +action.includeFilesInContext.dialog.repeatableContext.label=\u53EF\u91CD\u590D\u4E0A\u4E0B\u6587: +action.includeFilesInContext.dialog.restoreToDefaults.label=\u6062\u590D\u9ED8\u8BA4\u8BBE\u7F6E +action.openSettings.title=\u6253\u5F00\u8BBE\u7F6E +action.openSettings.description=\u6253\u5F00ProxyAI\u8BBE\u7F6E +action.statusbar.startServer.text=\u542F\u52A8\u670D\u52A1\u5668 +action.statusbar.startServer.description=\u542F\u52A8LLaMA\u670D\u52A1\u5668 +action.statusbar.startServer.MainMenu.text=\u542F\u52A8\u670D\u52A1\u5668 +action.statusbar.stopServer.text=\u505C\u6B62\u670D\u52A1\u5668 +action.statusbar.stopServer.description=\u505C\u6B62LLaMA\u670D\u52A1\u5668 +action.statusbar.stopServer.MainMenu.text=\u505C\u6B62\u670D\u52A1\u5668 +action.statusbar.enableCompletions.text=\u542F\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.enableCompletions.description=\u542F\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.enableCompletions.MainMenu.text=\u542F\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.disableCompletions.text=\u7981\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.disableCompletions.description=\u7981\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.disableCompletions.MainMenu.text=\u7981\u7528\u81EA\u52A8\u8865\u5168 +action.statusbar.enableNextEdits.text=\u542F\u7528\u591A\u884C\u66F4\u6539 +action.statusbar.enableNextEdits.description=\u542F\u7528\u591A\u884C\u66F4\u6539 +action.statusbar.enableNextEdits.MainMenu.text=\u542F\u7528\u591A\u884C\u66F4\u6539 +action.statusbar.disableNextEdits.text=\u7981\u7528\u591A\u884C\u66F4\u6539 +action.statusbar.disableNextEdits.description=\u7981\u7528\u591A\u884C\u66F4\u6539 +action.statusbar.disableNextEdits.MainMenu.text=\u7981\u7528\u591A\u884C\u66F4\u6539 +action.compareWithOriginal.title=\u4E0E\u539F\u59CB\u6BD4\u8F83 +action.applyDirectly.title=\u81EA\u52A8\u5E94\u7528 +action.explainGitCommit.title=\u4F7F\u7528ProxyAI\u89E3\u91CA\u63D0\u4EA4 +action.explainGitCommit.description=\u4F7F\u7528ProxyAI\u751F\u6210\u63D0\u4EA4\u53D8\u66F4\u7684\u8BE6\u7EC6\u89E3\u91CA +settings.displayName=ProxyAI: \u8BBE\u7F6E +settings.providers.displayName=\u63D0\u4F9B\u8005 +settings.models.displayName=\u6A21\u578B +settings.prompts.displayName=\u63D0\u793A\u8BCD +settings.documentations.displayName=\u5916\u90E8\u6587\u6863 +settings.configuration.displayName=\u63D2\u4EF6\u914D\u7F6E +settings.advancedSettings.displayName=\u9AD8\u7EA7\u8BBE\u7F6E +settings.openaiQuotaExceeded=OpenAI\u914D\u989D\u5DF2\u7528\u5B8C\u3002 +settingsConfigurable.displayName.label=\u663E\u793A\u540D\u79F0: +settingsConfigurable.providers.description=\u53EF\u4E0E ProxyAI \u4E00\u8D77\u4F7F\u7528\u7684\u6240\u6709AI\u63D0\u4F9B\u8005\uFF1A +settingsConfigurable.documentations.description=\u6309\u4E0B @ \u7B26\u53F7\u5373\u53EF\u5C06\u6587\u6863\u5305\u542B\u5728\u804A\u5929\u5EFA\u8BAE\u5F39\u51FA\u7A97\u53E3\u4E2D\u3002 +settingsConfigurable.service.codegpt.apiKey.comment=\u60A8\u53EF\u4EE5\u5728\u7528\u6237\u8BBE\u7F6E\u4E2D\u627E\u5230API\u5BC6\u94A5\u3002 +settingsConfigurable.service.codegpt.chatCompletionModel.comment=\u9009\u62E9\u9488\u5BF9\u5BF9\u8BDD\u4EA4\u4E92\u4F18\u5316\u7684\u6A21\u578B\uFF0C\u5305\u62EC\u4E00\u822C\u67E5\u8BE2\u548C\u89E3\u91CA\u7684\u534F\u52A9\u3002 +settingsConfigurable.service.codegpt.codeCompletionModel.comment=\u9009\u62E9\u9488\u5BF9\u81EA\u52A8\u8865\u5168\u76F8\u5173\u4EFB\u52A1\u4F18\u5316\u7684\u6A21\u578B\u3002 +settingsConfigurable.service.codegpt.enableNextEdits.comment=\u5982\u679C\u52FE\u9009\uFF0CProxyAI\u5C06\u5728\u60A8\u8F93\u5165\u65F6\u5EFA\u8BAE\u591A\u884C\u66F4\u6539\u3002 +settingsConfigurable.service.codegpt.enableCodeCompletion.comment=\u5982\u679C\u52FE\u9009\uFF0CProxyAI\u5C06\u5728\u60A8\u8F93\u5165\u65F6\u63D0\u4F9B\u81EA\u52A8\u8865\u5168\u5EFA\u8BAE\u3002 +settingsConfigurable.service.custom.openai.apiKey.comment=\u5B58\u50A8\u5728\u7CFB\u7EDF\u5BC6\u94A5\u94FE\u6216KeePass\u4E2D\u7684\u5BC6\u94A5\u503C(\u53D6\u51B3\u4E8E\u60A8\u7684\u64CD\u4F5C\u7CFB\u7EDF)\u3002\u5EFA\u8BAE\u4F7F\u7528\u6B64\u65B9\u6CD5\u800C\u4E0D\u662F\u4EE5\u7EAF\u6587\u672C\u5F62\u5F0F\u5B58\u50A8\u5728\u5934\u4E2D\u3002 +settingsConfigurable.service.custom.openai.apiKey.provider.name=\u81EA\u5B9A\u4E49\u63D0\u4F9B\u5546\u540D\u79F0: +settingsConfigurable.service.custom.openai.exportDialog.filename=\u6587\u4EF6\u540D: +settingsConfigurable.service.custom.openai.exportDialog.saveTo=\u4FDD\u5B58\u5230: +settingsConfigurable.service.custom.openai.exportDialog.title=\u76EE\u6807\u6587\u4EF6 +settingsConfigurable.service.custom.openai.exportDialog.exportError=\u5BFC\u51FAOpenAI\u8BBE\u7F6E\u65F6\u51FA\u9519 +settingsConfigurable.service.custom.openai.exportDialog.importError=\u5BFC\u5165OpenAI\u8BBE\u7F6E\u65F6\u51FA\u9519 +settingsConfigurable.service.openai.apiKey.comment=\u60A8\u53EF\u4EE5\u5728\u7528\u6237\u8BBE\u7F6E\u4E2D\u627E\u5230API\u5BC6\u94A5\u3002 +settingsConfigurable.service.openai.customModel.label=\u81EA\u5B9A\u4E49\u6A21\u578B: +settingsConfigurable.service.openai.organization.label=\u7EC4\u7EC7: +settingsConfigurable.section.openai.organization.comment=\u5F53\u60A8\u5C5E\u4E8E\u591A\u4E2A\u7EC4\u7EC7\u65F6\u6709\u7528\u53EF\u9009 +settingsConfigurable.service.google.apiKey.comment=\u60A8\u53EF\u4EE5\u5728\u7528\u6237\u8BBE\u7F6E\u4E2D\u627E\u5230API\u5BC6\u94A5\u3002 +settingsConfigurable.service.google.model.comment=\u6CE8\u610F: Gemini Vision\u6A21\u578B\u5C1A\u4E0D\u652F\u6301\u804A\u5929\u3002 +settingsConfigurable.service.anthropic.apiKey.comment=\u60A8\u53EF\u4EE5\u5728\u7528\u6237\u8BBE\u7F6E\u4E2D\u627E\u5230API\u5BC6\u94A5\u3002 +settingsConfigurable.service.anthropic.apiVersion.comment=\u6211\u4EEC\u59CB\u7EC8\u5EFA\u8BAE\u5C3D\u53EF\u80FD\u4F7F\u7528\u6700\u65B0API\u7248\u672C\u3002 +settingsConfigurable.service.anthropic.model.comment=\u6709\u5173\u6A21\u578B\u6BD4\u8F83\u6307\u6807\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\u6A21\u578B\u6BD4\u8F83\u3002 +settingsConfigurable.service.llama.modelPreferences.title=\u6A21\u578B\u504F\u597D +settingsConfigurable.service.llama.serverPreferences.title=\u670D\u52A1\u5668\u504F\u597D +settingsConfigurable.service.llama.modelSize.label=\u6A21\u578B\u5927\u5C0F: +settingsConfigurable.service.llama.quantization.label=\u91CF\u5316: +settingsConfigurable.service.llama.quantization.comment=\u91CF\u5316\u662F\u4E00\u79CD\u51CF\u5C11\u8FD0\u884C\u63A8\u7406\u7684\u8BA1\u7B97\u548C\u5185\u5B58\u6210\u672C\u7684\u6280\u672F\u3002\u4E86\u89E3\u66F4\u591A +settingsConfigurable.service.llama.customModelPath.label=\u6A21\u578B\u8DEF\u5F84: +settingsConfigurable.service.llama.customModelPath.comment=\u4EC5\u652F\u6301.gguf\u6587\u4EF6 +settingsConfigurable.service.llama.customServerPath.label=\u670D\u52A1\u5668\u8DEF\u5F84: +settingsConfigurable.service.llama.customServerPath.comment=\u9884\u7F16\u8BD1\u7684\u53EF\u6267\u884Cllama-cpp\u670D\u52A1\u5668\uFF0C\u4EC5\u652F\u6301.exe(Windows)\u6216\u53EF\u6267\u884C\u6587\u4EF6(Linux) +settingsConfigurable.service.llama.promptTemplate.comment=\u9009\u62E9\u4E0E\u8BED\u8A00\u6A21\u578B\u4EA4\u4E92\u65F6\u4F7F\u7528\u7684\u6A21\u677F\u3002\u786E\u4FDD\u5B83\u4E0E\u60A8\u6B63\u5728\u4F7F\u7528\u7684\u81EA\u5B9A\u4E49\u6A21\u578B\u5339\u914D\u3002 +settingsConfigurable.service.llama.infillTemplate.comment=\u7528\u4E8E\u81EA\u52A8\u8865\u5168\u7684\u6A21\u677F\u3002\u786E\u4FDD\u60A8\u4F7F\u7528\u7684\u6A21\u578B\u652F\u6301\u4EE3\u7801\u586B\u5145\u3002 +settingsConfigurable.service.llama.downloadModelLink.label=\u4E0B\u8F7D\u6A21\u578B +settingsConfigurable.service.llama.cancelDownloadLink.label=\u53D6\u6D88\u4E0B\u8F7D +settingsConfigurable.service.llama.linkToModel.label=\u6A21\u578B\u94FE\u63A5 +settingsConfigurable.service.llama.contextSize.label=\u63D0\u793A\u4E0A\u4E0B\u6587\u5927\u5C0F: +settingsConfigurable.service.llama.contextSize.comment=\u63D0\u793A\u4E0A\u4E0B\u6587\u7684\u5927\u5C0F\u3002LLaMA\u6A21\u578B\u6784\u5EFA\u65F6\u4E0A\u4E0B\u6587\u4E3A2048\uFF0C\u8FD9\u5C06\u4E3A\u66F4\u957F\u7684\u8F93\u5165/\u63A8\u7406\u63D0\u4F9B\u66F4\u597D\u7684\u7ED3\u679C\u3002 +settingsConfigurable.service.llama.threads.label=\u7EBF\u7A0B\u6570: +settingsConfigurable.service.llama.threads.comment=\u53EF\u7528\u4E8E\u6267\u884C\u6A21\u578B\u7684\u7EBF\u7A0B\u6570\u3002\u4E0D\u5EFA\u8BAE\u6307\u5B9A\u5927\u4E8E\u5904\u7406\u5668\u6838\u5FC3\u6570\u7684\u6570\u5B57\u3002 +settingsConfigurable.service.llama.additionalParameters.label=\u9644\u52A0\u53C2\u6570: +settingsConfigurable.service.llama.additionalParameters.comment=\u670D\u52A1\u5668\u542F\u52A8\u8FC7\u7A0B\u7684\u9644\u52A0\u547D\u4EE4\u884C\u53C2\u6570\uFF0C\u7528\u9017\u53F7\u5206\u9694\u3002\u67E5\u770B\u5B8C\u6574\u7684\u9009\u9879\u5217\u8868\u3002

\u793A\u4F8B: "--n-gpu-layers, 1, --no-mmap, --mlock"

+settingsConfigurable.service.llama.additionalBuildParameters.label=\u9644\u52A0\u6784\u5EFA\u53C2\u6570: +settingsConfigurable.service.llama.additionalBuildParameters.comment=\u670D\u52A1\u5668\u6784\u5EFA\u8FC7\u7A0B\u7684\u9644\u52A0\u547D\u4EE4\u884C\u53C2\u6570\uFF0C\u7528\u9017\u53F7\u5206\u9694\u3002\u67E5\u770B\u5B8C\u6574\u7684\u6784\u5EFA\u9009\u9879\u5217\u8868\u3002

\u793A\u4F8B: "LLAMA_CUDA=1,CUDA_DOCKER_ARCH=all"

+settingsConfigurable.service.llama.additionalEnvironmentVariables.label=\u9644\u52A0\u73AF\u5883\u53D8\u91CF: +settingsConfigurable.service.llama.additionalEnvironmentVariables.comment=\u670D\u52A1\u5668\u6784\u5EFA\u548C\u8FD0\u884C\u8FC7\u7A0B\u7684\u9644\u52A0\u73AF\u5883\u53D8\u91CF\uFF0C\u7528\u7A7A\u683C\u5206\u9694\u3002\u53EF\u7528\u4E8E\u8BBE\u7F6ECUDA\u53D8\u91CF(\u67E5\u770B\u5B8C\u6574\u7684\u73AF\u5883\u53D8\u91CF\u5217\u8868)

\u793A\u4F8B: "CUDA_VISIBLE_DEVICES=0,1"

+settingsConfigurable.service.llama.baseHost.label=\u57FA\u7840\u4E3B\u673A: +settingsConfigurable.service.llama.baseHost.comment=\u73B0\u6709LLama\u670D\u52A1\u5668\u7684URL +settingsConfigurable.service.llama.startServer.label=\u542F\u52A8\u670D\u52A1\u5668 +settingsConfigurable.service.llama.startServer.opposite=\u505C\u6B62 +settingsConfigurable.service.llama.stopServer.label=\u505C\u6B62\u670D\u52A1\u5668 +settingsConfigurable.service.llama.stopServer.opposite=\u542F\u52A8 +settingsConfigurable.service.llama.progress.serverRunning=\u670D\u52A1\u5668\u8FD0\u884C\u4E2D +settingsConfigurable.service.llama.progress.serverStopped=\u670D\u52A1\u5668\u5DF2\u505C\u6B62 +settingsConfigurable.service.llama.progress.stoppingServer=\u6B63\u5728\u505C\u6B62\u670D\u52A1\u5668... +settingsConfigurable.service.llama.progress.startingServer=\u6B63\u5728\u542F\u52A8\u670D\u52A1\u5668... +settingsConfigurable.service.llama.progress.downloadingModel.title=\u6B63\u5728\u4E0B\u8F7D\u6A21\u578B +settingsConfigurable.service.llama.progress.downloadingModelIndicator.text=\u6B63\u5728\u4E0B\u8F7D %s... +settingsConfigurable.service.llama.overlay.modelNotDownloaded.text=\u6A21\u578B\u672A\u4E0B\u8F7D +settingsConfigurable.shared.authentication.title=\u8BA4\u8BC1 +settingsConfigurable.shared.requestConfiguration.title=\u8BF7\u6C42\u914D\u7F6E +settingsConfigurable.shared.apiKey.label=API\u5BC6\u94A5: +settingsConfigurable.shared.apiKey.comment=\u7528\u4E8E\u8BA4\u8BC1\u7684API\u5BC6\u94A5\uFF0C\u4F5C\u4E3Abearer\u6DFB\u52A0\u5230'Authorization'\u5934\u4E2D(\u53EF\u9009) +settingsConfigurable.shared.baseHost.label=\u57FA\u7840\u4E3B\u673A: +settingsConfigurable.shared.path.label=\u8DEF\u5F84: +settingsConfigurable.shared.model.label=\u6A21\u578B: +configurationConfigurable.displayName=ProxyAI: \u914D\u7F6E +configurationConfigurable.table.title=\u7F16\u8F91\u5668\u64CD\u4F5C +configurationConfigurable.table.emptyText=\u672A\u914D\u7F6E\u64CD\u4F5C +configurationConfigurable.table.header.actionColumnLabel=\u64CD\u4F5C +configurationConfigurable.table.header.promptColumnLabel=\u63D0\u793A +configurationConfigurable.table.action.revertToDefaults.text=\u6062\u590D\u9ED8\u8BA4\u503C +configurationConfigurable.table.action.addKeymap.text=\u6DFB\u52A0\u5FEB\u6377\u952E +configurationConfigurable.checkForPluginUpdates.label=\u81EA\u52A8\u68C0\u67E5\u63D2\u4EF6\u66F4\u65B0 +configurationConfigurable.checkForNewScreenshots.label=\u81EA\u52A8\u68C0\u67E5\u65B0\u622A\u56FE +configurationConfigurable.openNewTabCheckBox.label=\u6BCF\u4E2A\u64CD\u4F5C\u6253\u5F00\u65B0\u804A\u5929\u6807\u7B7E +configurationConfigurable.enableMethodNameGeneration.label=\u542F\u7528\u65B9\u6CD5\u540D\u79F0\u67E5\u627E\u5EFA\u8BAE +configurationConfigurable.autoFormatting.label=\u542F\u7528\u81EA\u52A8\u4EE3\u7801\u683C\u5F0F\u5316 +configurationConfigurable.autocompletionPostProcessing.label=\u542F\u7528\u4EE3\u7801\u8865\u5168\u540E\u5904\u7406 +configurationConfigurable.autocompletionContextAwareCheckBox.label=\u542F\u7528\u9879\u76EE\u4E0A\u4E0B\u6587\u611F\u77E5\u4EE3\u7801\u8865\u5168 +configurationConfigurable.autocompletionGitContextCheckBox.label=\u4E3A\u4EE3\u7801\u8865\u5168\u542F\u7528Git\u4E0A\u4E0B\u6587 +configurationConfigurable.section.assistant.title=\u52A9\u624B\u914D\u7F6E +configurationConfigurable.section.assistant.systemPromptField.label=\u7CFB\u7EDF\u63D0\u793A: +configurationConfigurable.section.assistant.systemPromptField.comment=\u7CFB\u7EDF\u6D88\u606F\u6709\u52A9\u4E8E\u8BBE\u7F6E\u52A9\u624B\u7684\u884C\u4E3A +configurationConfigurable.section.assistant.temperatureField.label=\u6E29\u5EA6: +configurationConfigurable.section.assistant.temperatureField.comment=\u968F\u673A\u6027\u503C\u3002\u5FC5\u987B\u4ECB\u4E8E0\u548C1\u4E4B\u95F4 +configurationConfigurable.section.assistant.maxTokensField.label=\u6700\u5927\u8865\u5168\u6807\u8BB0\u6570: +configurationConfigurable.section.assistant.maxTokensField.comment=\u8865\u5168\u7684\u6700\u5927\u5BB9\u91CF\u3002 +configurationConfigurable.section.assistant.llamacppParams.title=llama.cpp\u7684\u914D\u7F6E\u9009\u9879 +configurationConfigurable.section.codeCompletion.title=\u4EE3\u7801\u8865\u5168 +configurationConfigurable.section.codeCompletion.multiLineCompletions.description=\u5982\u679C\u52FE\u9009\uFF0C\u8865\u5168\u5C06\u80FD\u591F\u8DE8\u8D8A\u591A\u884C\u3002 +configurationConfigurable.section.codeCompletion.postProcess.title=\u542F\u7528tree-sitter\u540E\u5904\u7406 +configurationConfigurable.section.codeCompletion.postProcess.description=\u5982\u679C\u52FE\u9009\uFF0C\u8865\u5168\u5C06\u4F7F\u7528tree-sitter\u89E3\u6790\u5668\u8FDB\u884C\u540E\u5904\u7406\u3002 +configurationConfigurable.section.codeCompletion.gitDiff.title=\u542F\u7528git\u5DEE\u5F02\u4E0A\u4E0B\u6587 +configurationConfigurable.section.codeCompletion.collectDependencyStructure.title=\u542F\u7528\u4F9D\u8D56\u5206\u6790\u5668 +configurationConfigurable.section.codeCompletion.analyzeDepth.title=\u4EE3\u7801\u5206\u6790\u6DF1\u5EA6: +configurationConfigurable.section.codeCompletion.analyzeDepth.comment=\u8BE5\u53C2\u6570\u9650\u5236PSI\u7ED3\u6784\u904D\u5386\u7684\u6DF1\u5EA6\u3002\u76EE\u524D\u4EC5\u9488\u5BF9Kotlin\u8BED\u8A00\u5B9E\u73B0\u3002 +configurationConfigurable.section.codeCompletion.collectDependencyStructure.description=\u542F\u7528\u8BE5\u8BBE\u7F6E\u5141\u8BB8\u63D2\u4EF6\u6536\u96C6\u4F9D\u8D56\u7ED3\u6784\uFF0C\u4ECE\u800C\u63D0\u9AD8\u5EFA\u8BAE\u6570\u636E\u7684\u51C6\u786E\u6027\uFF0C\u4F46\u4F1A\u6D88\u8017\u66F4\u591A\u6BCF\u4E2A\u8BF7\u6C42\u7684\u6807\u8BB0\u3002\u76EE\u524D\u4EC5\u9488\u5BF9Kotlin\u8BED\u8A00\u5B9E\u73B0\u3002 +configurationConfigurable.section.codeCompletion.gitDiff.description=\u5982\u679C\u52FE\u9009\uFF0C\u5F53\u8BF7\u6C42\u8865\u5168\u65F6\u5C06\u5305\u542B\u7528\u6237\u6700\u8FD1\u7684\u672A\u6682\u5B58git\u5DEE\u5F02\u3002 +configurationConfigurable.section.chatCompletion.title=\u804A\u5929\u8865\u5168 +configurationConfigurable.section.chatCompletion.retryOnFailedDiffSearch.title=\u542F\u7528\u5DEE\u5F02\u641C\u7D22\u5931\u8D25\u91CD\u8BD5 +configurationConfigurable.section.chatCompletion.retryOnFailedDiffSearch.description=\u5982\u679C\u52FE\u9009\uFF0C\u5F53\u5DEE\u5F02\u641C\u7D22\u5931\u8D25\u65F6\u63D2\u4EF6\u5C06\u91CD\u8BD5\u3002 +configurationConfigurable.section.chatCompletion.editorContextTag.title=\u542F\u7528\u81EA\u52A8\u6587\u4EF6\u6807\u8BB0 +configurationConfigurable.section.chatCompletion.editorContextTag.description=\u5982\u679C\u542F\u7528\uFF0C\u6765\u81EA\u6253\u5F00\u7F16\u8F91\u5668\u6587\u4EF6\u7684\u5185\u5BB9\u5C06\u81EA\u52A8\u5305\u542B\u5728\u60A8\u53D1\u9001\u7684\u6BCF\u6761\u6D88\u606F\u4E2D\u3002 +configurationConfigurable.section.chatCompletion.psiStructure.title=\u542F\u7528\u9644\u52A0\u6587\u4EF6\u7684\u4F9D\u8D56\u7ED3\u6784\u5206\u6790\u3002 +configurationConfigurable.section.chatCompletion.psiStructure.analyzeDepth.title=\u4EE3\u7801\u5206\u6790\u6DF1\u5EA6: +configurationConfigurable.section.chatCompletion.psiStructure.analyzeDepth.comment=\u8BE5\u53C2\u6570\u9650\u5236PSI\u7ED3\u6784\u904D\u5386\u7684\u6DF1\u5EA6\u3002\u76EE\u524D\u4EC5\u9488\u5BF9Kotlin\u8BED\u8A00\u5B9E\u73B0\u3002 +configurationConfigurable.section.chatCompletion.psiStructure.description=\u5982\u679C\u542F\u7528\uFF0C\u9644\u52A0\u6587\u4EF6\u5BFC\u5165\u4E2D\u5B58\u5728\u7684\u7C7B\u7ED3\u6784\u5C06\u88AB\u6DFB\u52A0\u5230\u5BF9\u8BDD\u7684\u4E0A\u4E0B\u6587\u4E2D\u3002\u7ED3\u6784\u6307\u7684\u662F\u6587\u4EF6\u4E2D\u5305\u542B\u6784\u9020\u51FD\u6570\u3001\u5B57\u6BB5\u548C\u65B9\u6CD5\u7684\u6E90\u4EE3\u7801\uFF0C\u5305\u62EC\u6240\u6709\u4FEE\u9970\u7B26\u3001\u53C2\u6570\u548C\u8FD4\u56DE\u7C7B\u578B\uFF0C\u4F46\u4E0D\u5305\u62EC\u5B9E\u73B0\u3002\u4E3A\u4E86\u5728\u9AD8\u8D28\u91CF\u804A\u5929\u4E0A\u4E0B\u6587\u548C\u8282\u7701\u6807\u8BB0\u4E4B\u95F4\u627E\u5230\u5E73\u8861\uFF0C\u6545\u610F\u6392\u9664\u4E86\u4F9D\u8D56\u7684\u5B9E\u73B0\u3002 +settingsConfigurable.service.llama.predefinedModel.comment=\u4ECEHuggingFace\u4E0B\u8F7D\u5E76\u4F7F\u7528\u7ECF\u8FC7\u5BA1\u67E5\u7684\u6A21\u578B\u3002 +settingsConfigurable.service.llama.customModel.comment=\u4F7F\u7528\u60A8\u8BA1\u7B97\u673A\u4E0A\u672C\u5730\u8DEF\u5F84\u4E2D\u7684GGUF\u6A21\u578B\u6587\u4EF6\u3002 +settingsConfigurable.service.custom.openai.testConnection.label=\u6D4B\u8BD5\u8FDE\u63A5 +settingsConfigurable.service.custom.openai.presetTemplate.label=\u9884\u8BBE\u6A21\u677F: +settingsConfigurable.service.custom.openai.url.label=URL: +settingsConfigurable.service.custom.openai.linkToDocs=API\u6587\u6863\u94FE\u63A5 +settingsConfigurable.service.custom.openai.connectionSuccess=\u8FDE\u63A5\u6210\u529F\u3002 +settingsConfigurable.service.custom.openai.connectionFailed=\u8FDE\u63A5\u5931\u8D25\u3002 +settingsConfigurable.service.custom.openai.importSettings=\u5BFC\u5165\u8BBE\u7F6E... +settingsConfigurable.service.custom.openai.exportSettings=\u5BFC\u51FA\u8BBE\u7F6E +settingsConfigurable.prompts.import=\u5BFC\u5165\u8BBE\u7F6E... +settingsConfigurable.prompts.export=\u5BFC\u51FA\u8BBE\u7F6E +settingsConfigurable.prompts.exportDialog.saveTo=\u4FDD\u5B58\u5230: +settingsConfigurable.prompts.exportDialog.exportError=\u5BFC\u51FA\u63D0\u793A\u8BBE\u7F6E\u65F6\u51FA\u9519 +settingsConfigurable.prompts.exportDialog.title=\u76EE\u6807\u6587\u4EF6 +settingsConfigurable.prompts.importDialog.importError=\u5BFC\u5165\u63D0\u793A\u8BBE\u7F6E\u65F6\u51FA\u9519 +settingsConfigurable.service.ollama.models.refresh=\u5237\u65B0\u6A21\u578B +advancedSettingsConfigurable.displayName=ProxyAI: \u9AD8\u7EA7\u8BBE\u7F6E +advancedSettingsConfigurable.proxy.title=HTTP/SOCKS\u4EE3\u7406 +advancedSettingsConfigurable.proxy.typeComboBoxField.label=\u4EE3\u7406: +advancedSettingsConfigurable.proxy.hostField.label=\u4E3B\u673A\u540D: +advancedSettingsConfigurable.proxy.authCheckBoxField.label=\u4EE3\u7406\u8BA4\u8BC1 +advancedSettingsConfigurable.proxy.usernameField.label=\u7528\u6237\u540D: +advancedSettingsConfigurable.proxy.passwordField.label=\u5BC6\u7801: +advancedSettingsConfigurable.connectionSettings.title=\u8FDE\u63A5\u8BBE\u7F6E +advancedSettingsConfigurable.connectionSettings.connectionTimeout.label=\u8FDE\u63A5\u8D85\u65F6(\u79D2): +advancedSettingsConfigurable.connectionSettings.readTimeout.label=\u8BFB\u53D6\u8D85\u65F6(\u79D2): +codebaseIndexing.task.title=\u6B63\u5728\u7D22\u5F15\u4EE3\u7801\u5E93 +dialog.deleteConversation.title=\u5220\u9664\u5BF9\u8BDD +dialog.deleteConversation.description=\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u5BF9\u8BDD\u5417? +dialog.tokenLimitExceeded.title=\u6807\u8BB0\u9650\u5236\u8D85\u51FA +dialog.tokenLimitExceeded.description=\u5DF2\u8FBE\u5230\u9ED8\u8BA4\u6700\u5927\u6807\u8BB0\u9650\u5236\u3002\u60A8\u662F\u5426\u8981\u7EE7\u7EED\u5BF9\u8BDD\uFF0C\u5C3D\u7BA1\u6D88\u606F\u6210\u672C\u66F4\u9AD8? +dialog.tokenSoftLimitExceeded.title=\u8F6F\u9650\u5236\u8D85\u51FA +dialog.tokenSoftLimitExceeded.description=\u8B66\u544A: 'git diff' \u8F93\u51FA\u5305\u542B%d\u4E2A\u6807\u8BB0\uFF0C\u8868\u793A\u6709\u5927\u91CF\u66F4\u6539\u3002\u60A8\u786E\u5B9A\u8981\u7EE7\u7EED\u5417? +dialog.continue=\u7EE7\u7EED +editor.diff.title=ProxyAI\u5DEE\u5F02 +editor.diff.local.content.title=ProxyAI\u5EFA\u8BAE\u4EE3\u7801 +toolwindow.chat.editor.action.copy.description=\u590D\u5236\u751F\u6210\u7684\u4EE3\u7801 +toolwindow.chat.editor.action.autoApply.title=\u81EA\u52A8\u5E94\u7528 +toolwindow.chat.editor.action.autoApply.disabledTitle=\u81EA\u52A8\u5E94\u7528\u4EC5\u9002\u7528\u4E8EProxyAI\u63D0\u4F9B\u5546 +toolwindow.chat.editor.action.autoApply.description=\u81EA\u52A8\u5E94\u7528\u5EFA\u8BAE\u7684\u66F4\u6539 +toolwindow.chat.editor.action.autoApply.noActiveFile=\u672A\u627E\u5230\u6D3B\u52A8\u6587\u4EF6 +toolwindow.chat.editor.action.autoApply.fileTooLarge=\u6D3B\u52A8\u6587\u4EF6\u592A\u5927\u65E0\u6CD5\u5904\u7406 +toolwindow.chat.editor.action.autoApply.reject=\u5168\u90E8\u62D2\u7EDD +toolwindow.chat.editor.diff.applying=\u6B63\u5728\u5E94\u7528 +toolwindow.chat.editor.diff.thinking=\u601D\u8003\u4E2D +toolwindow.chat.editor.diff.editing=\u7F16\u8F91\u4E2D +toolwindow.chat.editor.diff.retrying=\u6B63\u5728\u91CD\u8BD5 +toolwindow.chat.editor.action.autoApply.error=\u5E94\u7528\u66F4\u6539\u65F6\u51FA\u9519\u3002{0} +toolwindow.chat.editor.action.autoApply.taskTitle=\u5E94\u7528\u66F4\u6539 +toolwindow.chat.editor.action.autoApply.loadingMessage=ProxyAI: \u6B63\u5728\u5E94\u7528\u66F4\u6539 +toolwindow.chat.editor.action.autoApply.successMessage=\u66F4\u6539\u5DF2\u6210\u529F\u5E94\u7528\u5230\u6587\u4EF6\u3002 +diff.acceptedPanel.revertChanges=\u64A4\u9500\u66F4\u6539 +diff.acceptedPanel.viewDetails=\u67E5\u770B\u8BE6\u60C5 +diff.acceptedPanel.before=\u4E4B\u524D +diff.acceptedPanel.after=\u4E4B\u540E +toolwindow.chat.editor.action.diff.description=\u5C06\u7F16\u8F91\u5668\u4EE3\u7801\u4E0E\u751F\u6210\u7684\u4EE3\u7801\u8FDB\u884C\u6BD4\u8F83 +toolwindow.chat.editor.action.edit.title=\u7F16\u8F91\u6E90\u4EE3\u7801 +toolwindow.chat.editor.action.disableEditing.title=\u7981\u7528\u7F16\u8F91 +toolwindow.chat.editor.action.edit.description=\u7F16\u8F91\u751F\u6210\u7684\u4EE3\u7801 +toolwindow.chat.editor.action.newFile.title=\u65B0\u5EFA\u6587\u4EF6 +toolwindow.chat.editor.action.newFile.description=\u4ECE\u751F\u6210\u7684\u4EE3\u7801\u521B\u5EFA\u65B0\u6587\u4EF6 +toolwindow.chat.editor.action.replaceSelection.title=\u66FF\u6362\u9009\u62E9 +toolwindow.chat.editor.action.replaceSelection.description=\u66FF\u6362\u4E3B\u7F16\u8F91\u5668\u9009\u4E2D\u7684\u4EE3\u7801 +toolwindow.chat.editor.action.insertAtCaret.title=\u5728\u5149\u6807\u5904\u63D2\u5165 +toolwindow.chat.editor.action.insertAtCaret.description=\u5728\u4E3B\u7F16\u8F91\u5668\u5149\u6807\u4F4D\u7F6E\u540E\u63D2\u5165\u751F\u6210\u7684\u4EE3\u7801 +toolwindow.chat.editor.action.expand=\u663E\u793A\u66F4\u591A +toolwindow.chat.editor.action.collapse=\u663E\u793A\u66F4\u5C11 +toolwindow.chat.response.action.reloadResponse.text=\u91CD\u65B0\u52A0\u8F7D\u54CD\u5E94 +toolwindow.chat.response.action.reloadResponse.description=\u91CD\u65B0\u52A0\u8F7D\u54CD\u5E94\u63CF\u8FF0 +toolwindow.chat.response.action.deleteResponse.text=\u5220\u9664\u54CD\u5E94 +toolwindow.chat.response.action.deleteResponse.description=\u5220\u9664\u54CD\u5E94\u63CF\u8FF0 +toolwindow.chat.youProCheckBox.text=\u4F7F\u7528GPT-4\u6A21\u578B +toolwindow.chat.youProCheckBox.enable=\u4E3A\u590D\u6742\u67E5\u8BE2\u5F00\u542F +toolwindow.chat.youProCheckBox.disable=\u4E3A\u66F4\u5FEB\u54CD\u5E94\u5173\u95ED +toolwindow.chat.youProCheckBox.notAllowed=\u901A\u8FC7\u8BA2\u9605YouPro\u8BA1\u5212\u542F\u7528 +toolwindow.chat.textArea.emptyText=\u8BE2\u95EE\u4EFB\u4F55\u95EE\u9898...\u4F7F\u7528'@'\u5305\u542B\u989D\u5916\u4E0A\u4E0B\u6587 +service.codegpt.title=ProxyAI +service.openai.title=OpenAI +service.custom.openai.title=\u81EA\u5B9A\u4E49OpenAI +service.anthropic.title=Anthropic +service.azure.title=Azure +service.google.title=Google +service.mistral.title=Mistral +service.llama.title=LLaMA C/C++ +service.ollama.title=Ollama +validation.error.model.notExists='%s'\u4E0D\u53EF\u7528\uFF0C\u8BF7\u9009\u62E9\u5176\u4ED6\u6A21\u578B +validation.error.fieldRequired=\u6B64\u5B57\u6BB5\u4E3A\u5FC5\u586B\u9879\u3002 +validation.error.invalidEmail=\u60A8\u8F93\u5165\u7684\u7535\u5B50\u90AE\u4EF6\u65E0\u6548\u3002 +validation.error.mustBeNumber=\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u3002 +validation.error.mustBeBetweenZeroAndOne=\u503C\u5FC5\u987B\u4ECB\u4E8E0\u548C1\u4E4B\u95F4\u3002 +validation.error.mustBeGreaterThanZero=\u503C\u5FC5\u987B\u5927\u4E8E0 +checkForUpdatesTask.title=\u6B63\u5728\u68C0\u67E5ProxyAI\u66F4\u65B0... +checkForUpdatesTask.notification.message=ProxyAI\u6709\u53EF\u7528\u66F4\u65B0\u3002 +checkForUpdatesTask.notification.installButton=\u5B89\u88C5\u66F4\u65B0 +llamaServerAgent.buildingProject.description=\u6B63\u5728\u6784\u5EFA\u670D\u52A1\u5668... +llamaServerAgent.serverBootup.description=\u6B63\u5728\u542F\u52A8\u670D\u52A1\u5668... +notification.compilationError.description=ProxyAI\u68C0\u6D4B\u5230\u7F16\u8BD1\u9519\u8BEF\u3002\u60A8\u9700\u8981\u5E2E\u52A9\u89E3\u51B3\u5417? +notification.compilationError.okLabel=\u89E3\u51B3\u9519\u8BEF +notification.completionError.description=\u8865\u5168\u5931\u8D25:
%s +statusBar.widget.tooltip=ProxyAI: \u72B6\u6001 +shared.acceptAll=\u5168\u90E8\u63A5\u53D7 +shared.promptTemplate=\u63D0\u793A\u6A21\u677F: +shared.infillPromptTemplate=\u586B\u5145\u6A21\u677F: +shared.apiVersion=API\u7248\u672C: +shared.escToCancel=Esc\u53D6\u6D88 +shared.cancel=\u53D6\u6D88 +shared.confirm=\u786E\u8BA4 +shared.copy=\u590D\u5236 +shared.copyCode=\u590D\u5236\u4EE3\u7801 +shared.copyMessageContents=\u590D\u5236\u6D88\u606F\u5185\u5BB9 +shared.copyToClipboard=\u590D\u5236\u5230\u526A\u8D34\u677F +shared.copiedToClipboard=\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F +shared.configuration=\u914D\u7F6E +shared.delete=\u5220\u9664\u6D88\u606F +shared.deleteDescription=\u5220\u9664\u6D88\u606F +shared.reload=\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F +shared.reloadDescription=\u91CD\u65B0\u52A0\u8F7D\u6D88\u606F +shared.port=\u7AEF\u53E3: +shared.discard=\u4E22\u5F03 +shared.notification.doNotShowAgain=\u4E0D\u518D\u663E\u793A +shared.loading=\u52A0\u8F7D\u4E2D... +shared.website=\u7F51\u7AD9 +codeCompletion.progress.title=\u4EE3\u7801\u8865\u5168\u8FDB\u884C\u4E2D +imageAttachmentNotification.content=\u5728\u684C\u9762\u4E0A\u68C0\u6D4B\u5230\u65B0\u56FE\u50CF\u3002\u60A8\u60F3\u5C06\u5176\u9644\u52A0\u5230\u5F53\u524D\u5BF9\u8BDD\u5417? +imageAttachmentNotification.action=\u9644\u52A0\u56FE\u50CF +action.attachImage=\u9644\u52A0\u56FE\u50CF +action.attachImageDescription=\u9644\u52A0\u56FE\u50CF +imageFileChooser.title=\u9009\u62E9\u56FE\u50CF +imageAccordion.title=\u9644\u52A0\u56FE\u50CF +shared.image=\u56FE\u50CF +shared.chatCompletions=\u804A\u5929\u8865\u5168 +shared.codeCompletions=\u4EE3\u7801\u8865\u5168 +codeCompletionsForm.enableNextEditText=\u542F\u7528\u591A\u884C\u66F4\u6539 +codeCompletionsForm.enableFeatureText=\u542F\u7528\u4EE3\u7801\u8865\u5168 +codeCompletionsForm.parseResponseAsChatCompletions=\u5C06\u54CD\u5E94\u89E3\u6790\u4E3A\u804A\u5929\u8865\u5168 +codeCompletionsForm.overrideFimTemplate.label=\u4F7F\u7528\u5185\u7F6EFIM\u6A21\u677F +codeCompletionsForm.overrideFimTemplate.description=\u5982\u679C\u52FE\u9009\uFF0CProxyAI\u5C06\u4E3A\u6240\u9009\u6A21\u578B\u5E94\u7528\u76F8\u5E94\u7684FIM\u6A21\u677F\u3002 +codeCompletionsForm.selectFimTemplate=FIM\u6A21\u677F: +codeCompletionsForm.maxTokensLabel=\u6700\u5927\u6807\u8BB0\u6570: +codeCompletionsForm.maxTokensComment=\u5C06\u5728\u4EE3\u7801\u8865\u5168\u4E2D\u751F\u6210\u7684\u6700\u5927\u6807\u8BB0\u6570\u3002 +editCodePopover.title=\u7F16\u8F91\u4EE3\u7801 +editCodePopover.textField.emptyText=\u7F16\u8F91\u8BF4\u660E... +editCodePopover.textField.followUp.emptyText=\u63D0\u51FA\u540E\u7EED\u95EE\u9898 +editCodePopover.textField.comment=\u63D0\u4F9B\u4EE3\u7801\u4FEE\u6539\u8BF4\u660E\u3002 +editCodePopover.submitButton.title=\u63D0\u4EA4\u7F16\u8F91 +editCodePopover.acceptButton.title=\u63A5\u53D7\u5EFA\u8BAE +editCodePopover.followUpButton.title=\u63D0\u4EA4\u540E\u7EED\u95EE\u9898 +smartTextPane.submitButton.title=\u53D1\u9001\u6D88\u606F +smartTextPane.submitButton.description=\u53D1\u9001\u6D88\u606F +smartTextPane.stopButton.title=\u505C\u6B62 +smartTextPane.stopButton.description=\u505C\u6B62\u8865\u5168 +chatMessageResponseBody.webPages.title=\u7F51\u9875 +chatMessageResponseBody.webDocs.startProgress.label=\u6B63\u5728\u5206\u6790\u7F51\u9875\u5185\u5BB9... +addDocumentation.popup.title=\u6DFB\u52A0\u6587\u6863 +addDocumentation.popup.form.name.label=\u540D\u79F0: +addDocumentation.popup.form.url.label=URL: +addDocumentation.popup.form.url.comment=\u8F93\u5165\u6587\u6863\u7684\u5B8C\u6574\u7F51\u5740\u3002 +addDocumentation.popup.form.saveCheckbox.label=\u4FDD\u5B58\u4EE5\u4F9B\u5C06\u6765\u53C2\u8003 +userMessagePanel.documentation.title=\u6587\u6863 +userMessagePanel.persona.title=\u89D2\u8272 +suggestionGroupItem.files.displayName=\u6587\u4EF6 +suggestionGroupItem.folders.displayName=\u6587\u4EF6\u5939 +suggestionGroupItem.personas.displayName=\u89D2\u8272 +suggestionGroupItem.history.displayName=\u5386\u53F2\u8BB0\u5F55 +suggestionGroupItem.docs.displayName=\u6587\u6863 +suggestionGroupItem.git.displayName=Git +suggestionGroupItem.mcp.displayName=MCP(\u5373\u5C06\u63A8\u51FA) +suggestionGroupItem.codeAnalyze.displayName=\u4EE3\u7801\u5206\u6790 +suggestionActionItem.attachImage.displayName=\u56FE\u50CF +suggestionActionItem.attachImage.description=\u9009\u62E9\u8981\u9644\u52A0\u7684\u56FE\u50CF\u6587\u4EF6 +suggestionActionItem.webSearch.displayName=\u7F51\u9875 +suggestionActionItem.viewDocumentations.displayName=\u67E5\u770B\u6240\u6709\u6587\u6863 +suggestionActionItem.createPersona.displayName=\u6DFB\u52A0\u65B0\u89D2\u8272 +suggestionActionItem.createDocumentation.displayName=\u6DFB\u52A0\u65B0\u6587\u6863 +suggestionActionItem.includeOpenFiles.displayName=\u5305\u542B\u6253\u5F00\u7684\u6587\u4EF6 +suggestionActionItem.includeCurrentChanges.displayName=\u5305\u542B\u5F53\u524D\u66F4\u6539 +tagPopupMenuItem.close=\u5173\u95ED +tagPopupMenuItem.closeOthers=\u5173\u95ED\u5176\u4ED6\u6807\u7B7E +tagPopupMenuItem.closeAll=\u5173\u95ED\u6240\u6709\u6807\u7B7E +tagPopupMenuItem.closeTagsToLeft=\u5173\u95ED\u5DE6\u4FA7\u6807\u7B7E +tagPopupMenuItem.closeTagsToRight=\u5173\u95ED\u53F3\u4FA7\u6807\u7B7E +toolwindow.chat.loading=\u6B63\u5728\u751F\u6210\u54CD\u5E94... +headerPanel.error.searchBlockNotMapped.title=\u65E0\u6CD5\u5B9A\u4F4D\u641C\u7D22\u5757 +llama.build.cmake.setup=\u6B63\u5728\u8BBE\u7F6ECMake... +llama.build.cmake.build=\u6B63\u5728\u6784\u5EFA\u9879\u76EE... +llama.build.startingBuild=\u6B63\u5728\u542F\u52A8Llama\u670D\u52A1\u5668\u6784\u5EFA +llama.build.phase.setup=\u9636\u6BB51: CMake\u8BBE\u7F6E +llama.build.phase.build=\u9636\u6BB52: \u6784\u5EFA\u9879\u76EE +llama.build.phase.setupFailed=CMake\u8BBE\u7F6E\u5931\u8D25 +llama.build.phase.buildFailed=\u6784\u5EFA\u5931\u8D25 +llama.build.cache.cleanup=\u68C0\u6D4B\u5230CMake\u7F13\u5B58\u8DEF\u5F84\u4E0D\u5339\u914D\uFF0C\u6B63\u5728\u6E05\u7406\u6784\u5EFA\u76EE\u5F55... +llama.server.buildStopped=\u7528\u6237\u505C\u6B62\u6784\u5EFA +llama.server.starting=\u6B63\u5728\u542F\u52A8\u670D\u52A1\u5668... +llama.server.running=\u670D\u52A1\u5668\u6210\u529F\u8FD0\u884C +llama.server.startupFailed=\u670D\u52A1\u5668\u542F\u52A8\u5931\u8D25 +llama.server.stopping.cmake=\u6B63\u5728\u505C\u6B62CMake\u8BBE\u7F6E\u8FC7\u7A0B +llama.server.stopping.build=\u6B63\u5728\u505C\u6B62\u6784\u5EFA\u8FC7\u7A0B +llama.error.server.startup=\u65E0\u6CD5\u542F\u52A8llama\u670D\u52A1\u5668:\n{0} +llama.error.server.startupWithDetails=\u670D\u52A1\u5668\u542F\u52A8\u5931\u8D25: {0} +llama.ui.tab.serverConfiguration=\u670D\u52A1\u5668\u914D\u7F6E +llama.ui.tab.serverLogs=\u670D\u52A1\u5668\u65E5\u5FD7 +llama.ui.tab.buildOutput=\u6784\u5EFA\u8F93\u51FA +llama.ui.button.stopBuild=\u505C\u6B62\u6784\u5EFA +llama.ui.status.running=\u670D\u52A1\u5668\u72B6\u6001: \u8FD0\u884C\u4E2D +llama.ui.status.building=\u670D\u52A1\u5668\u72B6\u6001: \u6784\u5EFA\u4E2D... +llama.ui.status.stopped=\u670D\u52A1\u5668\u72B6\u6001: \u5DF2\u505C\u6B62 +llama.ui.action.clear=\u6E05\u9664 +llama.ui.action.clear.description=\u6E05\u9664\u63A7\u5236\u53F0 +llama.ui.action.scrollToEnd=\u6EDA\u52A8\u5230\u5E95\u90E8 +llama.ui.action.scrollToEnd.description=\u6EDA\u52A8\u5230\u5E95\u90E8 +llama.process.startingBuild=\u6B63\u5728\u542F\u52A8\u670D\u52A1\u5668\u6784\u5EFA\u8FC7\u7A0B... +llama.debug.buildLoggingStrategy=\u8C03\u8BD5: \u6784\u5EFA\u65E5\u5FD7\u7B56\u7565\u5DF2\u521D\u59CB\u5316 +settings.models.chat.label=\u804A\u5929: +settings.models.code.label=\u81EA\u52A8\u8865\u5168: +settings.models.autoApply.label=\u81EA\u52A8\u5E94\u7528: +settings.models.commitMessages.label=\u63D0\u4EA4\u6D88\u606F: +settings.models.editCode.label=\u7F16\u8F91\u4EE3\u7801: +settings.models.nextEdit.label=\u4E0B\u4E00\u6B65\u7F16\u8F91: +settings.models.nameLookups.label=\u540D\u79F0\u67E5\u627E: +settings.models.selectModel=\u9009\u62E9\u6A21\u578B +settings.models.chat.section.title=\u804A\u5929 +settings.models.chat.section.description=\u7528\u4E8E\u5BF9\u8BDD\u3001\u4EE3\u7801\u7F16\u8F91\u3001\u81EA\u52A8\u5E94\u7528\u3001\u63D0\u4EA4\u548C\u547D\u540D\u5EFA\u8BAE\u7684\u6A21\u578B\u3002\u4E86\u89E3\u66F4\u591A +settings.models.tab.section.title=\u6807\u7B7E\u9875 +settings.models.tab.section.description=\u7528\u4E8E\u81EA\u52A8\u8865\u5168\u548C\u591A\u884C\u4E0B\u4E00\u6B65\u7F16\u8F91\u5EFA\u8BAE\u7684\u6A21\u578B\u3002\u4E86\u89E3\u66F4\u591A +conversation.deleteButton.tooltip=\u5220\u9664\u5BF9\u8BDD +conversation.messageCount.singular={0}\u6761\u6D88\u606F +conversation.messageCount.plural={0}\u6761\u6D88\u606F +conversation.defaultTitle=\u65B0\u5BF9\u8BDD +conversation.emptyState=\u60A8\u7684\u5BF9\u8BDD\u5C06\u4FDD\u5B58\u5728\u8FD9\u91CC\u4EE5\u4FBF\u8F7B\u677E\u8BBF\u95EE\u3002 +conversation.searchField.placeholder=\u5728\u6807\u9898\u548C\u6D88\u606F\u4E2D\u641C\u7D22... +conversation.searchResult.singular=\u627E\u5230{0}\u4E2A\u5339\u914D\u9879 +conversation.searchResult.plural=\u627E\u5230{0}\u4E2A\u5339\u914D\u9879 +conversation.sortOption.recentlyUpdated=\u6700\u8FD1\u66F4\u65B0 +conversation.sortOption.oldestFirst=\u6700\u65E9\u4F18\u5148 +conversation.sortOption.titleAscending=\u6807\u9898(A-Z) +conversation.sortOption.titleDescending=\u6807\u9898(Z-A) +conversation.sortOption.mostMessages=\u6700\u591A\u6D88\u606F +conversation.sortOption.leastMessages=\u6700\u5C11\u6D88\u606F +conversation.sortAction.title=\u6392\u5E8F: {0} +conversation.sortAction.description=\u6309{0}\u6392\u5E8F\u5BF9\u8BDD +conversation.sortPopup.title=\u6392\u5E8F\u65B9\u5F0F +conversation.refreshAction.title=\u5237\u65B0 +conversation.refreshAction.description=\u5237\u65B0\u5BF9\u8BDD\u5217\u8868 +conversation.status.searchResult=\u627E\u5230{0}\u4E2A\u5BF9\u8BDD\u4E2D\u7684{1}\u4E2A +conversation.status.count.singular={0}\u4E2A\u5BF9\u8BDD +conversation.status.count.plural={0}\u4E2A\u5BF9\u8BDD +conversation.status.sortedBy=\u6392\u5E8F\u65B9\u5F0F: {0} +conversation.deleteConfirmation.message=\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u5BF9\u8BDD\u5417? +conversation.deleteConfirmation.title=\u5220\u9664\u5BF9\u8BDD +chat.message.welcome=\u55E8 {0}, \u6211\u662F ProxyAI\uFF01\u4F60\u53EF\u4EE5\u95EE\u6211\u4EFB\u4F55\u95EE\u9898\uFF0C\u4F46\u5927\u591A\u6570\u4EBA\u4F1A\u8BF7\u6C42\u6211\u63D0\u4F9B\u4EE3\u7801\u65B9\u9762\u7684\u5E2E\u52A9\u3002\u4EE5\u4E0B\u662F\u4E00\u4E9B\u4F60\u53EF\u4EE5\u5411\u6211\u54A8\u8BE2\u7684\u95EE\u9898\uFF1A \ No newline at end of file