Search results

Add ngx-translate pipe for grid's header text in Angular Grid component

20 Oct 2021 / 2 minutes to read

You can use the ngx-translate to translate the headerText of grid’s column. This can be achieved by using the translate pipe for headerText property.

This is demonstrated in the below sample code where translate is applied to headerText property of the grid columns,

Copied to clipboard
import { Component } from '@angular/core';  
import {TranslateService} from '@ngx-translate/core';  
  
@Component({
    selector: 'app-container',
    template: `<ejs-grid id="Grid" [dataSource]="dataSource" allowPaging="true">  
                    <e-columns>  
                        <e-column field="OrderID" [isPrimaryKey]="true" headerText="{{ 'Id' | translate }}"></e-column>
                        <e-column field="CustomerID" headerText="{{ 'Value' | translate }}"></e-column>
                    </e-columns>  
                </ejs-grid>`
})

export class AppComponent implements OnInit {

    constructor(translate: TranslateService) {
        // Specifies the available languages to the service
        translate.addLangs(['en', 'fr'])
        // Specifies the current languages to the service
        translate.use('fr');
    }

    public dataSource: any = [
    {
      OrderID: 10248, CustomerID: 'VINET', OrderDate: new Date(8364186e5),
    },
    {
      OrderID: 10249, CustomerID: 'TOMSP', OrderDate: new Date(836505e6),
    }];
}

Import the required modules in app.module.ts file along with translate loader function,

Copied to clipboard
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {GridAllModule} from '@syncfusion/ej2-angular-grids';

import {AppComponent} from './app.component';
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';

export function createTranslateLoader(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    HttpClientModule,
    BrowserModule,
    GridAllModule,
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [HttpClient]
      }
    }),
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

Then add the json file with the translation text in the required languages,

Copied to clipboard
en.json

{  
    "Value": "Order ID!",
    "Id": "Customer ID"
}
Copied to clipboard
fr.json

{  
    "Value": "numéro de commande!",
    "Id": "N ° de client"
}

Angular 5 sample