# @lakea/gravity-translate-adapter-transloco

> An adapter for `GrTranslate` using [`Transloco`](https://ngneat.github.io/transloco/) as implementation.

Latest version **3.0.2** (published 2023-01-19) · 0 weekly downloads

## Install

```sh
npm install @lakea/gravity-translate-adapter-transloco
pnpm add @lakea/gravity-translate-adapter-transloco
yarn add @lakea/gravity-translate-adapter-transloco
bun add @lakea/gravity-translate-adapter-transloco
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.2 |
| Published | 2023-01-19 |
| First published | 2022-06-06 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 63.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | ltp.lakea, gesielr, lakea-gesiel |

## Links

- npm: https://www.npmjs.com/package/@lakea/gravity-translate-adapter-transloco
- npm.io page: https://npm.io/package/@lakea/gravity-translate-adapter-transloco

## Dependencies (2)

- [tslib](https://npm.io/package/tslib.md) ^2.4.0
- [@ngneat/transloco](https://npm.io/package/@ngneat/transloco.md) ^4.0.0

## Recent versions

- 3.0.2 (latest) — 2023-01-19
- 3.0.0-next.0 (next) — 2023-01-09
- 3.0.0 — 2023-01-09
- 2.0.2 — 2022-12-22
- 2.0.1 — 2022-12-21
- 2.0.0 — 2022-12-15
- 2.0.0-next.4 — 2022-12-14
- 2.0.0-next.3 — 2022-11-25
- 2.0.0-next.2 — 2022-11-23
- 2.0.0-next.1 — 2022-11-22
- 2.0.0-next.0 — 2022-11-03
- 1.1.0 — 2022-10-31
- 1.1.0-next.10 — 2022-10-31
- 1.1.0-next.9 — 2022-10-13
- 1.1.0-next.8 — 2022-10-10
- … 19 more at https://npm.io/package/@lakea/gravity-translate-adapter-transloco/versions

## README

# @lakea/gravity-translate-adapter-transloco

An adapter for `GrTranslate` using [`Transloco`](https://ngneat.github.io/transloco/) as implementation.

## Installation

Install the library using NPM:

`npm install @lakea/gravity-translate-adapter-transloco @ngneat/transloco --save`

Next, create a new file, `translate-adapter-root.module.ts` which exposes an Angular's module with a default configuration.

```typescript
import {NgModule} from '@angular/core';
import {GrTranslateAdapterTranslocoModule} from '@lakea/gravity-translate-adapter-transloco';

@NgModule({
  imports: [
    GrTranslateAdapterTranslocoModule.forRoot({
      availableLangs: ['en', 'es'],
      defaultLang: 'en',
      reRenderOnLangChange: true,
      prodMode: false, // get from your environments file
    }),
  ],
})
export class TranslateAdapterRootModule {}
```

Import `TranslateAdapterRootModule` to application root module like `app.module.ts`.

> You should import the TranslateAdapterRootModule once in your root module.

The `TranslateAdapterRootModule` file imports the `GrTranslateAdapterTranslocoModule` which has all `Transloco` initial configs.

To configure `transloco` library, read the docs [here](https://ngneat.github.io/transloco/docs/getting-started/config-options).

Going forward, you need to provide a global app config injector with `baseUrl` property.

Add it to you app root module (maybe `app.module.ts`):

```typescript
  providers: [
    {
      provide: 'APP_CONFIG',
      useValue: {
        // change for your app baseUrl
        // (don't miss to deal with prod url)
        baseUrl: 'http://localhost:4200'
      },
    },
  ]
```

> `baseUrl` is used by `TranslocoLoader` to load translations file from `assets`.

---

## Creating your own adapter

Create your adapter implementation class extending `GrTranslate` abstraction:

```typescript
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs';

import {HashMap} from '@lakea/gravity/cdk';
import {GrTranslate} from '@lakea/gravity/translate';

@Injectable()
export class GrTranslateAdapter extends GrTranslate {
  constructor() {
    super();
  }

  public activeLanguageChanges$(): Observable<string> {
    // YOUR IMPLEMENTATION
  }

  public changeActiveLanguage(lang: string): void {
    // YOUR IMPLEMENTATION
  }

  public getActiveLanguage(): string {
    // YOUR IMPLEMENTATION
  }

  public getAvailableLanguages(): string[] {
    // YOUR IMPLEMENTATION
  }

  public translate<T = string | string[]>(key: T, options?: HashMap): Observable<T> {
    // YOUR IMPLEMENTATION
  }
}
```

So, provide it on your application root module (maybe `app.module.ts`), like this:

```typescript
  providers: [
    {
      provide: GrTranslate,
      useClass: GrTranslateAdapter,
    }
  ]
```

---
_Source: https://npm.io/package/@lakea/gravity-translate-adapter-transloco · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
