{"id":20551673,"url":"https://github.com/clarketm/i18n-api-node","last_synced_at":"2025-04-14T11:32:22.329Z","repository":{"id":86955315,"uuid":"88006454","full_name":"clarketm/i18n-api-node","owner":"clarketm","description":"Internationalization (I18n) API - Node","archived":false,"fork":false,"pushed_at":"2017-05-02T22:34:03.000Z","size":145,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T00:44:15.035Z","etag":null,"topics":["api","i18n","internationalization","loopback","microservice","node","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clarketm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-12T03:36:44.000Z","updated_at":"2021-03-02T16:59:04.000Z","dependencies_parsed_at":"2023-05-29T23:30:42.283Z","dependency_job_id":null,"html_url":"https://github.com/clarketm/i18n-api-node","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fi18n-api-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fi18n-api-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fi18n-api-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clarketm%2Fi18n-api-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clarketm","download_url":"https://codeload.github.com/clarketm/i18n-api-node/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248871962,"owners_count":21175325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","i18n","internationalization","loopback","microservice","node","nodejs"],"created_at":"2024-11-16T02:33:01.248Z","updated_at":"2025-04-14T11:32:22.308Z","avatar_url":"https://github.com/clarketm.png","language":"JavaScript","readme":"# Internationalization (I18n) API - Node\n\n## Installation\n```bash\n$ npm install\n```\n\n## Configuration\n```js\n/* config.json */\n{\n  \"restApiRoot\": \"/v1\",   // api root\n  \"host\": \"0.0.0.0\",      // host\n  \"port\": 3000,           // port\n  ...\n}\n```\n```js\n/* datasources.json */\n{\n  //////////////////////////////////\n  // in-memory database (default) //\n  //////////////////////////////////\n  \"db\": {\n    \"name\": \"db\",\n    \"connector\": \"memory\"\n  },\n  //////////////////////////\n  // MongoDB database //////\n  ///////////////////////////////////////////////////////\n  // [1] install and run mongodb \n  // [2] change \"db\" =\u003e \"locale\" in `model-config.json`\n  ///////////////////////////////////////////////////////\n  \"locale\": {\n    \"host\": \"localhost\",\n    \"port\": 27017,\n    \"database\": \"locale\",\n    \"connector\": \"mongodb\"\n  }\n}\n```\n\n## Running\n```bash\n$ npm start\n\nWeb server listening at: http://0.0.0.0:3000\nBrowse your REST API at http://0.0.0.0:3000/explorer\n```\n\n## Model\n\n### Locale\n|  Property   |  Type  | Required | Default |\n|-------------|--------|----------|---------|\n|  language   | string |   true   |   en    |\n|  component  | string |   true   |         |   \n|  strings    | object |   true   |         | \n```js\n/////////////\n// Locale ///\n/////////////\n{\n \"language\": {\n  \"type\": \"string\",\n  \"required\": true,\n  \"default\": \"en\"\n},\n\"component\": {\n  \"type\": \"string\",\n  \"required\": true\n},\n\"strings\": {\n  \"type\": \"object\",\n  \"required\": true\n}\n```\n## Operations\n![operations screenshot](https://github.com/clarketm/i18n-api-node/blob/master/screenshot.png)\n\n## Usage\n```bash\n#############\n## POST #####\n#############\ncurl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \\ \n  \"language\": \"en\", \\ \n  \"component\": \"string\", \\ \n  \"strings\": { \\ \n    \"header\" : \"I am a header\", \\ \n    \"body\" : \"I am a body\", \\ \n    \"footer\" : \"I am a footer\" \\ \n  } \\ \n}' 'http://0.0.0.0:3000/v1/locales'\n\n// Response Code: 200\n{\n  \"language\": \"en\",\n  \"component\": \"string\",\n  \"strings\": {\n    \"header\": \"I am a header\",\n    \"body\": \"I am a body\",\n    \"footer\": \"I am a footer\"\n  },\n  \"id\": 1\n}\n```\n\n```bash\n#############\n## GET ######\n#############\ncurl -X GET --header 'Accept: application/json' \\ \n  'http://0.0.0.0:3000/v1/locales/en/app'  # OR 'http://0.0.0.0:3000/v1/locales/en' to get all components \n\n// Response Code: 200\n{\n  \"strings\": {\n    \"header\": \"I am a header\",\n    \"body\": \"I am a body\",\n    \"footer\": \"I am a footer\"\n  },\n  \"id\": 1\n}\n```\n\n## :star: Credits\nSpecial thanks to the following: \n* [Loopback](https://loopback.io/) - StrongLoop\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarketm%2Fi18n-api-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclarketm%2Fi18n-api-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclarketm%2Fi18n-api-node/lists"}