mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/StarCitizenBoxBrowserEx.git
synced 2025-05-09 21:51:25 +08:00
feat: add translation status and message handling
This commit is contained in:
parent
1921d518ee
commit
4be3ee4cec
27
README.md
27
README.md
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
SC网站翻译项目:[CxJuice/ScWeb_Chinese_Translate](https://github.com/CxJuice/ScWeb_Chinese_Translate)
|
SC网站翻译项目:[CxJuice/ScWeb_Chinese_Translate](https://github.com/CxJuice/ScWeb_Chinese_Translate)
|
||||||
|
|
||||||
## 本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!
|
## **本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -26,16 +26,31 @@ SC网站翻译项目:[CxJuice/ScWeb_Chinese_Translate](https://github.com/CxJu
|
|||||||
#### 调用翻译Hook
|
#### 调用翻译Hook
|
||||||
|
|
||||||
```tsx
|
```tsx
|
||||||
const [translateApiAvailable, setTranslateApiAvailable] = useState(false);
|
enum SCBoxTranslateStatus {
|
||||||
|
Available,
|
||||||
|
Translated,
|
||||||
|
NotAvailable,
|
||||||
|
}
|
||||||
|
|
||||||
|
const [translateApiAvailable, setTranslateApiAvailable] = useState<SCBoxTranslateStatus>(SCBoxTranslateStatus.NotAvailable);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 在插件加载后会向页面发送消息
|
|
||||||
function handleMessage(event: MessageEvent) {
|
function handleMessage(event: MessageEvent) {
|
||||||
if (event.source !== window) return;
|
if (event.source !== window) return;
|
||||||
|
// 在插件加载后会向页面发送消息
|
||||||
if (event.data?.type === 'SC-BOX-TRANSLATE-API-AVAILABLE') {
|
if (event.data?.type === 'SC-BOX-TRANSLATE-API-AVAILABLE') {
|
||||||
// 你也可以在此直接执行触发翻译操作
|
setTranslateApiAvailable(SCBoxTranslateStatus.Available);
|
||||||
console.log('translateApiAvailable', event.data);
|
}
|
||||||
setTranslateApiAvailable(true);
|
// 在翻译状态改变时插件也会向页面发送消息
|
||||||
|
if (event.data?.type === 'TOGGLED-SC-BOX-TRANSLATE') {
|
||||||
|
switch (event.data.action) {
|
||||||
|
case 'on':
|
||||||
|
setTranslateApiAvailable(SCBoxTranslateStatus.Translated);
|
||||||
|
return;
|
||||||
|
case 'off':
|
||||||
|
setTranslateApiAvailable(SCBoxTranslateStatus.Available);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
6
core.ts
6
core.ts
@ -101,6 +101,8 @@ async function undoTranslate(): Promise<{success: boolean}> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'off' }, '*');
|
||||||
|
|
||||||
return Promise.resolve({ success: true });
|
return Promise.resolve({ success: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,13 +257,12 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
|||||||
if (SCLocalizationTranslating) {
|
if (SCLocalizationTranslating) {
|
||||||
SCLocalizationTranslating = false;
|
SCLocalizationTranslating = false;
|
||||||
undoTranslate();
|
undoTranslate();
|
||||||
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'off' }, '*');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SCLocalizationTranslating = true;
|
SCLocalizationTranslating = true;
|
||||||
SCLocalizationEnableSplitMode = true;
|
SCLocalizationEnableSplitMode = true;
|
||||||
WebLocalizationUpdateReplaceWords(request.data);
|
|
||||||
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
|
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
|
||||||
|
WebLocalizationUpdateReplaceWords(request.data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -277,6 +278,7 @@ window.addEventListener('message', async (event) => {
|
|||||||
SCLocalizationEnableSplitMode = true;
|
SCLocalizationEnableSplitMode = true;
|
||||||
chrome.runtime.sendMessage({ action: "_loadLocalizationData", url: "manual" }, function (response) {
|
chrome.runtime.sendMessage({ action: "_loadLocalizationData", url: "manual" }, function (response) {
|
||||||
SCLocalizationTranslating = true;
|
SCLocalizationTranslating = true;
|
||||||
|
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
|
||||||
WebLocalizationUpdateReplaceWords(response.result);
|
WebLocalizationUpdateReplaceWords(response.result);
|
||||||
});
|
});
|
||||||
response = { success: true };
|
response = { success: true };
|
||||||
|
2
dist/chrome/content_scripts/content-0.js
vendored
2
dist/chrome/content_scripts/content-0.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user