i18n-node-server
Version:
NodeJS http server to store your internationalized phrases
222 lines (151 loc) • 3.73 kB
Markdown
# i18n-node-server
NodeJS http server to store your internationalized phrases
Supports [ISO 3166-1 codes](https://en.wikipedia.org/wiki/ISO_3166-1)
## Usage
For install run command `npm i -g i18n-node-server`
Run `i18n-node-server --help` for details
Run `i18n-node-server` for start http-server
## HTTP API
<details>
<summary>GET /ping</summary>
returns `pong`
</details>
<details>
<summary>GET /api/named</summary>
returns all supports country codes with country name
```
{
"AF": "Afghanistan",
"AL": "Albania, People's Socialist Republic of",
"DZ": "Algeria, People's Democratic Republic of",
"AS": "American Samoa",
"AD": "Andorra, Principality of",
"AO": "Angola, Republic of",
...
}
239 country codes
```
</details>
<details>
<summary>GET /api/cc</summary>
returns array with all supports country codes
```
["AF", "AL", "DZ", "AS", "AD", "AO", ...]
239 country codes
```
</details>
<details>
<summary>PUT /api/put-new</summary>
put a new phrase with translates
**body**
```
{
ident: "my.first-ident",
records: {
"AL": "translate for Albania",
"AF": "translate for Afganistan",
...
}
}
```
**returns http status**
`200` - new phrase saved
`400` - ident already exists or _body_ has incorrect structure
</details>
<details>
<summary>GET /api/record/:ident</summary>
returns all translates by a phrase ident
**query options**
* countryCode
```
/api/record/you.phrase.ident?countryCode=GB
```
return string which contains translate for country GB
* filter
```
/api/record/you.phrase.ident?filter=GB,AL,AF
```
returns translates only for GB, AL and AF country codes
```
{
"GB": "translate for GB",
"AL": "translate for AL",
"AF": "translate for AF",
}
```
**returns http status**
`400` - ident not valid
</details>
<details>
<summary>GET /api/all</summary>
returns all translates of every phrases
```
{
"ident1": {...},
"ident2": {
"GB": "translate for GB",
"AL": "translate for AL",
"AF": "translate for AF",
...
}
}
```
**query options**
* filter
```
/api/all?filter=GB,AL,AF
```
returns translates only for GB, AL and AF country codes fo every phrase
```
{
"ident-1": {
"GB": "translate for GB",
"AL": "translate for AL",
"AF": "translate for AF"
},
"ident_2": {
"GB": "translate for GB",
"AL": "translate for AL",
"AF": "translate for AF"
}
}
```
</details>
<details>
<summary>POST /api/update-records</summary>
update many translations for phrase
**body**
```
{
"ident": "your.phrase-ident",
"records": {
"GB": "new translate for GB",
"AL": "new translate for AL",
"AF": "new translate for AF",
...
}
}
```
**returns http codes**
`200` - translations for a phrase updated
`400` - phrase not exists or _body_ has incorrect structure
</details>
<details>
<summary>POST /api/update-record</summary>
update one translation for phrase
**body**
```
{
"ident": "your.phrase-ident",
"countryCode": "GB",
"value": "new translation for GB"
}
```
**returns http codes**
`200` - translation for a phrase updated
`400` - phrase not exists or _body_ has incorrect structure or _value_ is null
</details>
## Ident format
Regex for testing phrase ident: `/[a-zA-Z0-9\.\_\-\,]+/`
## How works inside
For every phrase creates new `.json` file and contains translates for every 239 countries.