# gt-node: General Translation Node.js SDK: msg URL: https://generaltranslation.com/ja/docs/node/reference/functions/msg.mdx --- title: msg description: General Translation で翻訳するために、モジュールスコープで文字列をマークしてエンコードします。msg の API リファレンス。 --- 翻訳対象の文字列 (または文字列の array) を登録します。`msg` を [`getMessages`](/docs/node/reference/functions/get-messages) と組み合わせることで、文字列を登録し (通常はモジュールスコープで) 、実行時にその翻訳を解決できます。 ## 概要 [#overview] 文字列を指定して `msg` を呼び出します。オプションを渡さない場合は、文字列がそのまま返されます。オプション (補間変数またはメタデータ) を渡すと、それらのオプションを含むエンコード済みの文字列が返されます。翻訳を取得するには、その結果を [`getMessages`](/docs/node/reference/functions/get-messages) に渡します。 ```ts const registered = msg('Hello, world!'); console.log(registered); // "Hello, world!" (変更なし) const withVars = msg('Hello, {name}!', { name: 'Brian' }); console.log(withVars); // "Hello, Brian:" ``` シグネチャ: ```ts msg(message: T): T; msg(message: T, options?: GTTranslationOptions): T extends string ? string : string[]; ``` *注: `msg` は、オプションなしで呼び出すとメッセージをそのまま返します。エンコードされた文字列が生成されるのは、オプションを渡した場合のみです。エンコードされた文字列から元のテキストを復元するには、[`decodeMsg`](/docs/node/reference/functions/decode-msg) でデコードしてください。* ## 仕組み [#how-it-works] * **登録。** `msg` はコンテンツに印を付け、[`gt` CLI](/docs/cli/quickstart) がそれを検出して翻訳できるようにします。実際の翻訳は、後で [`getMessages`](/docs/node/reference/functions/get-messages) によって解決されます。 * **本番環境。** `msg` 呼び出し内のコンテンツは、デプロイ前に翻訳されます。翻訳は設定に応じて CDN またはアプリのビルド出力に保存され、そこから配信されます。翻訳が見つからない場合は、元のコンテンツにフォールバックします。 * **開発。** `projectId` と `devApiKey` がある場合、`msg` のコンテンツはオンデマンドで翻訳されるため、さまざまな言語でプレビューするのに便利です。本番ビルドでは発生しない遅延が生じることがあります。 * **エンコード。** オプションが指定されている場合、戻り値は `interpolatedContent:encodedOptions` になります。これは、補間済みコンテンツ、コロン、base64 エンコードされたオプションを連結したものです。[`getMessages`](/docs/node/reference/functions/get-messages) で解決するか、[`decodeMsg`](/docs/node/reference/functions/decode-msg) でデコードしてください。 * **配列。** `string[]` を渡すと、各エントリが登録されます。`$id` を使うと、各エントリには `${$id}.${index}` 形式の一意の id が割り当てられます。 ## パラメータ [#parameters] | パラメータ | 説明 | 型 | 任意 | デフォルト | | --------------------- | ------------------ | ---------------------- | --- | ----- | | [`message`](#message) | 登録する文字列、または文字列の配列。 | `string \| string[]` | いいえ | — | | [`options`](#options) | 翻訳オプションと補間変数。 | `GTTranslationOptions` | はい | — | ### `message` [#message] **Type** `string | string[]` · **必須** 翻訳対象として登録する文字列、または複数をまとめて登録するための文字列の配列。 ### `options` [#options] **型** `GTTranslationOptions` · **省略可能** 補間変数を含む翻訳オプションです。 * `$context?: string` — 翻訳の意味の曖昧さを解消するための追加コンテキスト。 * `$id?: string` — translation entry 用のカスタム ID (array の場合は `${$id}.${index}` が生成されます) 。 * `$format?: string` — メッセージ形式。デフォルトは `'ICU'` です。 * `$maxChars?: number` — 翻訳の最大文字数。 * `$requiresReview?: boolean` — 使用前に翻訳の承認が必要かどうか。 * その他の keys はすべて、`{key}` 構文で string に補間する値として扱われます。 ## 戻り値 [#returns] **型** `string | string[]` オプションが渡されない場合はメッセージをそのまま返し、オプションが渡された場合は (補間された変数が適用された) エンコードされた文字列を返します。配列の場合は、同じ形状の配列が返されます。 ## デコード [#decoding] エンコードされたメッセージから元の補間済み文字列を復元するには、[`decodeMsg`](/docs/node/reference/functions/decode-msg) を使用してデコードします。 ```ts import { msg, decodeMsg } from 'gt-node'; const encoded = msg('Hello, {name}!', { name: 'Brian' }); const decoded = decodeMsg(encoded); console.log(decoded); // "Hello, Brian" ``` ## 例 [#examples] ```ts // 基本的な使い方 — 翻訳対象のstringをマークする import { msg, getMessages } from 'gt-node'; const greeting = msg('Hello, world!'); const m = await getMessages(); const translated = m(greeting); console.log(translated); // "Hello, world!" (ユーザーの優先言語に翻訳済み) ``` ```ts // 変数の使用 — "Alice" は変数のため、翻訳されません import { msg, getMessages } from 'gt-node'; const greeting = msg('Hello, {name}!', { name: 'Alice' }); const m = await getMessages(); const translated = m(greeting); console.log(translated); // "Hello, Alice!" (翻訳済み) ``` ```ts // ICU message formatを使用して変数をフォーマットする import { msg, getMessages } from 'gt-node'; const encodedString = msg( 'There are {count, plural, =0 {no items} =1 {one item} other {{count} items}} in the cart', { count: 10 } ); const m = await getMessages(); const translated = m(encodedString); console.log(translated); ``` *注: [ICU message format](https://unicode-org.github.io/icu/userguide/format_parse/messages/) は、変数を柔軟にフォーマットできる強力な仕組みです。* ## メモ [#notes] * `msg` は文字列を翻訳対象としてマークします。翻訳は (開発時を除き) 実行時ではなく、ビルド時に行われます。 * オプションなしでは `msg` は入力をそのまま返し、オプションを指定するとエンコードされた文字列を返します。 * エンコードされた文字列は [`getMessages`](/docs/node/reference/functions/get-messages) で解決するか、[`decodeMsg`](/docs/node/reference/functions/decode-msg) で元のテキストを復元します。