https://github.com/tderflinger/remark-translate
A simple plugin for remark to translate markdown text to other languages.
https://github.com/tderflinger/remark-translate
javascript languages markdown node remark unified
Last synced: 2 months ago
JSON representation
A simple plugin for remark to translate markdown text to other languages.
- Host: GitHub
- URL: https://github.com/tderflinger/remark-translate
- Owner: tderflinger
- License: mit
- Created: 2022-08-10T09:38:26.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-08-14T12:31:08.000Z (almost 4 years ago)
- Last Synced: 2025-02-07T12:43:23.401Z (over 1 year ago)
- Topics: javascript, languages, markdown, node, remark, unified
- Language: JavaScript
- Homepage:
- Size: 120 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://www.npmjs.com/package/remark-translate)
**Remark-translate** is a simple plugin for remark to translate markdown text to other languages. It uses the
translation API of [DeepL](https://www.deepl.com/).
In order to use this plugin, you need to create an API key and register with DeepL.
Note: This is the first version of `remark-translate`, so please give feedback if you find any bugs.
## Installation
```bash
npm install remark-translate
```
## Usage
You need to pass an `options` object to the plugin in order to use it.
These are the options:
- sourceLang: the language of the source markdown text
- destLang: the language of the translated text
- apiKey: the DeepL API token
- yamlTranslate (optional): array with the yaml frontmatter keys to be translated
For security, the API key is not displayed in the source code but used from the environment
variable `DEEPL_API_KEY`.
This is an example for translating markdown text from English to Spanish:
```js
const authKey = process.env.DEEPL_KEY;
const options = { sourceLang: 'en', destLang: 'es', apiKey: authKey, yamlTranslate: ["title", "description"] };
const file = await unified()
.use(remarkParse)
.use(remarkStringify)
.use(remarkFrontmatter, ['yaml'])
.use(remarkTranslate, options)
.process(data);
```
Note that any yaml frontmatter fields as defined in `yamlTranslate` options are also translated.
This library is ESM only, meaning you cannot import it using `require` in a Node application. Therefore, you need
at a minimum a Node version that supports ESMs.
## Testing
You can test the plugin by running the following command:
```bash
npm run test
```
## Todos
Currently, the best results are with pure text paragraphs without any additional markdown elements like links or emphasis.
These markdown elements influence the whole sentence translation because they are currently translated independently.
I hope to fix this in the future.
Also, I hope to add other translation providers like AWS Translate in the future.
## References
- Unified: https://github.com/unifiedjs
- Remark: https://remark.js.org
- DeepL: https://www.deepl.com
- js-yaml: https://github.com/nodeca/js-yaml
## License
MIT License