Library was deprecated in favor of @fullerstack/ngx-i18n
A simple translation module for Angular applications
npm i @nwx/i18n |OR| yarn add @nwx/i18n
// In your environment{prod,staging}.ts
import { AppCfg, TargetPlatform, HttpMethod } from '@nwx/cfg';
import { LogLevels } from '@nwx/logger';
export const environment: AppCfg = {
// app name
appName: 'Neekware',
// target (browser, mobile, desktop)
target: TargetPlatform.web,
// production, staging or development
production: false,
// one or more app specific field(s)
log: {
// Log level, (default = none)
level: LogLevels.info
},
i18n: {
// available languages
availableLanguages: {
en: {
name: 'English',
locale: '@angular/common/locales/en',
localeExtra: '@angular/common/locales/extra/en'
},
fr: {
name: 'Français',
locale: '@angular/common/locales/fr',
localeExtra: '@angular/common/locales/extra/fr'
},
de: {
name: 'Deutsch',
locale: '@angular/common/locales/de',
localeExtra: '@angular/common/locales/extra/de'
}
},
// enabled languages (iso list)
enabledLanguages: [
// order is important
'en',
'fr'
],
// cache busting hash
// bump when you change any file in /assets/i18n/*.json
cacheBustingHash: 'v1.0.0'
}
};
// In your app.component.ts
import { CfgModule } from '@nwx/cfg';
import { LoggerModule } from '@nwx/logger';
import { environment } from '../environments/environment';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
CfgModule.forRoot(environment), // make the environment injectable
LoggerModule,
I18nModule.forRoot() // use forChild() for lazy loaded modules
],
bootstrap: [AppComponent]
})
export class AppModule {}
// In your app.component.ts
import { Component } from '@angular/core';
import { CfgService, DefaultCfg } from '@nwx/cfg';
import { LogService } from '@nwx/logger';
import { I18nService } from '@nwx/i18n';
@Component({
selector: 'app-root',
template: `<h1>{{'COMMON.WELCOME' | translate}} to {{ title }}!</h1>`
})
export class AppComponent {
title = 'Neekware';
constructor(public cfg: CfgService, public log: LogService, public i18n: I18nService) {
this.title = this.cfg.options.appName;
this.log.info('AppComponent loaded ...');
}
}
Include your translated files in the /assets/i18n
directory of your application.
/assets/i18n/en.json
{
"COMMON.WELCOME": "Welcome",
"COMMON.ABOUT": "About"
}
/assets/i18n/fr.json
{
"COMMON.WELCOME": "Bienvenue",
"COMMON.ABOUT": "Sur"
}
// In your app.component.ts
import { Component } from '@angular/core';
import { CfgService, DefaultCfg } from '@nwx/cfg';
import { LogService } from '@nwx/logger';
import { I18nService } from '@nwx/i18n';
@Component({
selector: 'app-root',
template: `<h1>{{'COMMON.WELCOME' | translate}} to {{ title }}!</h1>`
})
export class AppComponent {
direction = 'ltr';
title = 'Neekware';
constructor(public cfg: CfgService, public log: LogService, public i18n: I18nService) {
this.title = this.cfg.options.appName;
// translate in ts files
i18n.xlate.get('COMMON.WELCOME').subscribe((res: string) => {
this.log.info(res);
});
// check if language is Right2Left `rtl`
if (i18n.isLanguageRTL('he')) {
this.direction = 'rtl';
}
// change the language
i18n.setCurrentLanguage('fr');
// available properties
// direction
// currentLanguage
// defaultLanguage
// enabledLanguages
// available methods
// isCurrentLanguage(iso)
// getLanguageName(iso)
// getLanguageDirection(iso)
// isLanguageEnabled(iso)
}
}
@nwx/i18n
uses the great@ngx-translate
package under the hood.
To run the tests against the current environment:
npm run ci:all
Released under a (MIT) license.
X.Y.Z Version
`MAJOR` version -- making incompatible API changes
`MINOR` version -- adding functionality in a backwards-compatible manner
`PATCH` version -- making backwards-compatible bug fixes