Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
Angular TIPS

Angular TIPS

文字列によって表示を切り替えるには?(i18nSelect)

2018年2月19日

i18nSelectパイプを使って、文字列値によってテキスト表示内容を切り替える方法を説明する。

  • このエントリーをはてなブックマークに追加

【対応バージョン】 Angular 5以降。v5時点で執筆しました。

 i18nSelectパイプを利用することで、与えられた文字列に応じて、出力するメッセージを切り替えることができます。i18nPluralパイプ*1の入力を文字列に変更したもの、と捉えると分かりやすいでしょう。

  • *1 i18nPluralは、与えられた数値に応じてメッセージを振り分けます。

 例えば以下は、指定された言語に応じてメッセージを切り替えるためのコードです。

TypeScript
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!!'
  };
}
変数の値によってメッセージを切り替えるためのコード(app.component.ts)
appLangが'ja'の場合

appLangが'ja'の場合

appLangが'de'の場合

appLangが'de'の場合

appLangが''の場合

appLangが''の場合

appLangプロパティの値によって、メッセージが変化*1
  • *1 メッセージの変化を確認するには、appLangプロパティの値をjadefrenなど変化させてみましょう。

 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(パイプ)

※以下では、本稿の前後を合わせて5回分(第40回~第44回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

Angular TIPS
40. コンポーネントからページのタイトルを操作するには?(Title)

Titleサービスを使って、コンポーネントからページタイトルを設定する方法を説明する。

Angular TIPS
41. コンポーネント要素に属性/イベントをバインドするには?(hostパラメーター)

@Componentデコレーターのhostパラメーターを使って、コンポーネント要素そのものに属性やイベントをバインドする方法を説明する。

Angular TIPS
42. 【現在、表示中】≫ 文字列によって表示を切り替えるには?(i18nSelect)

i18nSelectパイプを使って、文字列値によってテキスト表示内容を切り替える方法を説明する。

Angular TIPS
43. ページング処理を実装するには?(ngFor/slice)

ngForディレクティブとsliceパイプを使って、ページャー(=ページングのためのリンクリスト)を実装する方法を説明する。

Angular TIPS
44. 式の値によってメッセージを切り替えるには?(ngSwitch)

JavaScriptのswitch文のように、ある式を評価して、その式の値に応じて、表示するメッセージを切り替える方法を説明する。

サイトからのお知らせ

Twitterでつぶやこう!