# gt-node: General Translation Node.js SDK: msg
URL: https://generaltranslation.com/ja/docs/node/reference/functions/msg.mdx
Docs index: https://generaltranslation.com/llms.txt
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:<encoded-options>"
```

シグネチャ:

```ts
msg<T extends string | string[]>(message: T): T;
msg<T extends string | string[]>(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 エントリ 用のカスタム ID (配列 の場合は `${$id}.${index}` が生成されます) 。
* `$format?: string` — メッセージ形式。デフォルトは `'ICU'` です。
* `$maxChars?: number` — 翻訳ツールに要求する正の整数の最大文字数。必要に応じて、解決された string はこの長さに切り詰められます。
* `$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) で元のテキストを復元します。

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
