WARNING: Should not be used for commercial purposed. If you really want, please use the Azure Service.
An easy way to get the translator service from Bing.
$ npm install bing-translate-service
// For typescript
import { BingTranslator } from "bing-translator-service";
// create an instance of translator from 'en' to 'zh-Hans'.
const translator = await BingTranslator.createTranslator("en", "zh-Hans");
translator.translate("Hello world")
.then(data => {
console.log(JSON.stringify(data, null, 2));
})
.catch(err => {
console.log(err);
});
// For javascript
import BingTranslator from "bing-translator-service";
// create an instance of translator from 'auto-detect' to 'zh-Hans'.
const translator = await BingTranslator.createTranslator("auto", "zh-Hans");
// don't use the default translation rule and use a given one.
translator.translate("Hello world", "en", "zh-Hans")
.then(data => {
console.log(JSON.stringify(data, null, 2));
})
.catch(err => {
console.log(err);
});
{
"detectedLanguage": {
"language": "en",
"score": 1
},
"translations": [
{
"text": "世界您好",
"transliteration": {
"text": "shìjiè nínhǎo",
"script": "Latn"
},
"to": "zh-Hans",
"sentLen": {
"srcSentLen": [
11
],
"transSentLen": [
4
]
}
}
]
}
Although bing-translate-api has already provided a simple way to help using bing translate service, during using it, I found some more features are needed:
- Hot start, to increase the startup speed.
- More information from response.
So,
- I write a cache to save status, which not only reduces impact on bing service, but also starts service quickly.
- Pass out the complete result of the bing service.
export interface TranslationResult {
detectedLanguage: DetectedLanguage
translations: Translation[]
}
export interface DetectedLanguage {
language: string
score: number
}
export interface Translation {
text: string
transliteration?: Transliteration
to: string
sentLen: SentLen
}
export interface Transliteration {
text: string
script: string
}
export interface SentLen {
srcSentLen: number[]
transSentLen: number[]
}
export class BingTranslator {
static createTranslator(fromLang: string, toLang: string): Promise<BingTranslator>;
static enableLog(): void;
static disableLog(): void;
static isLanguageSupported(lang: string): boolean;
translate(text: string, fromLang: string, toLang: string): Promise<TranslationResult>;
}
Supported languages could be found here: lang.json.
Copyright (c) 2023-present, Plantree