感谢 matheuss 和 iamtraction
编写了该库的原始版本。由于原始版本作者不再积极维护,我使用 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)
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
如果失败,重试翻译请求的次数。
返回: Promise<TranslationOption>
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.raw
为 true
时返回。
import { iso6391X } from '@kabeep/node-translate' ;
参数
类型
可选
默认值
描述
code
string
否
-
ISO-639-1 语言代码或 Google 翻译语言代码。
iso6391X . getNativeName ( code ) ;
参数
类型
可选
默认值
描述
code
string
否
-
ISO-639-1 语言代码或 Google 翻译语言代码。
iso6391X . getAllNativeNames ( ) ;
参数
类型
可选
默认值
描述
code
string
否
-
ISO-639-1 语言名称或 Google 翻译语言名称。
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 文件。