i18next-sync-fs-backend

node.js backend layer for i18next using fs module to load resources synchronously from filesystem

Usage no npm install needed!

<script type="module">
  import i18nextSyncFsBackend from 'https://cdn.skypack.dev/i18next-sync-fs-backend';
</script>

README

i18next-sync-fs-backend

Travis CodeCov npm version

This is a fork of the official i18next fs backend to be used node.js. It will load resources synchronously from filesystem. Right now it supports following filetypes:

  • .json
  • .json5
  • .yml

⚠️ This is a fork of the official fs backend and works syncronously.

✨ Thanks to @arve0 for transferring the Github repo to me. His old code is available in legacy branch.

Getting started

Source can be loaded via npm.

$ npm install i18next-sync-fs-backend

Wiring up:

import i18next from 'i18next';
import Backend from 'i18next-sync-fs-backend';

i18next
  .use(Backend)
  .init({
    // This is necessary for this sync version
    // of the backend to work:
    initImmediate: false,
    // ...i18next options
  });

// i18next is immediately ready:
console.log(i18next.t('someKey'));

As with all modules you can either pass the constructor function (class) to the i18next.use or a concrete instance.

Backend Options

{
  // path where resources get loaded from
  loadPath: '/locales/{{lng}}/{{ns}}.json',

  // path to post missing resources
  addPath: '/locales/{{lng}}/{{ns}}.missing.json',

  // jsonIndent to use when storing json files
  jsonIndent: 2
}

hint {{lng}}, {{ns}} use the same prefix, suffix you define in interpolation for translations!!!

Options can be passed in:

preferred - by setting options.backend in i18next.init:

import i18next from 'i18next';
import Backend from 'i18next-sync-fs-backend';

i18next
  .use(Backend)
  .init({
    initImmediate: false,
    backend: {
      // Backend options here...
    }
  });

on construction:

import Backend from 'i18next-sync-fs-backend';
const backend = new Backend(null, options);

by calling init:

import Backend from 'i18next-sync-fs-backend';
const backend = new Backend();
backend.init(options);