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の分野全体で通用するスキルです。

ユースケース

国際化を始める開発者が、どのフレームワークでも最初の翻訳可能なメッセージを書く前に基本構文を理解する必要がある場合。

試してみる — ICU Message Format Tester

フルツールを開く