npm package: @lmk123/free-microsoft-translator
Description: A browser-based translator library wrapping Bing and Microsoft Translator APIs
Latest version: 0.0.1

# Free Microsoft Translator

微软翻译服务的浏览器 / Node.js 端翻译库。

这是 [bing-translate-api](https://github.com/plainheart/bing-translate-api) [v4.2.0](https://github.com/plainheart/bing-translate-api/tree/v4.2.0) 的 fork 版本，遵循原项目的实现逻辑，但：

- 进行了改造以运行在浏览器端环境（e.g. 浏览器扩展程序）
- 删掉了一些功能
- 改变了函数签名

## 安装

```sh
npm install @lmk123/free-microsoft-translator
```

## 使用方法

### 选择翻译方式

```ts
// 默认使用 Microsoft 翻译
import { translate as metTranslate } from '@lmk123/free-microsoft-translator';
const metResult = await metTranslate('Hello', 'zh-Hans');

// 导入 Bing 翻译
import { translate } from '@lmk123/free-microsoft-translator/bing';
const bingResult = await translate('Hello', 'zh-Hans');
```

### Microsoft 翻译

Microsoft 翻译基于 Azure Cognitive Services Translator API，功能更强大，支持批量翻译和多语言同时翻译。

#### 基本翻译

```typescript
import { translate } from '@lmk123/free-microsoft-translator';

// 单文本翻译
const result = await translate('Hello, nice to meet you!', 'zh-Hans');

console.log(result[0].detectedLanguage.language); // 'en'
console.log(result[0].translations[0].text); // '你好，很高兴见到你！'
```

#### 多语言同时翻译

```typescript
import { translate } from '@lmk123/free-microsoft-translator';

// 同时翻译到多个目标语言
const result = await translate('你好，很高兴认识你！', ['en', 'ja', 'ko']);

console.log(result[0].translations[0].text); // 'Hello, nice to meet you!' (英语)
console.log(result[0].translations[1].text); // 'こんにちは、はじめまして!' (日语)
console.log(result[0].translations[2].text); // '안녕하세요, 만나서 반갑습니다!' (韩语)
```

#### 批量翻译

```typescript
import { translate } from '@lmk123/free-microsoft-translator';

// 一次翻译多个文本
const result = await translate(['Hello', 'World', 'Good morning'], 'zh-Hans');

console.log(result[0].translations[0].text); // '你好'
console.log(result[1].translations[0].text); // '世界'
console.log(result[2].translations[0].text); // '早上好'
```

#### 翻译 HTML 文本

```typescript
import { translate } from '@lmk123/free-microsoft-translator';

const htmlText = '<div class="notranslate">Keep this</div><div>Translate this</div>';
const result = await translate(htmlText, 'zh-Hans', {
  translateOptions: { textType: 'html' }
});

console.log(result[0].translations[0].text);
// '<div class="notranslate">Keep this</div><div>翻译这个</div>'
```

#### 使用付费服务密钥

```typescript
import { translate } from '@lmk123/free-microsoft-translator';

// 使用 Azure 订阅密钥
const result = await translate('Hello', 'zh-Hans', {
  authenticationHeaders: {
    'Ocp-Apim-Subscription-Key': 'YOUR_KEY'
  }
});

// 或使用自定义 JWT 令牌
const result2 = await translate('Hello', 'zh-Hans', {
  authenticationHeaders: {
    'Authorization': 'Bearer YOUR_TOKEN'
  }
});
```

### Bing 翻译

#### 基本翻译

```typescript
import { translate } from '@lmk123/free-microsoft-translator/bing';

// 翻译文本
const result = await translate('Hello, world!', 'zh-Hans', { from: 'en' });
console.log(result.translation); // 你好,世界！
```

#### 自动语言检测

```typescript
import { translate } from '@lmk123/free-microsoft-translator/bing';

// 不指定 from 参数，或者设置为 null / 'auto-detect' 即可自动检测
const result = await translate('你好', 'en');

console.log(result.translation); // Hello
console.log(result.language); // { from: 'zh-Hans', to: 'en', score: 1.0 }
```

#### 返回原始响应

```typescript
import { translate } from '@lmk123/free-microsoft-translator/bing';

const result = await translate('Hello', 'zh-Hans', { from: 'en', raw: true });

console.log(result.raw); // 完整的 API 响应
```

#### 自定义 User-Agent（仅限 Node.js 环境）

```typescript
import { translate } from '@lmk123/free-microsoft-translator/bing';

const result = await translate(
  'Hello',
  'zh-Hans',
  {
    from: 'en',
    userAgent: 'Mozilla/5.0 ...'
  }
);
```

## 开发

```bash
# 安装依赖
npm install

# 开发模式
npm run dev

# 构建
npm run build
```

## 许可证

MIT

## 相关项目

- [bing-translate-api](https://github.com/plainheart/bing-translate-api) - 原始 Node.js 版本
- [ky](https://github.com/sindresorhus/ky) - 现代化的浏览器 HTTP 客户端