UNPKG

3.62 kBPlain TextView Raw
1import {NgModule, ModuleWithProviders, Provider} from "@angular/core";
2import {TranslateLoader, TranslateFakeLoader} from "./lib/translate.loader";
3import {MissingTranslationHandler, FakeMissingTranslationHandler} from "./lib/missing-translation-handler";
4import {TranslateParser, TranslateDefaultParser} from "./lib/translate.parser";
5import {TranslateCompiler, TranslateFakeCompiler} from "./lib/translate.compiler";
6import {TranslateDirective} from "./lib/translate.directive";
7import {TranslatePipe} from "./lib/translate.pipe";
8import {TranslateStore} from "./lib/translate.store";
9import {USE_DEFAULT_LANG, DEFAULT_LANGUAGE, USE_STORE, TranslateService, USE_EXTEND} from "./lib/translate.service";
10
11export * from "./lib/translate.loader";
12export * from "./lib/translate.service";
13export * from "./lib/missing-translation-handler";
14export * from "./lib/translate.parser";
15export * from "./lib/translate.compiler";
16export * from "./lib/translate.directive";
17export * from "./lib/translate.pipe";
18export * from "./lib/translate.store";
19
20export interface TranslateModuleConfig {
21 loader?: Provider;
22 compiler?: Provider;
23 parser?: Provider;
24 missingTranslationHandler?: Provider;
25 // isolate the service instance, only works for lazy loaded modules or components with the "providers" property
26 isolate?: boolean;
27 // extends translations for a given language instead of ignoring them if present
28 extend?: boolean;
29 useDefaultLang?: boolean;
30 defaultLanguage?: string;
31}
32
33@NgModule({
34 declarations: [
35 TranslatePipe,
36 TranslateDirective
37 ],
38 exports: [
39 TranslatePipe,
40 TranslateDirective
41 ]
42})
43export class TranslateModule {
44 /**
45 * Use this method in your root module to provide the TranslateService
46 */
47 static forRoot(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {
48 return {
49 ngModule: TranslateModule,
50 providers: [
51 config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},
52 config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},
53 config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},
54 config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},
55 TranslateStore,
56 {provide: USE_STORE, useValue: config.isolate},
57 {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},
58 {provide: USE_EXTEND, useValue: config.extend},
59 {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},
60 TranslateService
61 ]
62 };
63 }
64
65 /**
66 * Use this method in your other (non root) modules to import the directive/pipe
67 */
68 static forChild(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {
69 return {
70 ngModule: TranslateModule,
71 providers: [
72 config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},
73 config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},
74 config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},
75 config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},
76 {provide: USE_STORE, useValue: config.isolate},
77 {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},
78 {provide: USE_EXTEND, useValue: config.extend},
79 {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},
80 TranslateService
81 ]
82 };
83 }
84}