Для осуществления динамического перевода переменной с помощью ngx-translate, вам потребуется выполнить следующие шаги:
1. Установите ngx-translate в вашем проекте. Это можно сделать с помощью NPM, выполнив команду:
npm install @ngx-translate/core @ngx-translate/http-loader
2. Подключите необходимые модули в вашем модуле приложения. Вам понадобятся TranslateModule
и HttpClientModule
. В TranslateModule
вы также можете указать настройки для локализации и т.д. Пример подключения модулей в вашем app.module.ts
:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { HttpClientModule, HttpClient } from '@angular/common/http'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); } @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, HttpClientModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] } }) ], bootstrap: [AppComponent] }) export class AppModule { }
3. Создайте файлы перевода для каждой поддерживаемой локализации и заполните их необходимыми переводами. Например, для английского и русского языков создайте файлы en.json
и ru.json
соответственно. Примеры файлов:
// en.json { "welcome": "Welcome!", "hello": "Hello, {{name}}!" }
// ru.json { "welcome": "Добро пожаловать!", "hello": "Привет, {{name}}!" }
4. В вашем компоненте, где используется динамическая переменная, добавьте зависимость от TranslateService
. Пример:
import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-my-component', template: ` <h1>{{ 'welcome' | translate }}</h1> <p>{{ 'hello' | translate:{name: dynamicName} }}</p> ` }) export class MyComponent { dynamicName = 'John'; constructor(private translateService: TranslateService) { } }
5. Инициализируйте TranslateService
в вашем компоненте и установите локализацию, например для английского языка:
import { Component, OnInit } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-my-component', template: ` <h1>{{ 'welcome' | translate }}</h1> <p>{{ 'hello' | translate:{name: dynamicName} }}</p> ` }) export class MyComponent implements OnInit { dynamicName = 'John'; constructor(private translateService: TranslateService) { } ngOnInit() { this.translateService.setDefaultLang('en'); this.translateService.use('en'); } }
6. Если вы хотите поддерживать переключение языков в вашем приложении, вы можете добавить функционал переключения языка, используя методы TranslateService
. Например, в вашем компоненте:
import { Component, OnInit } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-my-component', template: ` <h1>{{ 'welcome' | translate }}</h1> <p>{{ 'hello' | translate:{name: dynamicName} }}</p> <button (click)="switchLanguage('en')">English</button> <button (click)="switchLanguage('ru')">Русский</button> ` }) export class MyComponent implements OnInit { dynamicName = 'John'; constructor(private translateService: TranslateService) { } ngOnInit() { this.translateService.setDefaultLang('en'); this.translateService.use('en'); } switchLanguage(lang: string) { this.translateService.use(lang); } }
Надеюсь, эта подробная инструкция помогла вам осуществить динамический перевод переменной с помощью ngx-translate в Angular. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь задавать их.