diff --git a/.changeset/healthy-rabbits-poke.md b/.changeset/healthy-rabbits-poke.md
new file mode 100644
index 0000000000..6af21cba11
--- /dev/null
+++ b/.changeset/healthy-rabbits-poke.md
@@ -0,0 +1,5 @@
+---
+"roo-cline": patch
+---
+
+Allow users to choose a custom preferred language
diff --git a/webview-ui/src/components/prompts/PromptsView.tsx b/webview-ui/src/components/prompts/PromptsView.tsx
index db28d9b39d..061fa789de 100644
--- a/webview-ui/src/components/prompts/PromptsView.tsx
+++ b/webview-ui/src/components/prompts/PromptsView.tsx
@@ -9,6 +9,19 @@ import {
VSCodeRadioGroup,
VSCodeRadio,
} from "@vscode/webview-ui-toolkit/react"
+import { CaretSortIcon, CheckIcon } from "@radix-ui/react-icons"
+import {
+ Button,
+ Command,
+ CommandGroup,
+ CommandInput,
+ CommandItem,
+ CommandList,
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui"
+import { cn } from "@/lib/utils"
import { useExtensionState } from "../../context/ExtensionStateContext"
import {
Mode,
@@ -66,6 +79,9 @@ const PromptsView = ({ onDone }: PromptsViewProps) => {
const [testPrompt, setTestPrompt] = useState("")
const [isEnhancing, setIsEnhancing] = useState(false)
const [isDialogOpen, setIsDialogOpen] = useState(false)
+ const [open, setOpen] = useState(false)
+ const [isCustomLanguage, setIsCustomLanguage] = useState(false)
+ const [customLanguage, setCustomLanguage] = useState("")
const [selectedPromptContent, setSelectedPromptContent] = useState("")
const [selectedPromptTitle, setSelectedPromptTitle] = useState("")
const [isToolsEditMode, setIsToolsEditMode] = useState(false)
@@ -399,38 +415,88 @@ const PromptsView = ({ onDone }: PromptsViewProps) => {
Preferred Language
-
+
+
+
+
+
+
+
+
+
+ {[
+ { value: "English", label: "English" },
+ { value: "Arabic", label: "Arabic - العربية" },
+ {
+ value: "Brazilian Portuguese",
+ label: "Portuguese - Português (Brasil)",
+ },
+ { value: "Catalan", label: "Catalan - Català" },
+ { value: "Czech", label: "Czech - Čeština" },
+ { value: "French", label: "French - Français" },
+ { value: "German", label: "German - Deutsch" },
+ { value: "Hindi", label: "Hindi - हिन्दी" },
+ { value: "Hungarian", label: "Hungarian - Magyar" },
+ { value: "Italian", label: "Italian - Italiano" },
+ { value: "Japanese", label: "Japanese - 日本語" },
+ { value: "Korean", label: "Korean - 한국어" },
+ { value: "Polish", label: "Polish - Polski" },
+ { value: "Portuguese", label: "Portuguese - Português (Portugal)" },
+ { value: "Russian", label: "Russian - Русский" },
+ { value: "Simplified Chinese", label: "Simplified Chinese - 简体中文" },
+ { value: "Spanish", label: "Spanish - Español" },
+ {
+ value: "Traditional Chinese",
+ label: "Traditional Chinese - 繁體中文",
+ },
+ { value: "Turkish", label: "Turkish - Türkçe" },
+ ].map((language) => (
+ {
+ setPreferredLanguage(value)
+ vscode.postMessage({
+ type: "preferredLanguage",
+ text: value,
+ })
+ setOpen(false)
+ }}>
+ {language.label}
+
+
+ ))}
+
+
+
+
+
+
+
+
- Select the language that Cline should use for communication.
+ Select the language that Roo should use for communication.
@@ -1359,6 +1425,40 @@ const PromptsView = ({ onDone }: PromptsViewProps) => {
)}
+ {isCustomLanguage && (
+
+
+
Add Custom Language
+
setCustomLanguage(e.target.value)}
+ />
+
+
+
+
+
+
+ )}
)
}