JSPM

  • Created
  • Published
  • Downloads 55845
  • Score
    100M100P100Q170204F
  • License MIT

A loader for ngx-translate that loads translations from multiple files using http

Package Exports

  • ngx-translate-multi-http-loader

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ngx-translate-multi-http-loader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@ngx-translate/multi-http-loader Build Status npm version

A loader for ngx-translate that loads translations using http.

Simple example using ngx-translate: https://stackblitz.com/edit/ngx-translate-multi-http-loader-sample

Get the complete changelog here: https://github.com/denniske/ngx-translate-multi-http-loader/releases

Installation

We assume that you already installed ngx-translate.

Now you need to install the npm module for MultiTranslateHttpLoader:

npm install ngx-translate-multi-http-loader --save

Choose the version corresponding to your Angular version:

Angular @ngx-translate/core ngx-translate-multi-http-loader
6 10.x+ 1.x+

Usage

1. Setup the TranslateModule to use the MultiTranslateHttpLoader:

The MultiTranslateHttpLoader uses HttpClient to load translations, which means that you have to import the HttpClientModule from @angular/common/http before the TranslateModule:

import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {MultiTranslateHttpLoader} from "ngx-translate-multi-http-loader";
import {AppComponent} from "./app";

// AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient) {
    return new MultiTranslateHttpLoader(http, [
        {prefix: "./assets/translate/core/", suffix: ".json"},
        {prefix: "./assets/translate/shared/", suffix: ".json"},
    ]);
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: HttpLoaderFactory,
                deps: [HttpClient]
            }
        })
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

The MultiTranslateHttpLoader takes a list of translation file configurations. Each configuration has two optional parameters:

  • prefix: string = "/assets/translate/"
  • suffix: string = ".json"

By using those default parameters, it will load your translations files for the lang "en" from: /assets/translate/en.json.

You can change those in the HttpLoaderFactory method that we just defined. For example if you want to load the "en" translations from /assets/translate/core/en.json and /assets/translate/shared/en.json you would use:

export function HttpLoaderFactory(http: HttpClient) {
    return new MultiTranslateHttpLoader(http, [
        {prefix: "./assets/translate/core/", suffix: ".json"},
        {prefix: "./assets/translate/shared/", suffix: ".json"},
    ]);
}

For now this loader only support the json format.

The loader will merge all translation files from the server using deepmerge.