https://github.com/smartsupp/node-poeditor-utils
higher-level POEditor utilities for Node.js
https://github.com/smartsupp/node-poeditor-utils
Last synced: 5 months ago
JSON representation
higher-level POEditor utilities for Node.js
- Host: GitHub
- URL: https://github.com/smartsupp/node-poeditor-utils
- Owner: smartsupp
- License: mit
- Created: 2015-12-16T10:18:24.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-06-05T15:21:26.000Z (about 7 years ago)
- Last Synced: 2025-09-18T18:46:21.626Z (10 months ago)
- Language: TypeScript
- Homepage:
- Size: 77.1 KB
- Stars: 1
- Watchers: 14
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# poeditor-utils
higher-level POEditor utilities for Node.js
* uses [POEditor API v1][1] via [poeditor-client][2]
* API is still a subject to change
[1]: https://poeditor.com/api_reference/
[2]: https://github.com/janjakubnanista/poeditor-client
## Usage
```js
import * as utils from 'poeditor-utils'
import * as fs from 'fs'
const languageCodeOverrides = {
'pt-br': 'pt',
}
const translations = await utils.getTranslations('API token', [
'project A',
'project B',
])
const translationsByLanguage = utils.groupTranslations(translations, (translation) => translation.languageCode)
translationsByLanguage.forEach((translations, languageCode) => {
const language = languageCodeOverrides[languageCode] || languageCode
const data = utils.formatTranslationsAsJson(translations, {
indent: 2,
})
fs.writeFileSync(`./translations/${language}.json`, data)
})
```
## utils.Translation
* `projectName: string`
* `languageCode: string`
* `term: string`
* `value: string`
Translation of a single term to a single language.
## utils.getTranslations(apiToken, projectNames[, options])
* `apiToken: string`
* `projectNames: string[]`
* `options: Object`
* `languageCodes: string[]`
* returns `Promise`
Gets translations for multiple projects. Gets translations for all the project languages or only languages specified with `options.languageCodes`.
## utils.groupTranslations(translations, grouper)
* `translations: Translation[]`
* `grouper: (translation: Translation) => string`
* returns `Map`
Groups translations by keys produced by `grouper`.
## utils.formatTranslationsAsJson(translations[, options])
* `translations: Translation[]`
* `options: Object`
* `indent: number | string`
* returns `string`
Formats translations to string as stable sorted JSON.
## Obsolete API
### ~~utils.Client(apiToken)~~ [DEPRECATED]
* `apiToken: string` - POEditor API token
Exposes the [poeditor-client][2] `Client`. See their docs for more.
### ~~utils.getProject(apiToken, projectName)~~ [DEPRECATED]
* `apiToken: string` - POEditor API token
* `projectName: string` - POEditor project name
Returns a promise which resolves with a [poeditor-client][2] `Project` representation of the project. See their docs for more.
### ~~utils.pullTranslations(apiToken, projectName, getPathCallback)~~ [DEPRECATED]
* `apiToken: string` - POEditor API token
* `projectName: string` - POEditor project name
* `getPathCallback: (translation: Translation) => string` - produces destination file path for given translation
Gets translations for all the project languages and writes them to files by `getPathCallback` as a stable sorted JSON. Returns a promise which resolves with an array of file paths written.
```js
utils.pullTranslations('API token', 'project name', (translation) => {
return 'translations/' + translation.languageCode + '.json'
})
.then((paths) => {
console.log(paths) // ['translations/en.json', ...]
})
```