Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

i18n-modules

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

i18n-modules

Isolated I18N modules

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

I18N modules

Isolated I18N modules for your components. Like CSS modules but for i18n ;)

npm install --save i18n-modules

Benefits

  • No more large files with translations for the whole website.
  • No more global scope.
  • No more broken texts.

Getting Started

Client

The steps below use webpack to organize building process. You are free to use anything else.

Step 1:

First of all you should set available locales with the global variable LANGS and a locale for the current bundle with BUNDLE_LANG:

    plugins: [
        new webpack.DefinePlugin({
            LANGS: JSON.stringify(['en', 'ru']),
            BUNDLE_LANG: JSON.stringify(bundleLang)
        })
    ]
Step 2:

Set an ignore pattern for unnecessary languages in the current bundle:

    plugins: [
        new webpack.IgnorePlugin(new RegExp(`^\.\/(?!${bundleLang}$)`), /i18n$/),
        new webpack.DefinePlugin({
            LANGS: JSON.stringify(['en', 'ru']),
            BUNDLE_LANG: JSON.stringify(bundleLang)
        })
    ]
Step 3:

Create a folder with translations for your component:

// src/components/MyComponent/i18n/en.js

module.exports = {
    'hello_world': 'Hello, world!'
};
// src/components/MyComponent/i18n/ru.js

module.exports = {
    'hello_world': 'Привет, мир!'
};
// src/components/MyComponent/i18n/index.js
// Include translations

module.exports = require('i18n-modules').include(lang => require(`./${lang}`));
Step 4:

Use translations from your component:

// src/components/MyComponent/index.js

const t = require('./i18n');

class MyComponent extends Component {
    render() {
        return <h1>{t('hello_world')}</h1>
    }
}

Node

If you want to use i18n modules with node.js, for example, to render react components, you should set a locale for the request before call translation functions.

I18N.setLang(req.lang);
res.status(200).send(...rendering...);

If your project renders client code, don't set BUNDLE_LANG and include all translations into the server bundle.

plugins: [
    new webpack.DefinePlugin({
        LANGS: JSON.stringify(['en', 'ru'])
    })
]

Examples

See example folder. Clone repo and run npm i && npm start.

Other

Supports interpolation, pluralization. Has Polyglot.js under the hood.

Keywords

FAQs

Package last updated on 24 Apr 2017

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc