ICU MessageFormat基礎
ICU MessageFormatの基本構文(シンプルな引数、型フォーマット、国際化におけるICUの役割)を学びます。入門に必須のリファレンス。
Fundamentals
詳細な説明
ICU MessageFormatとは?
ICU MessageFormatは、ソフトウェアアプリケーションで翻訳可能でロケール対応の文字列を作成するために、International Components for Unicode(ICU)プロジェクトが定義した構文標準です。i18nエコシステムで最も広く採用されているメッセージフォーマット標準であり、すべての主要なプログラミング言語とフレームワークのライブラリでサポートされています。
基本構文
最もシンプルなICUメッセージは、波括弧で囲まれた変数プレースホルダーを含むプレーンテキストです:
Hello, {name}! You have {count} new messages.
変数にはオプションで型とスタイルを指定できます:
{variable} -> シンプルな置換
{variable, type} -> 型付きフォーマット
{variable, type, style} -> スタイル付き型フォーマット
サポートされている型
| 型 | 用途 | 例 |
|---|---|---|
number |
ロケール対応の数値フォーマット | {price, number, currency} |
date |
日付フォーマット | {today, date, long} |
time |
時刻フォーマット | {now, time, short} |
plural |
複数形カテゴリ選択 | {count, plural, one {# item} other {# items}} |
select |
任意のカテゴリ選択 | {gender, select, male {He} other {They}} |
selectordinal |
序数選択 | {pos, selectordinal, one {#st} other {#th}} |
なぜ文字列結合よりICUなのか?
文字列結合("You have " + count + " items")は、語順が異なる言語(例:日本語は動詞が文末に来る)では壊れます。ICU MessageFormatは文全体を1つの翻訳可能な単位として保持し、翻訳者が変数プレースホルダーを維持しながら文の構造を再配置できるようにします。
採用状況
ICU MessageFormatは、React(react-intl / FormatJS)、Angular(組み込みi18n)、Vue(vue-i18n)、Java(java.text.MessageFormat)、PHP(intl拡張)など、多くのプラットフォームで本番環境で使用されています。この構文を学ぶことは、i18nの分野全体で通用するスキルです。
ユースケース
国際化を始める開発者が、どのフレームワークでも最初の翻訳可能なメッセージを書く前に基本構文を理解する必要がある場合。