# vue: 文字列の翻訳
URL: https://generaltranslation.com/ja/docs/vue/guides/translating-strings.mdx
---
title: 文字列の翻訳
description: useGT と useMessages を使用して、Vue のラベル、属性、共有文字列を翻訳する方法。
related:
links:
- /docs/vue/guides/translating-content
- /docs/vue/guides/developing-spa-translations
- /docs/vue/guides/formatting-variables
- /docs/vue/guides/configuring
---
プレースホルダー、アクセシビリティ用ラベル、別のコンポーネントに渡す値など、テンプレートのコンテンツとして表現できない文字列には [`useGT()`](/docs/vue/reference/composables/use-gt) を使用します。静的メッセージをあるモジュールで宣言し、別のモジュールでレンダリングする場合は、[`useMessages()`](/docs/vue/reference/composables/use-messages) と [`msg()`](/docs/vue/reference/functions/msg) を使用します。
## `useGT`で翻訳する [#use-gt]
コンポーネントのセットアップ時に[`useGT()`](/docs/vue/reference/composables/use-gt)を呼び出し、テンプレート内でその戻り値の関数を呼び出します。
```vue
```
CLI で抽出できるよう、文字列リテラルを使用します。カタログにエントリがない場合は、ソース文字列が返されます。
サポートされているオプションは、静的な `$context` のみです。
```vue
```
中括弧はそのままテキストとして扱われます。[`useGT()`](/docs/vue/reference/composables/use-gt) は ICU 構文の処理や変数の補間を行わず、`$id`、`$maxChars`、`$format` などの React の文字列オプションも受け付けません。
## 翻訳結果をリアクティブに保つ [#reactivity]
[`useGT()`](/docs/vue/reference/composables/use-gt) が返す関数は、呼び出し時にアクティブなカタログを読み取ります。ロケールまたはカタログの変更に応じて結果を更新するには、テンプレート、算出値、またはリアクティブエフェクト内から呼び出してください。
```vue
{{ pageTitle }}
```
`const pageTitle = gt('Account settings')` はセットアップ時に一度だけ翻訳され、スナップショットを保存します。[`createGT()`](/docs/vue/reference/functions/create-gt) プラグインによってロケールが切り替わっても、再実行されません。
## 共有メッセージを登録する [#messages]
共有モジュールで静的文字列を登録するには、[`msg()`](/docs/vue/reference/functions/msg) を使用します。これによりコンテンツが抽出対象としてマークされますが、翻訳の参照は行われません。
```ts title="src/messages.ts"
import { msg } from 'gt-vue';
export const statusMessages = {
active: msg('Active', { $context: 'account status' }),
paused: msg('Paused', { $context: 'account status' }),
};
```
レンダリングする箇所で、[`useMessages()`](/docs/vue/reference/composables/use-messages) を使用して選択したメッセージを解決します。
```vue title="src/components/StatusBadge.vue"
{{ label }}
```
オプションを指定しない場合、[`msg()`](/docs/vue/reference/functions/msg) は元の文字列をそのまま返します。`$context` を指定すると、[`useMessages()`](/docs/vue/reference/composables/use-messages) が読み取る不透明な参照用メタデータが追加されます。このエンコードされた表現を解析したり、その内容について前提を置いたりしないでください。
## ランタイム値を含むコンテンツを翻訳する [#variables]
プレーンな文字列の参照では、ランタイムデータは補間されません。フレーズ全体を [``](/docs/vue/reference/components/t) で囲み、変化する値を [``](/docs/vue/reference/components/var) でマークします:
```vue
Welcome back, {{ accountName }}!
```
値にロケール対応のフォーマットも必要な場合は、[``](/docs/vue/reference/components/num)、[``](/docs/vue/reference/components/currency)、[``](/docs/vue/reference/components/datetime) を使用します。
モジュールの評価時に静的な参照が必要なブラウザ専用 SPA では、[`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) の完了を待ってから [`t()`](/docs/vue/reference/functions/t) を使用できます。必要なインポート順を維持するには、[SPA 翻訳を使用した開発](/docs/vue/guides/developing-spa-translations) に従ってください。
## Next steps
- /docs/vue/guides/translating-content
- /docs/vue/guides/developing-spa-translations
- /docs/vue/guides/formatting-variables
- /docs/vue/guides/configuring