diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index e3a4f0707e..40b747f0ed 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -1527,6 +1527,10 @@ export class ClineProvider implements vscode.WebviewViewProvider {
await this.updateGlobalState("browserToolEnabled", message.bool ?? true)
await this.postStateToWebview()
break
+ case "language":
+ await this.updateGlobalState("language", message.text)
+ await this.postStateToWebview()
+ break
case "showRooIgnoredFiles":
await this.updateGlobalState("showRooIgnoredFiles", message.bool ?? true)
await this.postStateToWebview()
@@ -2506,8 +2510,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
writeDelayMs: stateValues.writeDelayMs ?? 1000,
terminalOutputLineLimit: stateValues.terminalOutputLineLimit ?? 500,
mode: stateValues.mode ?? defaultModeSlug,
- // Pass the VSCode language code directly
- language: formatLanguage(vscode.env.language),
+ language: stateValues.language || formatLanguage(vscode.env.language),
mcpEnabled: stateValues.mcpEnabled ?? true,
enableMcpServerCreation: stateValues.enableMcpServerCreation ?? true,
alwaysApproveResubmit: stateValues.alwaysApproveResubmit ?? false,
diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts
index 1c45dec84b..f9764b91a5 100644
--- a/src/exports/roo-code.d.ts
+++ b/src/exports/roo-code.d.ts
@@ -218,6 +218,7 @@ export type GlobalStateKey =
| "telemetrySetting"
| "showRooIgnoredFiles"
| "remoteBrowserEnabled"
+ | "language"
export type ConfigurationKey = GlobalStateKey | SecretKey
diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts
index bb77ea7203..e802b8d8af 100644
--- a/src/shared/WebviewMessage.ts
+++ b/src/shared/WebviewMessage.ts
@@ -107,6 +107,7 @@ export interface WebviewMessage {
| "discoverBrowser"
| "browserConnectionResult"
| "remoteBrowserEnabled"
+ | "language"
text?: string
disabled?: boolean
askResponse?: ClineAskResponse
diff --git a/src/shared/globalState.ts b/src/shared/globalState.ts
index cec7bdf9ce..c2b78f1ef7 100644
--- a/src/shared/globalState.ts
+++ b/src/shared/globalState.ts
@@ -116,6 +116,7 @@ export const GLOBAL_STATE_KEYS = [
"telemetrySetting",
"showRooIgnoredFiles",
"remoteBrowserEnabled",
+ "language",
"maxWorkspaceFiles",
] as const
diff --git a/webview-ui/src/components/settings/SettingsFooter.tsx b/webview-ui/src/components/settings/SettingsFooter.tsx
index 5106f1e2d2..5c00e35793 100644
--- a/webview-ui/src/components/settings/SettingsFooter.tsx
+++ b/webview-ui/src/components/settings/SettingsFooter.tsx
@@ -1,23 +1,52 @@
import { HTMLAttributes } from "react"
import { useAppTranslation } from "@/i18n/TranslationContext"
import { Trans } from "react-i18next"
+import { Globe } from "lucide-react"
import { VSCodeButton, VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { vscode } from "@/utils/vscode"
import { cn } from "@/lib/utils"
import { TelemetrySetting } from "../../../../src/shared/TelemetrySetting"
+import { SetCachedStateField } from "./types"
+
+// Map of language codes to their display names
+const LANGUAGES: Record
{t("settings:footer.version", { version })}
+Roo Code
+v{version}
+