mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/StarCitizenBoxBrowserEx.git
synced 2025-05-09 13:41:24 +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)
|
||||
|
||||
## 本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!
|
||||
## **本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!**
|
||||
|
||||

|
||||
|
||||
@ -26,16 +26,31 @@ SC网站翻译项目:[CxJuice/ScWeb_Chinese_Translate](https://github.com/CxJu
|
||||
#### 调用翻译Hook
|
||||
|
||||
```tsx
|
||||
const [translateApiAvailable, setTranslateApiAvailable] = useState(false);
|
||||
enum SCBoxTranslateStatus {
|
||||
Available,
|
||||
Translated,
|
||||
NotAvailable,
|
||||
}
|
||||
|
||||
const [translateApiAvailable, setTranslateApiAvailable] = useState<SCBoxTranslateStatus>(SCBoxTranslateStatus.NotAvailable);
|
||||
|
||||
useEffect(() => {
|
||||
// 在插件加载后会向页面发送消息
|
||||
function handleMessage(event: MessageEvent) {
|
||||
if (event.source !== window) return;
|
||||
// 在插件加载后会向页面发送消息
|
||||
if (event.data?.type === 'SC-BOX-TRANSLATE-API-AVAILABLE') {
|
||||
// 你也可以在此直接执行触发翻译操作
|
||||
console.log('translateApiAvailable', event.data);
|
||||
setTranslateApiAvailable(true);
|
||||
setTranslateApiAvailable(SCBoxTranslateStatus.Available);
|
||||
}
|
||||
// 在翻译状态改变时插件也会向页面发送消息
|
||||
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 });
|
||||
}
|
||||
|
||||
@ -255,13 +257,12 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||
if (SCLocalizationTranslating) {
|
||||
SCLocalizationTranslating = false;
|
||||
undoTranslate();
|
||||
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'off' }, '*');
|
||||
return;
|
||||
}
|
||||
SCLocalizationTranslating = true;
|
||||
SCLocalizationEnableSplitMode = true;
|
||||
WebLocalizationUpdateReplaceWords(request.data);
|
||||
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
|
||||
WebLocalizationUpdateReplaceWords(request.data);
|
||||
}
|
||||
});
|
||||
|
||||
@ -277,6 +278,7 @@ window.addEventListener('message', async (event) => {
|
||||
SCLocalizationEnableSplitMode = true;
|
||||
chrome.runtime.sendMessage({ action: "_loadLocalizationData", url: "manual" }, function (response) {
|
||||
SCLocalizationTranslating = true;
|
||||
window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
|
||||
WebLocalizationUpdateReplaceWords(response.result);
|
||||
});
|
||||
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