Skip to content

NodeJS http server to store your internationalized phrases

Notifications You must be signed in to change notification settings

limpassat/i18n-node-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

i18n-node-server

NodeJS http server to store your internationalized phrases

Supports ISO 3166-1 codes

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

GET /ping

returns pong

GET /api/named

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
GET /api/cc

returns array with all supports country codes

["AF", "AL", "DZ", "AS", "AD", "AO", ...]

239 country codes
PUT /api/put-new

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

GET /api/record/:ident

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

GET /api/all

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"
    }
}
POST /api/update-records

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

POST /api/update-record

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

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.