jsdoc-i18n
Version:
A internationlization workflow developed around JSDoc
119 lines (100 loc) • 3.71 kB
Markdown
jsdoc-i18n
==========
`jsdoc-i18n` is an internationalization workflow developed around the `jsdoc` documentation tool.
What this means exactly is:
- you can export `jsdoc` data into an intermediate database
- you can use the built in tool to create multiple translations of each `jsdoc` item
- you can render these language variations into separate language folders
Also we really tried to make `jsdoc-i18n` an extension of the existing `jsdoc` tool, giving it a
relatively small footprint. This means that the `jsdoc` configuration system, all existing `jsdoc`
arguments, as well as existing `jsdoc` templates (with very minor patching) are supported.
Installation
------------
To install `jsdoc-i18n` globally
```
npm install -g jsdoc-i18n
```
To add `jsdoc-i18n` as a dependency to you project
```
npm install --save jsdoc-i18n
```
Configuration
-------------
On top of the existing `jsdoc` configuration options, the following options are accepted under the
`i18n` rootpath:
- `defaultLang`: The default language existing documentation is written in (**Default**: `en`)
- `possibleLang`: List of languages we can translate to (**Default**: `['zh', 'es', 'ja']`)
- `dbPlugin`: The `jsdoc-i18n` database plugin to be used when saving or retrieving `jsdoc` data.
This can be either a filename or a string reference to one of the `jsdoc-i18n` internal database
plugins (**Default**: `file`)
- `dbFilePath`: Path to database json files for `jsdoc-i18n` internal database `file` plugin
(**Default**: `./i18n`)
- `serverPort`: Port on which `jsdoc-i18n` translation web application tool should listen
(**Default**: `8080`)
- `serverCheckPaths`: Paths which `jsdoc-i18n` translation web application tool tool check when a
request is made (**Default**: `['.', 'index.html', 'index.htm']`)
**NOTE:**
Currently these options cannot be set via command line. Therefore the configuration file argument is
required for `jsdoc-i18n` to function properly.
Usage
-----
To import `jsdoc` data to `jsdoc-i18n` database:
(Supports `jsdoc` arguments)
```
jsdoc-i18n-import -c path/to/your/conf.json path/to/files/to/be/parsed
```
To start `jsdoc-i18n` translation web application tool:
([http://localhost:8080](http://localhost:8080))
```
jsdoc-i18n-server -c path/to/your/conf.json
```
To render data from `jsdoc-i18n` database with given language
(Supports `jsdoc` arguments)
```
jsdoc-i18n-render -c path/to/your/conf.json -l <language>
```
Caveats
-------
- Due to an issues in `jsdoc` ES6 class definitions cannot be inlined with export statements.
For example you cannot define an ES6 class like such:
```
export default class SomeClass {
}
```
Instead you will have to break the definition over 2 lines:
```
class SomeClass {
}
export default SomeClass;
```
- Due to the way `jdodc-i18n` works, you cannot document a class and it's constructor separately.
For example you cannot document an ES6 class like such:
```
/**
* @extends EventEmitter
*/
class SomeClass extends EventEmitter {
/**
* @param {*} a - what a is for
* @param {*} b - what b is for
*/
constructor(a, b) {
}
}
```
Instead you should put the constructor documentation inside the class documentation:
```
/**
* @extends EventEmitter
* @param {*} a - what a is for
* @param {*} b - what b is for
*/
class SomeClass extends EventEmitter {
constructor(a, b) {
}
}
```
License
-------
`jsdoc-i18n` is free software, licensed under the MIT License.
See the `LICENSE.md` file in this repository for more details.