Angularで文字列によって表示を切り替えるには?(i18nSelect):Angular TIPS
i18nSelectパイプを使って、文字列値によってテキスト表示内容を切り替える方法を説明する。
※現在では、Web標準技術を利用したアプリ開発が広く普及し、そのためのフレームワークも多数存在しています。その中でも主流のフレームワークの1つである「Angular」を活用し、そのための知識を備えることには大きな意味があります。本連載は、Angularユーザーに向けて、その使いこなしTIPSを紹介するものです。なお、本連載は「Build Insider」で公開していた連載「Angular Tips」を同サイトおよび筆者の了解を得たうえで、本フォーラムに移行したものです。記事はBuild Insiderで公開した状態のまま移行しているため、用語統一などの基準が@ITの通常の記事とは異なる場合があります。
【対応バージョン】
Angular 5以降。v5時点で執筆しました。
i18nSelectパイプを利用することで、与えられた文字列に応じて、出力するメッセージを切り替えることができます。i18nPluralパイプ*1の入力を文字列に変更したもの、と捉えると分かりやすいでしょう。
*1 i18nPluralは、与えられた数値に応じてメッセージを振り分けます。
例えば以下は、指定された言語に応じてメッセージを切り替えるためのコードです。
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<div>{{appLang | i18nSelect: messages}}</div>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
// 使用する言語
appLang = 'ja';
// 言語と対応するメッセージを準備
messages = {
'ja': 'こんにちは、世界!',
'de': 'Hallo Welt!',
'fr': 'Bonjour le monde!',
'other': 'Hello, World!!'
};
}
*1 メッセージの変化を確認するには、appLangプロパティの値をja、de、fr、enなど変化させてみましょう。
i18nSelectパイプの構文は、以下の通りです。
[構文]i18nSelectパイプ
value | i18nSelect: map
- value: 任意の文字列
- map: メッセージの一覧
引数mapは「文字列キー: メッセージ」のハッシュ形式で、キーとなる文字列と、対応するメッセージを用意します。ただし、otherは「その他」を表すキーで、存在しないキーが渡された場合に表示すべきメッセージを定義します。この例であれば、以下のようなメッセージリストを定義したことになります。
キー | 概要 |
---|---|
ja | こんにちは、世界! |
de | Hallo Welt! |
fr | Bonjour le monde! |
その他 | Hello, World!! |
サンプルで定義されたメッセージ一覧 |
ここでは、キーとなる値をAppComponentコンポーネントのプロパティ(appLang)として設定としていますが、より実践的なアプリでは、独立したサービスを設けて、そちらで言語を設定するのが望ましいでしょう(サービスを定義する方法については、後日別稿で解説します)。
処理対象:PIPE(パイプ) カテゴリ:基本
API:I18nSelectPipe(i18nSelect) カテゴリ:@angular > common > PIPE(パイプ)
Copyright© Digital Advantage Corp. All Rights Reserved.