logo

一个强大、安全且功能丰富的 API,通过 Google 翻译。


NodeJS License NPM Codecov Codacy CircleCI

English | 简体中文

Alt

感谢 matheussiamtraction 编写了该库的原始版本。由于原始版本作者不再积极维护,我使用 Typescript 和 ISO-639-1 重写了该库,使程序变得安全提供更丰富地翻译结果,并解决了程序异常。

  • 自适应本机语言翻译
  • 近义词、多义解释和例句
  • 复杂网络中的超时与重试参数
  • 支持语言、语言代码、母语和自适应语言列表查询
  • 支持 iso-639-1、小语种、特殊语种和 Wikipedia 上最新的变更
  • 安全的 API 类型和完整覆盖率
  • 可控的错误状态
npm install @kabeep/node-translate --save
yarn add @kabeep/node-translate
pnpm add @kabeep/node-translate
import translate from '@kabeep/node-translate';
translate(text, options)
.then(console.log)
.catch(console.error);
参数 类型 可选 默认值 描述
text string - 源文本、短语或单词。
options TranslateOptions - - 翻译选项。
options.from LanguageCode 'auto' 要从中翻译的语言名称/ISO 639-1代码。如果未指定,则会自动检测源语言。
options.to LanguageCode 'auto' 要翻译到的语言名称/ISO 639-1代码。如果未指定,则会翻译为本机环境语言。
options.raw boolean false 如果为 true,将返回从谷歌翻译 API 接收到的原始输出。
options.timeout number Yes 30_000 翻译请求的超时持续时间(以毫秒为单位)。
options.retry number Yes 0 如果失败,重试翻译请求的次数。

Response Object:

类型 描述
text string 译文摘要,长文本将会被截断,完整结果请使用 to.text.value
from Record -
from.language Record -
from.language.didYouMean boolean 表示是否有语言建议。
from.language.iso string 检测到的语言的 ISO 代码。
from.text Record -
from.text.autoCorrected boolean 表示是否进行了自动更正。
from.text.value string 源文本。
from.text.phonetics string 源文本的音标。
from.text.didYouMean boolean 表示是否对源文本提出了建议。
from.synonyms string[] 源词的同义词。
from.sentences string[] 源词的示例句。
to Record -
to.text Record -
to.text.phonetics string 译文的音标。
to.text.value string 译文。
to.polysemy Array<{ label: string; children: string[] }> 译文的多义信息。
raw string 翻译请求的原始响应主体。仅在请求选项中的 options.rawtrue 时返回。

import { iso6391X } from '@kabeep/node-translate';
iso6391X.getName(code);
参数 类型 可选 默认值 描述
code string - ISO-639-1 语言代码或 Google 翻译语言代码。

iso6391X.getAllNames();

iso6391X.getNativeName(code);
参数 类型 可选 默认值 描述
code string - ISO-639-1 语言代码或 Google 翻译语言代码。

iso6391X.getAllNativeNames();

iso6391X.getCode(name);
参数 类型 可选 默认值 描述
code string - ISO-639-1 语言名称或 Google 翻译语言名称。

iso6391X.getAllCodes();

iso6391X.getLanguages(codes);
参数 类型 可选 默认值 描述
code string - ISO-639-1 语言代码元组或 Google 翻译语言代码元组。

iso6391X.getAllDetections();

查看用例

import translate from '@kabeep/node-translate';

// 简单示例
translate('例子', { to: 'en' }).then(res => {
// => example
console.log(res.text);
});

查看用例

import translate from '@kabeep/node-translate';

// 使用语言名称并自动更正大小写
translate('例子', { to: 'ENGlish' }).then(res => {
// => example
console.log(res.text);
});

查看用例

import translate from '@kabeep/node-translate';

// 使用 `auto` 或将 `from` 参数留空以通过适应性检测语言
// 使用 `auto` 或将 `to ` 参数留空以通过操作系统检测语言(示例环境使用 `en`)
translate('例子').then(res => {
// => example
console.log(res.to.text.value);
});

查看用例

import translate from '@kabeep/node-translate';

// 输出源文本和译文的音标
translate('例子', { to: 'ja' }).then(res => {
// => Lìzi
console.log(res.from.text.phonetics);
// => Rei
console.log(res.to.text.phonetics);
});

查看用例

import translate from '@kabeep/node-translate';

// 输出源词的同义词
translate('例子', { to: 'en' }).then(res => {
// =>
// [
// '例',
// '例子',
// '范例',
// '榜样',
// '典范',
// '例证',
// ]
console.log(res.from.synonyms);
});

查看用例

import translate from '@kabeep/node-translate';

// 输出源词的例句
translate('example', { to: 'zh' }).then(res => {
// => [
// "it is vitally important that parents should set an [example]",
// "she followed her brother's [example] and deserted her family",
// "it's a good [example] of how European action can produce results",
// ]
console.log(res.from.sentences);
});

查看用例

import translate from '@kabeep/node-translate';

// 输出译文的多义信息
translate('例子', { to: 'en' }).then(res => {
// => [{
// label: 'noun',
// children: [
// 'example',
// 'case',
// 'instance',
// ],
// }]
console.log(res.to.polysemy);
});

查看用例

import translate from '@kabeep/node-translate';

// 自动检测并使用建议的正确源文本
translate('Thunk you', { from: 'en', to: 'zh' }).then(res => {
// => 谢谢你
console.log(res.to.text.value);
// => true
console.log(res.from.text.didYouMean);
});

查看用例

import translate from '@kabeep/node-translate';

// 自动纠正源文本中的拼写错误
translate('Thnak you', { from: 'en', to: 'zh' }).then(res => {
// => 谢谢
console.log(res.to.text.value);
// => true
console.log(res.from.text.autoCorrected);
});

查看用例

import translate from '@kabeep/node-translate';

// 自动检测并使用建议的正确源语言代码
translate('example', { from: 'zh', to: 'en' }).then(res => {
// => en
console.log(res.from.language.iso);
// => true
console.log(res.from.language.didYouMean);
});

// 自动检测并使用建议的正确源文本
translate('Thunk you', { from: 'en', to: 'zh' }).then(res => {
// => 谢谢你
console.log(res.to.text.value);
// => true
console.log(res.from.text.didYouMean);
});

查看用例

import translate from '@kabeep/node-translate';

// 在翻译请求失败时进行重试尝试(此时最多三次请求)
translate('例子', { to: 'en', retry: 2, timeout: 100 }).catch((err) => {
// => ETIMEDOUT - 达到了超时限制
// => ECONNRESET - 连接被强制关闭
// => EADDRINUSE - 无法绑定到任何空闲端口
// => ECONNREFUSED - 服务器拒绝了连接
// => EPIPE - 正在写入的流的远程端已关闭
// => ENOTFOUND - 无法将主机名解析为 IP 地址
// => ENETUNREACH - 没有网络连接
// => EAI_AGAIN - DNS 查询超时
// => EPARSE - 意料外的响应数据
// => EVALIDATION - 非法语言代码
console.log(err.message);
});

查看用例

import { iso6391X, LanguageCode, LanguageOption } from '@kabeep/node-translate';

// => en
console.log(iso6391X.getCode('english'));

// => ['aa', 'ab', ... 199 more items]
console.log(iso6391X.getAllCodes());

// => English
console.log(iso6391X.getName('en'));

// => ['Afar', 'Abkhaz', ... 199 more items]
console.log(iso6391X.getAllNames());

// => 中文
console.log(iso6391X.getNativeName('zh'));

// => ['Afaraf', 'аҧсуа бызшәа', ... 199 more items]
console.log(iso6391X.getAllNativeNames());

// => [
// { code: 'en', name: 'English', nativeName: 'English' },
// { code: 'zh', name: 'Chinese', nativeName: '中文' },
// ... 6 more items
// ]
console.log(iso6391X.getAllDetections());

// => [
// { code: 'en', name: 'English', nativeName: 'English' },
// { code: 'zh', name: 'Chinese', nativeName: '中文' },
// ]
console.log(iso6391X.getLanguages(['en', 'zh']));

// => true
console.log(iso6391X.validate('en'));
// => false
console.log(iso6391X.validate('english'));

欢迎通过 Pull Requests 或 Issues 来贡献你的想法和代码。

本项目采用 MIT 许可证。详情请见 LICENSE 文件。