(text: string)
| 50 | |
| 51 | // 检测文本语言 |
| 52 | async function detectLanguage(text: string): Promise<string> { |
| 53 | try { |
| 54 | // 尝试使用新的 API |
| 55 | if ('translation' in self && 'createDetector' in (self as any).translation) { |
| 56 | const detector = await (self as any).translation.createDetector(); |
| 57 | const results = await detector.detect(text); |
| 58 | const detected = results.length > 0 ? results[0].detectedLanguage : 'en'; |
| 59 | console.log('新 API 检测结果:', detected); |
| 60 | return detected; |
| 61 | } |
| 62 | |
| 63 | // 尝试使用旧的 API |
| 64 | if ('LanguageDetector' in self) { |
| 65 | const detector = await (self as any).LanguageDetector.create(); |
| 66 | const results = await detector.detect(text); |
| 67 | const detected = results.length > 0 ? results[0].detectedLanguage : 'en'; |
| 68 | console.log('旧 API 检测结果:', detected); |
| 69 | return detected; |
| 70 | } |
| 71 | } catch (error) { |
| 72 | console.warn('Language detection failed:', error); |
| 73 | } |
| 74 | |
| 75 | // 回退到简单检测 |
| 76 | const chineseRegex = /[\u4e00-\u9fff]/; |
| 77 | const japaneseRegex = /[\u3040-\u309f\u30a0-\u30ff]/; |
| 78 | const koreanRegex = /[\uac00-\ud7af]/; |
| 79 | |
| 80 | if (chineseRegex.test(text)) { |
| 81 | return 'zh'; |
| 82 | } else if (japaneseRegex.test(text)) { |
| 83 | return 'ja'; |
| 84 | } else if (koreanRegex.test(text)) { |
| 85 | return 'ko'; |
| 86 | } else { |
| 87 | return 'en'; |
| 88 | } |
| 89 | } |
| 90 | |
| 91 | // 执行翻译 |
| 92 | async function performTranslation(text: string, fromLang: string, toLang: string): Promise<string> { |
no outgoing calls
no test coverage detected