Use Google Translate to translate VTT subtitle files.
npm install vtt-translateNot exactly the best idea...
...but you can use this to Google Translate your .vtt subtitle files into other languages!
Requires Node.js 7.10.1 or later.
``console`
npm install --global vtt-translate
`console`
$ vtt-translate
Input VTT filename: ./vtt/transcript_en.vtt
Source language code: en
Destination language code: fr
Google Translate API key (https://cloud.google.com/translate/): [Paste your API key here]
Translating...
Translation complete!
Destination VTT filename: ./vtt/transcript_fr.vtt
$
See the Node API description for explanation of the command line inputs.
Note that API limits apply... if you fill your daily quota, a restore file will be saved so you can continue the next day without losing your progress:
`console
$ vtt-translate
Input VTT filename: ./vtt/transcript_en.vtt
Source language code: en
Destination language code: fr
Google Translate API key (https://cloud.google.com/translate/): [Paste your API key here]
Translating...
{ code: 403,
message: 'User Rate Limit Exceeded',
errors:
[ { message: 'User Rate Limit Exceeded',
domain: 'usageLimits',
reason: 'userRateLimitExceeded' } ],
translatedCues:
[ ... ] }
Saving temp file so we can resume later where we left off...
$
`
Don't remove this temp file! Otherwise you'll have to start over from scratch later.
Once the download completes, the temp file will be deleted automatically.
`console`
npm install --save vtt-translate
This API example is functionally identical to the earlier command line example.
`js
const { getTranslatedVttForPathname } = require('vtt-translate');
const fs = require('fs');
const pathname = './vtt/transcript_en.vtt';
const apiKey = '[Paste your API key here]';
const source = 'en';
const target = 'fr';
getTranslatedVttForPathname(pathname, apiKey, { source, target })
.then(vttContent => {
fs.writeFile('./vtt/transcript_fr.vtt', vttContent, err => {
if (err) {
console.error(err);
}
});
})
.catch(err => {
console.error(err);
});
`
#### getTranslatedVttForPathname(pathname, apiKey, params)
#### Arguments
* pathname: The filesystem pathname for the source vtt file.apiKey
* : A valid Google Cloud Translation API keyparams.source
* : A language code supported by Google's Neural Machine Translation Model, corresponding to the language of the source text (e.g. 'en')params.target
* A language code corresponding to the translation target languageparams.restoredCuesPathname
* : A pathname pointing to a JSON file saved with a backup of previously translated cues (see error handling)
#### Returns
A Promise which resolves with the full text of the translated vtt file (as a string)
#### Error handling
If you .catch an error and the error has a translatedCues property, you can save that object to a json file and restore it later with params.restoredCuesPathname`. This allows downloading a translation across multiple days if your API request quota is too small to download the translation in one day.