babel-plugin-i18n

1.2.0 • Public • Published

babel-plugin-i18n

Babel plugin to statically compile keypath denoted translation calls to literals.

Compiles these...

const myString = __("my.translation.path");
const anEnum = __obj("example.countries");
const lyrics = __arr("song");
const veryComplex = __dump("complex");

...with this kind of translation...

{
  "my": {
    "translation": {
      "path": "Hei, maailma!"
    }
  },
  "example": {
    "countries": {
      "finland": "Suomi",
      "sweden": "Ruotsi"
    }
  },
  "song": [
    "Hey!",
    "Ho!",
    "Let's go!"
  ],
  "complex": [[["multilevel array"], 123], null]
}

...into this:

const myString = "Hei, maailma!";
const anEnum = {
  finland: "Suomi",
  sweden: "Ruotsi"
};
const lyrics = ["Hey!", "Ho!", "Let's go!"];
const complex = [[["multilevel array"], 123], null];

Installation

$ npm install babel-plugin-i18n --save-dev

Usage

Via .babelrc (Recommended)

.babelrc

{
  "plugins": ["i18n", {
    "translationLoader": "./path/to/translationLoader"
  }]
}

Via CLI

TODO: How does one actually pass options via CLI?

Via Node API

require("babel-core").transform("code", {
  plugins: ["i18n", {
    "translationLoader": "./path/to/translationLoader"
  }]
});

Translation loader example

const join = require('path').join;
const readFileSync = require('fs').readFileSync;
 
const TRANSLATIONS_PATH = join(__dirname, 'completeTranslations.json');
 
module.exports = function myTranslationLoader() {
  const translationJSON = readFileSync(TRANSLATIONS_PATH, 'utf8');
  return JSON.parse(translationJSON);
};

Readme

Keywords

Package Sidebar

Install

npm i babel-plugin-i18n

Weekly Downloads

0

Version

1.2.0

License

MIT

Last publish

Collaborators

  • valscion