ICUメッセージでの特殊文字エスケープ

ICU MessageFormatパターンで波括弧、シングルクォート、その他の特殊文字をエスケープする方法。アポストロフィ処理の一般的な落とし穴と解決策をカバー。

Advanced

詳細な説明

ICUメッセージでの特殊文字エスケープ

ICU MessageFormatは波括弧{}とシングルクォート'を特殊構文文字として使用します。メッセージ内でこれらの文字をリテラルテキストとして使用する場合、適切にエスケープする必要があります。

シングルクォートエスケープ

シングルクォート'はICU MessageFormatのエスケープ文字です。2つの用途があります:

1. 波括弧のエスケープ

This is a JSON example: '{ "key": "value" }'

マッチしたシングルクォート間のすべてがリテラルテキストとして扱われます。

2. リテラルシングルクォート

It''s a beautiful day!

出力:"It's a beautiful day!"

よくある落とし穴

落とし穴1:マッチしないクォート

// 壊れる:"s"の前のクォートがエスケープを開始する
It's {count} o'clock

修正:It''s {count} o''clock

落とし穴2:引数周辺のクォート

// 壊れる:引数がクォート内にある
The value is '{value}'

変数を置換する代わりにリテラルテキスト{value}を出力します。

ベストプラクティス

  1. 可能な場合、ソースメッセージでアポストロフィを避ける -- "don't"を"do not"に言い換える
  2. リテラルクォートには常に''を使用
  3. コードブロックをクォートで囲む:'{ "json": true }'
  4. エッジケースでテスト:変数近くのアポストロフィが最も一般的なバグの原因
  5. 翻訳チームにエスケープルールを文書化

ユースケース

アポストロフィ(英語やフランス語の短縮形など)、コード例、JSONスニペット、または波括弧を含む数学的表記を含むICUメッセージを扱う開発者と翻訳者。

試してみる — ICU Message Format Tester

フルツールを開く