Skip to content

Commit bf0ba0a

Browse files
author
smallstone
committed
Add setLanguage functionality and update language based on user preference
1 parent 4243363 commit bf0ba0a

2 files changed

Lines changed: 35 additions & 2 deletions

File tree

src/util/ideaBridge.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,19 @@ const JStoIdea = {
242242

243243
window.JSJavaBridge.callJava(JSON.stringify(params));
244244
},
245+
setLanguage: (message) => {
246+
const params = {
247+
action: "updateLanguage/request",
248+
metadata: {
249+
callback: "IdeaToJSMessage",
250+
},
251+
payload: {
252+
language: message?.language || "en",
253+
},
254+
};
255+
console.log("setLanguage params: ", params);
256+
window.JSJavaBridge.callJava(JSON.stringify(params));
257+
},
245258
userInput: (message) => {
246259
const params = {
247260
action: "input/request",
@@ -380,6 +393,9 @@ class IdeaBridge {
380393
accessKey: setting.apiKey,
381394
keyType: setting.apiKey.startsWith("DC") ? "DevChat" : "OpenAi",
382395
});
396+
this.handle.getLanguage({
397+
language: setting.language,
398+
});
383399
}
384400

385401
resviceAccessKey(res: string = "") {
@@ -516,6 +532,9 @@ class IdeaBridge {
516532
case "openLink":
517533
JStoIdea.openLink(message);
518534
break;
535+
case "setLanguage":
536+
JStoIdea.setLanguage(message);
537+
break;
519538
case "userInput":
520539
JStoIdea.userInput(message);
521540
break;

src/views/components/Header/index.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from "react";
1+
import React, { useEffect } from "react";
22
import {
33
Header,
44
Avatar,
@@ -22,7 +22,17 @@ const useStyles = createStyles((theme) => ({
2222

2323
export default function Head() {
2424
const { classes } = useStyles();
25-
const { t, i18n } = useTranslation();
25+
const { i18n } = useTranslation();
26+
27+
useEffect(() => {
28+
messageUtil.registerHandler("getLanguage", (data: { language: string }) => {
29+
if (data.language && data.language.toLocaleLowerCase() === "en") {
30+
i18n.changeLanguage("en");
31+
} else {
32+
i18n.changeLanguage("zh");
33+
}
34+
});
35+
}, []);
2636

2737
const openSetting = () => {
2838
messageUtil.sendMessage({
@@ -35,6 +45,10 @@ export default function Head() {
3545
const currentLang = i18n.language;
3646
const newLang = currentLang === "en" ? "zh" : "en";
3747
i18n.changeLanguage(newLang);
48+
messageUtil.sendMessage({
49+
command: "setLanguage",
50+
language: newLang,
51+
});
3852
};
3953

4054
return (

0 commit comments

Comments
 (0)