рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг (рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛) рдХреЛ рдПрдВрдЧреБрд▓рд░ 4+ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ @ ngx-Translate / core рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╕реЗ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрджрдо-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХ рд╕рдорд╛рди рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рдХрд╛рд╢рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмреБрдХрдорд╛рд░реНрдХ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЛрдгреАрдп рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЧреБрд▓реНрд▓рдХ рдореЗрдВ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЦреБрд▓рд╛ рднрдВрдбрд╛рд░ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдирдПрдХреНрд╕рдПрдХреНрд╕-рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХреНрдпреЛрдВ
рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИред рд╣рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХрд┐ рдХреЛрдгреАрдп рдХрд╛ рдЕрдкрдирд╛ i18n рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╣реИред рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрди рд╣реИрдВред
рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
- рдПрдВрдЧреБрд▓рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди,
assets/locale
рдлреЛрд▓реНрдбрд░ рдореЗрдВ *.json
рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ рдЙрдирдХреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╛рдЗрд▓ред - рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди
- рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреБрдВрдЬреА рдЬрдорд╛ рдХрд░рдирд╛, рдЕрд░реНрдерд╛рддреН, рдРрд╕рд╛ рдХреБрдЫ рд╣реИ:
// en.json { Common: { Yes: "Yes" } }
рдпрд╣ рдЖрдкрдХреЛ рд╕рдореВрд╣ рдХреБрдВрдЬрд┐рдпреЛрдВ / рдорд╛рдиреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ json рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдЧрд╛ред рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИред
- рдиреНрдпреВрдирддрдо рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдПрдХ рдореВрд░реНрдЦ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк json рдореЗрдВ рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдП?
- Html рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ ts рдХреЛрдб рджреЛрдиреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдЕрдиреБрдХреВрд▓рди
рд╣рдо рдПрдХ рддреИрдпрд╛рд░ рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдпрд╛ рд▓реЗрддреЗ рд╣реИрдВред рдХреЛрдгреАрдп рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 4+ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддрд╛рдЬрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
npm install @ngx-translate/core --save npm install @ngx-translate/http-loader --save @biesbjerg/ngx-translate-extract --saveDev
@ngx-translate/http-loader
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо *.json
рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХреЗрдВред рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдбреЗрдЯрд╛ рд╣реИ (рдпрд╛ рдмрд╕ рд╕рднреА рдЕрдиреБрд╡рд╛рджрд┐рдд рдЧреНрд░рдВрдереЛрдВ) рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред
@biesbjerg/ngx-translate-extract
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рднреВрд▓ рдЧрдИ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВред рдирддреАрдЬрддрди, рдирдИ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рд╕реЗ рднрд░реА рдЬрд╛рдПрдЧреАред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╣реЛрдЧрд╛ред
- рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдпрд╛рдд рдХрд░реЗрдВ:
@NgModule({ imports: [ TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient], }, useDefaultLang: false, }) ], }) export class AppModule { }
HttpLoaderFactory
рдкреБрд╕реНрддрдХрд╛рд▓рдп HttpLoaderFactory
рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЖрдХрд╛рд░ рдореЗрдВ рдорд╛рдореВрд▓реА рд╣реИред
export function HttpLoaderFactory(http: HttpClient): TranslateLoader { return new TranslateHttpLoader(http, './assets/locale/', '.json'); }
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡реЗ рдХрд┐рд╕реА рддрд░рд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП environment.ts
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВред
- рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗ - рдЬрдм рдХреБрдВрдЬреА рдирд╣реАрдВ рдорд┐рд▓реА рддреЛ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдФрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВ (рд▓реЛрдбрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж):
missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MissingTranslationService },
рдФрд░ рд╣рд╛рдВ, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
export class MissingTranslationService implements MissingTranslationHandler { handle(params: MissingTranslationHandlerParams) { return `WARN: '${params.key}' is missing in '${params.translateService.currentLang}' locale`; } }
- рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдЬреЛрдбрд╝реЗрдВред рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ
environment.ts
рдореЗрдВ рд░рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ environment.ts
locales: ['en', 'ru'], defaultLocale: 'en',
- рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ AppComponent рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
@Component({...}) export class AppComponent implements OnInit { constructor(private translateService: TranslateService) {} ngOnInit(): void { this.translateService.use(environment.defaultLocale); } }
- рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ
en.json
рдФрд░ ru.json
(рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рдХреБрдЫ рдЖрдзрд╛рд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдорд╛рдиреНрдп json рд╣реЛред
рдЬрдм рдпреЗ рдХрджрдо рдЙрдард╛рдП рдЬрд╛рдПрдВрдЧреЗ, рддреЛ рд╕реЗрд╡рд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧреАред
рд╣рдо рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
HTML рдорд╛рд░реНрдХрдЕрдк
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╛рдЗрдк translate
рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреБрдЫ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
<label>{{ 'LANGUAGES.TITLE' | translate }}</label>
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рд╕рдВрд▓рдЧреНрди рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдЬрд╕рди рд╕рдВрд░рдЪрдирд╛ рдХреА рдмрд╛рдд рдХреА рдереАред
рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ @ ngx-Translate / core рдореЗрдВ рджреЗрдЦреЗрдВ ред рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк рдЬреИрд╕реЗ рдХреБрдЫ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдШрдЯрдХ рдХреЛрдб рдореЗрдВ
this.translateService.get(['KEY1', 'KEY2'])) .subscribe(translations => { console.log(translations['KEY1']) console.log(translations['KEY2']) });
рдпрд╣ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдк рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдФрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ:
this.translateService.instant('Key')
рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ngOnInit AppComponent) рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЕрднреА рддрдХ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред
.Json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ ngx-translate-extract
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдмрд╕ рдХрдорд╛рдВрдб ngx-translate-extract -i ./src -o src/assets/locale/*.json --sort --format namespaced-json
ред рдХрдВрд╕реЛрд▓ рдореЗрдВ ngx-translate-extract -i ./src -o src/assets/locale/*.json --sort --format namespaced-json
ред рдпрд╣ рдХрдорд╛рдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ, рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдЯрд╛рдЗрдордкрд╛рд╕ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдЕрдиреНрдп рдХреЛрдб рдореЗрдВ рдкрд╛рдИ рдЧрдИ рд╕рднреА рдЪрд╛рдмрд┐рдпрд╛рдБред рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП .json рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреА, рдореМрдЬреВрджрд╛ рдХреБрдВрдЬреА рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдп рдЕрдЫреВрддреЗ рд░рд╣реЗрдВрдЧреЗ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдСрд░реНрдбрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ
"scripts": { "ng": "ng", "start": "ng serve", "update-locale": "ngx-translate-extract -i ./src -o src/assets/locale/*.json --sort --format namespaced-json" },
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдПрдХ рдЦреБрд▓реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╡реИрд▓реЗрдВрдЯрд┐рдВрдХреЙрдиреЛрдиреЛрд╡ / рдПрдирдПрдХреНрд╕рдПрдХреНрд╕-рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди-рдХреЛрдгреАрдп
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА! рдЖрдирдВрдж рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рд┐рдЦреЗрдВ, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЪреБрдиреЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ!