Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
i18next-fs-backend
Advanced tools
i18next-fs-backend is a backend layer for i18next using in Node.js and for Deno to load translations from the filesystem.
The i18next-fs-backend package is a file system backend for i18next, a popular internationalization framework for JavaScript. This backend allows you to load translation files from the file system, making it suitable for server-side applications like Node.js.
Loading translations from the file system
This feature allows you to load translation files from a specified path on the file system. The 'loadPath' option specifies the path pattern where the translation files are located.
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
i18next.use(Backend).init({
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json'
},
lng: 'en',
fallbackLng: 'en',
ns: ['translation'],
defaultNS: 'translation'
}, (err, t) => {
if (err) return console.error(err);
console.log(t('key')); // prints the translation for 'key'
});
Custom file system operations
This feature allows you to customize how the backend reads and writes files. You can provide your own 'readFile' and 'writeFile' functions to handle file operations.
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
const fs = require('fs');
i18next.use(Backend).init({
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json',
addPath: '/locales/{{lng}}/{{ns}}.missing.json',
readFile: (file, cb) => {
fs.readFile(file, 'utf8', cb);
},
writeFile: (file, data, cb) => {
fs.writeFile(file, data, 'utf8', cb);
}
},
lng: 'en',
fallbackLng: 'en',
ns: ['translation'],
defaultNS: 'translation'
}, (err, t) => {
if (err) return console.error(err);
console.log(t('key')); // prints the translation for 'key'
});
The i18next-http-backend package is another backend for i18next that loads translations via HTTP. It is suitable for client-side applications where translations are fetched from a remote server. Unlike i18next-fs-backend, which reads from the file system, i18next-http-backend makes HTTP requests to load translation files.
The i18next-node-fs-backend package is an older backend for i18next that also loads translations from the file system. It is similar to i18next-fs-backend but may not have the same level of support and updates. It is specifically designed for Node.js environments.
The i18next-localstorage-backend package is a backend for i18next that stores translations in the browser's localStorage. This is useful for client-side applications that want to cache translations locally to reduce the number of HTTP requests. Unlike i18next-fs-backend, it is designed for use in the browser rather than on the server.
This is an i18next backend to be used in Node.js and Deno. It will load resources from the file system.
It's based on the deprecated i18next-node-fs-backend and can mostly be used as a drop-in replacement.
It will load resources from filesystem. Right now it supports following filetypes:
# npm package
$ npm install i18next-fs-backend
Wiring up:
import i18next from 'i18next';
import Backend from 'i18next-fs-backend';
i18next.use(Backend).init(i18nextOptions);
for Deno:
import i18next from 'https://deno.land/x/i18next/index.js'
import Backend from 'https://deno.land/x/i18next_fs_backend/index.js'
i18next.use(Backend).init(i18nextOptions);
{
// path where resources get loaded from, or a function
// returning a path:
// function(lngs, namespaces) { return customPath; }
// the returned path will interpolate lng, ns if provided like giving a static path
loadPath: '/locales/{{lng}}/{{ns}}.json',
// path to post missing resources
addPath: '/locales/{{lng}}/{{ns}}.missing.json',
// if you use i18next-fs-backend as caching layer in combination with i18next-chained-backend, you can optionally set an expiration time
// an example on how to use it as cache layer can be found here: https://github.com/i18next/i18next-fs-backend/blob/master/example/caching/app.js
// expirationTime: 60 * 60 * 1000
}
Options can be passed in:
preferred - by setting options.backend in i18next.init:
import i18next from 'i18next';
import Backend from 'i18next-fs-backend';
i18next.use(Backend).init({
backend: options,
});
on construction:
import Backend from 'i18next-fs-backend';
const Backend = new Backend(null, options);
via calling init:
import Backend from 'i18next-fs-backend';
const Backend = new Backend();
Backend.init(null, options);
// i18n.js
const { join } = require('path')
const { readdirSync, lstatSync } = require('fs')
const i18next = require('i18next')
const Backend = require('i18next-fs-backend')
i18next
.use(Backend)
.init({
// debug: true,
initImmediate: false,
fallbackLng: 'en',
lng: 'en',
preload: readdirSync(join(__dirname, '../locales')).filter((fileName) => {
const joinedPath = join(join(__dirname, '../locales'), fileName)
const isDirectory = lstatSync(joinedPath).isDirectory()
return isDirectory
}),
ns: 'backend-app',
defaultNS: 'backend-app',
backend: {
loadPath: join(__dirname, '../locales/{{lng}}/{{ns}}.json')
}
})
FAQs
i18next-fs-backend is a backend layer for i18next using in Node.js and for Deno to load translations from the filesystem.
We found that i18next-fs-backend demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
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.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.