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}を出力します。
ベストプラクティス
- 可能な場合、ソースメッセージでアポストロフィを避ける -- "don't"を"do not"に言い換える
- リテラルクォートには常に
''を使用 - コードブロックをクォートで囲む:
'{ "json": true }' - エッジケースでテスト:変数近くのアポストロフィが最も一般的なバグの原因
- 翻訳チームにエスケープルールを文書化
ユースケース
アポストロフィ(英語やフランス語の短縮形など)、コード例、JSONスニペット、または波括弧を含む数学的表記を含むICUメッセージを扱う開発者と翻訳者。