アプリやWebサービスを多言語対応させるとき、翻訳テキストの管理に苦労した経験はないでしょうか。「{count}件のメッセージがあります」のような動的テキストは、言語によって複数形のルールが異なるため、実装がかなり複雑になります。そこで注目したいのが、Unicode標準として策定が進んでいるMessageFormat 2.0です。

MessageFormat 2.0とは

MessageFormat 2.0は、Unicode Consortiumが策定を進めている、ローカライズ可能なメッセージ文字列の国際標準仕様です。ICU(International Components for Unicode)の一部として開発されており、従来のICU MessageFormatの問題点を根本から解決する設計になっています。

従来のMessageFormatは、複雑なメッセージになるとネストが深くなり、翻訳者にとっても開発者にとっても読みにくいものでした。2.0ではこの問題をシンプルなシンタックスで解決しようとしています。

なぜ新しい標準が必要なのか

国際化(i18n)の現場では、いくつかの根深い課題が存在します。

一つ目は複数形の処理。英語は単数・複数の2パターンですが、ロシア語は3パターン、アラビア語は6パターンもの複数形ルールがあります。これを言語ごとにハードコードするのは現実的ではないですよね。

二つ目は性別による変化。フランス語やドイツ語では、名詞の性によって冠詞や形容詞が変わります。従来のアプローチでは、条件分岐が膨大になってしまいます。

三つ目は翻訳ワークフローの効率化。開発者が定義したメッセージテンプレートを翻訳者が正確に理解し、各言語の文法に合わせて調整できる必要があります。しかし従来のフォーマットは、技術的なバックグラウンドがない翻訳者には難解でした。

MessageFormat 2.0のシンタックス

MessageFormat 2.0では、直感的なシンタックスが採用されています。簡単な例を見てみましょう。

.match {$count :number}
one {{You have {$count} new message.}}
*   {{You have {$count} new messages.}}

この例では、$countの値に応じて適切な複数形が選択されます。:numberというアノテーションにより、値のフォーマット方法が指定される仕組みです。非常にシンプルで読みやすいのが特徴ですね。

もう少し複雑な例として、日付と数値を組み合わせたパターンも見てみましょう。

.input {$date :datetime dateStyle=long}
.input {$count :number}
.match {$count}
one {{{$date}に{$count}件の通知があります。}}
*   {{{$date}に{$count}件の通知があります。}}

変数宣言(.input)と照合(.match)が明確に分離されているため、ロジックの流れが把握しやすくなっています。

従来のMessageFormatとの違い

従来のICU MessageFormatでは、同じ処理を書くとこうなります。

{count, plural, one {You have # new message.} other {You have # new messages.}}

シンプルなケースではまだ読めますが、性別分岐やネストされた複数形が絡むと、括弧の対応関係を追うだけで一苦労でした。MessageFormat 2.0はこの構造的な限界を解消するために設計されています。

MessageFormat 2.0の対応状況と今後

MessageFormat 2.0は、ICU 75以降で実装が進んでいます。Interop 2026のようなブラウザ互換性プロジェクトと同様に、各プラットフォームでの標準化が今後進んでいく見込みです。

JavaScriptの世界では、TC39のIntl.MessageFormat提案として、ECMAScript標準への組み込みが議論されています。これが実現すれば、ブラウザネイティブでMessageFormat 2.0が利用できるようになります。

また、JavaではICUのネイティブサポート、Rustではicu4xクレート経由での対応が進んでいます。主要な言語・プラットフォームでのサポートは着実に広がっている状況です。

開発者が今すぐできること

MessageFormat 2.0の正式な広範サポートはまだこれからですが、今のうちにできることもあります。

まず、既存のi18nライブラリの多くがMessageFormat 2.0への移行パスを用意し始めています。モダンCSSの進化と同様に、Web開発の基盤技術は常にアップデートされているので、定期的にキャッチアップしておくのがおすすめです。

また、新規プロジェクトでi18nを設計する際は、MessageFormat 2.0のシンタックスを意識した設計にしておくと、将来の移行がスムーズになるはずです。ICUの公式ドキュメントは充実しているので、一度目を通しておくと良いかもしれません。

まとめ

MessageFormat 2.0は、国際化の実装を根本から改善する可能性を持った新しいUnicode標準です。従来のMessageFormatの複雑さを解消しつつ、複数形・性別・日付フォーマットなどの言語固有の課題に対応しています。

グローバル展開を見据えたアプリ開発をしている方は、今のうちにMessageFormat 2.0の設計思想とシンタックスに触れておくことをおすすめします。i18nの「面倒な部分」が、かなりすっきり解決される手応えを感じました。