-)
+ )
+}
diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx
index bbdfe47e893..f0d011dab4a 100644
--- a/webview-ui/src/components/settings/ExperimentalSettings.tsx
+++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes } from "react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
import { FlaskConical } from "lucide-react"
import { EXPERIMENT_IDS, experimentConfigsMap, ExperimentId } from "../../../../src/shared/experiments"
@@ -25,12 +26,13 @@ export const ExperimentalSettings = ({
className,
...props
}: ExperimentalSettingsProps) => {
+ const { t } = useAppTranslation()
return (
-
Experimental Features
+
{t("settings:sections.experimental")}
diff --git a/webview-ui/src/components/settings/ModelInfoView.tsx b/webview-ui/src/components/settings/ModelInfoView.tsx
index 8e9564525fc..603c5a5fe5b 100644
--- a/webview-ui/src/components/settings/ModelInfoView.tsx
+++ b/webview-ui/src/components/settings/ModelInfoView.tsx
@@ -1,5 +1,6 @@
import { useMemo } from "react"
import { VSCodeLink } from "@vscode/webview-ui-toolkit/react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
import { formatPrice } from "@/utils/formatPrice"
import { cn } from "@/lib/utils"
@@ -21,59 +22,64 @@ export const ModelInfoView = ({
isDescriptionExpanded,
setIsDescriptionExpanded,
}: ModelInfoViewProps) => {
+ const { t } = useAppTranslation()
const isGemini = useMemo(() => Object.keys(geminiModels).includes(selectedModelId), [selectedModelId])
const infoItems = [
,
,
!isGemini && (
),
modelInfo.maxTokens !== undefined && modelInfo.maxTokens > 0 && (
<>
-
Max output: {modelInfo.maxTokens?.toLocaleString()} tokens
+
{t("settings:modelInfo.maxOutput")}: {" "}
+ {modelInfo.maxTokens?.toLocaleString()} tokens
>
),
modelInfo.inputPrice !== undefined && modelInfo.inputPrice > 0 && (
<>
-
Input price: {formatPrice(modelInfo.inputPrice)} / 1M tokens
+
{t("settings:modelInfo.inputPrice")}: {" "}
+ {formatPrice(modelInfo.inputPrice)} / 1M tokens
>
),
modelInfo.outputPrice !== undefined && modelInfo.outputPrice > 0 && (
<>
-
Output price: {formatPrice(modelInfo.outputPrice)} / 1M tokens
+
{t("settings:modelInfo.outputPrice")}: {" "}
+ {formatPrice(modelInfo.outputPrice)} / 1M tokens
>
),
modelInfo.supportsPromptCache && modelInfo.cacheReadsPrice && (
<>
-
Cache reads price: {formatPrice(modelInfo.cacheReadsPrice || 0)} /
- 1M tokens
+
{t("settings:modelInfo.cacheReadsPrice")}: {" "}
+ {formatPrice(modelInfo.cacheReadsPrice || 0)} / 1M tokens
>
),
modelInfo.supportsPromptCache && modelInfo.cacheWritesPrice && (
<>
-
Cache writes price: {formatPrice(modelInfo.cacheWritesPrice || 0)}{" "}
- / 1M tokens
+
{t("settings:modelInfo.cacheWritesPrice")}: {" "}
+ {formatPrice(modelInfo.cacheWritesPrice || 0)} / 1M tokens
>
),
isGemini && (
- * Free up to {selectedModelId && selectedModelId.includes("flash") ? "15" : "2"} requests per minute.
- After that, billing depends on prompt size.{" "}
+ {t("settings:modelInfo.gemini.freeRequests", {
+ count: selectedModelId && selectedModelId.includes("flash") ? 15 : 2,
+ })}{" "}
- For more info, see pricing details.
+ {t("settings:modelInfo.gemini.pricingDetails")}
),
diff --git a/webview-ui/src/components/settings/NotificationSettings.tsx b/webview-ui/src/components/settings/NotificationSettings.tsx
index 1fba9dd412e..4466bc339b7 100644
--- a/webview-ui/src/components/settings/NotificationSettings.tsx
+++ b/webview-ui/src/components/settings/NotificationSettings.tsx
@@ -1,4 +1,5 @@
import { HTMLAttributes } from "react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
import { Bell } from "lucide-react"
@@ -18,12 +19,13 @@ export const NotificationSettings = ({
setCachedStateField,
...props
}: NotificationSettingsProps) => {
+ const { t } = useAppTranslation()
return (
-
Notifications
+
{t("settings:sections.notifications")}
@@ -31,11 +33,12 @@ export const NotificationSettings = ({
setCachedStateField("soundEnabled", e.target.checked)}>
- Enable sound effects
+ onChange={(e: any) => setCachedStateField("soundEnabled", e.target.checked)}
+ data-testid="sound-enabled-checkbox">
+ {t("settings:notifications.sound.label")}
- When enabled, Roo will play sound effects for notifications and events.
+ {t("settings:notifications.sound.description")}
{soundEnabled && (
setCachedStateField("soundVolume", parseFloat(e.target.value))}
className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background"
aria-label="Volume"
+ data-testid="sound-volume-slider"
/>
{((soundVolume ?? 0.5) * 100).toFixed(0)}%
-
Volume
+
+ {t("settings:notifications.sound.volumeLabel")}
+
)}
diff --git a/webview-ui/src/components/settings/SectionHeader.tsx b/webview-ui/src/components/settings/SectionHeader.tsx
index 709052cea84..ee120639c9a 100644
--- a/webview-ui/src/components/settings/SectionHeader.tsx
+++ b/webview-ui/src/components/settings/SectionHeader.tsx
@@ -7,14 +7,16 @@ type SectionHeaderProps = HTMLAttributes
& {
description?: string
}
-export const SectionHeader = ({ description, children, className, ...props }: SectionHeaderProps) => (
-
-
{children}
- {description &&
{description}
}
-
-)
+export const SectionHeader = ({ description, children, className, ...props }: SectionHeaderProps) => {
+ return (
+
+
{children}
+ {description &&
{description}
}
+
+ )
+}
diff --git a/webview-ui/src/components/settings/SettingsFooter.tsx b/webview-ui/src/components/settings/SettingsFooter.tsx
index fba7d363c98..4d430097f3c 100644
--- a/webview-ui/src/components/settings/SettingsFooter.tsx
+++ b/webview-ui/src/components/settings/SettingsFooter.tsx
@@ -1,6 +1,7 @@
import { HTMLAttributes } from "react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
-import { VSCodeButton, VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
+import { VSCodeButton, VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
import { vscode } from "@/utils/vscode"
import { cn } from "@/lib/utils"
@@ -18,56 +19,44 @@ export const SettingsFooter = ({
setTelemetrySetting,
className,
...props
-}: SettingsFooterProps) => (
-
-
- If you have any questions or feedback, feel free to open an issue at{" "}
-
- github.com/RooVetGit/Roo-Code
- {" "}
- or join{" "}
-
- reddit.com/r/RooCode
-
-
-
Roo Code v{version}
-
-
-
{
- const checked = e.target.checked === true
- setTelemetrySetting(checked ? "enabled" : "disabled")
- }}>
- Allow anonymous error and usage reporting
-
-
- Help improve Roo Code by sending anonymous usage data and error reports. No code, prompts, or
- personal information is ever sent. See our{" "}
-
- privacy policy
- {" "}
- for more details.
-
+}: SettingsFooterProps) => {
+ const { t } = useAppTranslation()
+
+ return (
+
+
{t("settings:footer.feedback")}
+
{t("settings:footer.version", { version })}
+
+
+
{
+ const checked = e.target.checked === true
+ setTelemetrySetting(checked ? "enabled" : "disabled")
+ }}>
+ {t("settings:footer.telemetry.label")}
+
+
+ {t("settings:footer.telemetry.description")}
+
+
+
+
+
{t("settings:footer.reset.description")}
+
vscode.postMessage({ type: "resetState" })}
+ appearance="secondary"
+ className="shrink-0">
+
+ {t("settings:footer.reset.button")}
+
-
-
Reset all global state and secret storage in the extension.
-
vscode.postMessage({ type: "resetState" })}
- appearance="secondary"
- className="shrink-0">
-
- Reset
-
-
-
-)
+ )
+}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx
index 1cdc1d00fa4..b6fbed748a7 100644
--- a/webview-ui/src/components/settings/SettingsView.tsx
+++ b/webview-ui/src/components/settings/SettingsView.tsx
@@ -1,4 +1,5 @@
import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
import { Button as VSCodeButton } from "vscrui"
import {
CheckCheck,
@@ -55,6 +56,7 @@ type SettingsViewProps = {
}
const SettingsView = forwardRef
(({ onDone }, ref) => {
+ const { t } = useAppTranslation()
const extensionState = useExtensionState()
const { currentApiConfigName, listApiConfigMeta, uriScheme, version } = extensionState
@@ -286,7 +288,7 @@ const SettingsView = forwardRef(({ onDone },
-
Settings
+
{t("settings:header.title")}
{sections.map(({ id, icon: Icon, ref }) => (
(({ onDone },
- Save
+ disabled={!isChangeDetected || !isSettingValid}
+ data-testid="save-button">
+ {t("settings:common.save")}
checkUnsaveChanges(onDone)}>
- Done
+ {t("settings:common.done")}
@@ -322,7 +331,7 @@ const SettingsView = forwardRef
(({ onDone },
-
Providers
+
{t("settings:sections.providers")}
@@ -449,14 +458,18 @@ const SettingsView = forwardRef(({ onDone },
- Unsaved Changes
+ {t("settings:unsavedChangesDialog.title")}
- Do you want to discard changes and continue?
+
+ {t("settings:unsavedChangesDialog.description")}
+
- onConfirmDialogResult(false)}>Cancel
+ onConfirmDialogResult(false)}>
+ {t("settings:unsavedChangesDialog.cancelButton")}
+
onConfirmDialogResult(true)}>
- Discard changes
+ {t("settings:unsavedChangesDialog.discardButton")}
diff --git a/webview-ui/src/components/settings/TemperatureControl.tsx b/webview-ui/src/components/settings/TemperatureControl.tsx
index 7502c3d1f3e..816ec7c8f5a 100644
--- a/webview-ui/src/components/settings/TemperatureControl.tsx
+++ b/webview-ui/src/components/settings/TemperatureControl.tsx
@@ -1,5 +1,6 @@
import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"
import { useEffect, useState } from "react"
+import { useAppTranslation } from "@/i18n/TranslationContext"
import { useDebounce } from "react-use"
interface TemperatureControlProps {
@@ -9,6 +10,7 @@ interface TemperatureControlProps {
}
export const TemperatureControl = ({ value, onChange, maxValue = 1 }: TemperatureControlProps) => {
+ const { t } = useAppTranslation()
const [isCustomTemperature, setIsCustomTemperature] = useState(value !== undefined)
const [inputValue, setInputValue] = useState(value)
useDebounce(() => onChange(inputValue), 50, [onChange, inputValue])
@@ -33,11 +35,9 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur
setInputValue(value ?? 0) // Use the value from apiConfiguration, if set
}
}}>
- Use custom temperature
+ {t("settings:temperature.useCustom")}
-
- Controls randomness in the model's responses.
-
+ {t("settings:temperature.description")}
{isCustomTemperature && (
@@ -60,7 +60,7 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur
{inputValue}
- Higher values make output more random, lower values make it more deterministic.
+ {t("settings:temperature.rangeDescription")}
)}
diff --git a/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx b/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx
index 92a6a1cd036..81431db2f76 100644
--- a/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx
+++ b/webview-ui/src/components/settings/__tests__/ApiConfigManager.test.tsx
@@ -3,17 +3,18 @@ import ApiConfigManager from "../ApiConfigManager"
// Mock VSCode components
jest.mock("@vscode/webview-ui-toolkit/react", () => ({
- VSCodeButton: ({ children, onClick, title, disabled }: any) => (
-
+ VSCodeButton: ({ children, onClick, title, disabled, "data-testid": dataTestId }: any) => (
+
{children}
),
- VSCodeTextField: ({ value, onInput, placeholder, onKeyDown }: any) => (
+ VSCodeTextField: ({ value, onInput, placeholder, onKeyDown, "data-testid": dataTestId }: any) => (
onInput(e)}
placeholder={placeholder}
onKeyDown={onKeyDown}
+ data-testid={dataTestId}
ref={undefined} // Explicitly set ref to undefined to avoid warning
/>
),
@@ -44,6 +45,24 @@ jest.mock("@/components/ui/dialog", () => ({
DialogTitle: ({ children }: any) => {children}
,
}))
+// Mock UI components
+jest.mock("@/components/ui", () => ({
+ Button: ({ children, onClick, disabled, variant, "data-testid": dataTestId }: any) => (
+
+ {children}
+
+ ),
+ Input: ({ value, onInput, placeholder, onKeyDown, "data-testid": dataTestId }: any) => (
+ onInput(e)}
+ placeholder={placeholder}
+ onKeyDown={onKeyDown}
+ data-testid={dataTestId}
+ />
+ ),
+}))
+
describe("ApiConfigManager", () => {
const mockOnSelectConfig = jest.fn()
const mockOnDeleteConfig = jest.fn()
@@ -72,26 +91,26 @@ describe("ApiConfigManager", () => {
it("opens new profile dialog when clicking add button", () => {
render( )
- const addButton = screen.getByTitle("Add profile")
+ const addButton = screen.getByTestId("add-profile-button")
fireEvent.click(addButton)
expect(screen.getByTestId("dialog")).toBeVisible()
- expect(screen.getByText("New Configuration Profile")).toBeInTheDocument()
+ expect(screen.getByTestId("dialog-title")).toHaveTextContent("settings:providers.newProfile")
})
it("creates new profile with entered name", () => {
render( )
// Open dialog
- const addButton = screen.getByTitle("Add profile")
+ const addButton = screen.getByTestId("add-profile-button")
fireEvent.click(addButton)
// Enter new profile name
- const input = screen.getByPlaceholderText("Enter profile name")
+ const input = screen.getByTestId("new-profile-input")
fireEvent.input(input, { target: { value: "New Profile" } })
// Click create button
- const createButton = screen.getByText("Create Profile")
+ const createButton = screen.getByText("settings:providers.createProfile")
fireEvent.click(createButton)
expect(mockOnUpsertConfig).toHaveBeenCalledWith("New Profile")
@@ -101,21 +120,21 @@ describe("ApiConfigManager", () => {
render( )
// Open dialog
- const addButton = screen.getByTitle("Add profile")
+ const addButton = screen.getByTestId("add-profile-button")
fireEvent.click(addButton)
// Enter existing profile name
- const input = screen.getByPlaceholderText("Enter profile name")
+ const input = screen.getByTestId("new-profile-input")
fireEvent.input(input, { target: { value: "Default Config" } })
// Click create button to trigger validation
- const createButton = screen.getByText("Create Profile")
+ const createButton = screen.getByText("settings:providers.createProfile")
fireEvent.click(createButton)
// Verify error message
const dialogContent = getDialogContent()
const errorMessage = within(dialogContent).getByTestId("error-message")
- expect(errorMessage).toHaveTextContent("A profile with this name already exists")
+ expect(errorMessage).toHaveTextContent("settings:providers.nameExists")
expect(mockOnUpsertConfig).not.toHaveBeenCalled()
})
@@ -123,15 +142,15 @@ describe("ApiConfigManager", () => {
render( )
// Open dialog
- const addButton = screen.getByTitle("Add profile")
+ const addButton = screen.getByTestId("add-profile-button")
fireEvent.click(addButton)
// Enter empty name
- const input = screen.getByPlaceholderText("Enter profile name")
+ const input = screen.getByTestId("new-profile-input")
fireEvent.input(input, { target: { value: " " } })
// Verify create button is disabled
- const createButton = screen.getByText("Create Profile")
+ const createButton = screen.getByText("settings:providers.createProfile")
expect(createButton).toBeDisabled()
expect(mockOnUpsertConfig).not.toHaveBeenCalled()
})
@@ -140,7 +159,7 @@ describe("ApiConfigManager", () => {
render( )
// Start rename
- const renameButton = screen.getByTitle("Rename profile")
+ const renameButton = screen.getByTestId("rename-profile-button")
fireEvent.click(renameButton)
// Find input and enter new name
@@ -148,7 +167,7 @@ describe("ApiConfigManager", () => {
fireEvent.input(input, { target: { value: "New Name" } })
// Save
- const saveButton = screen.getByTitle("Save")
+ const saveButton = screen.getByTestId("save-rename-button")
fireEvent.click(saveButton)
expect(mockOnRenameConfig).toHaveBeenCalledWith("Default Config", "New Name")
@@ -158,7 +177,7 @@ describe("ApiConfigManager", () => {
render( )
// Start rename
- const renameButton = screen.getByTitle("Rename profile")
+ const renameButton = screen.getByTestId("rename-profile-button")
fireEvent.click(renameButton)
// Find input and enter existing name
@@ -166,13 +185,13 @@ describe("ApiConfigManager", () => {
fireEvent.input(input, { target: { value: "Another Config" } })
// Save to trigger validation
- const saveButton = screen.getByTitle("Save")
+ const saveButton = screen.getByTestId("save-rename-button")
fireEvent.click(saveButton)
// Verify error message
const renameForm = getRenameForm()
const errorMessage = within(renameForm).getByTestId("error-message")
- expect(errorMessage).toHaveTextContent("A profile with this name already exists")
+ expect(errorMessage).toHaveTextContent("settings:providers.nameExists")
expect(mockOnRenameConfig).not.toHaveBeenCalled()
})
@@ -180,7 +199,7 @@ describe("ApiConfigManager", () => {
render( )
// Start rename
- const renameButton = screen.getByTitle("Rename profile")
+ const renameButton = screen.getByTestId("rename-profile-button")
fireEvent.click(renameButton)
// Find input and enter empty name
@@ -188,7 +207,7 @@ describe("ApiConfigManager", () => {
fireEvent.input(input, { target: { value: " " } })
// Verify save button is disabled
- const saveButton = screen.getByTitle("Save")
+ const saveButton = screen.getByTestId("save-rename-button")
expect(saveButton).toBeDisabled()
expect(mockOnRenameConfig).not.toHaveBeenCalled()
})
@@ -205,7 +224,7 @@ describe("ApiConfigManager", () => {
it("allows deleting the current config when not the only one", () => {
render( )
- const deleteButton = screen.getByTitle("Delete profile")
+ const deleteButton = screen.getByTestId("delete-profile-button")
expect(deleteButton).not.toBeDisabled()
fireEvent.click(deleteButton)
@@ -215,7 +234,7 @@ describe("ApiConfigManager", () => {
it("disables delete button when only one config exists", () => {
render( )
- const deleteButton = screen.getByTitle("Cannot delete the only profile")
+ const deleteButton = screen.getByTestId("delete-profile-button")
expect(deleteButton).toHaveAttribute("disabled")
})
@@ -223,7 +242,7 @@ describe("ApiConfigManager", () => {
render( )
// Start rename
- const renameButton = screen.getByTitle("Rename profile")
+ const renameButton = screen.getByTestId("rename-profile-button")
fireEvent.click(renameButton)
// Find input and enter new name
@@ -231,7 +250,7 @@ describe("ApiConfigManager", () => {
fireEvent.input(input, { target: { value: "New Name" } })
// Cancel
- const cancelButton = screen.getByTitle("Cancel")
+ const cancelButton = screen.getByTestId("cancel-rename-button")
fireEvent.click(cancelButton)
// Verify rename was not called
@@ -245,10 +264,10 @@ describe("ApiConfigManager", () => {
render( )
// Open dialog
- const addButton = screen.getByTitle("Add profile")
+ const addButton = screen.getByTestId("add-profile-button")
fireEvent.click(addButton)
- const input = screen.getByPlaceholderText("Enter profile name")
+ const input = screen.getByTestId("new-profile-input")
// Test Enter key
fireEvent.input(input, { target: { value: "New Profile" } })
@@ -264,7 +283,7 @@ describe("ApiConfigManager", () => {
render( )
// Start rename
- const renameButton = screen.getByTitle("Rename profile")
+ const renameButton = screen.getByTestId("rename-profile-button")
fireEvent.click(renameButton)
const input = screen.getByDisplayValue("Default Config")
diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.test.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.test.tsx
index 25e7fa3e50d..a9708d260eb 100644
--- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.test.tsx
+++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.test.tsx
@@ -18,19 +18,23 @@ describe("ContextManagementSettings", () => {
render( )
// Terminal output limit
- expect(screen.getByText("Terminal output limit")).toBeInTheDocument()
- expect(screen.getByTestId("terminal-output-limit-slider")).toHaveValue("500")
+ const terminalSlider = screen.getByTestId("terminal-output-limit-slider")
+ expect(terminalSlider).toBeInTheDocument()
+ expect(terminalSlider).toHaveValue("500")
// Open tabs context limit
- expect(screen.getByText("Open tabs context limit")).toBeInTheDocument()
- expect(screen.getByTestId("open-tabs-limit-slider")).toHaveValue("20")
+ const openTabsSlider = screen.getByTestId("open-tabs-limit-slider")
+ expect(openTabsSlider).toBeInTheDocument()
+ expect(openTabsSlider).toHaveValue("20")
// Workspace files limit
- expect(screen.getByText("Workspace files context limit")).toBeInTheDocument()
- expect(screen.getByTestId("workspace-files-limit-slider")).toHaveValue("200")
+ const workspaceFilesSlider = screen.getByTestId("workspace-files-limit-slider")
+ expect(workspaceFilesSlider).toBeInTheDocument()
+ expect(workspaceFilesSlider).toHaveValue("200")
// Show .rooignore'd files
- expect(screen.getByText("Show .rooignore'd files in lists and searches")).toBeInTheDocument()
+ const showRooIgnoredFilesCheckbox = screen.getByTestId("show-rooignored-files-checkbox")
+ expect(showRooIgnoredFilesCheckbox).toBeInTheDocument()
expect(screen.getByTestId("show-rooignored-files-checkbox")).not.toBeChecked()
})
diff --git a/webview-ui/src/components/settings/__tests__/SettingsView.test.tsx b/webview-ui/src/components/settings/__tests__/SettingsView.test.tsx
index 5e5defec598..95b3bb8fa55 100644
--- a/webview-ui/src/components/settings/__tests__/SettingsView.test.tsx
+++ b/webview-ui/src/components/settings/__tests__/SettingsView.test.tsx
@@ -40,33 +40,39 @@ jest.mock("../ApiConfigManager", () => ({
// Mock VSCode components
jest.mock("@vscode/webview-ui-toolkit/react", () => ({
- VSCodeButton: ({ children, onClick, appearance }: any) =>
+ VSCodeButton: ({ children, onClick, appearance, "data-testid": dataTestId }: any) =>
appearance === "icon" ? (
-
+
) : (
-
+
{children}
),
- VSCodeCheckbox: ({ children, onChange, checked }: any) => (
+ VSCodeCheckbox: ({ children, onChange, checked, "data-testid": dataTestId }: any) => (
onChange({ target: { checked: e.target.checked } })}
aria-label={typeof children === "string" ? children : undefined}
+ data-testid={dataTestId}
/>
{children}
),
- VSCodeTextField: ({ value, onInput, placeholder }: any) => (
+ VSCodeTextField: ({ value, onInput, placeholder, "data-testid": dataTestId }: any) => (
onInput({ target: { value: e.target.value } })}
placeholder={placeholder}
+ data-testid={dataTestId}
/>
),
VSCodeTextArea: () => ,
@@ -81,13 +87,14 @@ jest.mock("@vscode/webview-ui-toolkit/react", () => ({
),
VSCodeRadioGroup: ({ children, value, onChange }: any) => {children}
,
- VSCodeSlider: ({ value, onChange }: any) => (
+ VSCodeSlider: ({ value, onChange, "data-testid": dataTestId }: any) => (
onChange({ target: { value: Number(e.target.value) } })}
min={0}
max={1}
+ data-testid={dataTestId}
step={0.01}
style={{ flexGrow: 1, height: "2px" }}
/>
@@ -135,28 +142,24 @@ describe("SettingsView - Sound Settings", () => {
it("initializes with sound disabled by default", () => {
renderSettingsView()
- const soundCheckbox = screen.getByRole("checkbox", {
- name: /Enable sound effects/i,
- })
+ const soundCheckbox = screen.getByTestId("sound-enabled-checkbox")
expect(soundCheckbox).not.toBeChecked()
// Volume slider should not be visible when sound is disabled
- expect(screen.queryByRole("slider", { name: /volume/i })).not.toBeInTheDocument()
+ expect(screen.queryByTestId("sound-volume-slider")).not.toBeInTheDocument()
})
it("toggles sound setting and sends message to VSCode", () => {
renderSettingsView()
- const soundCheckbox = screen.getByRole("checkbox", {
- name: /Enable sound effects/i,
- })
+ const soundCheckbox = screen.getByTestId("sound-enabled-checkbox")
// Enable sound
fireEvent.click(soundCheckbox)
expect(soundCheckbox).toBeChecked()
// Click Save to save settings
- const saveButton = screen.getByText("Save")
+ const saveButton = screen.getByTestId("save-button")
fireEvent.click(saveButton)
expect(vscode.postMessage).toHaveBeenCalledWith(
@@ -171,13 +174,11 @@ describe("SettingsView - Sound Settings", () => {
renderSettingsView()
// Enable sound
- const soundCheckbox = screen.getByRole("checkbox", {
- name: /Enable sound effects/i,
- })
+ const soundCheckbox = screen.getByTestId("sound-enabled-checkbox")
fireEvent.click(soundCheckbox)
// Volume slider should be visible
- const volumeSlider = screen.getByRole("slider", { name: /volume/i })
+ const volumeSlider = screen.getByTestId("sound-volume-slider")
expect(volumeSlider).toBeInTheDocument()
expect(volumeSlider).toHaveValue("0.5")
})
@@ -186,17 +187,15 @@ describe("SettingsView - Sound Settings", () => {
renderSettingsView()
// Enable sound
- const soundCheckbox = screen.getByRole("checkbox", {
- name: /Enable sound effects/i,
- })
+ const soundCheckbox = screen.getByTestId("sound-enabled-checkbox")
fireEvent.click(soundCheckbox)
// Change volume
- const volumeSlider = screen.getByRole("slider", { name: /volume/i })
+ const volumeSlider = screen.getByTestId("sound-volume-slider")
fireEvent.change(volumeSlider, { target: { value: "0.75" } })
// Click Save to save settings
- const saveButton = screen.getByText("Save")
+ const saveButton = screen.getByTestId("save-button")
fireEvent.click(saveButton)
// Verify message sent to VSCode
@@ -228,30 +227,25 @@ describe("SettingsView - Allowed Commands", () => {
renderSettingsView()
// Enable always allow execute
- const executeCheckbox = screen.getByRole("checkbox", {
- name: /Always approve allowed execute operations/i,
- })
+ const executeCheckbox = screen.getByTestId("always-allow-execute-checkbox")
fireEvent.click(executeCheckbox)
-
// Verify allowed commands section appears
- expect(screen.getByText(/Allowed Auto-Execute Commands/i)).toBeInTheDocument()
- expect(screen.getByPlaceholderText(/Enter command prefix/i)).toBeInTheDocument()
+ expect(screen.getByTestId("allowed-commands-heading")).toBeInTheDocument()
+ expect(screen.getByTestId("command-input")).toBeInTheDocument()
})
it("adds new command to the list", () => {
renderSettingsView()
// Enable always allow execute
- const executeCheckbox = screen.getByRole("checkbox", {
- name: /Always approve allowed execute operations/i,
- })
+ const executeCheckbox = screen.getByTestId("always-allow-execute-checkbox")
fireEvent.click(executeCheckbox)
// Add a new command
- const input = screen.getByPlaceholderText(/Enter command prefix/i)
+ const input = screen.getByTestId("command-input")
fireEvent.change(input, { target: { value: "npm test" } })
- const addButton = screen.getByText("Add")
+ const addButton = screen.getByTestId("add-command-button")
fireEvent.click(addButton)
// Verify command was added
@@ -268,19 +262,17 @@ describe("SettingsView - Allowed Commands", () => {
renderSettingsView()
// Enable always allow execute
- const executeCheckbox = screen.getByRole("checkbox", {
- name: /Always approve allowed execute operations/i,
- })
+ const executeCheckbox = screen.getByTestId("always-allow-execute-checkbox")
fireEvent.click(executeCheckbox)
// Add a command
- const input = screen.getByPlaceholderText(/Enter command prefix/i)
+ const input = screen.getByTestId("command-input")
fireEvent.change(input, { target: { value: "npm test" } })
- const addButton = screen.getByText("Add")
+ const addButton = screen.getByTestId("add-command-button")
fireEvent.click(addButton)
// Remove the command
- const removeButton = screen.getByRole("button", { name: "Remove command" })
+ const removeButton = screen.getByTestId("remove-command-0")
fireEvent.click(removeButton)
// Verify command was removed
@@ -297,14 +289,12 @@ describe("SettingsView - Allowed Commands", () => {
renderSettingsView()
// Enable always allow execute
- const executeCheckbox = screen.getByRole("checkbox", {
- name: /Always approve allowed execute operations/i,
- })
+ const executeCheckbox = screen.getByTestId("always-allow-execute-checkbox")
fireEvent.click(executeCheckbox)
// Add a command twice
- const input = screen.getByPlaceholderText(/Enter command prefix/i)
- const addButton = screen.getByText("Add")
+ const input = screen.getByTestId("command-input")
+ const addButton = screen.getByTestId("add-command-button")
// First addition
fireEvent.change(input, { target: { value: "npm test" } })
@@ -323,19 +313,17 @@ describe("SettingsView - Allowed Commands", () => {
renderSettingsView()
// Enable always allow execute
- const executeCheckbox = screen.getByRole("checkbox", {
- name: /Always approve allowed execute operations/i,
- })
+ const executeCheckbox = screen.getByTestId("always-allow-execute-checkbox")
fireEvent.click(executeCheckbox)
// Add a command
- const input = screen.getByPlaceholderText(/Enter command prefix/i)
+ const input = screen.getByTestId("command-input")
fireEvent.change(input, { target: { value: "npm test" } })
- const addButton = screen.getByText("Add")
+ const addButton = screen.getByTestId("add-command-button")
fireEvent.click(addButton)
// Click Save
- const saveButton = screen.getByText("Save")
+ const saveButton = screen.getByTestId("save-button")
fireEvent.click(saveButton)
// Verify VSCode messages were sent
diff --git a/webview-ui/src/i18n/__mocks__/TranslationContext.tsx b/webview-ui/src/i18n/__mocks__/TranslationContext.tsx
index f2b2305593d..3fdfcbdc2c0 100644
--- a/webview-ui/src/i18n/__mocks__/TranslationContext.tsx
+++ b/webview-ui/src/i18n/__mocks__/TranslationContext.tsx
@@ -1,63 +1,58 @@
-import React from "react"
-
-// Create a mock for the useAppTranslation hook
-export const useAppTranslation = () => {
- return {
- t: (key: string, options?: Record) => {
- const translations: Record = {
- // History translations
- "history:recentTasks": "Recent Tasks",
- "history:viewAll": "View All",
- "history:history": "History",
- "history:done": "Done",
- "history:searchPlaceholder": "Fuzzy search history...",
- "history:newest": "Newest",
- "history:oldest": "Oldest",
- "history:mostExpensive": "Most Expensive",
- "history:mostTokens": "Most Tokens",
- "history:mostRelevant": "Most Relevant",
- "history:deleteTaskTitle": "Delete Task (Shift + Click to skip confirmation)",
- "history:tokensLabel": "Tokens:",
- "history:cacheLabel": "Cache:",
- "history:apiCostLabel": "API Cost:",
- "history:copyPrompt": "Copy Prompt",
- "history:exportTask": "Export Task",
- "history:deleteTask": "Delete Task",
- "history:deleteTaskMessage": "Are you sure you want to delete this task? This action cannot be undone.",
- "history:cancel": "Cancel",
- "history:delete": "Delete",
- }
-
- // Handle interpolation
- if (options && key === "history:tokens") {
- return `Tokens: ↑${options.in} ↓${options.out}`
- }
-
- if (options && key === "history:cache") {
- return `Cache: +${options.writes} → ${options.reads}`
- }
-
- if (options && key === "history:apiCost") {
- return `API Cost: $${options.cost}`
- }
-
- return translations[key] || key
- },
- i18n: {
- language: "en",
- changeLanguage: jest.fn(),
- },
+import React, { createContext, useContext, ReactNode } from "react"
+
+// Mock translation function that returns English text for settings or the key itself
+const mockTranslate = (key: string, options?: Record): string => {
+ // Convert the key back to approximate English text for test purposes
+ if (key.startsWith("settings.")) {
+ // For specific keys the tests are looking for
+ if (key === "settings.notifications.sound.label") return "Enable sound effects"
+ if (key === "settings.autoApprove.execute.label") return "Always approve allowed execute operations"
+ if (key === "settings.autoApprove.execute.allowedCommands") return "Allowed Auto-Execute Commands"
+ if (key === "settings.autoApprove.execute.commandPlaceholder") return "Enter command prefix"
+ if (key === "settings.autoApprove.execute.addButton") return "Add"
+ if (key === "settings.common.save") return "Save"
+ if (key === "settings.contextManagement.terminal.label") return "Terminal output limit"
+ if (key === "settings.header.title") return "Settings"
+
+ // Default handling of other keys
+ return key.split(".").pop() || key
+ }
+
+ // For keys that contain variables
+ if (options) {
+ let result = key
+ Object.entries(options).forEach(([varName, value]) => {
+ result = result.replace(`{${varName}}`, String(value))
+ })
+ return result
}
-}
-export const withTranslation = (Component: React.ComponentType) => {
- return (props: any) =>
+ return key
}
-// Mock provider component
-export const AppTranslationProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
- return <>{children}>
+// Create mock context
+export const TranslationContext = createContext<{
+ t: (key: string, options?: Record) => string
+ i18n: any
+}>({
+ t: mockTranslate,
+ i18n: {},
+})
+
+// Mock translation provider component
+export const TranslationProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
+ return (
+
+ {children}
+
+ )
}
-const TranslationContext = { AppTranslationProvider, useAppTranslation, withTranslation }
-export default TranslationContext
+// Custom hook for translations
+export const useAppTranslation = () => useContext(TranslationContext)
+
+export default TranslationProvider
diff --git a/webview-ui/src/i18n/locales/ar/settings.json b/webview-ui/src/i18n/locales/ar/settings.json
new file mode 100644
index 00000000000..fc16644af46
--- /dev/null
+++ b/webview-ui/src/i18n/locales/ar/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "حفظ",
+ "done": "تم",
+ "cancel": "إلغاء",
+ "reset": "إعادة تعيين"
+ },
+ "header": {
+ "title": "الإعدادات",
+ "saveButtonTooltip": "حفظ التغييرات",
+ "nothingChangedTooltip": "لم يتم إجراء أي تغيير",
+ "doneButtonTooltip": "تجاهل التغييرات غير المحفوظة وإغلاق لوحة الإعدادات"
+ },
+ "unsavedChangesDialog": {
+ "title": "تغييرات غير محفوظة",
+ "description": "هل تريد تجاهل التغييرات والمتابعة؟",
+ "cancelButton": "إلغاء",
+ "discardButton": "تجاهل التغييرات"
+ },
+ "sections": {
+ "providers": "المزودون",
+ "autoApprove": "الموافقة التلقائية",
+ "browser": "استخدام المتصفح / الكمبيوتر",
+ "checkpoints": "نقاط التفتيش",
+ "notifications": "الإشعارات",
+ "contextManagement": "إدارة السياق",
+ "advanced": "متقدم",
+ "experimental": "ميزات تجريبية"
+ },
+ "autoApprove": {
+ "description": "السماح لـ Roo بإجراء العمليات تلقائيًا دون الحاجة إلى الموافقة. قم بتمكين هذه الإعدادات فقط إذا كنت تثق بالكامل في الذكاء الاصطناعي وتفهم مخاطر الأمان المرتبطة به.",
+ "readOnly": {
+ "label": "موافقة دائمة على عمليات القراءة فقط",
+ "description": "عند تمكينه، سيقوم Roo تلقائيًا بعرض محتويات الدليل وقراءة الملفات دون الحاجة إلى النقر على زر الموافقة."
+ },
+ "write": {
+ "label": "موافقة دائمة على عمليات الكتابة",
+ "description": "إنشاء وتحرير الملفات تلقائيًا دون الحاجة إلى موافقة",
+ "delayLabel": "تأخير بعد الكتابة للسماح للتشخيصات باكتشاف المشكلات المحتملة"
+ },
+ "browser": {
+ "label": "موافقة دائمة على إجراءات المتصفح",
+ "description": "تنفيذ إجراءات المتصفح تلقائيًا دون الحاجة إلى موافقة",
+ "note": "ملاحظة: تنطبق فقط عندما يدعم النموذج استخدام الكمبيوتر"
+ },
+ "retry": {
+ "label": "إعادة محاولة طلبات API الفاشلة دائمًا",
+ "description": "إعادة محاولة طلبات API الفاشلة تلقائيًا عندما يعيد الخادم استجابة خطأ",
+ "delayLabel": "تأخير قبل إعادة محاولة الطلب"
+ },
+ "mcp": {
+ "label": "موافقة دائمة على أدوات MCP",
+ "description": "تفعيل الموافقة التلقائية على أدوات MCP الفردية في عرض خوادم MCP (يتطلب هذا الإعداد وخانة الاختيار \"السماح دائمًا\" الخاصة بالأداة)"
+ },
+ "modeSwitch": {
+ "label": "موافقة دائمة على تبديل الأوضاع",
+ "description": "التبديل تلقائيًا بين الأوضاع المختلفة دون الحاجة إلى موافقة"
+ },
+ "subtasks": {
+ "label": "موافقة دائمة على إنشاء وإكمال المهام الفرعية",
+ "description": "السماح بإنشاء وإكمال المهام الفرعية دون الحاجة إلى موافقة"
+ },
+ "execute": {
+ "label": "موافقة دائمة على عمليات التنفيذ المسموح بها",
+ "description": "تنفيذ أوامر الطرفية المسموح بها تلقائيًا دون الحاجة إلى موافقة",
+ "allowedCommands": "أوامر التنفيذ التلقائي المسموح بها",
+ "allowedCommandsDescription": "بادئات الأوامر التي يمكن تنفيذها تلقائيًا عند تمكين \"موافقة دائمة على عمليات التنفيذ\". أضف * للسماح بجميع الأوامر (استخدم بحذر).",
+ "commandPlaceholder": "أدخل بادئة الأمر (مثال: 'git ')",
+ "addButton": "إضافة"
+ }
+ },
+ "providers": {
+ "configProfile": "ملف تعريف التكوين",
+ "description": "الوصف",
+ "apiProvider": "مزود API",
+ "openRouterApiKey": "مفتاح API لـ OpenRouter",
+ "apiKeyStorageNotice": "يتم تخزين مفاتيح API بشكل آمن في التخزين السري لـ VSCode",
+ "useCustomBaseUrl": "استخدام عنوان URL أساسي مخصص",
+ "openRouterTransformsText": "ضغط الموجهات وسلاسل الرسائل إلى حجم السياق (تحويلات OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "تمكين أداة المتصفح",
+ "description": "عند التمكين، يمكن لـ Roo استخدام متصفح للتفاعل مع المواقع الإلكترونية عند استخدام نماذج تدعم استخدام الكمبيوتر."
+ },
+ "viewport": {
+ "label": "حجم منفذ العرض",
+ "description": "اختر حجم منفذ العرض لتفاعلات المتصفح. هذا يؤثر على كيفية عرض المواقع الإلكترونية والتفاعل معها.",
+ "options": {
+ "largeDesktop": "سطح مكتب كبير (1280×800)",
+ "smallDesktop": "سطح مكتب صغير (900×600)",
+ "tablet": "جهاز لوحي (768×1024)",
+ "mobile": "جوال (360×640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "جودة لقطة الشاشة",
+ "description": "ضبط جودة WebP للقطات شاشة المتصفح. القيم الأعلى توفر لقطات أوضح ولكنها تزيد من استخدام token."
+ },
+ "remote": {
+ "label": "استخدام اتصال متصفح عن بعد",
+ "description": "الاتصال بمتصفح Chrome يعمل مع تمكين التصحيح عن بعد (--remote-debugging-port=9222).",
+ "urlPlaceholder": "عنوان URL مخصص (مثل http://localhost:9222)",
+ "testButton": "اختبار الاتصال",
+ "testingButton": "جاري الاختبار...",
+ "instructions": "أدخل عنوان مضيف بروتوكول DevTools أو اتركه فارغًا للاكتشاف التلقائي لنسخ Chrome المحلية. سيحاول زر اختبار الاتصال استخدام عنوان URL المخصص إذا تم توفيره، أو الاكتشاف التلقائي إذا كان الحقل فارغًا."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "تمكين نقاط التفتيش التلقائية",
+ "description": "عند التمكين، سيقوم Roo بإنشاء نقاط تفتيش تلقائيًا أثناء تنفيذ المهام، مما يسهل مراجعة التغييرات أو العودة إلى الحالات السابقة."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "تمكين المؤثرات الصوتية",
+ "description": "عند التمكين، سيقوم Roo بتشغيل مؤثرات صوتية للإشعارات والأحداث.",
+ "volumeLabel": "مستوى الصوت"
+ }
+ },
+ "contextManagement": {
+ "description": "التحكم في المعلومات المضمنة في نافذة سياق الذكاء الاصطناعي، مما يؤثر على استخدام token وجودة الاستجابة",
+ "terminal": {
+ "label": "حد إخراج الطرفية",
+ "description": "الحد الأقصى لعدد الأسطر المضمنة في إخراج الطرفية عند تنفيذ الأوامر. عند تجاوزه سيتم إزالة الأسطر من الوسط، مما يوفر token."
+ },
+ "openTabs": {
+ "label": "حد سياق علامات التبويب المفتوحة",
+ "description": "الحد الأقصى لعدد علامات تبويب VSCode المفتوحة المضمنة في السياق. القيم الأعلى توفر سياقًا أكثر لكنها تزيد من استخدام token."
+ },
+ "workspaceFiles": {
+ "label": "حد سياق ملفات مساحة العمل",
+ "description": "الحد الأقصى لعدد الملفات المضمنة في تفاصيل دليل العمل الحالي. القيم الأعلى توفر سياقًا أكثر لكنها تزيد من استخدام token."
+ },
+ "rooignore": {
+ "label": "إظهار الملفات المتجاهلة بواسطة .rooignore في القوائم والبحث",
+ "description": "عند التمكين، سيتم عرض الملفات المطابقة للأنماط في .rooignore في القوائم مع رمز قفل. عند التعطيل، سيتم إخفاء هذه الملفات تمامًا من قوائم الملفات والبحث."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "حد معدل",
+ "description": "الحد الأدنى للوقت بين طلبات API."
+ },
+ "diff": {
+ "label": "تمكين التحرير من خلال diffs",
+ "description": "عند التمكين، سيتمكن Roo من تحرير الملفات بشكل أسرع وسيرفض تلقائيًا عمليات الكتابة الكاملة المقطوعة للملف. يعمل بشكل أفضل مع أحدث نموذج Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "استراتيجية diff",
+ "options": {
+ "standard": "قياسي (كتلة واحدة)",
+ "multiBlock": "تجريبي: diff متعدد الكتل",
+ "unified": "تجريبي: diff موحد"
+ },
+ "descriptions": {
+ "standard": "استراتيجية diff القياسية تطبق التغييرات على كتلة واحدة من الكود في كل مرة.",
+ "unified": "استراتيجية diff الموحدة تأخذ مناهج متعددة لتطبيق diffs وتختار أفضل نهج.",
+ "multiBlock": "استراتيجية diff متعددة الكتل تسمح بتحديث كتل متعددة من الكود في ملف واحد في طلب واحد."
+ }
+ },
+ "matchPrecision": {
+ "label": "دقة المطابقة",
+ "description": "يتحكم هذا المنزلق في مدى دقة مطابقة أقسام الكود عند تطبيق diffs. القيم الأقل تسمح بمطابقة أكثر مرونة ولكنها تزيد من خطر الاستبدالات غير الصحيحة. استخدم قيمًا أقل من 100٪ بحذر شديد."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "استخدام درجة حرارة مخصصة",
+ "description": "يتحكم في العشوائية في استجابات النموذج.",
+ "rangeDescription": "القيم الأعلى تجعل الإخراج أكثر عشوائية، والقيم الأقل تجعله أكثر حتمية."
+ },
+ "modelInfo": {
+ "supportsImages": "يدعم الصور",
+ "noImages": "لا يدعم الصور",
+ "supportsComputerUse": "يدعم استخدام الكمبيوتر",
+ "noComputerUse": "لا يدعم استخدام الكمبيوتر",
+ "supportsPromptCache": "يدعم تخزين الموجهات مؤقتًا",
+ "noPromptCache": "لا يدعم تخزين الموجهات مؤقتًا",
+ "maxOutput": "الحد الأقصى للإخراج",
+ "inputPrice": "سعر الإدخال",
+ "outputPrice": "سعر الإخراج",
+ "cacheReadsPrice": "سعر قراءات التخزين المؤقت",
+ "cacheWritesPrice": "سعر كتابات التخزين المؤقت",
+ "gemini": {
+ "freeRequests": "* مجاني حتى {{count}} طلب في الدقيقة. بعد ذلك، يعتمد الفوترة على حجم الموجه.",
+ "pricingDetails": "لمزيد من المعلومات، راجع تفاصيل التسعير."
+ }
+ },
+ "footer": {
+ "feedback": "إذا كان لديك أي أسئلة أو ملاحظات، فلا تتردد في فتح مشكلة في github.com/RooVetGit/Roo-Code أو الانضمام إلى reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "السماح بإرسال تقارير استخدام وأخطاء مجهولة",
+ "description": "ساعد في تحسين Roo Code عن طريق إرسال بيانات استخدام مجهولة وتقارير أخطاء. لا يتم إرسال أي كود أو موجهات أو معلومات شخصية على الإطلاق. انظر سياسة الخصوصية لدينا لمزيد من التفاصيل."
+ },
+ "reset": {
+ "description": "إعادة تعيين جميع حالة عالمية والتخزين السري في الامتداد.",
+ "button": "إعادة تعيين"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json
new file mode 100644
index 00000000000..ac749a8202f
--- /dev/null
+++ b/webview-ui/src/i18n/locales/ca/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Desar",
+ "done": "Fet",
+ "cancel": "Cancel·lar",
+ "reset": "Restablir"
+ },
+ "header": {
+ "title": "Configuració",
+ "saveButtonTooltip": "Desar canvis",
+ "nothingChangedTooltip": "No s'ha canviat res",
+ "doneButtonTooltip": "Descartar els canvis no desats i tancar el panell de configuració"
+ },
+ "unsavedChangesDialog": {
+ "title": "Canvis no desats",
+ "description": "Voleu descartar els canvis i continuar?",
+ "cancelButton": "Cancel·lar",
+ "discardButton": "Descartar canvis"
+ },
+ "sections": {
+ "providers": "Proveïdors",
+ "autoApprove": "Aprovació automàtica",
+ "browser": "Navegador / Ús de l'ordinador",
+ "checkpoints": "Punts de control",
+ "notifications": "Notificacions",
+ "contextManagement": "Gestió de context",
+ "advanced": "Avançat",
+ "experimental": "Funcions experimentals"
+ },
+ "autoApprove": {
+ "description": "Permet que Roo realitzi operacions automàticament sense requerir aprovació. Activeu aquesta configuració només si confieu plenament en la IA i enteneu els riscos de seguretat associats.",
+ "readOnly": {
+ "label": "Aprovar sempre operacions de només lectura",
+ "description": "Quan està activat, Roo veurà automàticament el contingut del directori i llegirà fitxers sense que calgui fer clic al botó Aprovar."
+ },
+ "write": {
+ "label": "Aprovar sempre operacions d'escriptura",
+ "description": "Crear i editar fitxers automàticament sense requerir aprovació",
+ "delayLabel": "Retard després d'escriptura per permetre que els diagnòstics detectin possibles problemes"
+ },
+ "browser": {
+ "label": "Aprovar sempre accions del navegador",
+ "description": "Realitzar accions del navegador automàticament sense requerir aprovació",
+ "note": "Nota: Només s'aplica quan el model admet l'ús de l'ordinador"
+ },
+ "retry": {
+ "label": "Tornar a intentar sempre sol·licituds d'API fallides",
+ "description": "Tornar a intentar sol·licituds d'API fallides automàticament quan el servidor retorna una resposta d'error",
+ "delayLabel": "Retard abans de tornar a intentar la sol·licitud"
+ },
+ "mcp": {
+ "label": "Aprovar sempre eines MCP",
+ "description": "Habilitar l'aprovació automàtica d'eines MCP individuals a la vista de Servidors MCP (requereix tant aquesta configuració com la casella \"Permetre sempre\" de l'eina)"
+ },
+ "modeSwitch": {
+ "label": "Aprovar sempre canvis de mode",
+ "description": "Canviar automàticament entre diferents modes sense requerir aprovació"
+ },
+ "subtasks": {
+ "label": "Aprovar sempre creació i finalització de subtasques",
+ "description": "Permetre la creació i finalització de subtasques sense requerir aprovació"
+ },
+ "execute": {
+ "label": "Aprovar sempre operacions d'execució permeses",
+ "description": "Executar automàticament comandes de terminal permeses sense requerir aprovació",
+ "allowedCommands": "Comandes d'auto-execució permeses",
+ "allowedCommandsDescription": "Prefixos de comandes que poden ser executats automàticament quan \"Aprovar sempre operacions d'execució\" està habilitat. Afegeix * per permetre totes les comandes (usar amb precaució).",
+ "commandPlaceholder": "Introduïu prefix de comanda (ex. 'git ')",
+ "addButton": "Afegir"
+ }
+ },
+ "providers": {
+ "configProfile": "Perfil de configuració",
+ "description": "Descripció",
+ "apiProvider": "Proveïdor d'API",
+ "openRouterApiKey": "Clau API d'OpenRouter",
+ "apiKeyStorageNotice": "Les claus API s'emmagatzemen de forma segura a l'Emmagatzematge Secret de VSCode",
+ "useCustomBaseUrl": "Utilitzar URL base personalitzada",
+ "openRouterTransformsText": "Comprimir prompts i cadenes de missatges a la mida del context (Transformacions d'OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Habilitar eina de navegador",
+ "description": "Quan està habilitat, Roo pot utilitzar un navegador per interactuar amb llocs web quan s'utilitzen models que admeten l'ús de l'ordinador."
+ },
+ "viewport": {
+ "label": "Mida del viewport",
+ "description": "Seleccioneu la mida del viewport per a interaccions del navegador. Això afecta com es mostren i interactuen els llocs web.",
+ "options": {
+ "largeDesktop": "Escriptori gran (1280x800)",
+ "smallDesktop": "Escriptori petit (900x600)",
+ "tablet": "Tauleta (768x1024)",
+ "mobile": "Mòbil (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Qualitat de captures de pantalla",
+ "description": "Ajusteu la qualitat WebP de les captures de pantalla del navegador. Valors més alts proporcionen captures més clares però augmenten l'ús de token."
+ },
+ "remote": {
+ "label": "Utilitzar connexió remota del navegador",
+ "description": "Connectar a un navegador Chrome que s'executa amb depuració remota habilitada (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personalitzada (ex. http://localhost:9222)",
+ "testButton": "Provar connexió",
+ "testingButton": "Provant...",
+ "instructions": "Introduïu l'adreça d'amfitrió del protocol DevTools o deixeu-la buida per descobrir automàticament instàncies locals de Chrome. El botó Provar Connexió provarà la URL personalitzada si es proporciona, o descobrirà automàticament si el camp està buit."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Habilitar punts de control automàtics",
+ "description": "Quan està habilitat, Roo crearà automàticament punts de control durant l'execució de tasques, facilitant la revisió de canvis o la reversió a estats anteriors."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Habilitar efectes de so",
+ "description": "Quan està habilitat, Roo reproduirà efectes de so per a notificacions i esdeveniments.",
+ "volumeLabel": "Volum"
+ }
+ },
+ "contextManagement": {
+ "description": "Controleu quina informació s'inclou a la finestra de context de la IA, afectant l'ús de token i la qualitat de resposta",
+ "terminal": {
+ "label": "Límit de sortida de terminal",
+ "description": "Nombre màxim de línies a incloure a la sortida del terminal en executar comandes. Quan s'excedeix, s'eliminaran línies del mig, estalviant token."
+ },
+ "openTabs": {
+ "label": "Límit de context de pestanyes obertes",
+ "description": "Nombre màxim de pestanyes obertes de VSCode a incloure al context. Valors més alts proporcionen més context però augmenten l'ús de token."
+ },
+ "workspaceFiles": {
+ "label": "Límit de context de fitxers de l'espai de treball",
+ "description": "Nombre màxim de fitxers a incloure als detalls del directori de treball actual. Valors més alts proporcionen més context però augmenten l'ús de token."
+ },
+ "rooignore": {
+ "label": "Mostrar fitxers .rooignore en llistes i cerques",
+ "description": "Quan està habilitat, els fitxers que coincideixen amb els patrons a .rooignore es mostraran en llistes amb un símbol de cadenat. Quan està deshabilitat, aquests fitxers s'ocultaran completament de les llistes de fitxers i cerques."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Límit de freqüència",
+ "description": "Temps mínim entre sol·licituds d'API."
+ },
+ "diff": {
+ "label": "Habilitar edició mitjançant diffs",
+ "description": "Quan està habilitat, Roo podrà editar fitxers més ràpidament i rebutjarà automàticament escriptures completes de fitxers truncats. Funciona millor amb l'últim model Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Estratègia de diff",
+ "options": {
+ "standard": "Estàndard (Bloc únic)",
+ "multiBlock": "Experimental: Diff multi-bloc",
+ "unified": "Experimental: Diff unificat"
+ },
+ "descriptions": {
+ "standard": "L'estratègia de diff estàndard aplica canvis a un sol bloc de codi alhora.",
+ "unified": "L'estratègia de diff unificat pren múltiples enfocaments per aplicar diffs i tria el millor enfocament.",
+ "multiBlock": "L'estratègia de diff multi-bloc permet actualitzar múltiples blocs de codi en un fitxer en una sola sol·licitud."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precisió de coincidència",
+ "description": "Aquest control lliscant controla amb quina precisió han de coincidir les seccions de codi en aplicar diffs. Valors més baixos permeten coincidències més flexibles però augmenten el risc de reemplaçaments incorrectes. Utilitzeu valors per sota del 100% amb extrema precaució."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Utilitzar temperatura personalitzada",
+ "description": "Controla l'aleatorietat en les respostes del model.",
+ "rangeDescription": "Valors més alts fan que la sortida sigui més aleatòria, valors més baixos la fan més determinista."
+ },
+ "modelInfo": {
+ "supportsImages": "Suporta imatges",
+ "noImages": "No suporta imatges",
+ "supportsComputerUse": "Suporta ús de l'ordinador",
+ "noComputerUse": "No suporta ús de l'ordinador",
+ "supportsPromptCache": "Suporta emmagatzematge en caché de prompts",
+ "noPromptCache": "No suporta emmagatzematge en caché de prompts",
+ "maxOutput": "Sortida màxima",
+ "inputPrice": "Preu d'entrada",
+ "outputPrice": "Preu de sortida",
+ "cacheReadsPrice": "Preu de lectures de caché",
+ "cacheWritesPrice": "Preu d'escriptures de caché",
+ "gemini": {
+ "freeRequests": "* Gratuït fins a {{count}} sol·licituds per minut. Després d'això, la facturació depèn de la mida del prompt.",
+ "pricingDetails": "Per a més informació, consulteu els detalls de preus."
+ }
+ },
+ "footer": {
+ "feedback": "Si teniu qualsevol pregunta o comentari, no dubteu a obrir un issue a github.com/RooVetGit/Roo-Code o unir-vos a reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Permetre informes anònims d'errors i ús",
+ "description": "Ajudeu a millorar Roo Code enviant dades d'ús anònimes i informes d'errors. Mai s'envia codi, prompts o informació personal. Vegeu la nostra política de privacitat per a més detalls."
+ },
+ "reset": {
+ "description": "Restablir tot l'estat global i emmagatzematge secret a l'extensió.",
+ "button": "Restablir"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/cs/settings.json b/webview-ui/src/i18n/locales/cs/settings.json
new file mode 100644
index 00000000000..2992d466dc5
--- /dev/null
+++ b/webview-ui/src/i18n/locales/cs/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Uložit",
+ "done": "Hotovo",
+ "cancel": "Zrušit",
+ "reset": "Resetovat"
+ },
+ "header": {
+ "title": "Nastavení",
+ "saveButtonTooltip": "Uložit změny",
+ "nothingChangedTooltip": "Nic se nezměnilo",
+ "doneButtonTooltip": "Zahodit neuložené změny a zavřít panel nastavení"
+ },
+ "unsavedChangesDialog": {
+ "title": "Neuložené změny",
+ "description": "Chcete zahodit změny a pokračovat?",
+ "cancelButton": "Zrušit",
+ "discardButton": "Zahodit změny"
+ },
+ "sections": {
+ "providers": "Poskytovatelé",
+ "autoApprove": "Automatické schvalování",
+ "browser": "Prohlížeč / Použití počítače",
+ "checkpoints": "Kontrolní body",
+ "notifications": "Oznámení",
+ "contextManagement": "Správa kontextu",
+ "advanced": "Pokročilé",
+ "experimental": "Experimentální funkce"
+ },
+ "autoApprove": {
+ "description": "Povolit Roo automaticky provádět operace bez nutnosti schválení. Tato nastavení povolte pouze pokud plně důvěřujete AI a rozumíte souvisejícím bezpečnostním rizikům.",
+ "readOnly": {
+ "label": "Vždy schvalovat operace jen pro čtení",
+ "description": "Když je povoleno, Roo bude automaticky zobrazovat obsah adresáře a číst soubory bez nutnosti kliknout na tlačítko Schválit."
+ },
+ "write": {
+ "label": "Vždy schvalovat operace zápisu",
+ "description": "Automaticky vytvářet a upravovat soubory bez nutnosti schválení",
+ "delayLabel": "Zpoždění po zápisech pro umožnění diagnostiky detekovat potenciální problémy"
+ },
+ "browser": {
+ "label": "Vždy schvalovat akce prohlížeče",
+ "description": "Automaticky provádět akce prohlížeče bez nutnosti schválení",
+ "note": "Poznámka: Platí pouze pokud model podporuje použití počítače"
+ },
+ "retry": {
+ "label": "Vždy opakovat neúspěšné API požadavky",
+ "description": "Automaticky opakovat neúspěšné API požadavky, když server vrátí chybovou odpověď",
+ "delayLabel": "Zpoždění před opakováním požadavku"
+ },
+ "mcp": {
+ "label": "Vždy schvalovat MCP nástroje",
+ "description": "Povolit automatické schvalování jednotlivých MCP nástrojů v zobrazení MCP serverů (vyžaduje jak toto nastavení, tak zaškrtávací políčko \"Vždy povolit\" nástroje)"
+ },
+ "modeSwitch": {
+ "label": "Vždy schvalovat přepínání režimů",
+ "description": "Automaticky přepínat mezi různými režimy bez nutnosti schválení"
+ },
+ "subtasks": {
+ "label": "Vždy schvalovat vytváření a dokončování dílčích úkolů",
+ "description": "Povolit vytváření a dokončování dílčích úkolů bez nutnosti schválení"
+ },
+ "execute": {
+ "label": "Vždy schvalovat povolené operace spuštění",
+ "description": "Automaticky spouštět povolené příkazy terminálu bez nutnosti schválení",
+ "allowedCommands": "Povolené příkazy pro automatické spuštění",
+ "allowedCommandsDescription": "Předpony příkazů, které mohou být automaticky spuštěny, když je povoleno \"Vždy schvalovat operace spuštění\". Přidejte * pro povolení všech příkazů (používejte s opatrností).",
+ "commandPlaceholder": "Zadejte předponu příkazu (např. 'git ')",
+ "addButton": "Přidat"
+ }
+ },
+ "providers": {
+ "configProfile": "Konfigurační profil",
+ "description": "Popis",
+ "apiProvider": "Poskytovatel API",
+ "openRouterApiKey": "OpenRouter API klíč",
+ "apiKeyStorageNotice": "API klíče jsou bezpečně uloženy v zabezpečeném úložišti VSCode",
+ "useCustomBaseUrl": "Použít vlastní základní URL",
+ "openRouterTransformsText": "Komprimovat výzvy a řetězce zpráv na velikost kontextu (OpenRouter transformace )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Povolit nástroj prohlížeče",
+ "description": "Když je povoleno, Roo může používat prohlížeč k interakci s webovými stránkami při použití modelů, které podporují použití počítače."
+ },
+ "viewport": {
+ "label": "Velikost viewportu",
+ "description": "Vyberte velikost viewportu pro interakce prohlížeče. Toto ovlivňuje, jak jsou webové stránky zobrazovány a jak s nimi lze interagovat.",
+ "options": {
+ "largeDesktop": "Velký desktop (1280x800)",
+ "smallDesktop": "Malý desktop (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobilní telefon (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Kvalita snímků obrazovky",
+ "description": "Upravte WebP kvalitu snímků obrazovky prohlížeče. Vyšší hodnoty poskytují jasnější snímky, ale zvyšují využití token."
+ },
+ "remote": {
+ "label": "Použít vzdálené připojení prohlížeče",
+ "description": "Připojit se k prohlížeči Chrome běžícímu s povoleným vzdáleným laděním (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Vlastní URL (např. http://localhost:9222)",
+ "testButton": "Otestovat připojení",
+ "testingButton": "Testování...",
+ "instructions": "Zadejte adresu hostitele DevTools protokolu nebo ponechte prázdné pro automatické objevení lokálních instancí Chrome. Tlačítko Test připojení zkusí použít vlastní URL, pokud je zadáno, nebo automaticky objeví, pokud je pole prázdné."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Povolit automatické kontrolní body",
+ "description": "Když je povoleno, Roo bude automaticky vytvářet kontrolní body během provádění úkolu, což usnadňuje přezkoumání změn nebo návrat k dřívějším stavům."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Povolit zvukové efekty",
+ "description": "Když je povoleno, Roo bude přehrávat zvukové efekty pro oznámení a události.",
+ "volumeLabel": "Hlasitost"
+ }
+ },
+ "contextManagement": {
+ "description": "Řízení toho, jaké informace jsou zahrnuty v kontextovém okně AI, což ovlivňuje využití token a kvalitu odpovědí",
+ "terminal": {
+ "label": "Limit výstupu terminálu",
+ "description": "Maximální počet řádků k zahrnutí do výstupu terminálu při spouštění příkazů. Při překročení budou řádky odstraněny ze středu, šetřící token."
+ },
+ "openTabs": {
+ "label": "Limit kontextu otevřených karet",
+ "description": "Maximální počet otevřených karet VSCode k zahrnutí do kontextu. Vyšší hodnoty poskytují více kontextu, ale zvyšují využití token."
+ },
+ "workspaceFiles": {
+ "label": "Limit kontextu souborů pracovního prostoru",
+ "description": "Maximální počet souborů k zahrnutí do podrobností aktuálního pracovního adresáře. Vyšší hodnoty poskytují více kontextu, ale zvyšují využití token."
+ },
+ "rooignore": {
+ "label": "Zobrazit soubory .rooignore v seznamech a vyhledáváních",
+ "description": "Když je povoleno, soubory odpovídající vzorům v .rooignore budou zobrazeny v seznamech se symbolem zámku. Když je zakázáno, tyto soubory budou zcela skryty ze seznamů souborů a vyhledávání."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Omezení frekvence",
+ "description": "Minimální čas mezi API požadavky."
+ },
+ "diff": {
+ "label": "Povolit úpravy pomocí rozdílů",
+ "description": "Když je povoleno, Roo bude moci upravovat soubory rychleji a automaticky odmítne zkrácené úplné zápisy souborů. Funguje nejlépe s nejnovějším modelem Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Strategie diff",
+ "options": {
+ "standard": "Standardní (Jeden blok)",
+ "multiBlock": "Experimentální: Více-blokový diff",
+ "unified": "Experimentální: Sjednocený diff"
+ },
+ "descriptions": {
+ "standard": "Standardní strategie diff aplikuje změny na jeden blok kódu najednou.",
+ "unified": "Strategie sjednoceného diffu využívá více přístupů k aplikaci rozdílů a vybírá nejlepší přístup.",
+ "multiBlock": "Více-bloková strategie diff umožňuje aktualizovat více bloků kódu v souboru v jednom požadavku."
+ }
+ },
+ "matchPrecision": {
+ "label": "Přesnost shody",
+ "description": "Tento posuvník řídí, jak přesně musí sekce kódu odpovídat při aplikaci diff. Nižší hodnoty umožňují flexibilnější shody, ale zvyšují riziko nesprávných náhrad. Používejte hodnoty pod 100 % s extrémní opatrností."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Použít vlastní teplotu",
+ "description": "Řídí náhodnost v odpovědích modelu.",
+ "rangeDescription": "Vyšší hodnoty činí výstup náhodnějším, nižší hodnoty ho činí více deterministickým."
+ },
+ "modelInfo": {
+ "supportsImages": "Podporuje obrázky",
+ "noImages": "Nepodporuje obrázky",
+ "supportsComputerUse": "Podporuje použití počítače",
+ "noComputerUse": "Nepodporuje použití počítače",
+ "supportsPromptCache": "Podporuje ukládání promptů do mezipaměti",
+ "noPromptCache": "Nepodporuje ukládání promptů do mezipaměti",
+ "maxOutput": "Maximální výstup",
+ "inputPrice": "Cena vstupu",
+ "outputPrice": "Cena výstupu",
+ "cacheReadsPrice": "Cena čtení z mezipaměti",
+ "cacheWritesPrice": "Cena zápisů do mezipaměti",
+ "gemini": {
+ "freeRequests": "* Zdarma až do {{count}} požadavků za minutu. Po tom závisí účtování na velikosti promptu.",
+ "pricingDetails": "Pro více informací viz podrobnosti o cenách."
+ }
+ },
+ "footer": {
+ "feedback": "Pokud máte jakékoliv otázky nebo zpětnou vazbu, neváhejte otevřít problém na github.com/RooVetGit/Roo-Code nebo se připojit na reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Povolit anonymní hlášení chyb a používání",
+ "description": "Pomozte zlepšit Roo Code odesíláním anonymních dat o používání a hlášení chyb. Nikdy nejsou odesílány žádné kódy, prompty ani osobní informace. Více podrobností viz naše zásady ochrany osobních údajů."
+ },
+ "reset": {
+ "description": "Resetovat všechny globální stavy a tajné úložiště v rozšíření.",
+ "button": "Resetovat"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json
new file mode 100644
index 00000000000..b2f313506cb
--- /dev/null
+++ b/webview-ui/src/i18n/locales/de/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Speichern",
+ "done": "Fertig",
+ "cancel": "Abbrechen",
+ "reset": "Zurücksetzen"
+ },
+ "header": {
+ "title": "Einstellungen",
+ "saveButtonTooltip": "Änderungen speichern",
+ "nothingChangedTooltip": "Nichts geändert",
+ "doneButtonTooltip": "Ungespeicherte Änderungen verwerfen und Einstellungsbereich schließen"
+ },
+ "unsavedChangesDialog": {
+ "title": "Ungespeicherte Änderungen",
+ "description": "Möchten Sie die Änderungen verwerfen und fortfahren?",
+ "cancelButton": "Abbrechen",
+ "discardButton": "Änderungen verwerfen"
+ },
+ "sections": {
+ "providers": "Anbieter",
+ "autoApprove": "Automatische Genehmigung",
+ "browser": "Browser / Computer-Nutzung",
+ "checkpoints": "Kontrollpunkte",
+ "notifications": "Benachrichtigungen",
+ "contextManagement": "Kontext-Management",
+ "advanced": "Erweitert",
+ "experimental": "Experimentelle Funktionen"
+ },
+ "autoApprove": {
+ "description": "Erlaubt Roo, Operationen automatisch ohne Genehmigung durchzuführen. Aktivieren Sie diese Einstellungen nur, wenn Sie der KI vollständig vertrauen und die damit verbundenen Sicherheitsrisiken verstehen.",
+ "readOnly": {
+ "label": "Schreibgeschützte Operationen immer genehmigen",
+ "description": "Wenn aktiviert, wird Roo automatisch Verzeichnisinhalte anzeigen und Dateien lesen, ohne dass Sie auf die Genehmigen-Schaltfläche klicken müssen."
+ },
+ "write": {
+ "label": "Schreiboperationen immer genehmigen",
+ "description": "Dateien automatisch erstellen und bearbeiten ohne Genehmigung",
+ "delayLabel": "Verzögerung nach Schreibvorgängen, damit Diagnosefunktionen potenzielle Probleme erkennen können"
+ },
+ "browser": {
+ "label": "Browser-Aktionen immer genehmigen",
+ "description": "Browser-Aktionen automatisch ohne Genehmigung durchführen",
+ "note": "Hinweis: Gilt nur, wenn das Modell Computer-Nutzung unterstützt"
+ },
+ "retry": {
+ "label": "Fehlgeschlagene API-Anfragen immer wiederholen",
+ "description": "Fehlgeschlagene API-Anfragen automatisch wiederholen, wenn der Server eine Fehlerantwort zurückgibt",
+ "delayLabel": "Verzögerung vor dem Wiederholen der Anfrage"
+ },
+ "mcp": {
+ "label": "MCP-Tools immer genehmigen",
+ "description": "Automatische Genehmigung einzelner MCP-Tools in der MCP-Server-Ansicht aktivieren (erfordert sowohl diese Einstellung als auch das 'Immer erlauben'-Kontrollkästchen des Tools)"
+ },
+ "modeSwitch": {
+ "label": "Moduswechsel immer genehmigen",
+ "description": "Automatisch zwischen verschiedenen Modi wechseln ohne Genehmigung"
+ },
+ "subtasks": {
+ "label": "Erstellung & Abschluss von Unteraufgaben immer genehmigen",
+ "description": "Erstellung und Abschluss von Unteraufgaben ohne Genehmigung erlauben"
+ },
+ "execute": {
+ "label": "Erlaubte Ausführungsoperationen immer genehmigen",
+ "description": "Erlaubte Terminal-Befehle automatisch ohne Genehmigung ausführen",
+ "allowedCommands": "Erlaubte Auto-Ausführungsbefehle",
+ "allowedCommandsDescription": "Befehlspräfixe, die automatisch ausgeführt werden können, wenn 'Ausführungsoperationen immer genehmigen' aktiviert ist. Fügen Sie * hinzu, um alle Befehle zu erlauben (mit Vorsicht verwenden).",
+ "commandPlaceholder": "Befehlspräfix eingeben (z.B. 'git ')",
+ "addButton": "Hinzufügen"
+ }
+ },
+ "providers": {
+ "configProfile": "Konfigurationsprofil",
+ "description": "Beschreibung",
+ "apiProvider": "API-Anbieter",
+ "openRouterApiKey": "OpenRouter API-Schlüssel",
+ "apiKeyStorageNotice": "API-Schlüssel werden sicher im VSCode Secret Storage gespeichert",
+ "useCustomBaseUrl": "Benutzerdefinierte Basis-URL verwenden",
+ "openRouterTransformsText": "Prompts und Nachrichtenketten auf Kontextgröße komprimieren (OpenRouter Transformationen )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Browser-Tool aktivieren",
+ "description": "Wenn aktiviert, kann Roo einen Browser verwenden, um mit Websites zu interagieren, wenn Modelle verwendet werden, die Computer-Nutzung unterstützen."
+ },
+ "viewport": {
+ "label": "Viewport-Größe",
+ "description": "Wählen Sie die Viewport-Größe für Browser-Interaktionen. Dies beeinflusst, wie Websites angezeigt und mit ihnen interagiert wird.",
+ "options": {
+ "largeDesktop": "Großer Desktop (1280x800)",
+ "smallDesktop": "Kleiner Desktop (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobil (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Screenshot-Qualität",
+ "description": "Passen Sie die WebP-Qualität von Browser-Screenshots an. Höhere Werte bieten klarere Screenshots, erhöhen aber den Token-Verbrauch."
+ },
+ "remote": {
+ "label": "Remote-Browser-Verbindung verwenden",
+ "description": "Verbindung zu einem Chrome-Browser herstellen, der mit aktiviertem Remote-Debugging läuft (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Benutzerdefinierte URL (z.B. http://localhost:9222)",
+ "testButton": "Verbindung testen",
+ "testingButton": "Teste...",
+ "instructions": "Geben Sie die DevTools-Protokoll-Host-Adresse ein oder lassen Sie das Feld leer, um Chrome lokale Instanzen automatisch zu erkennen. Die Schaltfläche 'Verbindung testen' versucht die benutzerdefinierte URL, wenn angegeben, oder erkennt automatisch, wenn das Feld leer ist."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Automatische Kontrollpunkte aktivieren",
+ "description": "Wenn aktiviert, erstellt Roo automatisch Kontrollpunkte während der Aufgabenausführung, was die Überprüfung von Änderungen oder die Rückkehr zu früheren Zuständen erleichtert."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Soundeffekte aktivieren",
+ "description": "Wenn aktiviert, spielt Roo Soundeffekte für Benachrichtigungen und Ereignisse ab.",
+ "volumeLabel": "Lautstärke"
+ }
+ },
+ "contextManagement": {
+ "description": "Steuern Sie, welche Informationen im KI-Kontextfenster enthalten sind, was den Token-Verbrauch und die Antwortqualität beeinflusst",
+ "terminal": {
+ "label": "Terminal-Ausgabelimit",
+ "description": "Maximale Anzahl von Zeilen, die in der Terminal-Ausgabe bei der Ausführung von Befehlen enthalten sein sollen. Bei Überschreitung werden Zeilen aus der Mitte entfernt, wodurch Token gespart werden."
+ },
+ "openTabs": {
+ "label": "Geöffnete Tabs Kontextlimit",
+ "description": "Maximale Anzahl von geöffneten VSCode-Tabs, die im Kontext enthalten sein sollen. Höhere Werte bieten mehr Kontext, erhöhen aber den Token-Verbrauch."
+ },
+ "workspaceFiles": {
+ "label": "Workspace-Dateien Kontextlimit",
+ "description": "Maximale Anzahl von Dateien, die in den Details des aktuellen Arbeitsverzeichnisses enthalten sein sollen. Höhere Werte bieten mehr Kontext, erhöhen aber den Token-Verbrauch."
+ },
+ "rooignore": {
+ "label": ".rooignore-Dateien in Listen und Suchen anzeigen",
+ "description": "Wenn aktiviert, werden Dateien, die mit Mustern in .rooignore übereinstimmen, in Listen mit einem Schlosssymbol angezeigt. Wenn deaktiviert, werden diese Dateien vollständig aus Dateilisten und Suchen ausgeblendet."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Ratenbegrenzung",
+ "description": "Minimale Zeit zwischen API-Anfragen."
+ },
+ "diff": {
+ "label": "Bearbeitung durch Diffs aktivieren",
+ "description": "Wenn aktiviert, kann Roo Dateien schneller bearbeiten und lehnt automatisch gekürzte vollständige Dateischreibvorgänge ab. Funktioniert am besten mit dem neuesten Claude 3.7 Sonnet-Modell.",
+ "strategy": {
+ "label": "Diff-Strategie",
+ "options": {
+ "standard": "Standard (Einzelner Block)",
+ "multiBlock": "Experimentell: Multi-Block-Diff",
+ "unified": "Experimentell: Vereinheitlichter Diff"
+ },
+ "descriptions": {
+ "standard": "Die Standard-Diff-Strategie wendet Änderungen auf einen einzelnen Codeblock gleichzeitig an.",
+ "unified": "Die vereinheitlichte Diff-Strategie verwendet mehrere Ansätze zum Anwenden von Diffs und wählt den besten Ansatz aus.",
+ "multiBlock": "Die Multi-Block-Diff-Strategie ermöglicht die Aktualisierung mehrerer Codeblöcke in einer Datei in einer Anfrage."
+ }
+ },
+ "matchPrecision": {
+ "label": "Übereinstimmungsgenauigkeit",
+ "description": "Dieser Schieberegler steuert, wie genau Codeabschnitte beim Anwenden von Diffs übereinstimmen müssen. Niedrigere Werte ermöglichen flexiblere Übereinstimmungen, erhöhen aber das Risiko falscher Ersetzungen. Verwenden Sie Werte unter 100% mit äußerster Vorsicht."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Benutzerdefinierte Temperatur verwenden",
+ "description": "Steuert die Zufälligkeit in den Antworten des Modells.",
+ "rangeDescription": "Höhere Werte machen die Ausgabe zufälliger, niedrigere Werte machen sie deterministischer."
+ },
+ "modelInfo": {
+ "supportsImages": "Unterstützt Bilder",
+ "noImages": "Unterstützt keine Bilder",
+ "supportsComputerUse": "Unterstützt Computer-Nutzung",
+ "noComputerUse": "Unterstützt keine Computer-Nutzung",
+ "supportsPromptCache": "Unterstützt Prompt-Caching",
+ "noPromptCache": "Unterstützt kein Prompt-Caching",
+ "maxOutput": "Maximale Ausgabe",
+ "inputPrice": "Eingabepreis",
+ "outputPrice": "Ausgabepreis",
+ "cacheReadsPrice": "Cache-Lesepreis",
+ "cacheWritesPrice": "Cache-Schreibpreis",
+ "gemini": {
+ "freeRequests": "* Kostenlos bis zu {{count}} Anfragen pro Minute. Danach hängt die Abrechnung von der Prompt-Größe ab.",
+ "pricingDetails": "Weitere Informationen finden Sie in den Preisdetails."
+ }
+ },
+ "footer": {
+ "feedback": "Wenn Sie Fragen oder Feedback haben, können Sie gerne ein Issue auf github.com/RooVetGit/Roo-Code öffnen oder reddit.com/r/RooCode beitreten",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Anonyme Fehler- und Nutzungsberichte zulassen",
+ "description": "Helfen Sie, Roo Code zu verbessern, indem Sie anonyme Nutzungsdaten und Fehlerberichte senden. Es werden niemals Code, Prompts oder persönliche Informationen gesendet. Weitere Details finden Sie in unserer Datenschutzrichtlinie."
+ },
+ "reset": {
+ "description": "Setzen Sie alle globalen Zustände und geheimen Speicher in der Erweiterung zurück.",
+ "button": "Zurücksetzen"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json
new file mode 100644
index 00000000000..81c8d9d63dd
--- /dev/null
+++ b/webview-ui/src/i18n/locales/en/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Save",
+ "done": "Done",
+ "cancel": "Cancel",
+ "reset": "Reset"
+ },
+ "header": {
+ "title": "Settings",
+ "saveButtonTooltip": "Save changes",
+ "nothingChangedTooltip": "Nothing changed",
+ "doneButtonTooltip": "Discard unsaved changes and close settings panel"
+ },
+ "unsavedChangesDialog": {
+ "title": "Unsaved Changes",
+ "description": "Do you want to discard changes and continue?",
+ "cancelButton": "Cancel",
+ "discardButton": "Discard changes"
+ },
+ "sections": {
+ "providers": "Providers",
+ "autoApprove": "Auto-Approve",
+ "browser": "Browser / Computer Use",
+ "checkpoints": "Checkpoints",
+ "notifications": "Notifications",
+ "contextManagement": "Context Management",
+ "advanced": "Advanced",
+ "experimental": "Experimental Features"
+ },
+ "autoApprove": {
+ "description": "Allow Roo to automatically perform operations without requiring approval. Enable these settings only if you fully trust the AI and understand the associated security risks.",
+ "readOnly": {
+ "label": "Always approve read-only operations",
+ "description": "When enabled, Roo will automatically view directory contents and read files without requiring you to click the Approve button."
+ },
+ "write": {
+ "label": "Always approve write operations",
+ "description": "Automatically create and edit files without requiring approval",
+ "delayLabel": "Delay after writes to allow diagnostics to detect potential problems"
+ },
+ "browser": {
+ "label": "Always approve browser actions",
+ "description": "Automatically perform browser actions without requiring approval",
+ "note": "Note: Only applies when the model supports computer use"
+ },
+ "retry": {
+ "label": "Always retry failed API requests",
+ "description": "Automatically retry failed API requests when server returns an error response",
+ "delayLabel": "Delay before retrying the request"
+ },
+ "mcp": {
+ "label": "Always approve MCP tools",
+ "description": "Enable auto-approval of individual MCP tools in the MCP Servers view (requires both this setting and the tool's individual \"Always allow\" checkbox)"
+ },
+ "modeSwitch": {
+ "label": "Always approve mode switching",
+ "description": "Automatically switch between different modes without requiring approval"
+ },
+ "subtasks": {
+ "label": "Always approve creation & completion of subtasks",
+ "description": "Allow creation and completion of subtasks without requiring approval"
+ },
+ "execute": {
+ "label": "Always approve allowed execute operations",
+ "description": "Automatically execute allowed terminal commands without requiring approval",
+ "allowedCommands": "Allowed Auto-Execute Commands",
+ "allowedCommandsDescription": "Command prefixes that can be auto-executed when \"Always approve execute operations\" is enabled. Add * to allow all commands (use with caution).",
+ "commandPlaceholder": "Enter command prefix (e.g., 'git ')",
+ "addButton": "Add"
+ }
+ },
+ "providers": {
+ "configProfile": "Configuration Profile",
+ "description": "Description",
+ "apiProvider": "API Provider",
+ "openRouterApiKey": "OpenRouter API Key",
+ "apiKeyStorageNotice": "API keys are stored securely in VSCode's Secret Storage",
+ "useCustomBaseUrl": "Use custom base URL",
+ "openRouterTransformsText": "Compress prompts and message chains to the context size (OpenRouter Transforms )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Enable browser tool",
+ "description": "When enabled, Roo can use a browser to interact with websites when using models that support computer use."
+ },
+ "viewport": {
+ "label": "Viewport size",
+ "description": "Select the viewport size for browser interactions. This affects how websites are displayed and interacted with.",
+ "options": {
+ "largeDesktop": "Large Desktop (1280x800)",
+ "smallDesktop": "Small Desktop (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobile (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Screenshot quality",
+ "description": "Adjust the WebP quality of browser screenshots. Higher values provide clearer screenshots but increase token usage."
+ },
+ "remote": {
+ "label": "Use remote browser connection",
+ "description": "Connect to a Chrome browser running with remote debugging enabled (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Custom URL (e.g., http://localhost:9222)",
+ "testButton": "Test Connection",
+ "testingButton": "Testing...",
+ "instructions": "Enter the DevTools Protocol host address or leave empty to auto-discover Chrome local instances. The Test Connection button will try the custom URL if provided, or auto-discover if the field is empty."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Enable automatic checkpoints",
+ "description": "When enabled, Roo will automatically create checkpoints during task execution, making it easy to review changes or revert to earlier states."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Enable sound effects",
+ "description": "When enabled, Roo will play sound effects for notifications and events.",
+ "volumeLabel": "Volume"
+ }
+ },
+ "contextManagement": {
+ "description": "Control what information is included in the AI's context window, affecting token usage and response quality",
+ "terminal": {
+ "label": "Terminal output limit",
+ "description": "Maximum number of lines to include in terminal output when executing commands. When exceeded lines will be removed from the middle, saving tokens."
+ },
+ "openTabs": {
+ "label": "Open tabs context limit",
+ "description": "Maximum number of VSCode open tabs to include in context. Higher values provide more context but increase token usage."
+ },
+ "workspaceFiles": {
+ "label": "Workspace files context limit",
+ "description": "Maximum number of files to include in current working directory details. Higher values provide more context but increase token usage."
+ },
+ "rooignore": {
+ "label": "Show .rooignore'd files in lists and searches",
+ "description": "When enabled, files matching patterns in .rooignore will be shown in lists with a lock symbol. When disabled, these files will be completely hidden from file lists and searches."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Rate limit",
+ "description": "Minimum time between API requests."
+ },
+ "diff": {
+ "label": "Enable editing through diffs",
+ "description": "When enabled, Roo will be able to edit files more quickly and will automatically reject truncated full-file writes. Works best with the latest Claude 3.7 Sonnet model.",
+ "strategy": {
+ "label": "Diff strategy",
+ "options": {
+ "standard": "Standard (Single block)",
+ "multiBlock": "Experimental: Multi-block diff",
+ "unified": "Experimental: Unified diff"
+ },
+ "descriptions": {
+ "standard": "Standard diff strategy applies changes to a single code block at a time.",
+ "unified": "Unified diff strategy takes multiple approaches to applying diffs and chooses the best approach.",
+ "multiBlock": "Multi-block diff strategy allows updating multiple code blocks in a file in one request."
+ }
+ },
+ "matchPrecision": {
+ "label": "Match precision",
+ "description": "This slider controls how precisely code sections must match when applying diffs. Lower values allow more flexible matching but increase the risk of incorrect replacements. Use values below 100% with extreme caution."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Use custom temperature",
+ "description": "Controls randomness in the model's responses.",
+ "rangeDescription": "Higher values make output more random, lower values make it more deterministic."
+ },
+ "modelInfo": {
+ "supportsImages": "Supports images",
+ "noImages": "Does not support images",
+ "supportsComputerUse": "Supports computer use",
+ "noComputerUse": "Does not support computer use",
+ "supportsPromptCache": "Supports prompt caching",
+ "noPromptCache": "Does not support prompt caching",
+ "maxOutput": "Max output",
+ "inputPrice": "Input price",
+ "outputPrice": "Output price",
+ "cacheReadsPrice": "Cache reads price",
+ "cacheWritesPrice": "Cache writes price",
+ "gemini": {
+ "freeRequests": "* Free up to {{count}} requests per minute. After that, billing depends on prompt size.",
+ "pricingDetails": "For more info, see pricing details."
+ }
+ },
+ "footer": {
+ "feedback": "If you have any questions or feedback, feel free to open an issue at github.com/RooVetGit/Roo-Code or join reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Allow anonymous error and usage reporting",
+ "description": "Help improve Roo Code by sending anonymous usage data and error reports. No code, prompts, or personal information is ever sent. See our privacy policy for more details."
+ },
+ "reset": {
+ "description": "Reset all global state and secret storage in the extension.",
+ "button": "Reset"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json
new file mode 100644
index 00000000000..82e04873025
--- /dev/null
+++ b/webview-ui/src/i18n/locales/es/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Guardar",
+ "done": "Hecho",
+ "cancel": "Cancelar",
+ "reset": "Restablecer"
+ },
+ "header": {
+ "title": "Configuración",
+ "saveButtonTooltip": "Guardar cambios",
+ "nothingChangedTooltip": "Nada ha cambiado",
+ "doneButtonTooltip": "Descartar cambios no guardados y cerrar el panel de configuración"
+ },
+ "unsavedChangesDialog": {
+ "title": "Cambios no guardados",
+ "description": "¿Desea descartar los cambios y continuar?",
+ "cancelButton": "Cancelar",
+ "discardButton": "Descartar cambios"
+ },
+ "sections": {
+ "providers": "Proveedores",
+ "autoApprove": "Aprobación automática",
+ "browser": "Navegador / Uso del ordenador",
+ "checkpoints": "Puntos de control",
+ "notifications": "Notificaciones",
+ "contextManagement": "Gestión de contexto",
+ "advanced": "Avanzado",
+ "experimental": "Funciones experimentales"
+ },
+ "autoApprove": {
+ "description": "Permitir que Roo realice operaciones automáticamente sin requerir aprobación. Habilite esta configuración solo si confía plenamente en la IA y comprende los riesgos de seguridad asociados.",
+ "readOnly": {
+ "label": "Aprobar siempre operaciones de solo lectura",
+ "description": "Cuando está habilitado, Roo verá automáticamente el contenido del directorio y leerá archivos sin que necesite hacer clic en el botón Aprobar."
+ },
+ "write": {
+ "label": "Aprobar siempre operaciones de escritura",
+ "description": "Crear y editar archivos automáticamente sin requerir aprobación",
+ "delayLabel": "Retraso después de escritura para permitir que los diagnósticos detecten posibles problemas"
+ },
+ "browser": {
+ "label": "Aprobar siempre acciones del navegador",
+ "description": "Realizar acciones del navegador automáticamente sin requerir aprobación",
+ "note": "Nota: Solo se aplica cuando el modelo admite el uso del ordenador"
+ },
+ "retry": {
+ "label": "Reintentar siempre solicitudes de API fallidas",
+ "description": "Reintentar automáticamente solicitudes de API fallidas cuando el servidor devuelve una respuesta de error",
+ "delayLabel": "Retraso antes de reintentar la solicitud"
+ },
+ "mcp": {
+ "label": "Aprobar siempre herramientas MCP",
+ "description": "Habilitar la aprobación automática de herramientas MCP individuales en la vista de Servidores MCP (requiere tanto esta configuración como la casilla \"Permitir siempre\" de la herramienta)"
+ },
+ "modeSwitch": {
+ "label": "Aprobar siempre cambios de modo",
+ "description": "Cambiar automáticamente entre diferentes modos sin requerir aprobación"
+ },
+ "subtasks": {
+ "label": "Aprobar siempre creación y finalización de subtareas",
+ "description": "Permitir la creación y finalización de subtareas sin requerir aprobación"
+ },
+ "execute": {
+ "label": "Aprobar siempre operaciones de ejecución permitidas",
+ "description": "Ejecutar automáticamente comandos de terminal permitidos sin requerir aprobación",
+ "allowedCommands": "Comandos de auto-ejecución permitidos",
+ "allowedCommandsDescription": "Prefijos de comandos que pueden ser ejecutados automáticamente cuando \"Aprobar siempre operaciones de ejecución\" está habilitado. Añade * para permitir todos los comandos (usar con precaución).",
+ "commandPlaceholder": "Ingrese prefijo de comando (ej. 'git ')",
+ "addButton": "Añadir"
+ }
+ },
+ "providers": {
+ "configProfile": "Perfil de configuración",
+ "description": "Descripción",
+ "apiProvider": "Proveedor de API",
+ "openRouterApiKey": "Clave API de OpenRouter",
+ "apiKeyStorageNotice": "Las claves API se almacenan de forma segura en el Almacenamiento Secreto de VSCode",
+ "useCustomBaseUrl": "Usar URL base personalizada",
+ "openRouterTransformsText": "Comprimir prompts y cadenas de mensajes al tamaño del contexto (Transformaciones de OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Habilitar herramienta de navegador",
+ "description": "Cuando está habilitado, Roo puede usar un navegador para interactuar con sitios web cuando se utilizan modelos que admiten el uso del ordenador."
+ },
+ "viewport": {
+ "label": "Tamaño del viewport",
+ "description": "Seleccione el tamaño del viewport para interacciones del navegador. Esto afecta cómo se muestran e interactúan los sitios web.",
+ "options": {
+ "largeDesktop": "Escritorio grande (1280x800)",
+ "smallDesktop": "Escritorio pequeño (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Móvil (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Calidad de capturas de pantalla",
+ "description": "Ajuste la calidad WebP de las capturas de pantalla del navegador. Valores más altos proporcionan capturas más claras pero aumentan el uso de token."
+ },
+ "remote": {
+ "label": "Usar conexión remota del navegador",
+ "description": "Conectarse a un navegador Chrome que se ejecuta con depuración remota habilitada (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personalizada (ej. http://localhost:9222)",
+ "testButton": "Probar conexión",
+ "testingButton": "Probando...",
+ "instructions": "Ingrese la dirección del host del protocolo DevTools o déjelo vacío para descubrir automáticamente instancias locales de Chrome. El botón Probar Conexión intentará usar la URL personalizada si se proporciona, o descubrirá automáticamente si el campo está vacío."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Habilitar puntos de control automáticos",
+ "description": "Cuando está habilitado, Roo creará automáticamente puntos de control durante la ejecución de tareas, facilitando la revisión de cambios o la reversión a estados anteriores."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Habilitar efectos de sonido",
+ "description": "Cuando está habilitado, Roo reproducirá efectos de sonido para notificaciones y eventos.",
+ "volumeLabel": "Volumen"
+ }
+ },
+ "contextManagement": {
+ "description": "Controle qué información se incluye en la ventana de contexto de la IA, afectando el uso de token y la calidad de respuesta",
+ "terminal": {
+ "label": "Límite de salida de terminal",
+ "description": "Número máximo de líneas a incluir en la salida del terminal al ejecutar comandos. Cuando se excede, se eliminarán líneas del medio, ahorrando token."
+ },
+ "openTabs": {
+ "label": "Límite de contexto de pestañas abiertas",
+ "description": "Número máximo de pestañas abiertas de VSCode a incluir en el contexto. Valores más altos proporcionan más contexto pero aumentan el uso de token."
+ },
+ "workspaceFiles": {
+ "label": "Límite de contexto de archivos del espacio de trabajo",
+ "description": "Número máximo de archivos a incluir en los detalles del directorio de trabajo actual. Valores más altos proporcionan más contexto pero aumentan el uso de token."
+ },
+ "rooignore": {
+ "label": "Mostrar archivos .rooignore en listas y búsquedas",
+ "description": "Cuando está habilitado, los archivos que coinciden con los patrones en .rooignore se mostrarán en listas con un símbolo de candado. Cuando está deshabilitado, estos archivos se ocultarán completamente de las listas de archivos y búsquedas."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Límite de tasa",
+ "description": "Tiempo mínimo entre solicitudes de API."
+ },
+ "diff": {
+ "label": "Habilitar edición a través de diffs",
+ "description": "Cuando está habilitado, Roo podrá editar archivos más rápidamente y rechazará automáticamente escrituras completas de archivos truncados. Funciona mejor con el último modelo Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Estrategia de diff",
+ "options": {
+ "standard": "Estándar (Bloque único)",
+ "multiBlock": "Experimental: Diff multi-bloque",
+ "unified": "Experimental: Diff unificado"
+ },
+ "descriptions": {
+ "standard": "La estrategia de diff estándar aplica cambios a un solo bloque de código a la vez.",
+ "unified": "La estrategia de diff unificado toma múltiples enfoques para aplicar diffs y elige el mejor enfoque.",
+ "multiBlock": "La estrategia de diff multi-bloque permite actualizar múltiples bloques de código en un archivo en una sola solicitud."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precisión de coincidencia",
+ "description": "Este control deslizante controla cuán precisamente deben coincidir las secciones de código al aplicar diffs. Valores más bajos permiten coincidencias más flexibles pero aumentan el riesgo de reemplazos incorrectos. Use valores por debajo del 100% con extrema precaución."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Usar temperatura personalizada",
+ "description": "Controla la aleatoriedad en las respuestas del modelo.",
+ "rangeDescription": "Valores más altos hacen que la salida sea más aleatoria, valores más bajos la hacen más determinista."
+ },
+ "modelInfo": {
+ "supportsImages": "Soporta imágenes",
+ "noImages": "No soporta imágenes",
+ "supportsComputerUse": "Soporta uso del ordenador",
+ "noComputerUse": "No soporta uso del ordenador",
+ "supportsPromptCache": "Soporta caché de prompts",
+ "noPromptCache": "No soporta caché de prompts",
+ "maxOutput": "Salida máxima",
+ "inputPrice": "Precio de entrada",
+ "outputPrice": "Precio de salida",
+ "cacheReadsPrice": "Precio de lecturas de caché",
+ "cacheWritesPrice": "Precio de escrituras de caché",
+ "gemini": {
+ "freeRequests": "* Gratis hasta {{count}} solicitudes por minuto. Después de eso, la facturación depende del tamaño del prompt.",
+ "pricingDetails": "Para más información, consulte los detalles de precios."
+ }
+ },
+ "footer": {
+ "feedback": "Si tiene alguna pregunta o comentario, no dude en abrir un issue en github.com/RooVetGit/Roo-Code o unirse a reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Permitir informes anónimos de errores y uso",
+ "description": "Ayude a mejorar Roo Code enviando datos de uso anónimos e informes de errores. Nunca se envía código, prompts o información personal. Consulte nuestra política de privacidad para más detalles."
+ },
+ "reset": {
+ "description": "Restablecer todo el estado global y almacenamiento secreto en la extensión.",
+ "button": "Restablecer"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json
new file mode 100644
index 00000000000..d29bc3aa0ef
--- /dev/null
+++ b/webview-ui/src/i18n/locales/fr/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Enregistrer",
+ "done": "Terminé",
+ "cancel": "Annuler",
+ "reset": "Réinitialiser"
+ },
+ "header": {
+ "title": "Paramètres",
+ "saveButtonTooltip": "Enregistrer les modifications",
+ "nothingChangedTooltip": "Rien n'a changé",
+ "doneButtonTooltip": "Ignorer les modifications non enregistrées et fermer le panneau des paramètres"
+ },
+ "unsavedChangesDialog": {
+ "title": "Modifications non enregistrées",
+ "description": "Voulez-vous ignorer les modifications et continuer ?",
+ "cancelButton": "Annuler",
+ "discardButton": "Ignorer les modifications"
+ },
+ "sections": {
+ "providers": "Fournisseurs",
+ "autoApprove": "Approbation automatique",
+ "browser": "Navigateur / Utilisation de l'ordinateur",
+ "checkpoints": "Points de contrôle",
+ "notifications": "Notifications",
+ "contextManagement": "Gestion du contexte",
+ "advanced": "Avancé",
+ "experimental": "Fonctionnalités expérimentales"
+ },
+ "autoApprove": {
+ "description": "Permettre à Roo d'effectuer automatiquement des opérations sans requérir d'approbation. Activez ces paramètres uniquement si vous faites entièrement confiance à l'IA et que vous comprenez les risques de sécurité associés.",
+ "readOnly": {
+ "label": "Toujours approuver les opérations en lecture seule",
+ "description": "Lorsque cette option est activée, Roo affichera automatiquement le contenu des répertoires et lira les fichiers sans que vous ayez à cliquer sur le bouton Approuver."
+ },
+ "write": {
+ "label": "Toujours approuver les opérations d'écriture",
+ "description": "Créer et modifier automatiquement des fichiers sans nécessiter d'approbation",
+ "delayLabel": "Délai après les écritures pour permettre aux diagnostics de détecter les problèmes potentiels"
+ },
+ "browser": {
+ "label": "Toujours approuver les actions du navigateur",
+ "description": "Effectuer automatiquement des actions du navigateur sans nécessiter d'approbation",
+ "note": "Remarque : S'applique uniquement lorsque le modèle prend en charge l'utilisation de l'ordinateur"
+ },
+ "retry": {
+ "label": "Toujours réessayer les requêtes API échouées",
+ "description": "Réessayer automatiquement les requêtes API échouées lorsque le serveur renvoie une réponse d'erreur",
+ "delayLabel": "Délai avant de réessayer la requête"
+ },
+ "mcp": {
+ "label": "Toujours approuver les outils MCP",
+ "description": "Activer l'approbation automatique des outils MCP individuels dans la vue des serveurs MCP (nécessite à la fois ce paramètre et la case à cocher \"Toujours autoriser\" de l'outil)"
+ },
+ "modeSwitch": {
+ "label": "Toujours approuver les changements de mode",
+ "description": "Basculer automatiquement entre différents modes sans nécessiter d'approbation"
+ },
+ "subtasks": {
+ "label": "Toujours approuver la création et l'achèvement des sous-tâches",
+ "description": "Permettre la création et l'achèvement des sous-tâches sans nécessiter d'approbation"
+ },
+ "execute": {
+ "label": "Toujours approuver les opérations d'exécution autorisées",
+ "description": "Exécuter automatiquement les commandes de terminal autorisées sans nécessiter d'approbation",
+ "allowedCommands": "Commandes auto-exécutables autorisées",
+ "allowedCommandsDescription": "Préfixes de commandes qui peuvent être auto-exécutés lorsque \"Toujours approuver les opérations d'exécution\" est activé. Ajoutez * pour autoriser toutes les commandes (à utiliser avec précaution).",
+ "commandPlaceholder": "Entrez le préfixe de commande (ex. 'git ')",
+ "addButton": "Ajouter"
+ }
+ },
+ "providers": {
+ "configProfile": "Profil de configuration",
+ "description": "Description",
+ "apiProvider": "Fournisseur d'API",
+ "openRouterApiKey": "Clé API OpenRouter",
+ "apiKeyStorageNotice": "Les clés API sont stockées en toute sécurité dans le stockage sécurisé de VSCode",
+ "useCustomBaseUrl": "Utiliser une URL de base personnalisée",
+ "openRouterTransformsText": "Compresser les prompts et chaînes de messages à la taille du contexte (Transformations OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Activer l'outil de navigateur",
+ "description": "Lorsque cette option est activée, Roo peut utiliser un navigateur pour interagir avec des sites web lors de l'utilisation de modèles qui prennent en charge l'utilisation de l'ordinateur."
+ },
+ "viewport": {
+ "label": "Taille de la fenêtre d'affichage",
+ "description": "Sélectionnez la taille de la fenêtre d'affichage pour les interactions du navigateur. Cela affecte la façon dont les sites web sont affichés et dont on interagit avec eux.",
+ "options": {
+ "largeDesktop": "Grand bureau (1280x800)",
+ "smallDesktop": "Petit bureau (900x600)",
+ "tablet": "Tablette (768x1024)",
+ "mobile": "Mobile (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Qualité des captures d'écran",
+ "description": "Ajustez la qualité WebP des captures d'écran du navigateur. Des valeurs plus élevées fournissent des captures plus claires mais augmentent l'utilisation de token."
+ },
+ "remote": {
+ "label": "Utiliser une connexion de navigateur distant",
+ "description": "Se connecter à un navigateur Chrome exécuté avec le débogage à distance activé (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personnalisée (ex. http://localhost:9222)",
+ "testButton": "Tester la connexion",
+ "testingButton": "Test en cours...",
+ "instructions": "Entrez l'adresse hôte du protocole DevTools ou laissez vide pour découvrir automatiquement les instances Chrome locales. Le bouton Tester la connexion essaiera l'URL personnalisée si fournie, ou découvrira automatiquement si le champ est vide."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Activer les points de contrôle automatiques",
+ "description": "Lorsque cette option est activée, Roo créera automatiquement des points de contrôle pendant l'exécution des tâches, facilitant la révision des modifications ou le retour à des états antérieurs."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Activer les effets sonores",
+ "description": "Lorsque cette option est activée, Roo jouera des effets sonores pour les notifications et les événements.",
+ "volumeLabel": "Volume"
+ }
+ },
+ "contextManagement": {
+ "description": "Contrôlez quelles informations sont incluses dans la fenêtre de contexte de l'IA, affectant l'utilisation de token et la qualité des réponses",
+ "terminal": {
+ "label": "Limite de sortie du terminal",
+ "description": "Nombre maximum de lignes à inclure dans la sortie du terminal lors de l'exécution de commandes. Lorsque ce nombre est dépassé, les lignes seront supprimées du milieu, économisant des token."
+ },
+ "openTabs": {
+ "label": "Limite de contexte des onglets ouverts",
+ "description": "Nombre maximum d'onglets VSCode ouverts à inclure dans le contexte. Des valeurs plus élevées fournissent plus de contexte mais augmentent l'utilisation de token."
+ },
+ "workspaceFiles": {
+ "label": "Limite de contexte des fichiers de l'espace de travail",
+ "description": "Nombre maximum de fichiers à inclure dans les détails du répertoire de travail actuel. Des valeurs plus élevées fournissent plus de contexte mais augmentent l'utilisation de token."
+ },
+ "rooignore": {
+ "label": "Afficher les fichiers .rooignore dans les listes et recherches",
+ "description": "Lorsque cette option est activée, les fichiers correspondant aux modèles dans .rooignore seront affichés dans les listes avec un symbole de cadenas. Lorsqu'elle est désactivée, ces fichiers seront complètement masqués des listes de fichiers et des recherches."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Limite de débit",
+ "description": "Temps minimum entre les requêtes API."
+ },
+ "diff": {
+ "label": "Activer l'édition via des diffs",
+ "description": "Lorsque cette option est activée, Roo pourra éditer des fichiers plus rapidement et rejettera automatiquement les écritures de fichiers complets tronqués. Fonctionne mieux avec le dernier modèle Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Stratégie de diff",
+ "options": {
+ "standard": "Standard (Bloc unique)",
+ "multiBlock": "Expérimental : Diff multi-blocs",
+ "unified": "Expérimental : Diff unifié"
+ },
+ "descriptions": {
+ "standard": "La stratégie de diff standard applique les modifications à un seul bloc de code à la fois.",
+ "unified": "La stratégie de diff unifié prend plusieurs approches pour appliquer les diffs et choisit la meilleure approche.",
+ "multiBlock": "La stratégie de diff multi-blocs permet de mettre à jour plusieurs blocs de code dans un fichier en une seule requête."
+ }
+ },
+ "matchPrecision": {
+ "label": "Précision de correspondance",
+ "description": "Ce curseur contrôle la précision avec laquelle les sections de code doivent correspondre lors de l'application des diffs. Des valeurs plus basses permettent des correspondances plus flexibles mais augmentent le risque de remplacements incorrects. Utilisez des valeurs inférieures à 100 % avec une extrême prudence."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Utiliser une température personnalisée",
+ "description": "Contrôle l'aléatoire dans les réponses du modèle.",
+ "rangeDescription": "Des valeurs plus élevées rendent la sortie plus aléatoire, des valeurs plus basses la rendent plus déterministe."
+ },
+ "modelInfo": {
+ "supportsImages": "Prend en charge les images",
+ "noImages": "Ne prend pas en charge les images",
+ "supportsComputerUse": "Prend en charge l'utilisation de l'ordinateur",
+ "noComputerUse": "Ne prend pas en charge l'utilisation de l'ordinateur",
+ "supportsPromptCache": "Prend en charge la mise en cache des prompts",
+ "noPromptCache": "Ne prend pas en charge la mise en cache des prompts",
+ "maxOutput": "Sortie maximale",
+ "inputPrice": "Prix d'entrée",
+ "outputPrice": "Prix de sortie",
+ "cacheReadsPrice": "Prix des lectures de cache",
+ "cacheWritesPrice": "Prix des écritures de cache",
+ "gemini": {
+ "freeRequests": "* Gratuit jusqu'à {{count}} requêtes par minute. Après cela, la facturation dépend de la taille du prompt.",
+ "pricingDetails": "Pour plus d'informations, voir les détails de tarification."
+ }
+ },
+ "footer": {
+ "feedback": "Si vous avez des questions ou des commentaires, n'hésitez pas à ouvrir un problème sur github.com/RooVetGit/Roo-Code ou à rejoindre reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Autoriser les rapports anonymes d'erreurs et d'utilisation",
+ "description": "Aidez à améliorer Roo Code en envoyant des données d'utilisation anonymes et des rapports d'erreurs. Aucun code, prompt ou information personnelle n'est jamais envoyé. Consultez notre politique de confidentialité pour plus de détails."
+ },
+ "reset": {
+ "description": "Réinitialiser tous les états globaux et le stockage secret dans l'extension.",
+ "button": "Réinitialiser"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json
new file mode 100644
index 00000000000..5aaf5f8f1ce
--- /dev/null
+++ b/webview-ui/src/i18n/locales/hi/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "सहेजें",
+ "done": "पूर्ण",
+ "cancel": "रद्द करें",
+ "reset": "रीसेट करें"
+ },
+ "header": {
+ "title": "सेटिंग्स",
+ "saveButtonTooltip": "परिवर्तन सहेजें",
+ "nothingChangedTooltip": "कुछ भी नहीं बदला",
+ "doneButtonTooltip": "असहेजे परिवर्तनों को छोड़ें और सेटिंग्स पैनल बंद करें"
+ },
+ "unsavedChangesDialog": {
+ "title": "असहेजे परिवर्तन",
+ "description": "क्या आप परिवर्तनों को छोड़कर जारी रखना चाहते हैं?",
+ "cancelButton": "रद्द करें",
+ "discardButton": "परिवर्तन छोड़ें"
+ },
+ "sections": {
+ "providers": "प्रदाता",
+ "autoApprove": "स्वतः अनुमोदन",
+ "browser": "ब्राउज़र / कंप्यूटर उपयोग",
+ "checkpoints": "चेकपॉइंट",
+ "notifications": "सूचनाएँ",
+ "contextManagement": "संदर्भ प्रबंधन",
+ "advanced": "उन्नत",
+ "experimental": "प्रायोगिक सुविधाएँ"
+ },
+ "autoApprove": {
+ "description": "Roo को अनुमोदन की आवश्यकता के बिना स्वचालित रूप से ऑपरेशन करने की अनुमति दें। इन सेटिंग्स को केवल तभी सक्षम करें जब आप AI पर पूरी तरह से भरोसा करते हों और संबंधित सुरक्षा जोखिमों को समझते हों।",
+ "readOnly": {
+ "label": "केवल पढ़ने वाले ऑपरेशन हमेशा अनुमोदित करें",
+ "description": "जब सक्षम होता है, तो Roo आपके अनुमोदित बटन पर क्लिक किए बिना स्वचालित रूप से निर्देशिका सामग्री देखेगा और फाइलें पढ़ेगा।"
+ },
+ "write": {
+ "label": "लिखने वाले ऑपरेशन हमेशा अनुमोदित करें",
+ "description": "अनुमोदन की आवश्यकता के बिना स्वचालित रूप से फाइलें बनाएँ और संपादित करें",
+ "delayLabel": "लिखने के बाद विलंब ताकि डायग्नोस्टिक संभावित समस्याओं का पता लगा सकें"
+ },
+ "browser": {
+ "label": "ब्राउज़र क्रियाएँ हमेशा अनुमोदित करें",
+ "description": "अनुमोदन की आवश्यकता के बिना स्वचालित रूप से ब्राउज़र क्रियाएँ करें",
+ "note": "नोट: केवल तभी लागू होता है जब मॉडल कंप्यूटर उपयोग का समर्थन करता है"
+ },
+ "retry": {
+ "label": "विफल API अनुरोधों को हमेशा पुनः प्रयास करें",
+ "description": "जब सर्वर त्रुटि प्रतिक्रिया देता है तो स्वचालित रूप से विफल API अनुरोधों को पुनः प्रयास करें",
+ "delayLabel": "अनुरोध को पुनः प्रयास करने से पहले विलंब"
+ },
+ "mcp": {
+ "label": "MCP टूल्स हमेशा अनुमोदित करें",
+ "description": "MCP सर्वर व्यू में व्यक्तिगत MCP टूल्स के स्वतः अनुमोदन को सक्षम करें (इस सेटिंग और टूल के \"हमेशा अनुमति दें\" चेकबॉक्स दोनों की आवश्यकता है)"
+ },
+ "modeSwitch": {
+ "label": "मोड स्विचिंग हमेशा अनुमोदित करें",
+ "description": "अनुमोदन की आवश्यकता के बिना स्वचालित रूप से विभिन्न मोड के बीच स्विच करें"
+ },
+ "subtasks": {
+ "label": "उप-कार्यों का निर्माण और पूर्णता हमेशा अनुमोदित करें",
+ "description": "अनुमोदन की आवश्यकता के बिना उप-कार्यों के निर्माण और पूर्णता की अनुमति दें"
+ },
+ "execute": {
+ "label": "अनुमत निष्पादन ऑपरेशन हमेशा अनुमोदित करें",
+ "description": "अनुमोदन की आवश्यकता के बिना स्वचालित रूप से अनुमत टर्मिनल कमांड निष्पादित करें",
+ "allowedCommands": "अनुमत स्वतः-निष्पादन कमांड",
+ "allowedCommandsDescription": "कमांड प्रीफिक्स जो स्वचालित रूप से निष्पादित किए जा सकते हैं जब \"निष्पादन ऑपरेशन हमेशा अनुमोदित करें\" सक्षम है। सभी कमांड की अनुमति देने के लिए * जोड़ें (सावधानी से उपयोग करें)।",
+ "commandPlaceholder": "कमांड प्रीफिक्स दर्ज करें (उदा. 'git ')",
+ "addButton": "जोड़ें"
+ }
+ },
+ "providers": {
+ "configProfile": "कॉन्फिगरेशन प्रोफाइल",
+ "description": "विवरण",
+ "apiProvider": "API प्रदाता",
+ "openRouterApiKey": "OpenRouter API कुंजी",
+ "apiKeyStorageNotice": "API कुंजियाँ VSCode के सुरक्षित स्टोरेज में सुरक्षित रूप से संग्रहीत हैं",
+ "useCustomBaseUrl": "कस्टम बेस URL का उपयोग करें",
+ "openRouterTransformsText": "संदर्भ आकार के लिए प्रॉम्प्ट और संदेश श्रृंखलाओं को संपीड़ित करें (OpenRouter ट्रांसफॉर्म )"
+ },
+ "browser": {
+ "enable": {
+ "label": "ब्राउज़र टूल सक्षम करें",
+ "description": "जब सक्षम होता है, तो Roo कंप्यूटर उपयोग का समर्थन करने वाले मॉडल का उपयोग करते समय वेबसाइटों के साथ बातचीत करने के लिए ब्राउज़र का उपयोग कर सकता है।"
+ },
+ "viewport": {
+ "label": "व्यूपोर्ट आकार",
+ "description": "ब्राउज़र इंटरैक्शन के लिए व्यूपोर्ट आकार चुनें। यह वेबसाइटों के प्रदर्शन और उनके साथ बातचीत को प्रभावित करता है।",
+ "options": {
+ "largeDesktop": "बड़ा डेस्कटॉप (1280x800)",
+ "smallDesktop": "छोटा डेस्कटॉप (900x600)",
+ "tablet": "टैबलेट (768x1024)",
+ "mobile": "मोबाइल (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "स्क्रीनशॉट गुणवत्ता",
+ "description": "ब्राउज़र स्क्रीनशॉट की WebP गुणवत्ता समायोजित करें। उच्च मान स्पष्ट स्क्रीनशॉट प्रदान करते हैं लेकिन token उपयोग बढ़ाते हैं।"
+ },
+ "remote": {
+ "label": "दूरस्थ ब्राउज़र कनेक्शन का उपयोग करें",
+ "description": "रिमोट डीबगिंग सक्षम के साथ चल रहे Chrome ब्राउज़र से कनेक्ट करें (--remote-debugging-port=9222)।",
+ "urlPlaceholder": "कस्टम URL (उदा. http://localhost:9222)",
+ "testButton": "कनेक्शन का परीक्षण करें",
+ "testingButton": "परीक्षण हो रहा है...",
+ "instructions": "DevTools प्रोटोकॉल होस्ट पता दर्ज करें या Chrome स्थानीय इंस्टेंस स्वतः खोजने के लिए खाली छोड़ दें। टेस्ट कनेक्शन बटन यदि प्रदान किया गया है तो कस्टम URL का प्रयास करेगा, या यदि फ़ील्ड खाली है तो स्वतः खोज करेगा।"
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "स्वचालित चेकपॉइंट सक्षम करें",
+ "description": "जब सक्षम होता है, तो Roo कार्य निष्पादन के दौरान स्वचालित रूप से चेकपॉइंट बनाएगा, जिससे परिवर्तनों की समीक्षा करना या पहले की स्थितियों पर वापस जाना आसान हो जाएगा।"
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "ध्वनि प्रभाव सक्षम करें",
+ "description": "जब सक्षम होता है, तो Roo सूचनाओं और घटनाओं के लिए ध्वनि प्रभाव चलाएगा।",
+ "volumeLabel": "वॉल्यूम"
+ }
+ },
+ "contextManagement": {
+ "description": "AI के संदर्भ विंडो में शामिल जानकारी को नियंत्रित करें, जो token उपयोग और प्रतिक्रिया गुणवत्ता को प्रभावित करता है",
+ "terminal": {
+ "label": "टर्मिनल आउटपुट सीमा",
+ "description": "कमांड निष्पादित करते समय टर्मिनल आउटपुट में शामिल करने के लिए पंक्तियों की अधिकतम संख्या। पार होने पर पंक्तियाँ मध्य से हटा दी जाएंगी, token बचाते हुए।"
+ },
+ "openTabs": {
+ "label": "खुले टैब संदर्भ सीमा",
+ "description": "संदर्भ में शामिल करने के लिए VSCode खुले टैब की अधिकतम संख्या। उच्च मान अधिक संदर्भ प्रदान करते हैं लेकिन token उपयोग बढ़ाते हैं।"
+ },
+ "workspaceFiles": {
+ "label": "वर्कस्पेस फाइल संदर्भ सीमा",
+ "description": "वर्तमान कार्य निर्देशिका विवरण में शामिल करने के लिए फाइलों की अधिकतम संख्या। उच्च मान अधिक संदर्भ प्रदान करते हैं लेकिन token उपयोग बढ़ाते हैं।"
+ },
+ "rooignore": {
+ "label": "सूचियों और खोजों में .rooignore फाइलें दिखाएँ",
+ "description": "जब सक्षम होता है, .rooignore में पैटर्न से मेल खाने वाली फाइलें लॉक प्रतीक के साथ सूचियों में दिखाई जाएंगी। जब अक्षम होता है, ये फाइलें फाइल सूचियों और खोजों से पूरी तरह छिपा दी जाएंगी।"
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "दर सीमा",
+ "description": "API अनुरोधों के बीच न्यूनतम समय।"
+ },
+ "diff": {
+ "label": "diffs के माध्यम से संपादन सक्षम करें",
+ "description": "जब सक्षम होता है, Roo फाइलों को तेजी से संपादित कर सकेगा और स्वचालित रूप से काटे गए पूर्ण-फाइल लेखन को अस्वीकार करेगा। नवीनतम Claude 3.7 Sonnet मॉडल के साथ सबसे अच्छा काम करता है।",
+ "strategy": {
+ "label": "Diff रणनीति",
+ "options": {
+ "standard": "मानक (एकल ब्लॉक)",
+ "multiBlock": "प्रायोगिक: मल्टी-ब्लॉक diff",
+ "unified": "प्रायोगिक: एकीकृत diff"
+ },
+ "descriptions": {
+ "standard": "मानक diff रणनीति एक समय में एक कोड ब्लॉक पर परिवर्तन लागू करती है।",
+ "unified": "एकीकृत diff रणनीति diffs लागू करने के लिए कई दृष्टिकोण लेती है और सर्वोत्तम दृष्टिकोण चुनती है।",
+ "multiBlock": "मल्टी-ब्लॉक diff रणनीति एक अनुरोध में एक फाइल में कई कोड ब्लॉक अपडेट करने की अनुमति देती है।"
+ }
+ },
+ "matchPrecision": {
+ "label": "मिलान सटीकता",
+ "description": "यह स्लाइडर नियंत्रित करता है कि diffs लागू करते समय कोड अनुभागों को कितनी सटीकता से मेल खाना चाहिए। निम्न मान अधिक लचीले मिलान की अनुमति देते हैं लेकिन गलत प्रतिस्थापन का जोखिम बढ़ाते हैं। 100% से नीचे के मानों का उपयोग अत्यधिक सावधानी के साथ करें।"
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "कस्टम तापमान का उपयोग करें",
+ "description": "मॉडल की प्रतिक्रियाओं में यादृच्छिकता को नियंत्रित करता है।",
+ "rangeDescription": "उच्च मान आउटपुट को अधिक यादृच्छिक बनाते हैं, निम्न मान इसे अधिक निर्धारित बनाते हैं।"
+ },
+ "modelInfo": {
+ "supportsImages": "छवियों का समर्थन करता है",
+ "noImages": "छवियों का समर्थन नहीं करता है",
+ "supportsComputerUse": "कंप्यूटर उपयोग का समर्थन करता है",
+ "noComputerUse": "कंप्यूटर उपयोग का समर्थन नहीं करता है",
+ "supportsPromptCache": "प्रॉम्प्ट कैशिंग का समर्थन करता है",
+ "noPromptCache": "प्रॉम्प्ट कैशिंग का समर्थन नहीं करता है",
+ "maxOutput": "अधिकतम आउटपुट",
+ "inputPrice": "इनपुट मूल्य",
+ "outputPrice": "आउटपुट मूल्य",
+ "cacheReadsPrice": "कैश रीड्स मूल्य",
+ "cacheWritesPrice": "कैश राइट्स मूल्य",
+ "gemini": {
+ "freeRequests": "* प्रति मिनट {{count}} अनुरोधों तक मुफ्त। उसके बाद, बिलिंग प्रॉम्प्ट आकार पर निर्भर करती है।",
+ "pricingDetails": "अधिक जानकारी के लिए, मूल्य निर्धारण विवरण देखें।"
+ }
+ },
+ "footer": {
+ "feedback": "यदि आपके कोई प्रश्न या प्रतिक्रिया है, तो github.com/RooVetGit/Roo-Code पर एक मुद्दा खोलने या reddit.com/r/RooCode में शामिल होने में संकोच न करें",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "गुमनाम त्रुटि और उपयोग रिपोर्टिंग की अनुमति दें",
+ "description": "गुमनाम उपयोग डेटा और त्रुटि रिपोर्ट भेजकर Roo Code को बेहतर बनाने में मदद करें। कोड, प्रॉम्प्ट, या व्यक्तिगत जानकारी कभी भी नहीं भेजी जाती है। अधिक विवरण के लिए हमारी गोपनीयता नीति देखें।"
+ },
+ "reset": {
+ "description": "एक्सटेंशन में सभी वैश्विक स्थिति और गुप्त भंडारण को रीसेट करें।",
+ "button": "रीसेट करें"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/hu/settings.json b/webview-ui/src/i18n/locales/hu/settings.json
new file mode 100644
index 00000000000..4dbb7bdd197
--- /dev/null
+++ b/webview-ui/src/i18n/locales/hu/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Mentés",
+ "done": "Kész",
+ "cancel": "Mégse",
+ "reset": "Visszaállítás"
+ },
+ "header": {
+ "title": "Beállítások",
+ "saveButtonTooltip": "Változtatások mentése",
+ "nothingChangedTooltip": "Semmi nem változott",
+ "doneButtonTooltip": "Nem mentett változtatások elvetése és a beállítások panel bezárása"
+ },
+ "unsavedChangesDialog": {
+ "title": "Nem mentett változtatások",
+ "description": "Szeretné elvetni a változtatásokat és folytatni?",
+ "cancelButton": "Mégse",
+ "discardButton": "Változtatások elvetése"
+ },
+ "sections": {
+ "providers": "Szolgáltatók",
+ "autoApprove": "Automatikus jóváhagyás",
+ "browser": "Böngésző / Számítógép használat",
+ "checkpoints": "Ellenőrzőpontok",
+ "notifications": "Értesítések",
+ "contextManagement": "Kontextus kezelés",
+ "advanced": "Speciális",
+ "experimental": "Kísérleti funkciók"
+ },
+ "autoApprove": {
+ "description": "Engedélyezze a Roo számára a műveletek automatikus végrehajtását jóváhagyás nélkül. Csak akkor engedélyezze ezeket a beállításokat, ha teljesen megbízik a mesterséges intelligenciában és megérti a kapcsolódó biztonsági kockázatokat.",
+ "readOnly": {
+ "label": "Mindig hagyja jóvá a csak olvasási műveleteket",
+ "description": "Ha engedélyezve van, a Roo automatikusan megjeleníti a könyvtár tartalmát és olvassa a fájlokat anélkül, hogy a Jóváhagyás gombra kellene kattintania."
+ },
+ "write": {
+ "label": "Mindig hagyja jóvá az írási műveleteket",
+ "description": "Automatikusan létrehoz és szerkeszt fájlokat jóváhagyás nélkül",
+ "delayLabel": "Késleltetés az írási műveletek után, hogy a diagnosztika érzékelhesse a potenciális problémákat"
+ },
+ "browser": {
+ "label": "Mindig hagyja jóvá a böngésző műveleteket",
+ "description": "Automatikusan végrehajtja a böngésző műveleteket jóváhagyás nélkül",
+ "note": "Megjegyzés: Csak akkor alkalmazható, ha a modell támogatja a számítógép használatát"
+ },
+ "retry": {
+ "label": "Mindig próbálja újra a sikertelen API kéréseket",
+ "description": "Automatikusan újrapróbálja a sikertelen API kéréseket, amikor a szerver hibaüzenetet küld",
+ "delayLabel": "Késleltetés a kérés újrapróbálása előtt"
+ },
+ "mcp": {
+ "label": "Mindig hagyja jóvá az MCP eszközöket",
+ "description": "Engedélyezze az egyéni MCP eszközök automatikus jóváhagyását az MCP szerverek nézetben (ehhez a beállításhoz és az eszköz \"Mindig engedélyezve\" jelölőnégyzetéhez is szükség van)"
+ },
+ "modeSwitch": {
+ "label": "Mindig hagyja jóvá a módváltást",
+ "description": "Automatikusan váltson a különböző módok között jóváhagyás nélkül"
+ },
+ "subtasks": {
+ "label": "Mindig hagyja jóvá a részfeladatok létrehozását és befejezését",
+ "description": "Lehetővé teszi a részfeladatok létrehozását és befejezését jóváhagyás nélkül"
+ },
+ "execute": {
+ "label": "Mindig hagyja jóvá az engedélyezett végrehajtási műveleteket",
+ "description": "Automatikusan végrehajtja az engedélyezett terminál parancsokat jóváhagyás nélkül",
+ "allowedCommands": "Engedélyezett automatikus végrehajtású parancsok",
+ "allowedCommandsDescription": "Parancs előtagok, amelyek automatikusan végrehajthatók, ha a \"Mindig hagyja jóvá a végrehajtási műveleteket\" engedélyezve van. Adjon hozzá * jelet az összes parancs engedélyezéséhez (óvatosan használja).",
+ "commandPlaceholder": "Adja meg a parancs előtagot (pl. 'git ')",
+ "addButton": "Hozzáadás"
+ }
+ },
+ "providers": {
+ "configProfile": "Konfigurációs profil",
+ "description": "Leírás",
+ "apiProvider": "API szolgáltató",
+ "openRouterApiKey": "OpenRouter API kulcs",
+ "apiKeyStorageNotice": "Az API kulcsok biztonságosan tárolódnak a VSCode titkos tárolójában",
+ "useCustomBaseUrl": "Egyéni alap URL használata",
+ "openRouterTransformsText": "Promptok és üzenetláncok tömörítése a kontextus méretére (OpenRouter átalakítások )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Böngésző eszköz engedélyezése",
+ "description": "Ha engedélyezve van, a Roo böngészőt használhat weboldalakkal való interakcióhoz olyan modellek használatakor, amelyek támogatják a számítógép használatát."
+ },
+ "viewport": {
+ "label": "Viewport méret",
+ "description": "Válassza ki a viewport méretet a böngésző interakciókhoz. Ez befolyásolja, hogyan jelennek meg és hogyan működnek a weboldalak.",
+ "options": {
+ "largeDesktop": "Nagy asztali (1280x800)",
+ "smallDesktop": "Kis asztali (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobil (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Képernyőkép minőség",
+ "description": "Állítsa be a böngésző képernyőképek WebP minőségét. A magasabb értékek tisztább képernyőképeket biztosítanak, de növelik a token felhasználást."
+ },
+ "remote": {
+ "label": "Távoli böngésző kapcsolat használata",
+ "description": "Csatlakozás egy Chrome böngészőhöz, amely távoli hibakeresés engedélyezésével fut (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Egyéni URL (pl. http://localhost:9222)",
+ "testButton": "Kapcsolat tesztelése",
+ "testingButton": "Tesztelés...",
+ "instructions": "Adja meg a DevTools protokoll gazdagép címét, vagy hagyja üresen a Chrome helyi példányok automatikus felderítéséhez. A Kapcsolat tesztelése gomb megpróbálja használni az egyéni URL-t, ha meg van adva, vagy automatikusan felderíti, ha a mező üres."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Automatikus ellenőrzőpontok engedélyezése",
+ "description": "Ha engedélyezve van, a Roo automatikusan létrehoz ellenőrzőpontokat a feladat végrehajtása során, megkönnyítve a változtatások áttekintését vagy a korábbi állapotokra való visszatérést."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Hangeffektusok engedélyezése",
+ "description": "Ha engedélyezve van, a Roo hangeffektusokat játszik le az értesítésekhez és eseményekhez.",
+ "volumeLabel": "Hangerő"
+ }
+ },
+ "contextManagement": {
+ "description": "Szabályozza, hogy milyen információk szerepelnek az AI kontextus ablakában, ami befolyásolja a token felhasználást és a válasz minőségét",
+ "terminal": {
+ "label": "Terminál kimenet korlát",
+ "description": "A parancsok végrehajtásakor a terminál kimenetben szereplő sorok maximális száma. Túllépéskor a középső sorok eltávolításra kerülnek, tokeneket megtakarítva."
+ },
+ "openTabs": {
+ "label": "Nyitott lapok kontextus korlát",
+ "description": "A kontextusba belefoglalható VSCode nyitott lapok maximális száma. A magasabb értékek több kontextust biztosítanak, de növelik a token felhasználást."
+ },
+ "workspaceFiles": {
+ "label": "Munkaterület fájlok kontextus korlát",
+ "description": "Az aktuális munkakönyvtár részleteiben szerepeltethető fájlok maximális száma. A magasabb értékek több kontextust biztosítanak, de növelik a token felhasználást."
+ },
+ "rooignore": {
+ "label": ".rooignore fájlok megjelenítése a listákban és keresésekben",
+ "description": "Ha engedélyezve van, a .rooignore mintáival egyező fájlok zár szimbólummal jelennek meg a listákban. Ha le van tiltva, ezek a fájlok teljesen el lesznek rejtve a fájllistákból és keresésekből."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Rátakorlátozás",
+ "description": "Minimális idő az API kérések között."
+ },
+ "diff": {
+ "label": "Szerkesztés engedélyezése diff-eken keresztül",
+ "description": "Ha engedélyezve van, a Roo gyorsabban tud fájlokat szerkeszteni, és automatikusan elutasítja a csonkított teljes fájl írásokat. A legjobban a legújabb Claude 3.7 Sonnet modellel működik.",
+ "strategy": {
+ "label": "Diff stratégia",
+ "options": {
+ "standard": "Normál (Egy blokk)",
+ "multiBlock": "Kísérleti: Több blokkos diff",
+ "unified": "Kísérleti: Egyesített diff"
+ },
+ "descriptions": {
+ "standard": "A normál diff stratégia egyszerre egy kódblokkra alkalmazza a változtatásokat.",
+ "unified": "Az egyesített diff stratégia többféle megközelítést alkalmaz a diff-ek alkalmazására, és kiválasztja a legjobb megközelítést.",
+ "multiBlock": "A több blokkos diff stratégia lehetővé teszi több kódblokk frissítését egy fájlban egy kérésben."
+ }
+ },
+ "matchPrecision": {
+ "label": "Egyezési pontosság",
+ "description": "Ez a csúszka szabályozza, mennyire pontosan kell egyeznie a kódszakaszoknak a diff-ek alkalmazásakor. Az alacsonyabb értékek rugalmasabb egyezést tesznek lehetővé, de növelik a hibás helyettesítések kockázatát. A 100% alatti értékeket rendkívüli óvatossággal használja."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Egyéni hőmérséklet használata",
+ "description": "Szabályozza a véletlenszerűséget a modell válaszaiban.",
+ "rangeDescription": "A magasabb értékek véletlenszerűbbé teszik a kimenetet, az alacsonyabb értékek determinisztikusabbá teszik."
+ },
+ "modelInfo": {
+ "supportsImages": "Támogatja a képeket",
+ "noImages": "Nem támogatja a képeket",
+ "supportsComputerUse": "Támogatja a számítógép használatát",
+ "noComputerUse": "Nem támogatja a számítógép használatát",
+ "supportsPromptCache": "Támogatja a prompt gyorsítótárazást",
+ "noPromptCache": "Nem támogatja a prompt gyorsítótárazást",
+ "maxOutput": "Maximális kimenet",
+ "inputPrice": "Bemeneti ár",
+ "outputPrice": "Kimeneti ár",
+ "cacheReadsPrice": "Gyorsítótár olvasások ára",
+ "cacheWritesPrice": "Gyorsítótár írások ára",
+ "gemini": {
+ "freeRequests": "* Ingyenes {{count}} kérésig percenként. Ezután a számlázás a prompt méretétől függ.",
+ "pricingDetails": "További információkért lásd az árazási részleteket."
+ }
+ },
+ "footer": {
+ "feedback": "Ha bármilyen kérdése vagy visszajelzése van, nyugodtan nyisson egy problémát a github.com/RooVetGit/Roo-Code oldalon, vagy csatlakozzon a reddit.com/r/RooCode oldalhoz",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Névtelen hiba- és használati jelentések engedélyezése",
+ "description": "Segítsen a Roo Code fejlesztésében névtelen használati adatok és hibajelentések küldésével. Soha nem küldünk kódot, promptokat vagy személyes információkat. További részletekért lásd adatvédelmi irányelveinket."
+ },
+ "reset": {
+ "description": "A kiterjesztés összes globális állapotának és titkos tárolójának visszaállítása.",
+ "button": "Visszaállítás"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json
new file mode 100644
index 00000000000..38d9c1c1732
--- /dev/null
+++ b/webview-ui/src/i18n/locales/it/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Salva",
+ "done": "Fatto",
+ "cancel": "Annulla",
+ "reset": "Ripristina"
+ },
+ "header": {
+ "title": "Impostazioni",
+ "saveButtonTooltip": "Salva modifiche",
+ "nothingChangedTooltip": "Nessuna modifica",
+ "doneButtonTooltip": "Scarta le modifiche non salvate e chiudi il pannello delle impostazioni"
+ },
+ "unsavedChangesDialog": {
+ "title": "Modifiche non salvate",
+ "description": "Vuoi scartare le modifiche e continuare?",
+ "cancelButton": "Annulla",
+ "discardButton": "Scarta modifiche"
+ },
+ "sections": {
+ "providers": "Fornitori",
+ "autoApprove": "Approvazione automatica",
+ "browser": "Browser / Uso del computer",
+ "checkpoints": "Punti di controllo",
+ "notifications": "Notifiche",
+ "contextManagement": "Gestione del contesto",
+ "advanced": "Avanzate",
+ "experimental": "Funzionalità sperimentali"
+ },
+ "autoApprove": {
+ "description": "Permetti a Roo di eseguire automaticamente operazioni senza richiedere approvazione. Abilita queste impostazioni solo se ti fidi completamente dell'IA e comprendi i rischi di sicurezza associati.",
+ "readOnly": {
+ "label": "Approva sempre operazioni di sola lettura",
+ "description": "Quando abilitato, Roo visualizzerà automaticamente i contenuti della directory e leggerà i file senza richiedere di cliccare sul pulsante Approva."
+ },
+ "write": {
+ "label": "Approva sempre operazioni di scrittura",
+ "description": "Crea e modifica automaticamente i file senza richiedere approvazione",
+ "delayLabel": "Ritardo dopo le scritture per consentire alla diagnostica di rilevare potenziali problemi"
+ },
+ "browser": {
+ "label": "Approva sempre azioni del browser",
+ "description": "Esegui automaticamente azioni del browser senza richiedere approvazione",
+ "note": "Nota: Si applica solo quando il modello supporta l'uso del computer"
+ },
+ "retry": {
+ "label": "Riprova sempre le richieste API fallite",
+ "description": "Riprova automaticamente le richieste API fallite quando il server restituisce una risposta di errore",
+ "delayLabel": "Ritardo prima di riprovare la richiesta"
+ },
+ "mcp": {
+ "label": "Approva sempre strumenti MCP",
+ "description": "Abilita l'approvazione automatica dei singoli strumenti MCP nella vista Server MCP (richiede sia questa impostazione che la casella \"Consenti sempre\" dello strumento)"
+ },
+ "modeSwitch": {
+ "label": "Approva sempre cambi di modalità",
+ "description": "Passa automaticamente tra diverse modalità senza richiedere approvazione"
+ },
+ "subtasks": {
+ "label": "Approva sempre creazione e completamento di attività secondarie",
+ "description": "Consenti la creazione e il completamento di attività secondarie senza richiedere approvazione"
+ },
+ "execute": {
+ "label": "Approva sempre operazioni di esecuzione consentite",
+ "description": "Esegui automaticamente i comandi del terminale consentiti senza richiedere approvazione",
+ "allowedCommands": "Comandi di auto-esecuzione consentiti",
+ "allowedCommandsDescription": "Prefissi di comando che possono essere auto-eseguiti quando \"Approva sempre operazioni di esecuzione\" è abilitato. Aggiungi * per consentire tutti i comandi (usare con cautela).",
+ "commandPlaceholder": "Inserisci prefisso comando (es. 'git ')",
+ "addButton": "Aggiungi"
+ }
+ },
+ "providers": {
+ "configProfile": "Profilo di configurazione",
+ "description": "Descrizione",
+ "apiProvider": "Fornitore API",
+ "openRouterApiKey": "Chiave API OpenRouter",
+ "apiKeyStorageNotice": "Le chiavi API sono memorizzate in modo sicuro nell'Archivio Segreto di VSCode",
+ "useCustomBaseUrl": "Usa URL base personalizzato",
+ "openRouterTransformsText": "Comprimi prompt e catene di messaggi alla dimensione del contesto (Trasformazioni OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Abilita strumento browser",
+ "description": "Quando abilitato, Roo può utilizzare un browser per interagire con siti web quando si utilizzano modelli che supportano l'uso del computer."
+ },
+ "viewport": {
+ "label": "Dimensione viewport",
+ "description": "Seleziona la dimensione del viewport per le interazioni del browser. Questo influisce su come i siti web vengono visualizzati e su come vi si interagisce.",
+ "options": {
+ "largeDesktop": "Desktop grande (1280x800)",
+ "smallDesktop": "Desktop piccolo (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobile (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Qualità screenshot",
+ "description": "Regola la qualità WebP degli screenshot del browser. Valori più alti forniscono screenshot più nitidi ma aumentano l'utilizzo di token."
+ },
+ "remote": {
+ "label": "Usa connessione browser remoto",
+ "description": "Connettiti a un browser Chrome in esecuzione con debug remoto abilitato (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personalizzato (es. http://localhost:9222)",
+ "testButton": "Testa connessione",
+ "testingButton": "Test in corso...",
+ "instructions": "Inserisci l'indirizzo host del protocollo DevTools o lascia vuoto per scoprire automaticamente le istanze Chrome locali. Il pulsante Test Connessione proverà l'URL personalizzato se fornito, o scoprirà automaticamente se il campo è vuoto."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Abilita punti di controllo automatici",
+ "description": "Quando abilitato, Roo creerà automaticamente punti di controllo durante l'esecuzione dei compiti, facilitando la revisione delle modifiche o il ritorno a stati precedenti."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Abilita effetti sonori",
+ "description": "Quando abilitato, Roo riprodurrà effetti sonori per notifiche ed eventi.",
+ "volumeLabel": "Volume"
+ }
+ },
+ "contextManagement": {
+ "description": "Controlla quali informazioni sono incluse nella finestra di contesto dell'IA, influenzando l'utilizzo di token e la qualità delle risposte",
+ "terminal": {
+ "label": "Limite output terminale",
+ "description": "Numero massimo di righe da includere nell'output del terminale durante l'esecuzione dei comandi. Quando superato, le righe verranno rimosse dal centro, risparmiando token."
+ },
+ "openTabs": {
+ "label": "Limite contesto schede aperte",
+ "description": "Numero massimo di schede VSCode aperte da includere nel contesto. Valori più alti forniscono più contesto ma aumentano l'utilizzo di token."
+ },
+ "workspaceFiles": {
+ "label": "Limite contesto file area di lavoro",
+ "description": "Numero massimo di file da includere nei dettagli della directory di lavoro corrente. Valori più alti forniscono più contesto ma aumentano l'utilizzo di token."
+ },
+ "rooignore": {
+ "label": "Mostra file .rooignore negli elenchi e nelle ricerche",
+ "description": "Quando abilitato, i file che corrispondono ai pattern in .rooignore verranno mostrati negli elenchi con un simbolo di blocco. Quando disabilitato, questi file saranno completamente nascosti dagli elenchi di file e dalle ricerche."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Limite di frequenza",
+ "description": "Tempo minimo tra le richieste API."
+ },
+ "diff": {
+ "label": "Abilita modifica tramite diff",
+ "description": "Quando abilitato, Roo sarà in grado di modificare i file più velocemente e rifiuterà automaticamente scritture di file completi troncati. Funziona meglio con l'ultimo modello Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Strategia diff",
+ "options": {
+ "standard": "Standard (Blocco singolo)",
+ "multiBlock": "Sperimentale: Diff multi-blocco",
+ "unified": "Sperimentale: Diff unificato"
+ },
+ "descriptions": {
+ "standard": "La strategia diff standard applica modifiche a un singolo blocco di codice alla volta.",
+ "unified": "La strategia diff unificato adotta diversi approcci per applicare i diff e sceglie il migliore.",
+ "multiBlock": "La strategia diff multi-blocco consente di aggiornare più blocchi di codice in un file in una singola richiesta."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precisione corrispondenza",
+ "description": "Questo cursore controlla quanto precisamente le sezioni di codice devono corrispondere quando si applicano i diff. Valori più bassi consentono corrispondenze più flessibili ma aumentano il rischio di sostituzioni errate. Usa valori inferiori al 100% con estrema cautela."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Usa temperatura personalizzata",
+ "description": "Controlla la casualità nelle risposte del modello.",
+ "rangeDescription": "Valori più alti rendono l'output più casuale, valori più bassi lo rendono più deterministico."
+ },
+ "modelInfo": {
+ "supportsImages": "Supporta immagini",
+ "noImages": "Non supporta immagini",
+ "supportsComputerUse": "Supporta uso del computer",
+ "noComputerUse": "Non supporta uso del computer",
+ "supportsPromptCache": "Supporta cache dei prompt",
+ "noPromptCache": "Non supporta cache dei prompt",
+ "maxOutput": "Output massimo",
+ "inputPrice": "Prezzo input",
+ "outputPrice": "Prezzo output",
+ "cacheReadsPrice": "Prezzo letture cache",
+ "cacheWritesPrice": "Prezzo scritture cache",
+ "gemini": {
+ "freeRequests": "* Gratuito fino a {{count}} richieste al minuto. Dopo, la fatturazione dipende dalla dimensione del prompt.",
+ "pricingDetails": "Per maggiori informazioni, vedi i dettagli sui prezzi."
+ }
+ },
+ "footer": {
+ "feedback": "Se hai domande o feedback, sentiti libero di aprire un issue su github.com/RooVetGit/Roo-Code o unirti a reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Consenti segnalazioni anonime di errori e utilizzo",
+ "description": "Aiuta a migliorare Roo Code inviando dati di utilizzo anonimi e segnalazioni di errori. Non vengono mai inviati codice, prompt o informazioni personali. Consulta la nostra politica sulla privacy per maggiori dettagli."
+ },
+ "reset": {
+ "description": "Reimposta tutti gli stati globali e l'archivio segreto nell'estensione.",
+ "button": "Ripristina"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json
new file mode 100644
index 00000000000..5d446c25398
--- /dev/null
+++ b/webview-ui/src/i18n/locales/ja/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "保存",
+ "done": "完了",
+ "cancel": "キャンセル",
+ "reset": "リセット"
+ },
+ "header": {
+ "title": "設定",
+ "saveButtonTooltip": "変更を保存",
+ "nothingChangedTooltip": "変更なし",
+ "doneButtonTooltip": "未保存の変更を破棄して設定パネルを閉じる"
+ },
+ "unsavedChangesDialog": {
+ "title": "未保存の変更",
+ "description": "変更を破棄して続行しますか?",
+ "cancelButton": "キャンセル",
+ "discardButton": "変更を破棄"
+ },
+ "sections": {
+ "providers": "プロバイダー",
+ "autoApprove": "自動承認",
+ "browser": "ブラウザ / コンピューター使用",
+ "checkpoints": "チェックポイント",
+ "notifications": "通知",
+ "contextManagement": "コンテキスト管理",
+ "advanced": "詳細設定",
+ "experimental": "実験的機能"
+ },
+ "autoApprove": {
+ "description": "Rooが承認なしで自動的に操作を実行できるようにします。AIを完全に信頼し、関連するセキュリティリスクを理解している場合にのみ、これらの設定を有効にしてください。",
+ "readOnly": {
+ "label": "読み取り専用操作を常に承認",
+ "description": "有効にすると、Rooは承認ボタンをクリックすることなく、自動的にディレクトリの内容を表示してファイルを読み取ります。"
+ },
+ "write": {
+ "label": "書き込み操作を常に承認",
+ "description": "承認なしで自動的にファイルを作成・編集",
+ "delayLabel": "診断が潜在的な問題を検出できるよう、書き込み後に遅延を設ける"
+ },
+ "browser": {
+ "label": "ブラウザアクションを常に承認",
+ "description": "承認なしで自動的にブラウザアクションを実行",
+ "note": "注意:コンピューター使用をサポートするモデルを使用している場合のみ適用されます"
+ },
+ "retry": {
+ "label": "失敗したAPIリクエストを常に再試行",
+ "description": "サーバーがエラーレスポンスを返した場合、自動的に失敗したAPIリクエストを再試行",
+ "delayLabel": "リクエスト再試行前の遅延"
+ },
+ "mcp": {
+ "label": "MCPツールを常に承認",
+ "description": "MCPサーバービューで個々のMCPツールの自動承認を有効にします(この設定とツールの「常に許可」チェックボックスの両方が必要)"
+ },
+ "modeSwitch": {
+ "label": "モード切り替えを常に承認",
+ "description": "承認なしで自動的に異なるモード間を切り替え"
+ },
+ "subtasks": {
+ "label": "サブタスクの作成と完了を常に承認",
+ "description": "承認なしでサブタスクの作成と完了を許可"
+ },
+ "execute": {
+ "label": "許可された実行操作を常に承認",
+ "description": "承認なしで自動的に許可されたターミナルコマンドを実行",
+ "allowedCommands": "許可された自動実行コマンド",
+ "allowedCommandsDescription": "「実行操作を常に承認」が有効な場合に自動実行できるコマンドプレフィックス。すべてのコマンドを許可するには * を追加します(注意して使用してください)。",
+ "commandPlaceholder": "コマンドプレフィックスを入力(例:'git ')",
+ "addButton": "追加"
+ }
+ },
+ "providers": {
+ "configProfile": "設定プロファイル",
+ "description": "説明",
+ "apiProvider": "APIプロバイダー",
+ "openRouterApiKey": "OpenRouter APIキー",
+ "apiKeyStorageNotice": "APIキーはVSCodeのシークレットストレージに安全に保存されます",
+ "useCustomBaseUrl": "カスタムベースURLを使用",
+ "openRouterTransformsText": "プロンプトとメッセージチェーンをコンテキストサイズに圧縮(OpenRouter変換 )"
+ },
+ "browser": {
+ "enable": {
+ "label": "ブラウザツールを有効化",
+ "description": "有効にすると、コンピューター使用をサポートするモデルを使用する際に、Rooはウェブサイトとのやり取りにブラウザを使用できます。"
+ },
+ "viewport": {
+ "label": "ビューポートサイズ",
+ "description": "ブラウザインタラクションのビューポートサイズを選択します。これはウェブサイトの表示方法とインタラクション方法に影響します。",
+ "options": {
+ "largeDesktop": "大型デスクトップ (1280x800)",
+ "smallDesktop": "小型デスクトップ (900x600)",
+ "tablet": "タブレット (768x1024)",
+ "mobile": "モバイル (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "スクリーンショット品質",
+ "description": "ブラウザスクリーンショットのWebP品質を調整します。高い値はより鮮明なスクリーンショットを提供しますが、token使用量が増加します。"
+ },
+ "remote": {
+ "label": "リモートブラウザ接続を使用",
+ "description": "リモートデバッグを有効にして実行しているChromeブラウザに接続します(--remote-debugging-port=9222)。",
+ "urlPlaceholder": "カスタムURL(例:http://localhost:9222)",
+ "testButton": "接続テスト",
+ "testingButton": "テスト中...",
+ "instructions": "DevToolsプロトコルホストアドレスを入力するか、Chromeのローカルインスタンスを自動検出するために空のままにします。接続テストボタンは、提供されている場合はカスタムURLを試み、フィールドが空の場合は自動検出します。"
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "自動チェックポイントを有効化",
+ "description": "有効にすると、Rooはタスク実行中に自動的にチェックポイントを作成し、変更の確認や以前の状態への復帰を容易にします。"
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "サウンドエフェクトを有効化",
+ "description": "有効にすると、Rooは通知やイベントのためにサウンドエフェクトを再生します。",
+ "volumeLabel": "音量"
+ }
+ },
+ "contextManagement": {
+ "description": "AIのコンテキストウィンドウに含まれる情報を制御し、token使用量とレスポンスの品質に影響します",
+ "terminal": {
+ "label": "ターミナル出力制限",
+ "description": "コマンド実行時にターミナル出力に含める最大行数。超過すると中央から行が削除され、tokenを節約します。"
+ },
+ "openTabs": {
+ "label": "オープンタブコンテキスト制限",
+ "description": "コンテキストに含めるVSCodeオープンタブの最大数。高い値はより多くのコンテキストを提供しますが、token使用量が増加します。"
+ },
+ "workspaceFiles": {
+ "label": "ワークスペースファイルコンテキスト制限",
+ "description": "現在の作業ディレクトリの詳細に含めるファイルの最大数。高い値はより多くのコンテキストを提供しますが、token使用量が増加します。"
+ },
+ "rooignore": {
+ "label": "リストと検索で.rooignoreファイルを表示",
+ "description": "有効にすると、.rooignoreのパターンに一致するファイルがロックシンボル付きでリストに表示されます。無効にすると、これらのファイルはファイルリストや検索から完全に非表示になります。"
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "レート制限",
+ "description": "APIリクエスト間の最小時間。"
+ },
+ "diff": {
+ "label": "diff経由の編集を有効化",
+ "description": "有効にすると、Rooはファイルをより迅速に編集でき、切り詰められた全ファイル書き込みを自動的に拒否します。最新のClaude 3.7 Sonnetモデルで最良に機能します。",
+ "strategy": {
+ "label": "Diff戦略",
+ "options": {
+ "standard": "標準(単一ブロック)",
+ "multiBlock": "実験的:マルチブロックdiff",
+ "unified": "実験的:統合diff"
+ },
+ "descriptions": {
+ "standard": "標準diff戦略は一度に1つのコードブロックに変更を適用します。",
+ "unified": "統合diff戦略はdiffを適用するための複数のアプローチを取り、最良のアプローチを選択します。",
+ "multiBlock": "マルチブロックdiff戦略は、1つのリクエストでファイル内の複数のコードブロックを更新できます。"
+ }
+ },
+ "matchPrecision": {
+ "label": "マッチ精度",
+ "description": "このスライダーは、diffを適用する際にコードセクションがどれだけ正確に一致する必要があるかを制御します。低い値はより柔軟なマッチングを可能にしますが、誤った置換のリスクが高まります。100%未満の値は細心の注意を払って使用してください。"
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "カスタム温度を使用",
+ "description": "モデルの応答のランダム性を制御します。",
+ "rangeDescription": "高い値は出力をよりランダムに、低い値はより決定論的にします。"
+ },
+ "modelInfo": {
+ "supportsImages": "画像をサポート",
+ "noImages": "画像をサポートしていません",
+ "supportsComputerUse": "コンピューター使用をサポート",
+ "noComputerUse": "コンピューター使用をサポートしていません",
+ "supportsPromptCache": "プロンプトキャッシュをサポート",
+ "noPromptCache": "プロンプトキャッシュをサポートしていません",
+ "maxOutput": "最大出力",
+ "inputPrice": "入力価格",
+ "outputPrice": "出力価格",
+ "cacheReadsPrice": "キャッシュ読み取り価格",
+ "cacheWritesPrice": "キャッシュ書き込み価格",
+ "gemini": {
+ "freeRequests": "* 毎分{{count}}リクエストまで無料。それ以降は、プロンプトサイズに応じて課金されます。",
+ "pricingDetails": "詳細については、価格詳細をご覧ください。"
+ }
+ },
+ "footer": {
+ "feedback": "質問やフィードバックがある場合は、github.com/RooVetGit/Roo-Codeで問題を開くか、reddit.com/r/RooCodeに参加してください",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "匿名のエラーと使用状況レポートを許可",
+ "description": "匿名の使用データとエラーレポートを送信してRoo Codeの改善にご協力ください。コード、プロンプト、個人情報が送信されることはありません。詳細については、プライバシーポリシーをご覧ください。"
+ },
+ "reset": {
+ "description": "拡張機能内のすべてのグローバル状態とシークレットストレージをリセットします。",
+ "button": "リセット"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json
new file mode 100644
index 00000000000..32b0a0d273c
--- /dev/null
+++ b/webview-ui/src/i18n/locales/ko/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "저장",
+ "done": "완료",
+ "cancel": "취소",
+ "reset": "초기화"
+ },
+ "header": {
+ "title": "설정",
+ "saveButtonTooltip": "변경 사항 저장",
+ "nothingChangedTooltip": "변경 사항 없음",
+ "doneButtonTooltip": "저장되지 않은 변경 사항을 버리고 설정 패널 닫기"
+ },
+ "unsavedChangesDialog": {
+ "title": "저장되지 않은 변경 사항",
+ "description": "변경 사항을 버리고 계속하시겠습니까?",
+ "cancelButton": "취소",
+ "discardButton": "변경 사항 버리기"
+ },
+ "sections": {
+ "providers": "공급자",
+ "autoApprove": "자동 승인",
+ "browser": "브라우저 / 컴퓨터 사용",
+ "checkpoints": "체크포인트",
+ "notifications": "알림",
+ "contextManagement": "컨텍스트 관리",
+ "advanced": "고급",
+ "experimental": "실험적 기능"
+ },
+ "autoApprove": {
+ "description": "Roo가 승인 없이 자동으로 작업을 수행할 수 있도록 허용합니다. AI를 완전히 신뢰하고 관련 보안 위험을 이해하는 경우에만 이러한 설정을 활성화하세요.",
+ "readOnly": {
+ "label": "읽기 전용 작업 항상 승인",
+ "description": "활성화되면 Roo는 승인 버튼을 클릭하지 않고도 자동으로 디렉토리 내용을 보고 파일을 읽습니다."
+ },
+ "write": {
+ "label": "쓰기 작업 항상 승인",
+ "description": "승인 없이 자동으로 파일 생성 및 편집",
+ "delayLabel": "진단이 잠재적 문제를 감지할 수 있도록 쓰기 후 지연"
+ },
+ "browser": {
+ "label": "브라우저 작업 항상 승인",
+ "description": "승인 없이 자동으로 브라우저 작업 수행",
+ "note": "참고: 모델이 컴퓨터 사용을 지원할 때만 적용됩니다"
+ },
+ "retry": {
+ "label": "실패한 API 요청 항상 재시도",
+ "description": "서버가 오류 응답을 반환할 때 자동으로 실패한 API 요청 재시도",
+ "delayLabel": "요청 재시도 전 지연"
+ },
+ "mcp": {
+ "label": "MCP 도구 항상 승인",
+ "description": "MCP 서버 보기에서 개별 MCP 도구의 자동 승인 활성화(이 설정과 도구의 \"항상 허용\" 체크박스 모두 필요)"
+ },
+ "modeSwitch": {
+ "label": "모드 전환 항상 승인",
+ "description": "승인 없이 자동으로 다양한 모드 간 전환"
+ },
+ "subtasks": {
+ "label": "하위 작업 생성 및 완료 항상 승인",
+ "description": "승인 없이 하위 작업 생성 및 완료 허용"
+ },
+ "execute": {
+ "label": "허용된 실행 작업 항상 승인",
+ "description": "승인 없이 자동으로 허용된 터미널 명령 실행",
+ "allowedCommands": "허용된 자동 실행 명령",
+ "allowedCommandsDescription": "\"실행 작업 항상 승인\"이 활성화되었을 때 자동 실행될 수 있는 명령 접두사. 모든 명령을 허용하려면 * 추가(주의해서 사용)",
+ "commandPlaceholder": "명령 접두사 입력(예: 'git ')",
+ "addButton": "추가"
+ }
+ },
+ "providers": {
+ "configProfile": "구성 프로필",
+ "description": "설명",
+ "apiProvider": "API 공급자",
+ "openRouterApiKey": "OpenRouter API 키",
+ "apiKeyStorageNotice": "API 키는 VSCode의 보안 저장소에 안전하게 저장됩니다",
+ "useCustomBaseUrl": "사용자 정의 기본 URL 사용",
+ "openRouterTransformsText": "프롬프트 및 메시지 체인을 컨텍스트 크기로 압축(OpenRouter 변환 )"
+ },
+ "browser": {
+ "enable": {
+ "label": "브라우저 도구 활성화",
+ "description": "활성화되면 Roo는 컴퓨터 사용을 지원하는 모델을 사용할 때 웹사이트와 상호 작용하기 위해 브라우저를 사용할 수 있습니다."
+ },
+ "viewport": {
+ "label": "뷰포트 크기",
+ "description": "브라우저 상호 작용을 위한 뷰포트 크기를 선택하세요. 이는 웹사이트가 표시되고 상호 작용하는 방식에 영향을 미칩니다.",
+ "options": {
+ "largeDesktop": "대형 데스크톱 (1280x800)",
+ "smallDesktop": "소형 데스크톱 (900x600)",
+ "tablet": "태블릿 (768x1024)",
+ "mobile": "모바일 (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "스크린샷 품질",
+ "description": "브라우저 스크린샷의 WebP 품질을 조정합니다. 높은 값은 더 선명한 스크린샷을 제공하지만 token 사용량이 증가합니다."
+ },
+ "remote": {
+ "label": "원격 브라우저 연결 사용",
+ "description": "원격 디버깅이 활성화된 Chrome 브라우저에 연결합니다(--remote-debugging-port=9222).",
+ "urlPlaceholder": "사용자 정의 URL(예: http://localhost:9222)",
+ "testButton": "연결 테스트",
+ "testingButton": "테스트 중...",
+ "instructions": "DevTools 프로토콜 호스트 주소를 입력하거나 Chrome 로컬 인스턴스를 자동으로 발견하기 위해 비워두세요. 연결 테스트 버튼은 제공된 경우 사용자 정의 URL을 시도하거나, 필드가 비어 있으면 자동으로 발견합니다."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "자동 체크포인트 활성화",
+ "description": "활성화되면 Roo는 작업 실행 중에 자동으로 체크포인트를 생성하여 변경 사항을 검토하거나 이전 상태로 되돌리기 쉽게 합니다."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "사운드 효과 활성화",
+ "description": "활성화되면 Roo는 알림 및 이벤트에 대한 사운드 효과를 재생합니다.",
+ "volumeLabel": "볼륨"
+ }
+ },
+ "contextManagement": {
+ "description": "AI의 컨텍스트 창에 포함되는 정보를 제어하여 token 사용량과 응답 품질에 영향을 미칩니다",
+ "terminal": {
+ "label": "터미널 출력 제한",
+ "description": "명령 실행 시 터미널 출력에 포함할 최대 라인 수. 초과 시 중간에서 라인이 제거되어 token이 절약됩니다."
+ },
+ "openTabs": {
+ "label": "열린 탭 컨텍스트 제한",
+ "description": "컨텍스트에 포함할 VSCode 열린 탭의 최대 수. 높은 값은 더 많은 컨텍스트를 제공하지만 token 사용량이 증가합니다."
+ },
+ "workspaceFiles": {
+ "label": "작업 공간 파일 컨텍스트 제한",
+ "description": "현재 작업 디렉토리 세부 정보에 포함할 파일의 최대 수. 높은 값은 더 많은 컨텍스트를 제공하지만 token 사용량이 증가합니다."
+ },
+ "rooignore": {
+ "label": "목록 및 검색에서 .rooignore 파일 표시",
+ "description": "활성화되면 .rooignore의 패턴과 일치하는 파일이 잠금 기호와 함께 목록에 표시됩니다. 비활성화되면 이러한 파일은 파일 목록 및 검색에서 완전히 숨겨집니다."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "속도 제한",
+ "description": "API 요청 간 최소 시간."
+ },
+ "diff": {
+ "label": "diff를 통한 편집 활성화",
+ "description": "활성화되면 Roo는 파일을 더 빠르게 편집할 수 있으며 잘린 전체 파일 쓰기를 자동으로 거부합니다. 최신 Claude 3.7 Sonnet 모델에서 가장 잘 작동합니다.",
+ "strategy": {
+ "label": "Diff 전략",
+ "options": {
+ "standard": "표준(단일 블록)",
+ "multiBlock": "실험적: 다중 블록 diff",
+ "unified": "실험적: 통합 diff"
+ },
+ "descriptions": {
+ "standard": "표준 diff 전략은 한 번에 하나의 코드 블록에 변경 사항을 적용합니다.",
+ "unified": "통합 diff 전략은 diff를 적용하는 여러 접근 방식을 취하고 최상의 접근 방식을 선택합니다.",
+ "multiBlock": "다중 블록 diff 전략은 하나의 요청으로 파일의 여러 코드 블록을 업데이트할 수 있습니다."
+ }
+ },
+ "matchPrecision": {
+ "label": "일치 정확도",
+ "description": "이 슬라이더는 diff를 적용할 때 코드 섹션이 얼마나 정확하게 일치해야 하는지 제어합니다. 낮은 값은 더 유연한 일치를 허용하지만 잘못된 교체 위험이 증가합니다. 100% 미만의 값은 극도로 주의해서 사용하세요."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "사용자 정의 온도 사용",
+ "description": "모델 응답의 무작위성을 제어합니다.",
+ "rangeDescription": "높은 값은 출력을 더 무작위하게, 낮은 값은 더 결정적으로 만듭니다."
+ },
+ "modelInfo": {
+ "supportsImages": "이미지 지원",
+ "noImages": "이미지 지원 안 함",
+ "supportsComputerUse": "컴퓨터 사용 지원",
+ "noComputerUse": "컴퓨터 사용 지원 안 함",
+ "supportsPromptCache": "프롬프트 캐싱 지원",
+ "noPromptCache": "프롬프트 캐싱 지원 안 함",
+ "maxOutput": "최대 출력",
+ "inputPrice": "입력 가격",
+ "outputPrice": "출력 가격",
+ "cacheReadsPrice": "캐시 읽기 가격",
+ "cacheWritesPrice": "캐시 쓰기 가격",
+ "gemini": {
+ "freeRequests": "* 분당 {{count}}개 요청까지 무료. 이후에는 프롬프트 크기에 따라 요금이 부과됩니다.",
+ "pricingDetails": "자세한 내용은 가격 책정 세부 정보를 참조하세요."
+ }
+ },
+ "footer": {
+ "feedback": "질문이나 피드백이 있으시면 github.com/RooVetGit/Roo-Code에서 이슈를 열거나 reddit.com/r/RooCode에 가입하세요",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "익명 오류 및 사용 보고 허용",
+ "description": "익명 사용 데이터 및 오류 보고서를 보내 Roo Code 개선에 도움을 주세요. 코드, 프롬프트 또는 개인 정보는 절대 전송되지 않습니다. 자세한 내용은 개인정보 보호정책을 참조하세요."
+ },
+ "reset": {
+ "description": "확장 프로그램의 모든 전역 상태 및 보안 저장소를 재설정합니다.",
+ "button": "초기화"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json
new file mode 100644
index 00000000000..e30d8fa814f
--- /dev/null
+++ b/webview-ui/src/i18n/locales/pl/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Zapisz",
+ "done": "Gotowe",
+ "cancel": "Anuluj",
+ "reset": "Resetuj"
+ },
+ "header": {
+ "title": "Ustawienia",
+ "saveButtonTooltip": "Zapisz zmiany",
+ "nothingChangedTooltip": "Nic się nie zmieniło",
+ "doneButtonTooltip": "Odrzuć niezapisane zmiany i zamknij panel ustawień"
+ },
+ "unsavedChangesDialog": {
+ "title": "Niezapisane zmiany",
+ "description": "Czy chcesz odrzucić zmiany i kontynuować?",
+ "cancelButton": "Anuluj",
+ "discardButton": "Odrzuć zmiany"
+ },
+ "sections": {
+ "providers": "Dostawcy",
+ "autoApprove": "Automatyczne zatwierdzanie",
+ "browser": "Przeglądarka / Użycie komputera",
+ "checkpoints": "Punkty kontrolne",
+ "notifications": "Powiadomienia",
+ "contextManagement": "Zarządzanie kontekstem",
+ "advanced": "Zaawansowane",
+ "experimental": "Funkcje eksperymentalne"
+ },
+ "autoApprove": {
+ "description": "Pozwól Roo na automatyczne wykonywanie operacji bez wymagania zatwierdzenia. Włącz te ustawienia tylko jeśli w pełni ufasz AI i rozumiesz związane z tym zagrożenia bezpieczeństwa.",
+ "readOnly": {
+ "label": "Zawsze zatwierdzaj operacje tylko do odczytu",
+ "description": "Gdy włączone, Roo automatycznie będzie wyświetlać zawartość katalogów i czytać pliki bez konieczności klikania przycisku Zatwierdź."
+ },
+ "write": {
+ "label": "Zawsze zatwierdzaj operacje zapisu",
+ "description": "Automatycznie twórz i edytuj pliki bez konieczności zatwierdzania",
+ "delayLabel": "Opóźnienie po zapisach, aby umożliwić diagnostyce wykrycie potencjalnych problemów"
+ },
+ "browser": {
+ "label": "Zawsze zatwierdzaj akcje przeglądarki",
+ "description": "Automatycznie wykonuj akcje przeglądarki bez konieczności zatwierdzania",
+ "note": "Uwaga: Dotyczy tylko gdy model obsługuje używanie komputera"
+ },
+ "retry": {
+ "label": "Zawsze ponawiaj nieudane żądania API",
+ "description": "Automatycznie ponawiaj nieudane żądania API, gdy serwer zwraca odpowiedź z błędem",
+ "delayLabel": "Opóźnienie przed ponowieniem żądania"
+ },
+ "mcp": {
+ "label": "Zawsze zatwierdzaj narzędzia MCP",
+ "description": "Włącz automatyczne zatwierdzanie poszczególnych narzędzi MCP w widoku Serwerów MCP (wymaga zarówno tego ustawienia, jak i pola wyboru \"Zawsze zezwalaj\" narzędzia)"
+ },
+ "modeSwitch": {
+ "label": "Zawsze zatwierdzaj przełączanie trybów",
+ "description": "Automatycznie przełączaj między różnymi trybami bez konieczności zatwierdzania"
+ },
+ "subtasks": {
+ "label": "Zawsze zatwierdzaj tworzenie i ukończenie podzadań",
+ "description": "Zezwalaj na tworzenie i ukończenie podzadań bez konieczności zatwierdzania"
+ },
+ "execute": {
+ "label": "Zawsze zatwierdzaj dozwolone operacje wykonania",
+ "description": "Automatycznie wykonuj dozwolone polecenia terminala bez konieczności zatwierdzania",
+ "allowedCommands": "Dozwolone polecenia auto-wykonania",
+ "allowedCommandsDescription": "Prefiksy poleceń, które mogą być automatycznie wykonywane, gdy \"Zawsze zatwierdzaj operacje wykonania\" jest włączone. Dodaj * aby zezwolić na wszystkie polecenia (używaj z ostrożnością).",
+ "commandPlaceholder": "Wprowadź prefiks polecenia (np. 'git ')",
+ "addButton": "Dodaj"
+ }
+ },
+ "providers": {
+ "configProfile": "Profil konfiguracji",
+ "description": "Opis",
+ "apiProvider": "Dostawca API",
+ "openRouterApiKey": "Klucz API OpenRouter",
+ "apiKeyStorageNotice": "Klucze API są bezpiecznie przechowywane w Tajnym Magazynie VSCode",
+ "useCustomBaseUrl": "Użyj niestandardowego URL bazowego",
+ "openRouterTransformsText": "Kompresuj podpowiedzi i łańcuchy wiadomości do rozmiaru kontekstu (Transformacje OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Włącz narzędzie przeglądarki",
+ "description": "Gdy włączone, Roo może używać przeglądarki do interakcji ze stronami internetowymi podczas korzystania z modeli obsługujących używanie komputera."
+ },
+ "viewport": {
+ "label": "Rozmiar viewportu",
+ "description": "Wybierz rozmiar viewportu dla interakcji przeglądarki. Wpływa to na sposób wyświetlania stron internetowych i interakcji z nimi.",
+ "options": {
+ "largeDesktop": "Duży pulpit (1280x800)",
+ "smallDesktop": "Mały pulpit (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Telefon (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Jakość zrzutów ekranu",
+ "description": "Dostosuj jakość WebP zrzutów ekranu przeglądarki. Wyższe wartości zapewniają wyraźniejsze zrzuty ekranu, ale zwiększają zużycie token."
+ },
+ "remote": {
+ "label": "Użyj zdalnego połączenia przeglądarki",
+ "description": "Połącz się z przeglądarką Chrome uruchomioną z włączonym zdalnym debugowaniem (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Niestandardowy URL (np. http://localhost:9222)",
+ "testButton": "Testuj połączenie",
+ "testingButton": "Testowanie...",
+ "instructions": "Wprowadź adres hosta protokołu DevTools lub pozostaw puste, aby automatycznie wykryć lokalne instancje Chrome. Przycisk Test Połączenia spróbuje użyć niestandardowego URL, jeśli podany, lub automatycznie wykryje, jeśli pole jest puste."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Włącz automatyczne punkty kontrolne",
+ "description": "Gdy włączone, Roo automatycznie utworzy punkty kontrolne podczas wykonywania zadań, ułatwiając przeglądanie zmian lub powrót do wcześniejszych stanów."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Włącz efekty dźwiękowe",
+ "description": "Gdy włączone, Roo będzie odtwarzać efekty dźwiękowe dla powiadomień i zdarzeń.",
+ "volumeLabel": "Głośność"
+ }
+ },
+ "contextManagement": {
+ "description": "Kontroluj, jakie informacje są zawarte w oknie kontekstu AI, wpływając na zużycie token i jakość odpowiedzi",
+ "terminal": {
+ "label": "Limit wyjścia terminala",
+ "description": "Maksymalna liczba linii do uwzględnienia w wyjściu terminala podczas wykonywania poleceń. Po przekroczeniu linie będą usuwane ze środka, oszczędzając token."
+ },
+ "openTabs": {
+ "label": "Limit kontekstu otwartych kart",
+ "description": "Maksymalna liczba otwartych kart VSCode do uwzględnienia w kontekście. Wyższe wartości zapewniają więcej kontekstu, ale zwiększają zużycie token."
+ },
+ "workspaceFiles": {
+ "label": "Limit kontekstu plików obszaru roboczego",
+ "description": "Maksymalna liczba plików do uwzględnienia w szczegółach bieżącego katalogu roboczego. Wyższe wartości zapewniają więcej kontekstu, ale zwiększają zużycie token."
+ },
+ "rooignore": {
+ "label": "Pokaż pliki .rooignore na listach i w wyszukiwaniach",
+ "description": "Gdy włączone, pliki pasujące do wzorców w .rooignore będą pokazywane na listach z symbolem kłódki. Gdy wyłączone, te pliki będą całkowicie ukryte z list plików i wyszukiwań."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Limit szybkości",
+ "description": "Minimalny czas między żądaniami API."
+ },
+ "diff": {
+ "label": "Włącz edycję przez różnice",
+ "description": "Gdy włączone, Roo będzie w stanie edytować pliki szybciej i automatycznie odrzuci obcięte pełne zapisy plików. Działa najlepiej z najnowszym modelem Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Strategia diff",
+ "options": {
+ "standard": "Standardowa (Pojedynczy blok)",
+ "multiBlock": "Eksperymentalna: Diff wieloblokowy",
+ "unified": "Eksperymentalna: Diff ujednolicony"
+ },
+ "descriptions": {
+ "standard": "Standardowa strategia diff stosuje zmiany do jednego bloku kodu na raz.",
+ "unified": "Strategia diff ujednoliconego stosuje wiele podejść do zastosowania różnic i wybiera najlepsze podejście.",
+ "multiBlock": "Strategia diff wieloblokowego pozwala na aktualizację wielu bloków kodu w pliku w jednym żądaniu."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precyzja dopasowania",
+ "description": "Ten suwak kontroluje, jak dokładnie sekcje kodu muszą pasować podczas stosowania różnic. Niższe wartości umożliwiają bardziej elastyczne dopasowywanie, ale zwiększają ryzyko nieprawidłowych zamian. Używaj wartości poniżej 100% z najwyższą ostrożnością."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Użyj niestandardowej temperatury",
+ "description": "Kontroluje losowość w odpowiedziach modelu.",
+ "rangeDescription": "Wyższe wartości sprawiają, że wyjście jest bardziej losowe, niższe wartości czynią je bardziej deterministycznym."
+ },
+ "modelInfo": {
+ "supportsImages": "Obsługuje obrazy",
+ "noImages": "Nie obsługuje obrazów",
+ "supportsComputerUse": "Obsługuje użycie komputera",
+ "noComputerUse": "Nie obsługuje użycia komputera",
+ "supportsPromptCache": "Obsługuje buforowanie podpowiedzi",
+ "noPromptCache": "Nie obsługuje buforowania podpowiedzi",
+ "maxOutput": "Maksymalne wyjście",
+ "inputPrice": "Cena wejścia",
+ "outputPrice": "Cena wyjścia",
+ "cacheReadsPrice": "Cena odczytów bufora",
+ "cacheWritesPrice": "Cena zapisów bufora",
+ "gemini": {
+ "freeRequests": "* Darmowe do {{count}} zapytań na minutę. Po tym, rozliczanie zależy od rozmiaru podpowiedzi.",
+ "pricingDetails": "Więcej informacji znajdziesz w szczegółach cennika."
+ }
+ },
+ "footer": {
+ "feedback": "Jeśli masz jakiekolwiek pytania lub opinie, śmiało otwórz zgłoszenie na github.com/RooVetGit/Roo-Code lub dołącz do reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Zezwól na anonimowe raportowanie błędów i użycia",
+ "description": "Pomóż ulepszyć Roo Code, wysyłając anonimowe dane o użytkowaniu i raporty o błędach. Nigdy nie są wysyłane kod, podpowiedzi ani informacje osobiste. Zobacz naszą politykę prywatności, aby uzyskać więcej szczegółów."
+ },
+ "reset": {
+ "description": "Zresetuj wszystkie globalne stany i tajne magazyny w rozszerzeniu.",
+ "button": "Resetuj"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json
new file mode 100644
index 00000000000..51e199867d6
--- /dev/null
+++ b/webview-ui/src/i18n/locales/pt-BR/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Salvar",
+ "done": "Concluído",
+ "cancel": "Cancelar",
+ "reset": "Redefinir"
+ },
+ "header": {
+ "title": "Configurações",
+ "saveButtonTooltip": "Salvar alterações",
+ "nothingChangedTooltip": "Nada alterado",
+ "doneButtonTooltip": "Descartar alterações não salvas e fechar o painel de configurações"
+ },
+ "unsavedChangesDialog": {
+ "title": "Alterações não salvas",
+ "description": "Deseja descartar as alterações e continuar?",
+ "cancelButton": "Cancelar",
+ "discardButton": "Descartar alterações"
+ },
+ "sections": {
+ "providers": "Provedores",
+ "autoApprove": "Aprovação automática",
+ "browser": "Navegador / Uso do computador",
+ "checkpoints": "Pontos de verificação",
+ "notifications": "Notificações",
+ "contextManagement": "Gestão de contexto",
+ "advanced": "Avançado",
+ "experimental": "Recursos experimentais"
+ },
+ "autoApprove": {
+ "description": "Permitir que o Roo realize operações automaticamente sem exigir aprovação. Ative essas configurações apenas se confiar totalmente na IA e compreender os riscos de segurança associados.",
+ "readOnly": {
+ "label": "Aprovar sempre operações somente de leitura",
+ "description": "Quando ativado, o Roo visualizará automaticamente o conteúdo do diretório e lerá arquivos sem que você precise clicar no botão Aprovar."
+ },
+ "write": {
+ "label": "Aprovar sempre operações de escrita",
+ "description": "Criar e editar arquivos automaticamente sem exigir aprovação",
+ "delayLabel": "Atraso após escritas para permitir que diagnósticos detectem problemas potenciais"
+ },
+ "browser": {
+ "label": "Aprovar sempre ações do navegador",
+ "description": "Realizar ações do navegador automaticamente sem exigir aprovação",
+ "note": "Nota: Aplica-se apenas quando o modelo suporta uso do computador"
+ },
+ "retry": {
+ "label": "Sempre tentar novamente requisições de API com falha",
+ "description": "Tentar novamente automaticamente requisições de API com falha quando o servidor retorna uma resposta de erro",
+ "delayLabel": "Atraso antes de tentar novamente a requisição"
+ },
+ "mcp": {
+ "label": "Aprovar sempre ferramentas MCP",
+ "description": "Ativar aprovação automática de ferramentas MCP individuais na visualização de Servidores MCP (requer tanto esta configuração quanto a caixa de seleção \"Permitir sempre\" da ferramenta)"
+ },
+ "modeSwitch": {
+ "label": "Aprovar sempre troca de modos",
+ "description": "Alternar automaticamente entre diferentes modos sem exigir aprovação"
+ },
+ "subtasks": {
+ "label": "Aprovar sempre criação e conclusão de subtarefas",
+ "description": "Permitir a criação e conclusão de subtarefas sem exigir aprovação"
+ },
+ "execute": {
+ "label": "Aprovar sempre operações de execução permitidas",
+ "description": "Executar automaticamente comandos de terminal permitidos sem exigir aprovação",
+ "allowedCommands": "Comandos de auto-execução permitidos",
+ "allowedCommandsDescription": "Prefixos de comando que podem ser auto-executados quando \"Aprovar sempre operações de execução\" está ativado. Adicione * para permitir todos os comandos (use com cautela).",
+ "commandPlaceholder": "Digite o prefixo do comando (ex. 'git ')",
+ "addButton": "Adicionar"
+ }
+ },
+ "providers": {
+ "configProfile": "Perfil de configuração",
+ "description": "Descrição",
+ "apiProvider": "Provedor de API",
+ "openRouterApiKey": "Chave de API OpenRouter",
+ "apiKeyStorageNotice": "As chaves de API são armazenadas com segurança no Armazenamento Secreto do VSCode",
+ "useCustomBaseUrl": "Usar URL base personalizado",
+ "openRouterTransformsText": "Comprimir prompts e cadeias de mensagens para o tamanho do contexto (Transformações OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Ativar ferramenta de navegador",
+ "description": "Quando ativado, o Roo pode usar um navegador para interagir com sites ao usar modelos que suportam o uso do computador."
+ },
+ "viewport": {
+ "label": "Tamanho da viewport",
+ "description": "Selecione o tamanho da viewport para interações do navegador. Isso afeta como os sites são exibidos e como se interage com eles.",
+ "options": {
+ "largeDesktop": "Desktop grande (1280x800)",
+ "smallDesktop": "Desktop pequeno (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Móvel (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Qualidade das capturas de tela",
+ "description": "Ajuste a qualidade WebP das capturas de tela do navegador. Valores mais altos fornecem capturas mais nítidas, mas aumentam o uso de token."
+ },
+ "remote": {
+ "label": "Usar conexão remota de navegador",
+ "description": "Conectar a um navegador Chrome executando com depuração remota ativada (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personalizado (ex. http://localhost:9222)",
+ "testButton": "Testar conexão",
+ "testingButton": "Testando...",
+ "instructions": "Digite o endereço do host do protocolo DevTools ou deixe em branco para descobrir automaticamente instâncias locais do Chrome. O botão Testar Conexão tentará usar o URL personalizado, se fornecido, ou descobrirá automaticamente se o campo estiver vazio."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Ativar pontos de verificação automáticos",
+ "description": "Quando ativado, o Roo criará automaticamente pontos de verificação durante a execução de tarefas, facilitando a revisão de alterações ou o retorno a estados anteriores."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Ativar efeitos sonoros",
+ "description": "Quando ativado, o Roo reproduzirá efeitos sonoros para notificações e eventos.",
+ "volumeLabel": "Volume"
+ }
+ },
+ "contextManagement": {
+ "description": "Controle quais informações são incluídas na janela de contexto da IA, afetando o uso de token e a qualidade da resposta",
+ "terminal": {
+ "label": "Limite de saída do terminal",
+ "description": "Número máximo de linhas a incluir na saída do terminal ao executar comandos. Quando excedido, as linhas serão removidas do meio, economizando token."
+ },
+ "openTabs": {
+ "label": "Limite de contexto de abas abertas",
+ "description": "Número máximo de abas abertas do VSCode a incluir no contexto. Valores mais altos fornecem mais contexto, mas aumentam o uso de token."
+ },
+ "workspaceFiles": {
+ "label": "Limite de contexto de arquivos do espaço de trabalho",
+ "description": "Número máximo de arquivos a incluir nos detalhes do diretório de trabalho atual. Valores mais altos fornecem mais contexto, mas aumentam o uso de token."
+ },
+ "rooignore": {
+ "label": "Mostrar arquivos .rooignore em listas e pesquisas",
+ "description": "Quando ativado, os arquivos que correspondem aos padrões em .rooignore serão mostrados em listas com um símbolo de cadeado. Quando desativado, esses arquivos serão completamente ocultos das listas de arquivos e pesquisas."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Limite de taxa",
+ "description": "Tempo mínimo entre requisições de API."
+ },
+ "diff": {
+ "label": "Ativar edição através de diffs",
+ "description": "Quando ativado, o Roo poderá editar arquivos mais rapidamente e rejeitará automaticamente escritas completas de arquivos truncados. Funciona melhor com o modelo mais recente Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Estratégia de diff",
+ "options": {
+ "standard": "Padrão (Bloco único)",
+ "multiBlock": "Experimental: Diff multi-bloco",
+ "unified": "Experimental: Diff unificado"
+ },
+ "descriptions": {
+ "standard": "A estratégia de diff padrão aplica alterações a um único bloco de código por vez.",
+ "unified": "A estratégia de diff unificado adota várias abordagens para aplicar diffs e escolhe a melhor abordagem.",
+ "multiBlock": "A estratégia de diff multi-bloco permite atualizar vários blocos de código em um arquivo em uma única requisição."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precisão de correspondência",
+ "description": "Este controle deslizante controla quão precisamente as seções de código devem corresponder ao aplicar diffs. Valores mais baixos permitem correspondências mais flexíveis, mas aumentam o risco de substituições incorretas. Use valores abaixo de 100% com extrema cautela."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Usar temperatura personalizada",
+ "description": "Controla a aleatoriedade nas respostas do modelo.",
+ "rangeDescription": "Valores mais altos tornam a saída mais aleatória, valores mais baixos a tornam mais determinística."
+ },
+ "modelInfo": {
+ "supportsImages": "Suporta imagens",
+ "noImages": "Não suporta imagens",
+ "supportsComputerUse": "Suporta uso do computador",
+ "noComputerUse": "Não suporta uso do computador",
+ "supportsPromptCache": "Suporta cache de prompts",
+ "noPromptCache": "Não suporta cache de prompts",
+ "maxOutput": "Saída máxima",
+ "inputPrice": "Preço de entrada",
+ "outputPrice": "Preço de saída",
+ "cacheReadsPrice": "Preço de leituras de cache",
+ "cacheWritesPrice": "Preço de escritas de cache",
+ "gemini": {
+ "freeRequests": "* Gratuito até {{count}} requisições por minuto. Depois disso, a cobrança depende do tamanho do prompt.",
+ "pricingDetails": "Para mais informações, consulte os detalhes de preços."
+ }
+ },
+ "footer": {
+ "feedback": "Se tiver alguma dúvida ou feedback, sinta-se à vontade para abrir um problema em github.com/RooVetGit/Roo-Code ou juntar-se a reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Permitir relatórios anônimos de erros e uso",
+ "description": "Ajude a melhorar o Roo Code enviando dados de uso anônimos e relatórios de erros. Nunca são enviados código, prompts ou informações pessoais. Consulte nossa política de privacidade para mais detalhes."
+ },
+ "reset": {
+ "description": "Redefinir todo o estado global e armazenamento secreto na extensão.",
+ "button": "Redefinir"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/pt/settings.json b/webview-ui/src/i18n/locales/pt/settings.json
new file mode 100644
index 00000000000..00f8c9ef27f
--- /dev/null
+++ b/webview-ui/src/i18n/locales/pt/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Salvar",
+ "done": "Concluído",
+ "cancel": "Cancelar",
+ "reset": "Redefinir"
+ },
+ "header": {
+ "title": "Configurações",
+ "saveButtonTooltip": "Salvar alterações",
+ "nothingChangedTooltip": "Nada alterado",
+ "doneButtonTooltip": "Descartar alterações não salvas e fechar o painel de configurações"
+ },
+ "unsavedChangesDialog": {
+ "title": "Alterações não salvas",
+ "description": "Deseja descartar as alterações e continuar?",
+ "cancelButton": "Cancelar",
+ "discardButton": "Descartar alterações"
+ },
+ "sections": {
+ "providers": "Provedores",
+ "autoApprove": "Aprovação automática",
+ "browser": "Navegador / Uso do computador",
+ "checkpoints": "Pontos de verificação",
+ "notifications": "Notificações",
+ "contextManagement": "Gestão de contexto",
+ "advanced": "Avançado",
+ "experimental": "Recursos experimentais"
+ },
+ "autoApprove": {
+ "description": "Permitir que o Roo realize operações automaticamente sem exigir aprovação. Ative estas configurações apenas se confiar totalmente na IA e compreender os riscos de segurança associados.",
+ "readOnly": {
+ "label": "Aprovar sempre operações somente de leitura",
+ "description": "Quando ativado, o Roo visualizará automaticamente o conteúdo do diretório e lerá arquivos sem que seja necessário clicar no botão Aprovar."
+ },
+ "write": {
+ "label": "Aprovar sempre operações de escrita",
+ "description": "Criar e editar arquivos automaticamente sem exigir aprovação",
+ "delayLabel": "Atraso após escritas para permitir que diagnósticos detectem problemas potenciais"
+ },
+ "browser": {
+ "label": "Aprovar sempre ações do navegador",
+ "description": "Realizar ações do navegador automaticamente sem exigir aprovação",
+ "note": "Nota: Aplica-se apenas quando o modelo suporta uso do computador"
+ },
+ "retry": {
+ "label": "Sempre tentar novamente requisições de API com falha",
+ "description": "Tentar novamente automaticamente requisições de API com falha quando o servidor retorna uma resposta de erro",
+ "delayLabel": "Atraso antes de tentar novamente a requisição"
+ },
+ "mcp": {
+ "label": "Aprovar sempre ferramentas MCP",
+ "description": "Ativar aprovação automática de ferramentas MCP individuais na visualização de Servidores MCP (requer tanto esta configuração quanto a caixa de seleção \"Permitir sempre\" da ferramenta)"
+ },
+ "modeSwitch": {
+ "label": "Aprovar sempre troca de modos",
+ "description": "Alternar automaticamente entre diferentes modos sem exigir aprovação"
+ },
+ "subtasks": {
+ "label": "Aprovar sempre criação e conclusão de subtarefas",
+ "description": "Permitir a criação e conclusão de subtarefas sem exigir aprovação"
+ },
+ "execute": {
+ "label": "Aprovar sempre operações de execução permitidas",
+ "description": "Executar automaticamente comandos de terminal permitidos sem exigir aprovação",
+ "allowedCommands": "Comandos de auto-execução permitidos",
+ "allowedCommandsDescription": "Prefixos de comando que podem ser auto-executados quando \"Aprovar sempre operações de execução\" está ativado. Adicione * para permitir todos os comandos (use com precaução).",
+ "commandPlaceholder": "Digite o prefixo do comando (ex. 'git ')",
+ "addButton": "Adicionar"
+ }
+ },
+ "providers": {
+ "configProfile": "Perfil de configuração",
+ "description": "Descrição",
+ "apiProvider": "Provedor de API",
+ "openRouterApiKey": "Chave de API OpenRouter",
+ "apiKeyStorageNotice": "As chaves de API são armazenadas com segurança no Armazenamento Secreto do VSCode",
+ "useCustomBaseUrl": "Usar URL base personalizado",
+ "openRouterTransformsText": "Comprimir prompts e cadeias de mensagens para o tamanho do contexto (Transformações OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Ativar ferramenta de navegador",
+ "description": "Quando ativado, o Roo pode usar um navegador para interagir com sites ao usar modelos que suportam o uso do computador."
+ },
+ "viewport": {
+ "label": "Tamanho da viewport",
+ "description": "Selecione o tamanho da viewport para interações do navegador. Isso afeta como os sites são exibidos e como se interage com eles.",
+ "options": {
+ "largeDesktop": "Desktop grande (1280x800)",
+ "smallDesktop": "Desktop pequeno (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Móvel (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Qualidade das capturas de tela",
+ "description": "Ajuste a qualidade WebP das capturas de tela do navegador. Valores mais altos fornecem capturas mais nítidas, mas aumentam o uso de token."
+ },
+ "remote": {
+ "label": "Usar conexão remota de navegador",
+ "description": "Conectar a um navegador Chrome executando com depuração remota ativada (--remote-debugging-port=9222).",
+ "urlPlaceholder": "URL personalizado (ex. http://localhost:9222)",
+ "testButton": "Testar conexão",
+ "testingButton": "Testando...",
+ "instructions": "Digite o endereço do host do protocolo DevTools ou deixe em branco para descobrir automaticamente instâncias locais do Chrome. O botão Testar Conexão tentará usar o URL personalizado, se fornecido, ou descobrirá automaticamente se o campo estiver vazio."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Ativar pontos de verificação automáticos",
+ "description": "Quando ativado, o Roo criará automaticamente pontos de verificação durante a execução de tarefas, facilitando a revisão de alterações ou o retorno a estados anteriores."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Ativar efeitos sonoros",
+ "description": "Quando ativado, o Roo reproduzirá efeitos sonoros para notificações e eventos.",
+ "volumeLabel": "Volume"
+ }
+ },
+ "contextManagement": {
+ "description": "Controle quais informações são incluídas na janela de contexto da IA, afetando o uso de token e a qualidade da resposta",
+ "terminal": {
+ "label": "Limite de saída do terminal",
+ "description": "Número máximo de linhas a incluir na saída do terminal ao executar comandos. Quando excedido, as linhas serão removidas do meio, economizando token."
+ },
+ "openTabs": {
+ "label": "Limite de contexto de abas abertas",
+ "description": "Número máximo de abas abertas do VSCode a incluir no contexto. Valores mais altos fornecem mais contexto, mas aumentam o uso de token."
+ },
+ "workspaceFiles": {
+ "label": "Limite de contexto de arquivos do espaço de trabalho",
+ "description": "Número máximo de arquivos a incluir nos detalhes do diretório de trabalho atual. Valores mais altos fornecem mais contexto, mas aumentam o uso de token."
+ },
+ "rooignore": {
+ "label": "Mostrar arquivos .rooignore em listas e pesquisas",
+ "description": "Quando ativado, os arquivos que correspondem aos padrões em .rooignore serão mostrados em listas com um símbolo de cadeado. Quando desativado, esses arquivos serão completamente ocultos das listas de arquivos e pesquisas."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Limite de taxa",
+ "description": "Tempo mínimo entre requisições de API."
+ },
+ "diff": {
+ "label": "Ativar edição através de diffs",
+ "description": "Quando ativado, o Roo poderá editar arquivos mais rapidamente e rejeitará automaticamente escritas completas de arquivos truncados. Funciona melhor com o modelo mais recente Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Estratégia de diff",
+ "options": {
+ "standard": "Padrão (Bloco único)",
+ "multiBlock": "Experimental: Diff multi-bloco",
+ "unified": "Experimental: Diff unificado"
+ },
+ "descriptions": {
+ "standard": "A estratégia de diff padrão aplica alterações a um único bloco de código por vez.",
+ "unified": "A estratégia de diff unificado adota várias abordagens para aplicar diffs e escolhe a melhor abordagem.",
+ "multiBlock": "A estratégia de diff multi-bloco permite atualizar vários blocos de código em um arquivo em uma única requisição."
+ }
+ },
+ "matchPrecision": {
+ "label": "Precisão de correspondência",
+ "description": "Este controle deslizante controla quão precisamente as seções de código devem corresponder ao aplicar diffs. Valores mais baixos permitem correspondências mais flexíveis, mas aumentam o risco de substituições incorretas. Use valores abaixo de 100% com extrema cautela."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Usar temperatura personalizada",
+ "description": "Controla a aleatoriedade nas respostas do modelo.",
+ "rangeDescription": "Valores mais altos tornam a saída mais aleatória, valores mais baixos a tornam mais determinística."
+ },
+ "modelInfo": {
+ "supportsImages": "Suporta imagens",
+ "noImages": "Não suporta imagens",
+ "supportsComputerUse": "Suporta uso do computador",
+ "noComputerUse": "Não suporta uso do computador",
+ "supportsPromptCache": "Suporta cache de prompts",
+ "noPromptCache": "Não suporta cache de prompts",
+ "maxOutput": "Saída máxima",
+ "inputPrice": "Preço de entrada",
+ "outputPrice": "Preço de saída",
+ "cacheReadsPrice": "Preço de leituras de cache",
+ "cacheWritesPrice": "Preço de escritas de cache",
+ "gemini": {
+ "freeRequests": "* Gratuito até {{count}} requisições por minuto. Depois disso, a cobrança depende do tamanho do prompt.",
+ "pricingDetails": "Para mais informações, consulte os detalhes de preços."
+ }
+ },
+ "footer": {
+ "feedback": "Se tiver alguma dúvida ou feedback, sinta-se à vontade para abrir um problema em github.com/RooVetGit/Roo-Code ou juntar-se a reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Permitir relatórios anônimos de erros e uso",
+ "description": "Ajude a melhorar o Roo Code enviando dados de uso anônimos e relatórios de erros. Nunca são enviados código, prompts ou informações pessoais. Consulte nossa política de privacidade para mais detalhes."
+ },
+ "reset": {
+ "description": "Redefinir todo o estado global e armazenamento secreto na extensão.",
+ "button": "Redefinir"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json
new file mode 100644
index 00000000000..aeb1304d7bd
--- /dev/null
+++ b/webview-ui/src/i18n/locales/ru/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Сохранить",
+ "done": "Готово",
+ "cancel": "Отмена",
+ "reset": "Сбросить"
+ },
+ "header": {
+ "title": "Настройки",
+ "saveButtonTooltip": "Сохранить изменения",
+ "nothingChangedTooltip": "Ничего не изменено",
+ "doneButtonTooltip": "Отменить несохраненные изменения и закрыть панель настроек"
+ },
+ "unsavedChangesDialog": {
+ "title": "Несохраненные изменения",
+ "description": "Хотите отменить изменения и продолжить?",
+ "cancelButton": "Отмена",
+ "discardButton": "Отменить изменения"
+ },
+ "sections": {
+ "providers": "Провайдеры",
+ "autoApprove": "Автоматическое одобрение",
+ "browser": "Браузер / Использование компьютера",
+ "checkpoints": "Контрольные точки",
+ "notifications": "Уведомления",
+ "contextManagement": "Управление контекстом",
+ "advanced": "Расширенные",
+ "experimental": "Экспериментальные функции"
+ },
+ "autoApprove": {
+ "description": "Разрешить Roo автоматически выполнять операции без запроса одобрения. Включайте эти настройки только если вы полностью доверяете ИИ и понимаете связанные риски безопасности.",
+ "readOnly": {
+ "label": "Всегда одобрять операции только для чтения",
+ "description": "Когда включено, Roo будет автоматически просматривать содержимое каталогов и читать файлы без необходимости нажимать кнопку Одобрить."
+ },
+ "write": {
+ "label": "Всегда одобрять операции записи",
+ "description": "Автоматически создавать и редактировать файлы без запроса одобрения",
+ "delayLabel": "Задержка после записи, чтобы диагностика могла обнаружить потенциальные проблемы"
+ },
+ "browser": {
+ "label": "Всегда одобрять действия браузера",
+ "description": "Автоматически выполнять действия браузера без запроса одобрения",
+ "note": "Примечание: Применяется только когда модель поддерживает использование компьютера"
+ },
+ "retry": {
+ "label": "Всегда повторять неудавшиеся запросы API",
+ "description": "Автоматически повторять неудавшиеся запросы API, когда сервер возвращает ошибку",
+ "delayLabel": "Задержка перед повторением запроса"
+ },
+ "mcp": {
+ "label": "Всегда одобрять инструменты MCP",
+ "description": "Включить автоматическое одобрение отдельных инструментов MCP в представлении Серверов MCP (требуется как эта настройка, так и флажок \"Всегда разрешать\" инструмента)"
+ },
+ "modeSwitch": {
+ "label": "Всегда одобрять переключение режимов",
+ "description": "Автоматически переключаться между разными режимами без запроса одобрения"
+ },
+ "subtasks": {
+ "label": "Всегда одобрять создание и завершение подзадач",
+ "description": "Разрешить создание и завершение подзадач без запроса одобрения"
+ },
+ "execute": {
+ "label": "Всегда одобрять разрешенные операции выполнения",
+ "description": "Автоматически выполнять разрешенные команды терминала без запроса одобрения",
+ "allowedCommands": "Разрешенные команды авто-выполнения",
+ "allowedCommandsDescription": "Префиксы команд, которые могут автоматически выполняться, когда \"Всегда одобрять операции выполнения\" включено. Добавьте * для разрешения всех команд (используйте с осторожностью).",
+ "commandPlaceholder": "Введите префикс команды (напр. 'git ')",
+ "addButton": "Добавить"
+ }
+ },
+ "providers": {
+ "configProfile": "Профиль конфигурации",
+ "description": "Описание",
+ "apiProvider": "Провайдер API",
+ "openRouterApiKey": "Ключ API OpenRouter",
+ "apiKeyStorageNotice": "Ключи API хранятся безопасно в Secret Storage VSCode",
+ "useCustomBaseUrl": "Использовать собственный базовый URL",
+ "openRouterTransformsText": "Сжимать подсказки и цепочки сообщений до размера контекста (Преобразования OpenRouter )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Включить инструмент браузера",
+ "description": "Когда включено, Roo может использовать браузер для взаимодействия с веб-сайтами при использовании моделей, поддерживающих использование компьютера."
+ },
+ "viewport": {
+ "label": "Размер области просмотра",
+ "description": "Выберите размер области просмотра для взаимодействий браузера. Это влияет на то, как отображаются веб-сайты и как с ними происходит взаимодействие.",
+ "options": {
+ "largeDesktop": "Большой рабочий стол (1280x800)",
+ "smallDesktop": "Малый рабочий стол (900x600)",
+ "tablet": "Планшет (768x1024)",
+ "mobile": "Мобильный (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Качество скриншотов",
+ "description": "Настройте качество WebP для скриншотов браузера. Более высокие значения обеспечивают более четкие скриншоты, но увеличивают использование token."
+ },
+ "remote": {
+ "label": "Использовать удаленное подключение браузера",
+ "description": "Подключиться к браузеру Chrome, запущенному с включенной удаленной отладкой (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Пользовательский URL (напр. http://localhost:9222)",
+ "testButton": "Проверить соединение",
+ "testingButton": "Проверка...",
+ "instructions": "Введите адрес хоста протокола DevTools или оставьте пустым для автоматического обнаружения локальных экземпляров Chrome. Кнопка Проверить соединение попытается использовать пользовательский URL, если он указан, или автоматически обнаружит, если поле пусто."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Включить автоматические контрольные точки",
+ "description": "Когда включено, Roo будет автоматически создавать контрольные точки во время выполнения задач, облегчая просмотр изменений или возврат к предыдущим состояниям."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Включить звуковые эффекты",
+ "description": "Когда включено, Roo будет воспроизводить звуковые эффекты для уведомлений и событий.",
+ "volumeLabel": "Громкость"
+ }
+ },
+ "contextManagement": {
+ "description": "Управляйте информацией, включаемой в окно контекста ИИ, влияя на использование token и качество ответов",
+ "terminal": {
+ "label": "Ограничение вывода терминала",
+ "description": "Максимальное количество строк для включения в вывод терминала при выполнении команд. При превышении строки будут удалены из середины, экономя token."
+ },
+ "openTabs": {
+ "label": "Ограничение контекста открытых вкладок",
+ "description": "Максимальное количество открытых вкладок VSCode для включения в контекст. Более высокие значения предоставляют больше контекста, но увеличивают использование token."
+ },
+ "workspaceFiles": {
+ "label": "Ограничение контекста файлов рабочего пространства",
+ "description": "Максимальное количество файлов для включения в детали текущего рабочего каталога. Более высокие значения предоставляют больше контекста, но увеличивают использование token."
+ },
+ "rooignore": {
+ "label": "Показывать файлы .rooignore в списках и поисках",
+ "description": "Когда включено, файлы, соответствующие шаблонам в .rooignore, будут показаны в списках с символом замка. Когда отключено, эти файлы будут полностью скрыты из списков файлов и поисков."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Ограничение частоты",
+ "description": "Минимальное время между запросами API."
+ },
+ "diff": {
+ "label": "Включить редактирование через diff",
+ "description": "Когда включено, Roo сможет редактировать файлы быстрее и автоматически отклонять усеченные полные записи файлов. Работает лучше всего с последней моделью Claude 3.7 Sonnet.",
+ "strategy": {
+ "label": "Стратегия diff",
+ "options": {
+ "standard": "Стандартная (Один блок)",
+ "multiBlock": "Экспериментальная: Мульти-блочный diff",
+ "unified": "Экспериментальная: Унифицированный diff"
+ },
+ "descriptions": {
+ "standard": "Стандартная стратегия diff применяет изменения к одному блоку кода за раз.",
+ "unified": "Стратегия унифицированного diff использует несколько подходов к применению diff и выбирает лучший подход.",
+ "multiBlock": "Стратегия мульти-блочного diff позволяет обновлять несколько блоков кода в файле за один запрос."
+ }
+ },
+ "matchPrecision": {
+ "label": "Точность соответствия",
+ "description": "Этот ползунок контролирует, насколько точно секции кода должны соответствовать при применении diff. Более низкие значения позволяют более гибкое соответствие, но увеличивают риск неправильных замен. Используйте значения ниже 100% с крайней осторожностью."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Использовать настраиваемую температуру",
+ "description": "Контролирует случайность в ответах модели.",
+ "rangeDescription": "Более высокие значения делают вывод более случайным, более низкие значения делают его более детерминированным."
+ },
+ "modelInfo": {
+ "supportsImages": "Поддерживает изображения",
+ "noImages": "Не поддерживает изображения",
+ "supportsComputerUse": "Поддерживает использование компьютера",
+ "noComputerUse": "Не поддерживает использование компьютера",
+ "supportsPromptCache": "Поддерживает кэширование промптов",
+ "noPromptCache": "Не поддерживает кэширование промптов",
+ "maxOutput": "Максимальный вывод",
+ "inputPrice": "Цена ввода",
+ "outputPrice": "Цена вывода",
+ "cacheReadsPrice": "Цена чтения кэша",
+ "cacheWritesPrice": "Цена записи кэша",
+ "gemini": {
+ "freeRequests": "* Бесплатно до {{count}} запросов в минуту. После этого, оплата зависит от размера промпта.",
+ "pricingDetails": "Для получения дополнительной информации см. детали ценообразования."
+ }
+ },
+ "footer": {
+ "feedback": "Если у вас есть вопросы или отзывы, не стесняйтесь открыть issue на github.com/RooVetGit/Roo-Code или присоединиться к reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Разрешить анонимные отчеты об ошибках и использовании",
+ "description": "Помогите улучшить Roo Code, отправляя анонимные данные об использовании и отчеты об ошибках. Никогда не отправляется код, промпты или личная информация. Подробности см. в нашей политике конфиденциальности."
+ },
+ "reset": {
+ "description": "Сбросить все глобальные состояния и секретное хранилище в расширении.",
+ "button": "Сбросить"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json
new file mode 100644
index 00000000000..99599f2443c
--- /dev/null
+++ b/webview-ui/src/i18n/locales/tr/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "Kaydet",
+ "done": "Tamamlandı",
+ "cancel": "İptal",
+ "reset": "Sıfırla"
+ },
+ "header": {
+ "title": "Ayarlar",
+ "saveButtonTooltip": "Değişiklikleri kaydet",
+ "nothingChangedTooltip": "Hiçbir şey değişmedi",
+ "doneButtonTooltip": "Kaydedilmemiş değişiklikleri at ve ayarlar panelini kapat"
+ },
+ "unsavedChangesDialog": {
+ "title": "Kaydedilmemiş Değişiklikler",
+ "description": "Değişiklikleri atmak ve devam etmek istiyor musunuz?",
+ "cancelButton": "İptal",
+ "discardButton": "Değişiklikleri At"
+ },
+ "sections": {
+ "providers": "Sağlayıcılar",
+ "autoApprove": "Otomatik Onay",
+ "browser": "Tarayıcı / Bilgisayar Kullanımı",
+ "checkpoints": "Kontrol Noktaları",
+ "notifications": "Bildirimler",
+ "contextManagement": "Bağlam Yönetimi",
+ "advanced": "Gelişmiş",
+ "experimental": "Deneysel Özellikler"
+ },
+ "autoApprove": {
+ "description": "Roo'nun onay gerektirmeden otomatik olarak işlemler gerçekleştirmesine izin verin. Bu ayarları yalnızca yapay zekaya tamamen güveniyorsanız ve ilgili güvenlik risklerini anlıyorsanız etkinleştirin.",
+ "readOnly": {
+ "label": "Salt okunur işlemleri her zaman onayla",
+ "description": "Etkinleştirildiğinde, Roo otomatik olarak dizin içeriğini görüntüleyecek ve Onayla düğmesine tıklamanıza gerek kalmadan dosyaları okuyacaktır."
+ },
+ "write": {
+ "label": "Yazma işlemlerini her zaman onayla",
+ "description": "Onay gerektirmeden otomatik olarak dosya oluştur ve düzenle",
+ "delayLabel": "Tanılamanın potansiyel sorunları tespit etmesine izin vermek için yazmalardan sonra gecikme"
+ },
+ "browser": {
+ "label": "Tarayıcı eylemlerini her zaman onayla",
+ "description": "Onay gerektirmeden otomatik olarak tarayıcı eylemleri gerçekleştir",
+ "note": "Not: Yalnızca model bilgisayar kullanımını desteklediğinde geçerlidir"
+ },
+ "retry": {
+ "label": "Başarısız API isteklerini her zaman yeniden dene",
+ "description": "Sunucu bir hata yanıtı döndürdüğünde başarısız API isteklerini otomatik olarak yeniden dene",
+ "delayLabel": "İsteği yeniden denemeden önce gecikme"
+ },
+ "mcp": {
+ "label": "MCP araçlarını her zaman onayla",
+ "description": "MCP Sunucuları görünümünde bireysel MCP araçlarının otomatik onayını etkinleştir (hem bu ayar hem de aracın \"Her zaman izin ver\" onay kutusu gerekir)"
+ },
+ "modeSwitch": {
+ "label": "Mod değiştirmeyi her zaman onayla",
+ "description": "Onay gerektirmeden otomatik olarak farklı modlar arasında geçiş yap"
+ },
+ "subtasks": {
+ "label": "Alt görevlerin oluşturulmasını ve tamamlanmasını her zaman onayla",
+ "description": "Onay gerektirmeden alt görevlerin oluşturulmasına ve tamamlanmasına izin ver"
+ },
+ "execute": {
+ "label": "İzin verilen yürütme işlemlerini her zaman onayla",
+ "description": "Onay gerektirmeden otomatik olarak izin verilen terminal komutlarını yürüt",
+ "allowedCommands": "İzin Verilen Otomatik Yürütme Komutları",
+ "allowedCommandsDescription": "\"Yürütme işlemlerini her zaman onayla\" etkinleştirildiğinde otomatik olarak yürütülebilen komut önekleri. Tüm komutlara izin vermek için * ekleyin (dikkatli kullanın).",
+ "commandPlaceholder": "Komut öneki girin (örn. 'git ')",
+ "addButton": "Ekle"
+ }
+ },
+ "providers": {
+ "configProfile": "Yapılandırma Profili",
+ "description": "Açıklama",
+ "apiProvider": "API Sağlayıcı",
+ "openRouterApiKey": "OpenRouter API Anahtarı",
+ "apiKeyStorageNotice": "API anahtarları VSCode'un Gizli Depolamasında güvenli bir şekilde saklanır",
+ "useCustomBaseUrl": "Özel temel URL kullan",
+ "openRouterTransformsText": "İstem ve mesaj zincirlerini bağlam boyutuna sıkıştır (OpenRouter Dönüşümleri )"
+ },
+ "browser": {
+ "enable": {
+ "label": "Tarayıcı aracını etkinleştir",
+ "description": "Etkinleştirildiğinde, Roo bilgisayar kullanımını destekleyen modeller kullanırken web siteleriyle etkileşim kurmak için bir tarayıcı kullanabilir."
+ },
+ "viewport": {
+ "label": "Görünüm alanı boyutu",
+ "description": "Tarayıcı etkileşimleri için görünüm alanı boyutunu seçin. Bu, web sitelerinin nasıl görüntülendiğini ve etkileşime girdiğini etkiler.",
+ "options": {
+ "largeDesktop": "Büyük Masaüstü (1280x800)",
+ "smallDesktop": "Küçük Masaüstü (900x600)",
+ "tablet": "Tablet (768x1024)",
+ "mobile": "Mobil (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "Ekran görüntüsü kalitesi",
+ "description": "Tarayıcı ekran görüntülerinin WebP kalitesini ayarlayın. Daha yüksek değerler daha net ekran görüntüleri sağlar ancak token kullanımını artırır."
+ },
+ "remote": {
+ "label": "Uzak tarayıcı bağlantısı kullan",
+ "description": "Uzaktan hata ayıklama etkinleştirilmiş olarak çalışan bir Chrome tarayıcısına bağlanın (--remote-debugging-port=9222).",
+ "urlPlaceholder": "Özel URL (örn. http://localhost:9222)",
+ "testButton": "Bağlantıyı Test Et",
+ "testingButton": "Test Ediliyor...",
+ "instructions": "DevTools protokolü ana bilgisayar adresini girin veya yerel Chrome örneklerini otomatik olarak keşfetmek için boş bırakın. Bağlantıyı Test Et düğmesi, sağlanmışsa özel URL'yi deneyecek veya alan boşsa otomatik olarak keşfedecektir."
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "Otomatik kontrol noktalarını etkinleştir",
+ "description": "Etkinleştirildiğinde, Roo görev yürütme sırasında otomatik olarak kontrol noktaları oluşturarak değişiklikleri gözden geçirmeyi veya önceki durumlara dönmeyi kolaylaştırır."
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "Ses efektlerini etkinleştir",
+ "description": "Etkinleştirildiğinde, Roo bildirimler ve olaylar için ses efektleri çalacaktır.",
+ "volumeLabel": "Ses Düzeyi"
+ }
+ },
+ "contextManagement": {
+ "description": "Yapay zekanın bağlam penceresine hangi bilgilerin dahil edileceğini kontrol edin, token kullanımını ve yanıt kalitesini etkiler",
+ "terminal": {
+ "label": "Terminal çıktısı sınırı",
+ "description": "Komutları yürütürken terminal çıktısına dahil edilecek maksimum satır sayısı. Aşıldığında, token tasarrufu sağlayarak satırlar ortadan kaldırılacaktır."
+ },
+ "openTabs": {
+ "label": "Açık sekmeler bağlam sınırı",
+ "description": "Bağlama dahil edilecek maksimum VSCode açık sekme sayısı. Daha yüksek değerler daha fazla bağlam sağlar ancak token kullanımını artırır."
+ },
+ "workspaceFiles": {
+ "label": "Çalışma alanı dosyaları bağlam sınırı",
+ "description": "Mevcut çalışma dizini ayrıntılarına dahil edilecek maksimum dosya sayısı. Daha yüksek değerler daha fazla bağlam sağlar ancak token kullanımını artırır."
+ },
+ "rooignore": {
+ "label": "Listelerde ve aramalarda .rooignore dosyalarını göster",
+ "description": "Etkinleştirildiğinde, .rooignore'daki desenlerle eşleşen dosyalar kilit sembolü ile listelerde gösterilecektir. Devre dışı bırakıldığında, bu dosyalar dosya listelerinden ve aramalardan tamamen gizlenecektir."
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "Hız sınırı",
+ "description": "API istekleri arasındaki minimum süre."
+ },
+ "diff": {
+ "label": "Diff'ler aracılığıyla düzenlemeyi etkinleştir",
+ "description": "Etkinleştirildiğinde, Roo dosyaları daha hızlı düzenleyebilecek ve kesik tam dosya yazımlarını otomatik olarak reddedecektir. En son Claude 3.7 Sonnet modeliyle en iyi şekilde çalışır.",
+ "strategy": {
+ "label": "Diff stratejisi",
+ "options": {
+ "standard": "Standart (Tek blok)",
+ "multiBlock": "Deneysel: Çoklu blok diff",
+ "unified": "Deneysel: Birleştirilmiş diff"
+ },
+ "descriptions": {
+ "standard": "Standart diff stratejisi, bir seferde tek bir kod bloğuna değişiklikler uygular.",
+ "unified": "Birleştirilmiş diff stratejisi, diff'leri uygulamak için birden çok yaklaşım benimser ve en iyi yaklaşımı seçer.",
+ "multiBlock": "Çoklu blok diff stratejisi, tek bir istekte bir dosyadaki birden çok kod bloğunu güncellemenize olanak tanır."
+ }
+ },
+ "matchPrecision": {
+ "label": "Eşleşme hassasiyeti",
+ "description": "Bu kaydırıcı, diff'ler uygulanırken kod bölümlerinin ne kadar hassas bir şekilde eşleşmesi gerektiğini kontrol eder. Daha düşük değerler daha esnek eşleşmeye izin verir ancak yanlış değiştirme riskini artırır. %100'ün altındaki değerleri son derece dikkatli kullanın."
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "Özel sıcaklık kullan",
+ "description": "Model yanıtlarındaki rastgeleliği kontrol eder.",
+ "rangeDescription": "Daha yüksek değerler çıktıyı daha rastgele yapar, daha düşük değerler daha deterministik hale getirir."
+ },
+ "modelInfo": {
+ "supportsImages": "Görüntüleri destekler",
+ "noImages": "Görüntüleri desteklemez",
+ "supportsComputerUse": "Bilgisayar kullanımını destekler",
+ "noComputerUse": "Bilgisayar kullanımını desteklemez",
+ "supportsPromptCache": "İstem önbelleğini destekler",
+ "noPromptCache": "İstem önbelleğini desteklemez",
+ "maxOutput": "Maksimum çıktı",
+ "inputPrice": "Giriş fiyatı",
+ "outputPrice": "Çıkış fiyatı",
+ "cacheReadsPrice": "Önbellek okuma fiyatı",
+ "cacheWritesPrice": "Önbellek yazma fiyatı",
+ "gemini": {
+ "freeRequests": "* Dakikada {{count}} isteğe kadar ücretsiz. Bundan sonra, ücretlendirme istem boyutuna bağlıdır.",
+ "pricingDetails": "Daha fazla bilgi için fiyatlandırma ayrıntılarına bakın."
+ }
+ },
+ "footer": {
+ "feedback": "Herhangi bir sorunuz veya geri bildiriminiz varsa, github.com/RooVetGit/Roo-Code adresinde bir konu açmaktan veya reddit.com/r/RooCode'a katılmaktan çekinmeyin",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "Anonim hata ve kullanım raporlamaya izin ver",
+ "description": "Anonim kullanım verileri ve hata raporları göndererek Roo Code'u geliştirmeye yardımcı olun. Hiçbir kod, istem veya kişisel bilgi asla gönderilmez. Daha fazla ayrıntı için gizlilik politikamıza bakın."
+ },
+ "reset": {
+ "description": "Uzantıdaki tüm global durumu ve gizli depolamayı sıfırlayın.",
+ "button": "Sıfırla"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json
new file mode 100644
index 00000000000..754bdb9228d
--- /dev/null
+++ b/webview-ui/src/i18n/locales/zh-CN/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "保存",
+ "done": "完成",
+ "cancel": "取消",
+ "reset": "重置"
+ },
+ "header": {
+ "title": "设置",
+ "saveButtonTooltip": "保存更改",
+ "nothingChangedTooltip": "没有更改",
+ "doneButtonTooltip": "丢弃未保存的更改并关闭设置面板"
+ },
+ "unsavedChangesDialog": {
+ "title": "未保存的更改",
+ "description": "是否丢弃更改并继续?",
+ "cancelButton": "取消",
+ "discardButton": "丢弃更改"
+ },
+ "sections": {
+ "providers": "提供商",
+ "autoApprove": "自动批准",
+ "browser": "浏览器 / 计算机使用",
+ "checkpoints": "检查点",
+ "notifications": "通知",
+ "contextManagement": "上下文管理",
+ "advanced": "高级",
+ "experimental": "实验性功能"
+ },
+ "autoApprove": {
+ "description": "允许 Roo 自动执行操作而无需批准。只有在您完全信任 AI 并了解相关安全风险的情况下才启用这些设置。",
+ "readOnly": {
+ "label": "始终批准只读操作",
+ "description": "启用后,Roo 将自动查看目录内容并读取文件,无需点击批准按钮。"
+ },
+ "write": {
+ "label": "始终批准写入操作",
+ "description": "自动创建和编辑文件而无需批准",
+ "delayLabel": "写入后延迟以允许诊断检测潜在问题"
+ },
+ "browser": {
+ "label": "始终批准浏览器操作",
+ "description": "自动执行浏览器操作而无需批准",
+ "note": "注意:仅当模型支持计算机使用时适用"
+ },
+ "retry": {
+ "label": "始终重试失败的 API 请求",
+ "description": "当服务器返回错误响应时自动重试失败的 API 请求",
+ "delayLabel": "重试请求前的延迟"
+ },
+ "mcp": {
+ "label": "始终批准 MCP 工具",
+ "description": "在 MCP 服务器视图中启用单个 MCP 工具的自动批准(需要此设置和工具的\"始终允许\"复选框)"
+ },
+ "modeSwitch": {
+ "label": "始终批准模式切换",
+ "description": "自动在不同模式之间切换而无需批准"
+ },
+ "subtasks": {
+ "label": "始终批准子任务的创建和完成",
+ "description": "允许创建和完成子任务而无需批准"
+ },
+ "execute": {
+ "label": "始终批准允许的执行操作",
+ "description": "自动执行允许的终端命令而无需批准",
+ "allowedCommands": "允许的自动执行命令",
+ "allowedCommandsDescription": "当\"始终批准执行操作\"启用时可以自动执行的命令前缀。添加 * 以允许所有命令(谨慎使用)。",
+ "commandPlaceholder": "输入命令前缀(例如 'git ')",
+ "addButton": "添加"
+ }
+ },
+ "providers": {
+ "configProfile": "配置文件",
+ "description": "描述",
+ "apiProvider": "API 提供商",
+ "openRouterApiKey": "OpenRouter API 密钥",
+ "apiKeyStorageNotice": "API 密钥安全存储在 VSCode 的密钥存储中",
+ "useCustomBaseUrl": "使用自定义基础 URL",
+ "openRouterTransformsText": "将提示和消息链压缩到上下文大小 (OpenRouter 转换 )"
+ },
+ "browser": {
+ "enable": {
+ "label": "启用浏览器工具",
+ "description": "启用后,Roo 可以在使用支持计算机使用的模型时使用浏览器与网站交互。"
+ },
+ "viewport": {
+ "label": "视口大小",
+ "description": "选择浏览器交互的视口大小。这会影响网站的显示方式和交互方式。",
+ "options": {
+ "largeDesktop": "大桌面 (1280x800)",
+ "smallDesktop": "小桌面 (900x600)",
+ "tablet": "平板 (768x1024)",
+ "mobile": "移动设备 (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "截图质量",
+ "description": "调整浏览器截图的 WebP 质量。更高的值提供更清晰的截图,但会增加 token 使用量。"
+ },
+ "remote": {
+ "label": "使用远程浏览器连接",
+ "description": "连接到启用远程调试的 Chrome 浏览器 (--remote-debugging-port=9222)。",
+ "urlPlaceholder": "自定义 URL(例如 http://localhost:9222)",
+ "testButton": "测试连接",
+ "testingButton": "测试中...",
+ "instructions": "输入 DevTools 协议主机地址或留空以自动发现本地 Chrome 实例。测试连接按钮将尝试使用自定义 URL(如果提供),或者如果字段为空则自动发现。"
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "启用自动检查点",
+ "description": "启用后,Roo 将在任务执行期间自动创建检查点,使审查更改或返回到早期状态变得容易。"
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "启用音效",
+ "description": "启用后,Roo 将为通知和事件播放音效。",
+ "volumeLabel": "音量"
+ }
+ },
+ "contextManagement": {
+ "description": "控制在 AI 的上下文窗口中包含哪些信息,影响 token 使用和响应质量",
+ "terminal": {
+ "label": "终端输出限制",
+ "description": "执行命令时在终端输出中包含的最大行数。超过时将从中间删除行,节省 token。"
+ },
+ "openTabs": {
+ "label": "打开标签上下文限制",
+ "description": "在上下文中包含的 VSCode 打开标签的最大数量。较高的值提供更多上下文,但会增加 token 使用量。"
+ },
+ "workspaceFiles": {
+ "label": "工作区文件上下文限制",
+ "description": "在当前工作目录详细信息中包含的最大文件数。较高的值提供更多上下文,但会增加 token 使用量。"
+ },
+ "rooignore": {
+ "label": "在列表和搜索中显示 .rooignore 文件",
+ "description": "启用后,与 .rooignore 中模式匹配的文件将在列表中显示锁定符号。禁用时,这些文件将从文件列表和搜索中完全隐藏。"
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "速率限制",
+ "description": "API 请求之间的最小时间。"
+ },
+ "diff": {
+ "label": "启用通过差异编辑",
+ "description": "启用后,Roo 将能够更快地编辑文件,并将自动拒绝截断的完整文件写入。与最新的 Claude 3.7 Sonnet 模型配合最佳。",
+ "strategy": {
+ "label": "Diff 策略",
+ "options": {
+ "standard": "标准(单块)",
+ "multiBlock": "实验性:多块 diff",
+ "unified": "实验性:统一 diff"
+ },
+ "descriptions": {
+ "standard": "标准 diff 策略一次对一个代码块应用更改。",
+ "unified": "统一 diff 策略采用多种方法应用差异并选择最佳方法。",
+ "multiBlock": "多块 diff 策略允许在一个请求中更新文件中的多个代码块。"
+ }
+ },
+ "matchPrecision": {
+ "label": "匹配精度",
+ "description": "此滑块控制应用差异时代码部分必须匹配的精确度。较低的值允许更灵活的匹配,但会增加错误替换的风险。极其谨慎地使用低于 100% 的值。"
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "使用自定义温度",
+ "description": "控制模型响应中的随机性。",
+ "rangeDescription": "较高的值使输出更随机,较低的值使其更确定性。"
+ },
+ "modelInfo": {
+ "supportsImages": "支持图像",
+ "noImages": "不支持图像",
+ "supportsComputerUse": "支持计算机使用",
+ "noComputerUse": "不支持计算机使用",
+ "supportsPromptCache": "支持提示缓存",
+ "noPromptCache": "不支持提示缓存",
+ "maxOutput": "最大输出",
+ "inputPrice": "输入价格",
+ "outputPrice": "输出价格",
+ "cacheReadsPrice": "缓存读取价格",
+ "cacheWritesPrice": "缓存写入价格",
+ "gemini": {
+ "freeRequests": "* 每分钟免费 {{count}} 个请求。之后,计费取决于提示大小。",
+ "pricingDetails": "有关更多信息,请参阅定价详情。"
+ }
+ },
+ "footer": {
+ "feedback": "如果您有任何问题或反馈,请随时在 github.com/RooVetGit/Roo-Code 上提出问题或加入 reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "允许匿名错误和使用情况报告",
+ "description": "通过发送匿名使用数据和错误报告来帮助改进 Roo Code。绝不会发送代码、提示或个人信息。有关更多详细信息,请参阅我们的隐私政策。"
+ },
+ "reset": {
+ "description": "重置扩展中的所有全局状态和密钥存储。",
+ "button": "重置"
+ }
+ }
+}
diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json
new file mode 100644
index 00000000000..631f3738260
--- /dev/null
+++ b/webview-ui/src/i18n/locales/zh-TW/settings.json
@@ -0,0 +1,205 @@
+{
+ "common": {
+ "save": "儲存",
+ "done": "完成",
+ "cancel": "取消",
+ "reset": "重設"
+ },
+ "header": {
+ "title": "設定",
+ "saveButtonTooltip": "儲存變更",
+ "nothingChangedTooltip": "沒有變更",
+ "doneButtonTooltip": "捨棄未儲存的變更並關閉設定面板"
+ },
+ "unsavedChangesDialog": {
+ "title": "未儲存的變更",
+ "description": "是否捨棄變更並繼續?",
+ "cancelButton": "取消",
+ "discardButton": "捨棄變更"
+ },
+ "sections": {
+ "providers": "提供者",
+ "autoApprove": "自動核准",
+ "browser": "瀏覽器 / 電腦使用",
+ "checkpoints": "檢查點",
+ "notifications": "通知",
+ "contextManagement": "內容管理",
+ "advanced": "進階",
+ "experimental": "實驗性功能"
+ },
+ "autoApprove": {
+ "description": "允許 Roo 自動執行操作而無需核准。僅在您完全信任 AI 並理解相關安全風險的情況下啟用這些設定。",
+ "readOnly": {
+ "label": "始終核准唯讀操作",
+ "description": "啟用後,Roo 將自動檢視目錄內容並讀取檔案,無需點擊核准按鈕。"
+ },
+ "write": {
+ "label": "始終核准寫入操作",
+ "description": "自動建立和編輯檔案而無需核准",
+ "delayLabel": "寫入後延遲以允許診斷偵測潛在問題"
+ },
+ "browser": {
+ "label": "始終核准瀏覽器操作",
+ "description": "自動執行瀏覽器操作而無需核准",
+ "note": "注意:僅當模型支援電腦使用時適用"
+ },
+ "retry": {
+ "label": "始終重試失敗的 API 請求",
+ "description": "當伺服器傳回錯誤回應時自動重試失敗的 API 請求",
+ "delayLabel": "重試請求前的延遲"
+ },
+ "mcp": {
+ "label": "始終核准 MCP 工具",
+ "description": "在 MCP 伺服器檢視中啟用個別 MCP 工具的自動核准(需要此設定和工具的\"始終允許\"核取方塊)"
+ },
+ "modeSwitch": {
+ "label": "始終核准模式切換",
+ "description": "自動在不同模式之間切換而無需核准"
+ },
+ "subtasks": {
+ "label": "始終核准子任務的建立和完成",
+ "description": "允許建立和完成子任務而無需核准"
+ },
+ "execute": {
+ "label": "始終核准允許的執行操作",
+ "description": "自動執行允許的終端機命令而無需核准",
+ "allowedCommands": "允許的自動執行命令",
+ "allowedCommandsDescription": "當\"始終核准執行操作\"啟用時可以自動執行的命令前綴。添加 * 以允許所有命令(謹慎使用)。",
+ "commandPlaceholder": "輸入命令前綴(例如 'git ')",
+ "addButton": "新增"
+ }
+ },
+ "providers": {
+ "configProfile": "設定檔案",
+ "description": "描述",
+ "apiProvider": "API 提供者",
+ "openRouterApiKey": "OpenRouter API 金鑰",
+ "apiKeyStorageNotice": "API 金鑰安全儲存在 VSCode 的秘密儲存中",
+ "useCustomBaseUrl": "使用自訂基礎 URL",
+ "openRouterTransformsText": "將提示和訊息鏈壓縮到內容大小 (OpenRouter 轉換 )"
+ },
+ "browser": {
+ "enable": {
+ "label": "啟用瀏覽器工具",
+ "description": "啟用後,Roo 可以在使用支援電腦使用的模型時使用瀏覽器與網站互動。"
+ },
+ "viewport": {
+ "label": "視窗大小",
+ "description": "選擇瀏覽器互動的視窗大小。這會影響網站的顯示方式和互動方式。",
+ "options": {
+ "largeDesktop": "大型桌面 (1280x800)",
+ "smallDesktop": "小型桌面 (900x600)",
+ "tablet": "平板 (768x1024)",
+ "mobile": "行動裝置 (360x640)"
+ }
+ },
+ "screenshotQuality": {
+ "label": "截圖品質",
+ "description": "調整瀏覽器截圖的 WebP 品質。較高的值提供更清晰的截圖,但會增加 token 使用量。"
+ },
+ "remote": {
+ "label": "使用遠端瀏覽器連線",
+ "description": "連線到啟用遠端偵錯的 Chrome 瀏覽器 (--remote-debugging-port=9222)。",
+ "urlPlaceholder": "自訂 URL(例如 http://localhost:9222)",
+ "testButton": "測試連線",
+ "testingButton": "測試中...",
+ "instructions": "輸入 DevTools 協議主機地址或留空以自動探索本地 Chrome 實例。測試連線按鈕將嘗試使用自訂 URL(如果提供),或者如果欄位為空則自動探索。"
+ }
+ },
+ "checkpoints": {
+ "enable": {
+ "label": "啟用自動檢查點",
+ "description": "啟用後,Roo 將在任務執行期間自動建立檢查點,使審核變更或返回到早期狀態變得容易。"
+ }
+ },
+ "notifications": {
+ "sound": {
+ "label": "啟用音效",
+ "description": "啟用後,Roo 將為通知和事件播放音效。",
+ "volumeLabel": "音量"
+ }
+ },
+ "contextManagement": {
+ "description": "控制在 AI 的內容視窗中包含哪些資訊,影響 token 使用和回應品質",
+ "terminal": {
+ "label": "終端機輸出限制",
+ "description": "執行命令時在終端機輸出中包含的最大行數。超過時將從中間刪除行,節省 token。"
+ },
+ "openTabs": {
+ "label": "開啟分頁內容限制",
+ "description": "在內容中包含的 VSCode 開啟分頁的最大數量。較高的值提供更多內容,但會增加 token 使用量。"
+ },
+ "workspaceFiles": {
+ "label": "工作區檔案內容限制",
+ "description": "在目前工作目錄詳細資訊中包含的最大檔案數。較高的值提供更多內容,但會增加 token 使用量。"
+ },
+ "rooignore": {
+ "label": "在列表和搜尋中顯示 .rooignore 檔案",
+ "description": "啟用後,與 .rooignore 中模式匹配的檔案將在列表中顯示鎖定符號。禁用時,這些檔案將從檔案列表和搜尋中完全隱藏。"
+ }
+ },
+ "advanced": {
+ "rateLimit": {
+ "label": "速率限制",
+ "description": "API 請求之間的最小時間。"
+ },
+ "diff": {
+ "label": "啟用透過差異編輯",
+ "description": "啟用後,Roo 將能夠更快地編輯檔案,並將自動拒絕截斷的完整檔案寫入。與最新的 Claude 3.7 Sonnet 模型搭配最佳。",
+ "strategy": {
+ "label": "Diff 策略",
+ "options": {
+ "standard": "標準(單塊)",
+ "multiBlock": "實驗性:多塊 diff",
+ "unified": "實驗性:統一 diff"
+ },
+ "descriptions": {
+ "standard": "標準 diff 策略一次對一個程式碼塊應用變更。",
+ "unified": "統一 diff 策略採用多種方法應用差異並選擇最佳方法。",
+ "multiBlock": "多塊 diff 策略允許在一個請求中更新檔案中的多個程式碼塊。"
+ }
+ },
+ "matchPrecision": {
+ "label": "匹配精度",
+ "description": "此滑桿控制應用差異時程式碼部分必須匹配的精確度。較低的值允許更靈活的匹配,但會增加錯誤替換的風險。極其謹慎地使用低於 100% 的值。"
+ }
+ }
+ },
+ "experimental": {
+ "warning": "⚠️"
+ },
+ "temperature": {
+ "useCustom": "使用自訂溫度",
+ "description": "控制模型回應中的隨機性。",
+ "rangeDescription": "較高的值使輸出更隨機,較低的值使其更確定性。"
+ },
+ "modelInfo": {
+ "supportsImages": "支援圖像",
+ "noImages": "不支援圖像",
+ "supportsComputerUse": "支援電腦使用",
+ "noComputerUse": "不支援電腦使用",
+ "supportsPromptCache": "支援提示快取",
+ "noPromptCache": "不支援提示快取",
+ "maxOutput": "最大輸出",
+ "inputPrice": "輸入價格",
+ "outputPrice": "輸出價格",
+ "cacheReadsPrice": "快取讀取價格",
+ "cacheWritesPrice": "快取寫入價格",
+ "gemini": {
+ "freeRequests": "* 每分鐘免費 {{count}} 個請求。之後,計費取決於提示大小。",
+ "pricingDetails": "有關更多資訊,請參閱定價詳情。"
+ }
+ },
+ "footer": {
+ "feedback": "如果您有任何問題或反饋,請隨時在 github.com/RooVetGit/Roo-Code 上提出問題或加入 reddit.com/r/RooCode",
+ "version": "Roo Code v{{version}}",
+ "telemetry": {
+ "label": "允許匿名錯誤和使用情況報告",
+ "description": "透過發送匿名使用資料和錯誤報告來幫助改進 Roo Code。絕不會發送程式碼、提示或個人資訊。有關更多詳細資訊,請參閱我們的隱私政策。"
+ },
+ "reset": {
+ "description": "重設擴充功能中的所有全域狀態和秘密儲存。",
+ "button": "重設"
+ }
+ }
+}