Web 功能:
语言检测器
Language Detector API 是一种客户端 Web API,旨在识别给定文本字符串的语言。通过在浏览器中本地执行检测,该 API 增强了用户隐私保护,并减少了对大型外部库或高成本服务器端调用的需求。
主要应用场景
- 翻译准备:在将文本发送给翻译工具之前,先识别源语言。
- 安全和过滤:加载特定模型以执行有害内容检测等任务。
- 无障碍功能:使用正确的
lang属性为内容添加标签,以便屏幕阅读器读取。 - 界面本地化:根据用户的输入语言调整应用界面。
硬件和系统要求
- 操作系统:Windows 10/11、macOS 13+、Linux 或 Chromebook Plus。
- 存储空间:22 GB 可用空间(如果可用空间低于 10 GB,模型会被移除)。
- RAM/CPU:16 GB RAM 和 4 个以上的 CPU 核心。
- VRAM:如果使用 GPU,则至少需要 4 GB。
实现指南
1. 模型管理和用户激活
在尝试实例化检测器或触发下载之前,请先检查模型是否可用。
强制性要求:实例化语言检测器或使用 LanguageDetector.create() 触发模型下载必须由用户手势(例如点击按钮)发起,以防止模型处于 downloadable 或 downloading 状态时出现 NotAllowedError。
// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();
if (availability !== 'unavailable') {
button.addEventListener('click', async () => {
const detector = await LanguageDetector.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
});
}
2. 正在运行检测
该 API 会返回一个按置信度分数(介于 0.0 到 1.0 之间)排名的可能语言列表。
const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);
for (const result of results) {
// result.detectedLanguage (e.g., 'de')
// result.confidence (e.g., 0.999)
console.log(result.detectedLanguage, result.confidence);
}
避免对非常短的短语或单个字词使用检测器,因为准确率会显著下降。
安全和环境
iframe:跨域 iframe 需要明确的权限政策才能访问该 API。
<iframe src="https://cross-origin.example.com/" allow="language-detector" ></iframe>Web Worker:由于权限政策较为复杂,该 API 目前不适用于 Web Worker。
隐私保护:在检测过程中,不会向 Google 或第三方发送任何数据。
后备策略
在使用之前,请检查 LanguageDetector 对象在全局范围内是否可用:
if ('LanguageDetector' in self) {
// The Language Detector API is supported.
} else {
// Execute fallback strategy
}
如果 LanguageDetector API 不受支持,或者可用性检查返回 'unavailable',您必须优雅地回退:
- 远程 API 回退:将检测请求重定向到服务器端点或云 API(例如 Vertex AI Gemini API)以识别语言。
- 优雅降级:停用语言检测元素/按钮,并告知用户此浏览器目前不支持客户端检测,从而防止出现任何未处理的异常或崩溃。