Skip to content

Commit

Permalink
支持更改用户语言了!!!!!!!!!!!
Browse files Browse the repository at this point in the history
  • Loading branch information
Snownamida committed Nov 4, 2023
1 parent f6e7e46 commit 0d7f0d1
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 47 deletions.
101 changes: 57 additions & 44 deletions preload.js
Original file line number Diff line number Diff line change
@@ -1,79 +1,90 @@
const { contextBridge, ipcRenderer } = require("electron");

const initial_user_lang = "汉语";
const selected_languages = ["日语", "英语", "法语", "汉语", "越南语", "俄语"];
const languages_config = {
日语: {
user_lang: "日语",
lang_in_lang: "日本語",
languages: [
"日本語",
"英語",
"フランス語",
"中国語",
"ベトナム語",
"ロシア語",
],
languages: {
日语: { native_lang_name: "日本語" },
英语: { native_lang_name: "英語" },
法语: { native_lang_name: "フランス語" },
汉语: { native_lang_name: "中国語" },
越南语: { native_lang_name: "ベトナム語" },
俄语: { native_lang_name: "ロシア語" },
},
},
英语: {
user_lang: "英语",
lang_in_lang: "English",
languages: [
"Japanese",
"English",
"French",
"Chinese",
"Vietnamese",
"Russian",
],
languages: {
日语: { native_lang_name: "Japanese" },
英语: { native_lang_name: "English" },
法语: { native_lang_name: "French" },
汉语: { native_lang_name: "Chinese" },
越南语: { native_lang_name: "Vietnamese" },
俄语: { native_lang_name: "Russian" },
},
},
法语: {
user_lang: "法语",
lang_in_lang: "Français",
languages: [
"Japonais",
"Anglais",
"Français",
"Chinois",
"Vietnamien",
"Russe",
],
languages: {
日语: { native_lang_name: "Japonais" },
英语: { native_lang_name: "Anglais" },
法语: { native_lang_name: "Français" },
汉语: { native_lang_name: "Chinois" },
越南语: { native_lang_name: "Vietnamien" },
俄语: { native_lang_name: "Russe" },
},
},
汉语: {
user_lang: "汉语",
lang_in_lang: "中文",
languages: ["日语", "英语", "法语", "汉语", "越南语", "俄语"],
languages: {
日语: { native_lang_name: "日语" },
英语: { native_lang_name: "英语" },
法语: { native_lang_name: "法语" },
汉语: { native_lang_name: "汉语" },
越南语: { native_lang_name: "越南语" },
俄语: { native_lang_name: "俄语" },
},
},
越南语: {
user_lang: "越南语",
lang_in_lang: "Tiếng Việt",
languages: [
"Tiếng Nhật",
"Tiếng Anh",
"Tiếng Pháp",
"Tiếng Trung",
"Tiếng Việt",
"Tiếng Nga",
],
languages: {
日语: { native_lang_name: "Tiếng Nhật" },
英语: { native_lang_name: "Tiếng Anh" },
法语: { native_lang_name: "Tiếng Pháp" },
汉语: { native_lang_name: "Tiếng Trung" },
越南语: { native_lang_name: "Tiếng Việt" },
俄语: { native_lang_name: "Tiếng Nga" },
},
},
俄语: {
user_lang: "俄语",
lang_in_lang: "русский",
languages: [
"Японский",
"Английский",
"Французский",
"Китайский",
"Вьетнамский",
"Русский",
],
languages: {
日语: { native_lang_name: "Японский" },
英语: { native_lang_name: "Английский" },
法语: { native_lang_name: "Французский" },
汉语: { native_lang_name: "Китайский" },
越南语: { native_lang_name: "Вьетнамский" },
俄语: { native_lang_name: "Русский" },
},
},
};

let input_language = null;

contextBridge.exposeInMainWorld("electronAPI", {
getGPT: (messages, model = "gpt-3.5-turbo") =>
ipcRenderer.invoke("get-GPT", messages, model),
getLanguagesConfig: () => languages_config,
getSelectedLanguages: () => selected_languages,
getInitialUserLang: () => initial_user_lang,
getInputLanguage: () => input_language,
});

Expand All @@ -84,13 +95,13 @@ window.addEventListener("DOMContentLoaded", () => {
for (const language of selected_languages) {
lang_select.insertAdjacentHTML(
"beforeend",
`<option value=${language}>${languages_config[language].lang_in_lang}</option>`
`<option value=${language} class=${language}>${languages_config[language].lang_in_lang}</option>`
);
translator.insertAdjacentHTML(
"afterbegin",
`
<div class="col-md-2 col-3 text-center order-1">
<label class="form-label form-label-lg ${language}">${language}</label>
<label class="form-label form-label-lg ${language}">${languages_config[initial_user_lang].languages[language].native_lang_name}</label>
</div>
<div class="col-md-2 col-9 order-1">
Expand All @@ -106,8 +117,10 @@ window.addEventListener("DOMContentLoaded", () => {
`
);
}
document.querySelector(`option.${initial_user_lang}`).selected = true;

for (const language of languages_config.汉语.languages) {
//更改输入框背景颜色
for (const language of selected_languages) {
document.querySelector(`.${language}.input`).onfocus = event => {
if (input_language)
document.querySelector(
Expand Down
16 changes: 13 additions & 3 deletions renderer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
const languages_config = window.electronAPI.getLanguagesConfig();
const selected_languages = window.electronAPI.getSelectedLanguages();
let user_lang = window.electronAPI.getInitialUserLang();

document.querySelector(".translate-button").onclick = translate;
const lang_select = document.querySelector("select.lang-select");
Expand All @@ -11,13 +13,16 @@ function translate() {
input_language &&
(input = document.querySelector(`.${input_language}.input`).value)
) {
for (const language of languages_config.汉语.languages) {
for (const language of selected_languages) {
console.log(
`你是一个词典,用户会不断发送${input_language}词汇,你要把它翻译成${language},并附上词源和读音。注意回答的时候要用${user_lang}回答`
);
document.querySelector(`.${language}.output`).innerText = " Loading...";
window.electronAPI
.getGPT([
{
role: "system",
content: `你是一个词典,用户会不断发送${input_language}词汇,你要把它翻译成${language},并附上词源和读音`,
content: `用户会发送一个${input_language}词汇,你要把它翻译成${language},并附上词源和读音。回答的时候要用${user_lang}回答`,
},
{
role: "user",
Expand All @@ -33,5 +38,10 @@ function translate() {
}

function changeUserLang(selected_lang) {
console.log(selected_lang);
user_lang = selected_lang;

for (const language of selected_languages) {
document.querySelector(`label.${language}`).innerText =
languages_config[user_lang].languages[language].native_lang_name;
}
}

0 comments on commit 0d7f0d1

Please sign in to comment.