🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

i18n-controller

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Package was removed
Sorry, it seems this package was removed from the registry

i18n-controller

maeum i18n controller

1.0.0
unpublished
latest
Source
npm
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

i18n controller

ts Download Status Github Star Github Issues NPM version @maeum/i18n-controller License codecov code style: prettier

The @maeum/i18n-controller is a package that helps developer to integreate node-polyglot. Developer can generate a i18n resource via json format file and then use as a singletone class in application(eg. fastify.js or express.js).

Why use @maeum/i18n-controller?

  • Support i18n feature in your application with less work
  • Front-end messages can be managed on server
    • For example, server redeployment allows message changes without front-end or iOS, Android app deployment
  • Manage messages as resource file to separate them from source code
    • Separated resource file it can be used in non-HTTP request/response code as well

Table of Contents

Getting Started

installation

npm install @maeum/i18n-controller --save

Configuration

// `localeRoot` is resource location
// `defaultLanguage` is fallback language
await I18nContainer.bootstrap({ localeRoot: './resource', defaultLanguge: 'en' }, true);

if (somethingError) {
  throw new Error(I18nContainer.it.t('en', 'common.error', { id: 'your pet id' }));
}

How to work?

The @maeum/i18n-controller implements i18n support using node-polyglot. You can use directories to create polyglot objects in multiple languages, and polyglot objects to manage and consume i18n messages.

flowchart LR
A01[<ul><li>resources</li><ul><li>en-gb<ul><li>common.json</li><li>pet.json</li></ul></li><li>en-us<ul><li>common.json</li><li>pet.json</li></ul></li><li>ko<ul><li>common.json</li><li>pet.json</li></ul></li></ul></ul>]
B01[<ul><li>Polyglot:en-gb</li><li>Polyglot:en-us</li><li>Polyglot:ko</li></ul>]
C01["Polyglot:en-gb.t('common.error')"]
C02["Polyglot:en-gb.t('pet.name.require')"]

A01-->B01
B01-->C01
B01-->C02

Each resource files, like common.json, use jsonc-parser to read in content, so you can add comments to the resource file.

{
  // korean common error message
  // you can add comments in resource file
  "error": "An error occurred, please try again later"
}

Usage

// synchronous bootstrap
I18nContainer.bootstrap({ localeRoot: './resources' }, false);

// asynchronous bootstrap
await I18nContainer.bootstrap({ localeRoot: './resources' }, true);

// custom polyglot function
// @see https://github.com/airbnb/polyglot.js#options-overview
await I18nContainer.bootstrap({ localeRoot: './resources', polyglot: { ...your custom option } }, true);

// translate function
I18nContainer.it.t('common.error', { id: 'petId' });

Option overview

Detail option can check here.

nametyperequireddescription
localeRootstringrequiredSpecify the location of the resource file
defaultLanguagestringSpecify the default language. If no language is found when using t function (translate function), the default language translation function is used
polyglot.allowMissingbooleana boolean to control whether missing keys in a t call are allowed. If false, by default, a missing key is returned and a warning is issued
polyglot.interpolationobjectan object to change the substitution syntax for interpolation by setting the prefix and suffix fields
polyglot.onMissingKeyfunctionif allowMissing is true, and this option is a function, then it will be called instead of the default functionality. Arguments passed to it are key, options, and locale. The return of this function will be used as a translation fallback when polyglot.t('missing.key') is called (hint: return the key)
pluralRulesobjectan object of pluralTypes and pluralTypeToLanguages to control pluralization logic

License

This software is licensed under the MIT.

FAQs

Package last updated on 24 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts