ph
ph は、メッセージのプレースホルダーに明示的な名前を付けます。
プロパティアクセス、関数呼び出し、その他の複雑な式が {0} のような数値プレースホルダーになるのを避けたい場合に使います。
キーは翻訳者にとって意味のあるプレースホルダー名になり、値はランタイムで評価される元の式として保持されます。
フレームワークに依存しない Lingui の意味論については、
公式の ph リファレンスを参照してください。
<p>{$t`Hello ${ph({ username: user.profile.displayName })}`}</p>
<p><Trans>Welcome {ph({ username: user.profile.displayName })}!</Trans></p>Hello Lingui
Welcome Lingui!
ロケール
名前
<script lang="ts"> import { ph, t, Trans } from "lingui-for-svelte/macro";
let user = $state({ name: "Ada" });</script>
<p>{$t`Hello ${ph({ username: user.name })}`}</p><Trans>Welcome {ph({ username: user.name })}!</Trans>ph はリアクティブな $t 式またはコンポーネントマクロ内で使います。
意図的に非リアクティブなスクリプトのスナップショットが必要な場合は、t.eager 内でも同じプレースホルダー構文を使えます。
---import { ph, t, Trans } from "lingui-for-astro/macro";
const user = { name: "Ada" };const greeting = t`Hello ${ph({ username: user.name })}`;---
<p>{greeting}</p><Trans>Welcome {ph({ username: user.name })}!</Trans>import { ph, t } from "@lingui/core/macro";
const greeting = t`Hello ${ph({ username: getUser().name })}`;抽出されるメッセージとランタイム値
セクションタイトル “抽出されるメッセージとランタイム値”次のソースを記述した場合:
t`Hello ${ph({ username: user.name })}`;カタログには意味のある ICU プレースホルダーが抽出されます。
Hello {username}変換後も、元の式はランタイムの値マッピングに保持されます。
{ message: "Hello {username}", values: { username: user.name, },}構文ルール
セクションタイトル “構文ルール”phにはプロパティを1つだけ持つオブジェクトを渡します。- プロパティのキーが ICU プレースホルダー名になります。
- プロパティの値はランタイムで評価され、その名前で
valuesに格納されます。 username、startDate、itemCountのように、安定した説明的な名前を使います。
ph が向いている場面
セクションタイトル “ph が向いている場面”- プロパティアクセスや関数呼び出しがそのままでは
{0}になる - プレースホルダーが表す内容を翻訳者に伝えたい
- 安定したプレースホルダー名によってカタログの変更やレビューを追いやすくしたい