ローカライズ (i18n)
現在、Ignite UI for Angular は、次の言語とスクリプトのリソース文字列で出荷されます: ブルガリア語、チェコ語、デンマーク語、オランダ語、英語、フランス語、ドイツ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ルーマニア語、スペイン語、スウェーデン語、トルコ語、繁体字中国語、簡体字中国語。これらは、igniteui-angular
のデフォルトのローカライズとして提供される英語を除き、igniteui-angular-i18n
パッケージ経由で利用できます。
最小限のコードで Ignite UI for Angular コンポーネントの文字列を簡単にローカライズできます。
Angular ローカライズの例
import { NgModule } from "@angular/core";
import { FormsModule } from "@angular/forms";
import { BrowserModule } from "@angular/platform-browser";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { AppComponent } from "./app.component";
import {
IgxInputGroupModule,
IgxGridModule,
IgxIconModule,
IgxSelectModule
} from "igniteui-angular";
import { LocalizationAllResourcesComponent } from "./services/localization-samples/localization-all-resources/localization-all-resources.component";
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
LocalizationAllResourcesComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxInputGroupModule,
IgxGridModule,
IgxIconModule,
IgxSelectModule
],
providers: [],
entryComponents: [],
schemas: []
})
export class AppModule {}
ts
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeBG from '@angular/common/locales/bg';
import localeCS from '@angular/common/locales/cs';
import localeDA from '@angular/common/locales/da';
import localeDE from '@angular/common/locales/de';
import localeEN from '@angular/common/locales/en';
import localeES from '@angular/common/locales/es';
import localeFR from '@angular/common/locales/fr';
import localeHU from '@angular/common/locales/hu';
import localeIT from '@angular/common/locales/it';
import localeJA from '@angular/common/locales/ja';
import localeKO from '@angular/common/locales/ko';
import localeNB from '@angular/common/locales/nb';
import localeNL from '@angular/common/locales/nl';
import localePL from '@angular/common/locales/pl';
import localePT from '@angular/common/locales/pt';
import localeRO from '@angular/common/locales/ro';
import localeSV from '@angular/common/locales/sv';
import localeTR from '@angular/common/locales/tr';
import localeHI from '@angular/common/locales/hi';
import localeHans from '@angular/common/locales/zh-Hans';
import localeHant from '@angular/common/locales/zh-Hant';
import { DATA } from '../../../data/nwindData';
import { IgxGridComponent, IResourceStrings, changei18n, getCurrentResourceStrings } from 'igniteui-angular';
import {
IgxResourceStringsBG, IgxResourceStringsCS, IgxResourceStringsDA, IgxResourceStringsDE,
IgxResourceStringsES, IgxResourceStringsFR, IgxResourceStringsHU, IgxResourceStringsIT,
IgxResourceStringsJA, IgxResourceStringsKO, IgxResourceStringsNB, IgxResourceStringsNL, IgxResourceStringsPL,
IgxResourceStringsPT, IgxResourceStringsRO, IgxResourceStringsSV, IgxResourceStringsTR,
IgxResourceStringsZHHANS, IgxResourceStringsZHHANT
} from 'igniteui-angular-i18n';
@Component({
selector: 'app-localization-all-resources',
styleUrls: ['./localization-all-resources.component.scss'],
templateUrl: 'localization-all-resources.component.html'
})
export class LocalizationAllResourcesComponent implements OnInit, OnDestroy {
@ViewChild('grid', { read: IgxGridComponent, static: true })
public grid: IgxGridComponent;
public data: any[];
public locale: string;
public locales: { type: string, resource: object }[];
public selectLocales = [
'HI', 'BG', 'CS', 'DA', 'DE', 'EN', 'ES', 'FR', 'HU', 'IT', 'JA', 'KO', 'NB', 'NL',
'PL', 'PT', 'RO', 'SV', 'TR', 'zh-Hans', 'zh-Hant'
];
public cashedLocalizationEN: IResourceStrings;
public partialCustomHindi: IResourceStrings;
constructor() { }
public ngOnInit(): void {
registerLocaleData(localeBG);
registerLocaleData(localeCS);
registerLocaleData(localeDA);
registerLocaleData(localeDE);
registerLocaleData(localeEN);
registerLocaleData(localeES);
registerLocaleData(localeFR);
registerLocaleData(localeHU);
registerLocaleData(localeIT);
registerLocaleData(localeJA);
registerLocaleData(localeKO);
registerLocaleData(localeNB);
registerLocaleData(localeNL);
registerLocaleData(localePL);
registerLocaleData(localePT);
registerLocaleData(localeRO);
registerLocaleData(localeSV);
registerLocaleData(localeTR);
registerLocaleData(localeHI);
registerLocaleData(localeHans);
registerLocaleData(localeHant);
this.data = DATA;
this.cashedLocalizationEN = Object.assign({}, getCurrentResourceStrings());
this.partialCustomHindi = {
igx_grid_summary_count: 'गणना',
igx_grid_summary_min: 'न्यून',
igx_grid_summary_max: 'अधिक',
igx_grid_summary_sum: 'योग',
igx_grid_summary_average: 'औसत'
};
this.locales = [
{ type: 'BG', resource: IgxResourceStringsBG },
{ type: 'CS', resource: IgxResourceStringsCS },
{ type: 'DA', resource: IgxResourceStringsDA },
{ type: 'DE', resource: IgxResourceStringsDE },
{ type: 'ES', resource: IgxResourceStringsES },
{ type: 'FR', resource: IgxResourceStringsFR },
{ type: 'HU', resource: IgxResourceStringsHU },
{ type: 'IT', resource: IgxResourceStringsIT },
{ type: 'JA', resource: IgxResourceStringsJA },
{ type: 'KO', resource: IgxResourceStringsKO },
{ type: 'EN', resource: this.cashedLocalizationEN },
{ type: 'HI', resource: this.partialCustomHindi },
{ type: 'NB', resource: IgxResourceStringsNB },
{ type: 'NL', resource: IgxResourceStringsNL },
{ type: 'PL', resource: IgxResourceStringsPL },
{ type: 'PT', resource: IgxResourceStringsPT },
{ type: 'RO', resource: IgxResourceStringsRO },
{ type: 'SV', resource: IgxResourceStringsSV },
{ type: 'TR', resource: IgxResourceStringsTR },
{ type: 'zh-Hans', resource: IgxResourceStringsZHHANS },
{ type: 'zh-Hant', resource: IgxResourceStringsZHHANT }
];
this.locale = 'EN';
}
public updateLocale() {
const newLocale = this.locales.find(x => x.type === this.locale).resource;
changei18n(newLocale);
}
public ngOnDestroy(): void {
changei18n(this.cashedLocalizationEN);
}
}
ts
<div class="grid__wrapper">
<igx-grid #grid [data]="data" [autoGenerate]="false" height="520px" width="100%"
[allowFiltering]="true" [locale]="locale" [rowEditable]="true" [primaryKey]="'ProductID'">
<igx-column field="ProductName" header="Product Name" [dataType]="'string'" [groupable]="true">
</igx-column>
<igx-column field="QuantityPerUnit" header="Quantity Per Unit" [dataType]="'string'" [groupable]="true">
</igx-column>
<igx-column field="UnitPrice" header="Unit Price" [sortable]="true" [hasSummary]="true"
[dataType]="'currency'" [groupable]="true">
</igx-column>
<igx-column field="OrderDate" header="Order Date" [dataType]="'date'" [groupable]="true">
</igx-column>
<igx-column field="Discontinued" header="Discontinued" [dataType]="'boolean'" [groupable]="true">
</igx-column>
</igx-grid>
<igx-select [(ngModel)]="locale" (ngModelChange)="updateLocale()">
<igx-select-item *ngFor="let locale of selectLocales" [value]="locale">
{{ locale }}
</igx-select-item>
</igx-select>
</div>
html
igx-select {
width: 192px;
}
.grid__wrapper {
margin: 16px 32px;
}
scss
このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
注: サンプルに含まれているヒンディー語 (HI) は、説明のみを目的としており、カスタム ローカライズ オブジェクトを渡す可能性を強調するためのものです。このサンプルでは、集計用にローカライズされたいくつかの文字列のみが含まれています。詳細については、以下の独自のローカライズされたリソースを使用するセクションを参照してください。
使用方法
npm パッケージからローカライズしたリソースを読み込む
次のように、igniteui-angular-i18n
パッケージで利用可能な言語の 1 つでアプリケーションをローカライズできます。
npm install igniteui-angular-i18n --save-dev
を実行してパッケージをインストールします。
目的の言語のリソース文字列をインポートし、コンポーネントの resourceStrings
入力を使用してコンポーネント インスタンスの文字列を変更します。
<igx-grid [data]="data" [resourceStrings]="resourcesDE" [locale]="locale">
<igx-grid-toolbar>
<igx-grid-toolbar-title>German Locale</igx-grid-toolbar-title>
</igx-grid-toolbar>
<igx-column field="ProductName" header="Product Name" [groupable]="true">
</igx-column>
<igx-column field="QuantityPerUnit" header="Quantity Per Unit" [groupable]="true">
</igx-column>
<igx-column field="UnitPrice" header="Unit Price" [sortable]="true" [hasSummary]="true"
[dataType]="'currency'" [groupable]="true">
</igx-column>
<igx-column field="OrderDate" header="Order Date" [dataType]="'date'" [groupable]="true">
</igx-column>
<igx-column field="Discontinued" header="Discontinued" [dataType]="'boolean'" [groupable]="true">
</igx-column>
</igx-grid>
html
import { Component } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeDE from '@angular/common/locales/de';
import { GridResourceStringsDE } from 'igniteui-angular-i18n';
@Component({
selector: 'app-locale',
styleUrls: ['./locale.component.scss'],
templateUrl: 'locale.component.html'
})
export class LocaleComponent implements OnInit {
public resourcesDE = GridResourceStringsDE;
public locale = 'DE';
public data: any[];
constructor() {
registerLocaleData(localeDE);
}
}
typescript
あるいは、対応するリソース オブジェクトを渡して changei18n()
関数を呼び出して、すべてのコンポーネントのローカライズを変更することもできます。
import { Component, OnInit } from '@angular/core';
import { changei18n } from "igniteui-angular";
import { IgxResourceStringsJA } from 'igniteui-angular-i18n';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
public ngOnInit(): void {
changei18n(IgxResourceStringsJA);
}
}
typescript
注: より多くの言語を含む igniteui-angular-i18n
パッケージに自由にコントリビュート してください。
独自のローカライズされたリソースを活用する
changei18n
関数は IResourceStrings
オブジェクトを必要とします。使用したい言語が igniteui-angular-i18n
パッケージで利用できない場合、または単に特定の文字列を変更したい場合は、必要な言語とコンポーネントの文字列リソースを含むカスタム オブジェクトを渡すことができます。これにより、igniteui-angular コンポーネントのグローバル i18n が変更されます。
import { Component, OnInit } from '@angular/core';
import { changei18n, IGridResourceStrings } from "igniteui-angular";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
public partialCustomHindi: IGridResourceStrings;
public ngOnInit(): void {
this.partialCustomHindi = {
igx_grid_summary_count: 'गणना',
igx_grid_summary_min: 'न्यून',
igx_grid_summary_max: 'अधिक',
igx_grid_summary_sum: 'योग',
igx_grid_summary_average: 'औसत'
};
changei18n(this.partialCustomHindi);
}
}
typescript
または、現在利用可能なすべてのコンポーネント リソース文字列を取得することもできます。各コンポーネントには、ローカライズ可能な文字列を含むオブジェクトがあります。ローカライズするために値を置き換えることができ、オブジェクトをパラメーターとして changei18n
関数に渡すことができます。
import { Component, OnInit } from '@angular/core';
import { changei18n, GridResourceStringsEN, TimePickerResourceStringsEN } from "igniteui-angular";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
public ngOnInit(): void {
const currentRS = {
...GridResourceStringsEN,
...TimePickerResourceStringsEN
};
for (const key of Object.keys(currentRS)) {
currentRS[key] = '[Localized] '+ currentRS[key];
}
changei18n(currentRS);
}
}
typescript
コンポーネントの特定のインスタンスの文字列をローカライズ
単一の igx-grid
インスタンスのみをローカライズする方法があります。resourceStrings
プロパティを使用し IGridResourceStrings
の新しいインスタンスを設定します。
const newGridRes: IGridResourceStrings = {
igx_grid_filter: '[Localized]Filter',
igx_grid_filter_row_close: '[Localized]Close'
}
this.grid.resourceStrings = newGridRes;
typescript
利用可能なリソース文字列
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。