# react-native: 変数コンポーネント URL: https://generaltranslation.com/ja/docs/react-native/guides/variables.mdx --- title: 変数コンポーネント description: 翻訳内で動的なコンテンツを扱うための変数コンポーネントの使い方 --- {/* 自動生成: 直接編集せず、代わりに content/docs-templates/ のテンプレートを編集してください。 */} 変数コンポーネントを使うと、[``](/docs/react-native/api/components/t) コンポーネント内に動的なコンテンツを安全に埋め込めます。これらのコンポーネントは、データを翻訳 API に送信することなく、ローカルで書式設定やローカライズを行います。そのため、ユーザー名、口座番号、財務データなどの機密情報を扱うのに最適です。 ## 利用可能なコンポーネント * [``](/docs/react-native/api/components/var): 書式設定なしの生の動的コンテンツ * [``](/docs/react-native/api/components/num): ロケールに応じて書式設定される数値 * [``](/docs/react-native/api/components/currency): 通貨記号と書式付きの金額 * [``](/docs/react-native/api/components/datetime): ロケールの規則に従った日付と時刻 ## クイックスタート 変数コンポーネントは [``](/docs/react-native/api/components/t) 内で動的なコンテンツを扱うために使用します。 ```jsx import { T, Var, Num, Currency, DateTime } from 'gt-react-native'; function UserProfile({ user }) { return (

Welcome back, {user.name}!

You have {user.itemCount} items.

Balance: {user.balance}

Last login: {user.lastLogin}

); } ``` ## 変数コンポーネントの仕組み 変数コンポーネントは、次の方法で動的コンテンツの課題を解決します。 1. **動的な値をラップ**して、[``](/docs/react-native/api/components/t) 内で使えるようにします 2. ブラウザ組み込みの i18n API を使って、**ローカルでフォーマット**します 3. **データのプライバシーを保ち**、コンテンツが翻訳 API に送信されることはありません 4. ユーザーの現在のロケールに基づいて、**ローカライズされた表示**を提供します ```jsx // ❌ これは動作しない - 内の動的コンテンツ

Hello {username}

// ✅ これは動作する - 動的コンテンツをラップした場合

Hello {username}

``` ## コンポーネントガイド ### Var - 生の動的コンテンツ 特別なフォーマットが不要な動的コンテンツには、[``](/docs/react-native/api/components/var) を使用します。 ```jsx // ユーザー情報

Hello, {user.name}!

Your account ID is {user.accountId}

// 条件付きレンダリング Dashboard: {isAdmin ? : } ``` ### Num - フォーマットされた数値 ロケールの書式設定ルールに従う数値には、[``](/docs/react-native/api/components/num) を使用します。 ```jsx // 基本的な数値フォーマット You have {itemCount} items in your cart. // 単独使用(number.toLocaleString() と同等) {totalItems} // カスタムフォーマットオプション Distance: {distance} km ``` ### Currency - 金額 金額の表示には [``](/docs/react-native/api/components/currency) を使用します: ```jsx // 基本的な通貨フォーマット(デフォルトは "USD") Your total is {total}. // 異なる通貨 Price: {price} // カスタムフォーマット {roundedAmount} ``` ### DateTime - 日付と時刻 日付や時刻には [``](/docs/react-native/api/components/datetime) を使用します。 ```jsx // 基本的な日付フォーマット Order placed on {orderDate} // 時刻フォーマット Last updated: {timestamp} // カスタム日付フォーマット {eventDate} ``` ## プライバシーとセキュリティ ### データはローカルに保持されます 変数コンポーネントは、ブラウザの [Intl APIs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) を使って、すべてのフォーマット処理をローカルで行います。**動的コンテンツが翻訳 API に送信されることはありません**。そのため、次のような用途に最適です。 * ユーザー名や個人情報 * 口座番号や ID * 財務データや残高 * 非公開のタイムスタンプや日付 ```jsx // 安全 - 機密データはローカルに保持される Account balance: {balance} Last login: {lastLoginTime} ``` ### 重要な例外 変数コンポーネント内でネストされた [``](/docs/react-native/api/components/t) コンポーネントの扱いには注意してください: ```jsx // ⚠️ 内側の コンテンツは翻訳APIに送信されます Hello, world! {/* これは翻訳される */} {privateData} {/* これはローカルに保持される */} ``` ## スタンドアロンでの使用 変数コンポーネントは、書式設定だけを行う目的で [``](/docs/react-native/api/components/t) の外でも使用できます。 ```jsx // それぞれの .toLocale*() メソッドと同様に動作します {count} // count.toLocaleString() {price} // 価格のフォーマット {date} // date.toLocaleDateString() ``` ## よくある問題 ### ローカライズオプションを無視する [``](/docs/react-native/api/components/currency) では、通貨の種類を指定するため、`currency` プロパティを必ず渡してください。これにより、値の表示時に正しい通貨記号と書式が使用されます。 ```jsx // ❌ デフォルトはUSD - ユーザーの期待と異なる場合があります The item costs {price} // ✅ 通貨を明示的に指定する The item costs {price} ``` 他のコンポーネントにも、フォーマットをカスタマイズするためのオプションの props があります。 ```jsx // 基本的なフォーマット {count} items in stock // カスタムフォーマット {percentage} completion rate // 日付フォーマット Last updated: {lastUpdate} ``` ## 次のステップ * [分岐コンポーネントガイド](/docs/react-native/guides/branches) - 翻訳に条件分岐ロジックを追加する * [文字列翻訳ガイド](/docs/react-native/guides/strings) - JSX を使わずにプレーンテキストを翻訳する * API リファレンス: * [`` コンポーネント](/docs/react-native/api/components/var) * [`` コンポーネント](/docs/react-native/api/components/num) * [`` コンポーネント](/docs/react-native/api/components/currency)