0.1.1 • Published 1 year ago

i18next-utilities-unplugin v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

MIT Version CI

i18next-utilities-unplugin

This plugin will generate a virtual module that exports the compiled resources for i18next and will also generate a type definition file for the resources.

Majority of the code for this plugin is from alienfast/vite-plugin-i18next-loader.

Supported Bundlers

  • Vite
  • Rollup
  • Webpack
  • esbuild
  • Farm

Install

npm install --save-dev i18next-utilities-unplugin

# or
pnpm add -D i18next-utilities-unplugin

# or

yarn add -D i18next-utilities-unplugin

Options

NameTypeDefaultDescription
defaultLocalestring'en'The default locale the plugin will generate the type from.
defaultNamespacestring'translation'The default i18next namespace the plugin will use.
include('**/*.json' \| '**/*.yml' \| '**/*.yaml')[]['**/*.json', '**/*.yml', '**/*.yaml']Glob patterns of files to include for bundling.
namespaceResolutionbasename, relativePathnoneNamespace resolution strategy.
dtsOutputFilestring'./src/types/i18next.d.ts'Output file destination for the generated types.
virtualModuleDtsOutputFilestring'./src/types/i18next-virtual.d.ts'Output file destination for the generated virtual module types.
pathsstring[][]Locale top-level directory paths.
dts{ expand: boolean }{ expand: true }DTS generation options.

Usage with Vite

import i18nextPlugin from 'i18next-utilities-unplugin/vite';
import { defineConfig } from 'vite';

export default defineConfig({
  plugins: [
    i18nextPlugin({
      defaultLocale: 'en-GB',
      defaultNamespace: 'translation',
      paths: ['./src/locales/'],
      namespaceResolution: 'basename',
      dtsOutputFile: './src/types/i18next.d.ts',
      virtualModuleDtsOutputFile: './src/types/i18next-virtual.d.ts',
    }),
  ],
});

Usage with Rollup

import i18nextPlugin from 'i18next-utilities-unplugin/rollup';

export default {
  input: 'src/index.js',
  output: {
    file: 'dist/bundle.js',
    format: 'es',
  },
  plugins: [
    i18nextPlugin({
      defaultLocale: 'en-GB',
      defaultNamespace: 'translation',
      paths: ['./src/locales/'],
      namespaceResolution: 'basename',
      dtsOutputFile: './src/types/i18next.d.ts',
      virtualModuleDtsOutputFile: './src/types/i18next-virtual.d.ts',
    }),
  ],
};

Usage with Webpack

const I18NextTypedPlugin = require('i18next-utilities-unplugin/webpack');

module.exports = {
  plugins: [
    new I18NextTypedPlugin({
      defaultLocale: 'en-GB',
      defaultNamespace: 'translation',
      paths: ['./src/locales/'],
      namespaceResolution: 'basename',
      dtsOutputFile: './src/types/i18next.d.ts',
      virtualModuleDtsOutputFile: './src/types/i18next-virtual.d.ts',
    }),
  ],
};

Usage with i18next

import resources from 'virtual:i18next-typed-loader';
import i18n from 'i18next';

i18n.init({
  defaultNS: 'translation',
  resources: resources,
  ns: ['translation'],
});