Globalization

The globalization process combines the translation of component messages with adapting them to specific cultures.

For more information on how globalization practices are implemented in Kendo UI for Angular, refer to the overview article. For more information on the globalization aspects which are available for each component, refer to the article on globalization support.

Internationalization

The internationalization (i18n) process applies specific culture formats to a web application.

For more information, refer to:

Messages

The Stepper component supports both built-in and custom messages.

Built-In Messages

To translate the built-in messages, utilize the Angular i18n framework. For more information on how to achieve this, refer to the article on Localization.

Custom Messages

You can also override individual messages for each component instance by utilizing the attribute bindings. To use them, you do not have to set up the application for i18n.

In i18n applications, message attributes take precedence over localized text from translation files.

The following example demonstrates how to customize the built-in messages of the Stepper.

import { Component } from '@angular/core';

@Component({
    selector: 'my-app',
    template: `
        <kendo-stepper
            [steps]="steps"
            [stepType]="'full'"
            [currentStep]="1"
            [linear]="false"
            [style.width.px]="500"
        >
            <kendo-stepper-messages
                optional="Not mandatory"
            ></kendo-stepper-messages>
        </kendo-stepper>
    `
})
export class AppComponent {
    public steps = [
        { label: 'Step One' },
        { label: 'Step Two', optional: true },
        { label: 'Step Three' },
        { label: 'Step Four', optional: true }
    ];
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { LayoutModule } from '@progress/kendo-angular-layout';
import { AppComponent } from './app.component';
@NgModule({
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        LayoutModule
    ],
    declarations: [ AppComponent ],
    bootstrap:    [ AppComponent ]
})
export class AppModule {}
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';

enableProdMode();

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

Right-to-Left Support

The following example demonstrates how to utilize the RTL support for the Layout components.

import { Component } from '@angular/core';
import { DrawerItem, PanelBarItemModel } from '@progress/kendo-angular-layout';

@Component({
    selector: 'my-app',
    template: `
    <div class="example">
        <kendo-stepper
            [steps]="steps"
            [stepType]="'full'"
            [currentStep]="1"
            [linear]="false"
            [style.width.px]="500">
        </kendo-stepper>

        <button class="k-button" (click)="drawer.toggle()"
            style="margin: 10px;"
        >Toggle Drawer</button>

        <kendo-drawer-container>
            <kendo-drawer #drawer [items]="drawerItems"></kendo-drawer>
        </kendo-drawer-container>

        <kendo-splitter orientation="horizontal" style="height: 280px">
            <kendo-splitter-pane min="35%">
                <kendo-panelbar [items]="items"></kendo-panelbar>
            </kendo-splitter-pane>

            <kendo-splitter-pane min="35%">
                <kendo-tabstrip>
                    <kendo-tabstrip-tab [title]="'Paris'" [selected]="true">
                    <ng-template kendoTabContent>
                        <div class="weather">
                        <h4>17<span>&ordm;C</span></h4>
                        <p>Rainy weather in Paris</p>
                        </div>
                    </ng-template>
                    </kendo-tabstrip-tab>
                    <kendo-tabstrip-tab [title]="'London'">
                    <ng-template kendoTabContent>
                        <div class="weather">
                        <h4>21<span>&ordm;C</span></h4>
                        <p>Sunny weather in London</p>
                        </div>
                    </ng-template>
                    </kendo-tabstrip-tab>
                    <kendo-tabstrip-tab [title]="'Moscow'">
                    <ng-template kendoTabContent>
                        <div class="weather">
                        <h4>16<span>&ordm;C</span></h4>
                        <p>Cloudy weather in Moscow</p>
                        </div>
                    </ng-template>
                    </kendo-tabstrip-tab>
                </kendo-tabstrip>
            </kendo-splitter-pane>
        </kendo-splitter>
    </div>
    `,
    styles: [ `
        kendo-splitter-pane {
            padding: 16px;
        }
    ` ]
})

export class AppComponent {
    public drawerItems: Array<DrawerItem> = [
        { text: 'Inbox', icon: 'k-i-inbox' },
        { text: 'Notifications', icon: 'k-i-bell' },
        { text: 'Favourites', icon: 'k-i-star-outline' },
        { text: 'Date', icon: 'k-i-calendar' }
    ];

    public steps = [
        { label: 'Step One' },
        { label: 'Step Two', optional: true },
        { label: 'Step Three' },
        { label: 'Step Four' }
    ];

    public items: Array<PanelBarItemModel> = [
        <PanelBarItemModel> {
             children: [
                <PanelBarItemModel> {
                    title: 'Team 1'
                },
                <PanelBarItemModel> {
                    title: 'Team 2'
                },
                <PanelBarItemModel> {
                    title: 'Team 3'
                }
            ],
            expanded: true,
            title: 'Teams'
        },
        <PanelBarItemModel> {
            children: [
                <PanelBarItemModel> {
                    title: 'Q1 2017'
                },
                <PanelBarItemModel> {
                    title: 'Q2 2017'
                },
                <PanelBarItemModel> {
                    title: 'Q3 2017'
                },
                <PanelBarItemModel> {
                    title: 'Q4 2017'
                }
            ],
            title: 'Forecast'
        }
    ];
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { LayoutModule } from '@progress/kendo-angular-layout';
import { RTL } from '@progress/kendo-angular-l10n';
import { AppComponent } from './app.component';

@NgModule({
    bootstrap:    [ AppComponent ],
    declarations: [ AppComponent ],
    imports:      [ BrowserModule, BrowserAnimationsModule, LayoutModule ],
    providers:    [ { provide: RTL, useValue: true } ]
})
export class AppModule {}
import { AppModule } from './app.module';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

In this article