@openquantum/i18next-node-mongo-backend

Use i18next with mongodb as backend

Usage no npm install needed!

<script type="module">
  import openquantumI18nextNodeMongoBackend from 'https://cdn.skypack.dev/@openquantum/i18next-node-mongo-backend';
</script>

README

npm license

Build Status codecov Maintainability code style: prettier

Are you a Deno user? If true, we provide the same library for Deno. See: Mongo Backend for Deno 🦖

Inspired from i18next-node-mongodb-backend with support for mongodb@3.5.x and some bug fixes and more improvements

Integrate i18next with MongoDB

Banner

Introduction

This is a i18next backend to be used Node JS. It will load resources from a MongoDB database with official node mongodb driver.

Getting started

yarn add mongodb i18next-node-mongo-backend
# or
npm install mongodb i18next-node-mongo-backend

Important: This library doesn't include mongodb library. You have to install it yourself

Usage

const i18next = require('i18next');
const Backend = require('i18next-node-mongo-backend');

i18next.use(Backend).init({
  // Backend Options
  backend: options,
});

Backend Options

{
  // Database Name
  dbName: '<DB Name>', // Required

  // MongoDB Uri
  uri: '<DB URI>',

  // Or

   // MongoDB standard configuration
  host: '<DB Host>',
  port: 27017,

  // Or

  // If you have your own `MongoClient`, put in here:
  // Note: If this has already been entered, the other MongoDB configurations will be ignored
  client: new MongoClient(), // work with connected client or not

  // MongoDB authentication. Remove it if not needed
  user: '<DB User>',
  password: '<DB Password>',

  // Collection name in database will be used to store i18next data
  collectionName: 'i18n',

  // MongoDB field name
  languageFieldName: 'lang',
  namespaceFieldName: 'ns',
  dataFieldName: 'data',

  // Remove MongoDB special character from field name. See https://jira.mongodb.org/browse/SERVER-3229
  sanitizeFieldNameCharacter: true,

  // Error handlers
  readOnError: console.error,
  readMultiOnError: console.error,
  createOnError: console.error,

  // MongoClient Options. See https://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html
  mongodb: {
    useUnifiedTopology: true
  }
};

Example Backend Options

Connect with uri:

{
  uri: 'mongodb://localhost:27017/test',
  dbName: 'test' // Required field
}

Connect with host and port:

{
  host: 'localhost',
  port: 27017,
  dbName: 'test' // Required field
}

Connect with MongoClient instance (Recommended):

If you already have your own connection, use this to avoid useless connections

{
  client: new MongoClient(), // Change with your MongoClient instance
  dbName: 'test', // Required field
}

Example of the MongoDB document that will be created:

// Key name is according to provided in options
{
  "lang": "en-US",
  "ns": "translations",
  "data": {
    "key": "Thank you!"
  }
}

Visit here for more example usage

Change Log:

v0.0.4 (08-04-20):

  • Critical bug fixed
  • Remove persistConnection option
  • Rename filterFieldNameCharacter option to sanitizeFieldNameCharacter

v0.0.3 (DEPRECATED):

  • Add testing code with Jest
  • Add JSDOC
  • Add support for the uri option
  • Add filterFieldNameCharacter option
  • Some improvements