nodejs-i18n
Version:
Minimalistic internationalization using gettext style for NodeJS
165 lines (120 loc) • 4.38 kB
Markdown
# NodeJS i18n
[](https://travis-ci.org/TiagoDanin/NodeJS-i18n) [](https://npmjs.org/package/nodejs-i18n) [](https://npmjs.org/package/nodejs-i18n) [](https://npmjs.org/package/nodejs-i18n)
Minimalistic internationalization using gettext style for NodeJS
## Features
- Gettext Style
- Easy Imprementation
- Create .po via CLI
- Select Lang per User
## Installation
Module available through the [npm registry](https://www.npmjs.com/). It can be installed using the [`npm`](https://docs.npmjs.com/getting-started/installing-npm-packages-locally) or [`yarn`](https://yarnpkg.com/en/) command line tool.
```sh
# Yarn (Recomend)
yarn global add nodejs-i18n
# NPM
npm install nodejs-i18n --global
```
## Usage
```sh
# Create file
find . | grep .js | sort | nodejs-i18n > en.po
# Create file (all strings) [beta]
find . | grep .js | sort | nodejs-i18n --all > en.po
# Create file (get identifier value) [beta]
find . | grep .js | sort | nodejs-i18n --value > en.po
```
## Example
```js
const { Resources, Translation } = require('nodejs-i18n')
const resources = new Resources()
resources.load('pt', 'pt.po')
const user = new Translation('pt')
//i18n: My Hello World with NodeJs i18n
const world = user._`world` // Mundo
user._`Hello ${world}` // Olá mundo
```
## Documentation
### Options
#### Options :: Resources({})
- **lang** - String
> Lang id.</br>
> Default value: `en`
#### Options :: Resources({}).load(lang, file)
Load translation
- **lang** - String
> Lang id.</br>
- **file** - String
> File path
#### Options :: Resources({}).remove()
Remove translation.
- **lang** - String
> Lang id.</br>
#### Options :: Translation(lang)
Select translation.
- **lang** - String
> Lang id.</br>
#### Options :: Translation(lang).\_(string)
String translation.
- **String** - String
### CLI
Create en.po files with `nodejs-i18n`. Add in your package.json
```json
"scripts": {
"i18n": "find . | grep .js | sort | nodejs-i18n > en.po"
}
```
and run `$ npm run i18n` or `$ yarn i18n`
## Tests
To run the test suite, first install the dependencies, then run `test`:
```sh
# Using Yarn
yarn test
```
## Dependencies
<details>
<summary><a href="https://ghub.io/argv">argv</a>: CLI Argument Parser</summary>
<b>Author</b>: Corey Hart</br>
<b>License</b>: </br>
<b>Version</b>: 0.0.2
</details>
<details>
<summary><a href="https://ghub.io/esprima">esprima</a>: ECMAScript parsing infrastructure for multipurpose analysis</summary>
<b>Author</b>: Ariya Hidayat</br>
<b>License</b>: BSD-2-Clause</br>
<b>Version</b>: ^4.0.1
</details>
<details>
<summary><a href="https://ghub.io/gettext-parser">gettext-parser</a>: Parse and compile gettext po and mo files to/from json, nothing more, nothing less</summary>
<b>Author</b>: Andris Reinman</br>
<b>License</b>: MIT</br>
<b>Version</b>: ^4.0.3
</details>
<details>
<summary><a href="https://ghub.io/minimist">minimist</a>: parse argument options</summary>
<b>Author</b>: James Halliday</br>
<b>License</b>: MIT</br>
<b>Version</b>: ^1.2.5
</details>
<details>
<summary><a href="https://ghub.io/tempy">tempy</a>: Get a random temporary file or directory path</summary>
<b>Author</b>: Sindre Sorhus</br>
<b>License</b>: MIT</br>
<b>Version</b>: 0.5.0
</details>
## Dev Dependency
<details>
<summary><a href="https://ghub.io/mocha">mocha</a>: simple, flexible, fun test framework</summary>
<b>Author</b>: TJ Holowaychuk</br>
<b>License</b>: MIT</br>
<b>Version</b>: 7.2.0
</details>
## Related
<details>
<summary><a href="https://ghub.io/gettext-parser">gettext-parser</a>: Parse and compile gettext po and mo files to/from json, nothing more, nothing less</summary>
<b>Author</b>: Andris Reinman</br>
<b>License</b>: MIT
</details>
## Contributors
Pull requests and stars are always welcome. For bugs and feature requests, please [create an issue](https://github.com/TiagoDanin/NodeJS-i18n/issues). [List of all contributors](https://github.com/TiagoDanin/NodeJS-i18n/graphs/contributors).
## License
[MIT](LICENSE) © [TiagoDanin](https://TiagoDanin.github.io)