diff --git a/README.en.md b/README.en.md index 824512f..603a1b4 100644 --- a/README.en.md +++ b/README.en.md @@ -36,8 +36,8 @@ If you also like a little more simplicity, welcome to pick it up. - [x] Support translation services - [x] Google - [x] Microsoft - - [x] OpenAI - [x] DeepL + - [x] OpenAI - [x] Upload to app Store - [x] Chrome [Install Link](https://chrome.google.com/webstore/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof) - [x] Edge [Install Link](https://microsoftedge.microsoft.com/addons/detail/kiss-translator/jemckldkclkinpjighnoilpbldbdmmlh) diff --git a/README.md b/README.md index 5173949..7e04911 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,8 @@ - [x] 支持翻译服务 - [x] Google - [x] Microsoft - - [x] OpenAI - [x] DeepL + - [x] OpenAI - [x] 上架应用市场 - [x] Chrome [安装地址](https://chrome.google.com/webstore/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof?hl=zh-CN) - [x] Edge [安装地址](https://microsoftedge.microsoft.com/addons/detail/%E7%AE%80%E7%BA%A6%E7%BF%BB%E8%AF%91/jemckldkclkinpjighnoilpbldbdmmlh?hl=zh-CN) diff --git a/src/config/i18n.js b/src/config/i18n.js index 176a50b..d036bf4 100644 --- a/src/config/i18n.js +++ b/src/config/i18n.js @@ -284,9 +284,9 @@ export const I18N = { zh: `OpenAI 提示词`, en: `OpenAI Prompt`, }, - clear_cache: { - zh: `是否清除缓存 (仅扩展有效)`, - en: `Whether clear cache (only valid for extension)`, + if_clear_cache: { + zh: `是否清除缓存 (仅用于扩展)`, + en: `Whether clear cache (only for extension)`, }, clear_cache_never: { zh: `不清除缓存`, @@ -308,13 +308,13 @@ export const I18N = { zh: `数据同步测试`, en: `Data Sync Test`, }, - data_sync_success: { - zh: `数据同步成功!`, - en: `Data Sync Success`, + sync_success: { + zh: `同步成功!`, + en: `Sync Success`, }, - data_sync_error: { - zh: `数据同步失败!`, - en: `Data Sync Error`, + sync_failed: { + zh: `同步失败!`, + en: `Sync Error`, }, error_got_some_wrong: { zh: `抱歉,出错了!`, @@ -324,4 +324,32 @@ export const I18N = { zh: `您的同步设置未填写,无法在线分享。`, en: `Your sync settings are missing and cannot be shared online.`, }, + click_test: { + zh: `点击测试`, + en: `Click Test`, + }, + test_success: { + zh: `测试成功`, + en: `Test success`, + }, + test_failed: { + zh: `测试失败`, + en: `Test failed`, + }, + clear_all_cache_now: { + zh: `立即清除全部缓存`, + en: `Clear all cache now`, + }, + clear_cache: { + zh: `清除缓存`, + en: `Clear Cache`, + }, + clear_success: { + zh: `清除成功`, + en: `Clear success`, + }, + clear_failed: { + zh: `清除失败`, + en: `Clear failed`, + }, }; diff --git a/src/views/Options/Setting.js b/src/views/Options/Setting.js index 033e9a7..856dba9 100644 --- a/src/views/Options/Setting.js +++ b/src/views/Options/Setting.js @@ -6,14 +6,26 @@ import MenuItem from "@mui/material/MenuItem"; import FormControl from "@mui/material/FormControl"; import Select from "@mui/material/Select"; import Link from "@mui/material/Link"; +import FormHelperText from "@mui/material/FormHelperText"; import { useSetting } from "../../hooks/Setting"; import { limitNumber } from "../../libs/utils"; import { useI18n } from "../../hooks/I18n"; -import { UI_LANGS, URL_KISS_PROXY, TRANS_NEWLINE_LENGTH } from "../../config"; +import { apiTranslate } from "../../apis"; +import { useAlert } from "../../hooks/Alert"; +import { + UI_LANGS, + URL_KISS_PROXY, + TRANS_NEWLINE_LENGTH, + CACHE_NAME, + OPT_TRANS_GOOGLE, + OPT_TRANS_DEEPL, + OPT_TRANS_OPENAI, +} from "../../config"; export default function Settings() { const i18n = useI18n(); const { setting, updateSetting } = useSetting(); + const alert = useAlert(); const handleChange = (e) => { e.preventDefault(); @@ -41,6 +53,33 @@ export default function Settings() { }); }; + const handleClearCache = () => { + try { + caches.delete(CACHE_NAME); + alert.success(i18n("clear_success")); + } catch (err) { + console.log("[clear cache]", err); + } + }; + + const handleApiTest = async (translator) => { + try { + const [text] = await apiTranslate({ + translator, + q: "hello world", + fromLang: "en", + toLang: "zh-CN", + setting, + }); + if (!text) { + throw new Error("empty reault"); + } + alert.success(i18n("test_success")); + } catch (err) { + alert.error(`${i18n("test_failed")}: ${err.message}`); + } + }; + const { uiLang, googleUrl, @@ -123,21 +162,41 @@ export default function Settings() { /> - {i18n("clear_cache")} + {i18n("if_clear_cache")} + + + {i18n("clear_all_cache_now")} + + + {i18n("google_api")} + {googleUrl && ( + { + handleApiTest(OPT_TRANS_GOOGLE); + }} + > + {i18n("click_test")} + + )} + + } name="googleUrl" value={googleUrl} onChange={handleChange} @@ -148,7 +207,22 @@ export default function Settings() { + {i18n("deepl_api")} + {deeplUrl && ( + { + handleApiTest(OPT_TRANS_DEEPL); + }} + > + {i18n("click_test")} + + )} + + } name="deeplUrl" value={deeplUrl} onChange={handleChange} @@ -164,7 +238,22 @@ export default function Settings() { + {i18n("openai_api")} + {openaiUrl && openaiPrompt && ( + { + handleApiTest(OPT_TRANS_OPENAI); + }} + > + {i18n("click_test")} + + )} + + } name="openaiUrl" value={openaiUrl} onChange={handleChange} diff --git a/src/views/Options/SyncSetting.js b/src/views/Options/SyncSetting.js index 4d55527..5ffb95a 100644 --- a/src/views/Options/SyncSetting.js +++ b/src/views/Options/SyncSetting.js @@ -35,10 +35,10 @@ export default function SyncSetting() { setLoading(true); await syncSettingAndRules(); await reloadSetting(); - alert.success(i18n("data_sync_success")); + alert.success(i18n("sync_success")); } catch (err) { console.log("[sync all]", err); - alert.error(i18n("data_sync_error")); + alert.error(i18n("sync_failed")); } finally { setLoading(false); } diff --git a/src/views/Popup/index.js b/src/views/Popup/index.js index 7272086..f3d6e2c 100644 --- a/src/views/Popup/index.js +++ b/src/views/Popup/index.js @@ -19,6 +19,7 @@ import { OPT_LANGS_TO, OPT_STYLE_ALL, OPT_STYLE_USE_COLOR, + CACHE_NAME, } from "../../config"; import { sendIframeMsg } from "../../libs/iframe"; @@ -66,6 +67,14 @@ export default function Popup({ setShowPopup, translator: tran }) { } }; + const handleClearCache = () => { + try { + caches.delete(CACHE_NAME); + } catch (err) { + console.log("[clear cache]", err); + } + }; + useEffect(() => { if (!isExt) { return; @@ -99,15 +108,27 @@ export default function Popup({ setShowPopup, translator: tran }) { return ( - - } - label={i18n("translate_alt")} - /> + + + } + label={i18n("translate_alt")} + /> + {!isExt && ( + + )} +