19.0.2 • Published 3 months ago

ngx-translate-multi-http-loader v19.0.2

Weekly downloads
15,013
License
MIT
Repository
github
Last release
3 months ago

@ngx-translate/multi-http-loader

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

npm version NPM npm bundle size npm

Angular 14 example: https://stackblitz.com/edit/ngx-translate-multi-http-loader-sample-2clau3?file=src/app/app.module.ts

Angular 6 example: https://stackblitz.com/edit/ngx-translate-multi-http-loader-sample

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

breaking change: v9.0.0

  • This library is now using httpBackend instead of the httpClient, to avoid being delayed by interceptor, which was creating errors while loading.
  • From the v9, the library will only be using a list of string[] so prefix & suffix aren't needed anymore and .json gonna be the default suffix.

Installation

We assume that you already installed ngx-translate.

Now you need to install the npm module for MultiTranslateHttpLoader:
deepmerge-ts may also need to be installed should be done automatically though

npm install ngx-translate-multi-http-loader
npm install deepmerge-ts

Choose the version corresponding to your Angular version:

Angular@ngx-translate/corengx-translate-multi-http-loader
>= 1615.x+>= 15.x+
1514.x+9.x+
1414.x+8.x+
1314.x+7.x+
610.x+1.x+

Usage

The MultiTranslateHttpLoader uses HttpBackend to load translations, therefore : 1. Create and export a new HttpLoaderFactory function 2. Import the HttpClientModule from @angular/common/http 3. Setup the TranslateModule to use the MultiTranslateHttpLoader

import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {HttpClientModule, HttpBackend} 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(_httpBackend: HttpBackend) {
    return new MultiTranslateHttpLoader(_httpBackend, ['/assets/i18n/core/', '/assets/i18n/vendors/']); // /i18n/core/ on angular >= v18 with the new public logic
}

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

The MultiTranslateHttpLoader takes a list of string[] or ITranslationResource[].

String[]

For example ['/assets/i18n/core/', '/assets/i18n/vendors/'],
will load your translations files for the lang "en" from : /assets/i18n/core/en.json and /assets/i18n/vendors/en.json

Custom suffix

For now this loader only support the json format.

Instead of an array of string[],
you may pass a list of parameters:

  • prefix: string = '/assets/i18n/'
  • suffix: string = '.json'
  • optional: boolean = true
export function HttpLoaderFactory(_httpBackend: HttpBackend) {
    return new MultiTranslateHttpLoader(_httpBackend, [
        {prefix: './assets/i18n/core/', suffix: '.json'},
        {prefix: './assets/i18n/vendors/'}, // , "suffix: '.json'" being the default value
        {prefix: './assets/i18n/non-existent/', optional: true}, // Wont create any log
    ]);
}

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

Possible error & Bugfix

Can't resolve 'deepmerge-ts'

  1. run npm i deepmerge-ts

This is due to some version of npm not being able to download peerDependencies properly.

I decided to not move it under dependencies since it's considered to be a bad practice.

values.at is not a function

  1. Install core-js
  2. In polyfills.ts, add import 'core-js/modules/es.array.at'

deepmerge-ts@5 uses Array.at, which is not supported in not so old versions of Safari < 15.4.

Authors and acknowledgment

BuyMeACoffee

19.0.1

6 months ago

19.0.0

6 months ago

19.0.2

3 months ago

18.2.0

7 months ago

18.1.1

7 months ago

18.1.0

8 months ago

18.0.0

11 months ago

17.0.0

1 year ago

16.0.2

2 years ago

15.0.0

2 years ago

16.0.1

2 years ago

16.0.0

2 years ago

9.4.0

2 years ago

9.3.2

2 years ago

9.3.1

2 years ago

9.2.0-beta.1

2 years ago

9.1.3

2 years ago

9.3.0

2 years ago

9.2.1

2 years ago

9.1.2

2 years ago

9.0.1-next.1

2 years ago

9.2.0

2 years ago

9.1.1

2 years ago

9.1.0

2 years ago

9.0.1

2 years ago

9.0.0

3 years ago

8.0.1

3 years ago

8.0.0

3 years ago

8.0.2

3 years ago

7.0.5

3 years ago

7.0.4

3 years ago

7.0.3

3 years ago

7.0.0

3 years ago

7.0.2

3 years ago

7.0.1

3 years ago

3.0.0

6 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.0

7 years ago