3.2.2 • Published 4 years ago

i18next-xhr-backend v3.2.2

Weekly downloads
186,681
License
MIT
Repository
github
Last release
4 years ago

Introduction

Travis Coveralls npm version Bower David

This is a simple i18next backend to be used in the browser. It will load resources from a backend server using the xhr API.

Getting started

Source can be loaded via npm, bower or downloaded from this repo.

# npm package
$ npm install i18next-xhr-backend

# bower
$ bower install i18next-xhr-backend

Wiring up:

import i18next from 'i18next';
import XHR from 'i18next-xhr-backend';

i18next.use(XHR).init(i18nextOptions);
  • As with all modules you can either pass the constructor function (class) to the i18next.use or a concrete instance.
  • If you don't use a module loader it will be added to window.i18nextXHRBackend

Backend Options

{
  // 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/add/{{lng}}/{{ns}}',

  // your backend server supports multiloading
  // /locales/resources.json?lng=de+en&ns=ns1+ns2
  // Adapter is needed to enable MultiLoading https://github.com/i18next/i18next-multiload-backend-adapter
  // Returned JSON structure in this case is
  // {
  //  lang : {
  //   namespaceA: {},
  //   namespaceB: {},
  //   ...etc
  //  }
  // }
  allowMultiLoading: false, // set loadPath: '/locales/resources.json?lng={{lng}}&ns={{ns}}' to adapt to multiLoading

  // parse data after it has been fetched
  // in example use https://www.npmjs.com/package/json5
  // here it removes the letter a from the json (bad idea)
  parse: function(data) { return data.replace(/a/g, ''); },

  //parse data before it has been sent by addPath
  parsePayload: function(namespace, key, fallbackValue) { return { key } },

  // allow cross domain requests
  crossDomain: false,

  // allow credentials on cross domain requests
  withCredentials: false,

  // overrideMimeType sets request.overrideMimeType("application/json")
  overrideMimeType: false,

  // custom request headers sets request.setRequestHeader(key, value)
  customHeaders: {
    authorization: 'foo',
    // ...
  },

  // define a custom xhr function
  // can be used to support XDomainRequest in IE 8 and 9
  //
  // 'url' will be passed the value of 'loadPath'
  // 'options' will be this entire options object
  // 'callback' is a function that takes two parameters, 'data' and 'xhr'.
  //            'data' should be the key:value translation pairs for the
  //            requested language and namespace, or null in case of an error.
  //            'xhr' should be a status object, e.g. { status: 200 }
  // 'data' will be a key:value object used when saving missing translations
  ajax: function (url, options, callback, data) {},

  // adds parameters to resource URL. 'example.com' -> 'example.com?v=1.3.5'
  queryStringParams: { v: '1.3.5' }
}

Options can be passed in:

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

import i18next from 'i18next';
import XHR from 'i18next-xhr-backend';

i18next.use(XHR).init({
  backend: options,
});

on construction:

import XHR from 'i18next-xhr-backend';
const xhr = new XHR(null, options);

via calling init:

import XHR from 'i18next-xhr-backend';
const xhr = new XHR();
xhr.init(null, options);

Misc

TypeScript definitions

  • Install from @types (for TypeScript v2 and later):

      npm install --save-dev @types/i18next-xhr-backend
  • Install from typings:

      typings install --save --global dt~i18next-xhr-backend

@ljmarquezge2y/worldpay-spartacus@borderfreefinancial/revo-consumer@borderfreefinancial/revo-core@borderfreefinancial/revo-core-api@borderfreefinancial/revo-web-video-test@borderfreefinancial/test-chat-sdk@borderfreefinancial/elements-react@borderfreefinancial/local-chat-sdk@borderfreefinancial/prod-chat-sdk@borderfreefinancial/qa-chat-sdk@borderfreefinancial/dev-chat-sdkrn-aht-jitsi-meetreactjs-99unowebapp-uservlk-mob-appdvlsc-t1moco2_appmoco-forms-ymoco-forms-z@aliasliao/pat-commonviam-dynamic-payers-fieldviam-payers-dynamic-fields@dhi-solutions/internationalizer@dhi-solutions/intlviacheck-notification-centerdealcrane-web-appmesstischviacheck-temporal-account-creditbyevolutionsales-insights-ui@openmrs/esm-initial-scriptdelivered4all99uno-react-js299uno-reactjs@teipublisher/pb-components7assessment-renderer-saasci-common-ui@deity/falcon-clientchatpool-webwidgetcra-template-teemsly-starter@kichiyaki/next-i18nextdynamic-form-node-module-test2rete-two-editortwintwoo-editordbyzero-testditus-uibusiness-models-2helium10-x-rayjitsi-meet-rnreact-native-jitsi-meet-libcra-template-react-frameworki18next-helper@infinitebrahmanuniverse/nolb-i1@oerlikon/i18nsupport-worksuitejitsi-meet-react-native-rocket@everything-registry/sub-chunk-1887fe-maininvoice-document@redstarnv/next-i18nextinternalization@reagentum/front-corei18next-jsi18next-ngxifuzz-markdowni18next.cominnos-styleguide-dev-versionhttp-mockjs-ui@radon-extension/framework@pyroswap/dex@pxp-ui/core@smartb/archetypes-ui-providersjrjtcsmccchl_fekernelcore@things-real/shell@things-shell/client-i18n@thirdrocktechno/strapi-gpt@subsocial/react-components@bemit/flood-admin@bentley/imodeljs-i18nnagarro-acc-core-libbl-dicomparserneon-extension-frameworknextjs-i18n-ie11@brudi-toolbox/webapp@brudi/brudi-toolbox-webapp@bitrefill/airfill-widgetng2-i18nextng2-i18next-2ng2-i18next-fork@calystral/uimutants-microfxauto-intl-helpersmxsoft-forms-dummymy-test-coreaqt-base-componentsb18@beisen/i18n-tools@tvai/gatsby-plugin-i18next
3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

5 years ago

3.1.2

5 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.3

7 years ago

1.4.2

7 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.0

7 years ago

1.2.1

7 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.6.0

8 years ago

0.5.5

8 years ago

0.5.4

8 years ago

0.5.3

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.0

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.5

8 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.1

9 years ago