# General Translation Platform: formatMessage
URL: https://generaltranslation.com/it/docs/platform/core/reference/gt-class-methods/formatting/format-message.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Formatta messaggi in stile ICU con variabili e valori dipendenti dall'impostazione regionale. API Reference di formatMessage.

Formatta un messaggio con la sostituzione delle variabili e la formattazione in base all&#39;impostazione regionale in un&#39;istanza di [GT](/docs/platform/core/reference/gt-class/constructor). Il formattatore ICU nativo di General Translation supporta l&#39;interpolazione delle variabili, la pluralizzazione, la formattazione dei numeri e delle date.

## Panoramica [#overview]

Chiama `formatMessage` su un&#39;istanza di [`GT`](/docs/platform/core/reference/gt-class/constructor) con una stringa contenente il messaggio e un oggetto options facoltativo che contiene le `variables` da interpolare. Restituisce il messaggio formattato.

```typescript
const gt = new GT({ sourceLocale: 'en', targetLocale: 'fr' });

const formatted = gt.formatMessage('Hello {name}, you have {count} messages', {
  variables: { name: 'Alice', count: 5 },
});
// "Hello Alice, you have 5 messages"
```

Firma:

```typescript
formatMessage(
  message: string,
  options?: {
    locales?: string | string[];
    variables?: FormatVariables;
    dataFormat?: StringFormat;
  }
): string
```

*Nota: `formatMessage` viene eseguito localmente e non richiede una chiave API. Sostituisce le impostazioni regionali dell&#39;istanza quando viene specificato `locales`. Per la formattazione senza un&#39;istanza `GT`, vedi [`formatMessage`](/docs/platform/core/reference/utility-functions/formatting/format-message) standalone.*

## Come funziona [#how-it-works]

* **Elaborazione ICU.** Il metodo usa il formattatore ICU nativo di General Translation e applica automaticamente la formattazione specifica dell&#39;impostazione regionale per numeri, date e Currency.
* **Risoluzione delle impostazioni regionali.** `locales` sovrascrive i valori predefiniti dell&#39;istanza per una singola chiamata.
* **Le variabili mancanti generano un errore.** Se nel messaggio viene fatto riferimento a una variabile non fornita in `variables`, viene generato un errore.
* **Escape delle parentesi graffe.** In base alla sintassi ICU, racchiudi una parentesi graffa letterale tra apici singoli (`'{'` o `'}'`) così non viene interpretata come l&#39;inizio di un segnaposto.

### Sostituzione delle variabili

* Variabili semplici: `{variableName}` viene sostituito con il valore della stringa.
* Pattern ICU: `{count, plural, ...}` viene elaborato secondo le regole di formattazione ICU.
* Variabili mancanti: generano un errore.
* Parentesi graffe letterali: racchiudile tra apici singoli seguendo la sintassi ICU (`'{'` o `'}'`) per visualizzare una parentesi graffa letterale.

### Supporto per il formato dei messaggi

* **Interpolazione semplice:** `{variable}`
* **Formattazione dei numeri:** `{price, number, ::currency/USD}`, `{discount, number, percent}`, `{num, number, integer}`
* **Formattazione di data e ora:** `{date, date, short}`, `{time, time, short}`
* **Pluralizzazione:** `{count, plural, =0 {none} =1 {one} other {many}}`
* **Selezione:** `{gender, select, male {he} female {she} other {they}}`
* **Selectordinal:** `{place, selectordinal, =1 {#st} =2 {#nd} =3 {#rd} other {#th}}`

## Parametri [#parameters]

| Parametro             | Descrizione                                               | Type      | Facoltativo | Predefinito |
| --------------------- | --------------------------------------------------------- | --------- | ----------- | ----------- |
| [`message`](#message) | Il messaggio in formato ICU da formattare.                | `stringa` | No          | —           |
| [`options`](#options) | Configurazione della formattazione, incluse le variabili. | `object`  | Sì          | —           |

### `message` [#message]

**Tipo** `stringa` · **Obbligatorio**

Il messaggio da formattare, usando la sintassi di ICU MessageFormat.

### `options` [#options]

**Type** `object` · **Facoltativo**

Configurazione della formattazione:

| Name         | Description                                                                                                 | Type                 | Optional | Default                  |
| ------------ | ----------------------------------------------------------------------------------------------------------- | -------------------- | -------- | ------------------------ |
| `locales`    | Impostazioni regionali da usare per la formattazione (sovrascrivono i valori predefiniti dell&#39;istanza). | `string \| string[]` | Sì       | locales dell&#39;istanza |
| `variables`  | Oggetto contenente le variabili per l&#39;interpolazione del messaggio.                                     | `FormatVariables`    | Sì       | `{}`                     |
| `dataFormat` | Formato dei dati della stringa del messaggio (`'ICU'`, `'I18NEXT'` o `'STRING'`).                           | `StringFormat`       | Sì       | `'ICU'`                  |

Il tipo `FormatVariables`:

```typescript
type FormatVariables = Record<string, string | number | boolean | null | undefined | Date>;
```

## Restituisce [#returns]

**Tipo** `string`

Il messaggio formattato, con le variabili sostituite e la formattazione specifica dell&#39;impostazione regionale applicata.

## Esempi [#examples]

```typescript
// Sostituzione di variabili di base
const gt = new GT({ targetLocale: 'en' });

const message = gt.formatMessage('Welcome {name}!', {
  variables: { name: 'John' },
});
console.log(message); // "Welcome John!"
```

```typescript
// Pluralizzazione con formato ICU
const message = gt.formatMessage(
  'You have {count, plural, =0 {no items} =1 {one item} other {# items}} in your cart',
  {
    variables: { count: 3 },
  }
);
console.log(message); // "You have 3 items in your cart"
```

```typescript
// Formattazione di numeri e valute
const gt = new GT({ targetLocale: 'en' });

const message = gt.formatMessage(
  'Your total is {price, number, ::currency/USD} with {discount, number, percent} off',
  {
    variables: {
      price: 99.99,
      discount: 0.15,
    },
  }
);
console.log(message); // "Your total is $99.99 with 15% off"
```

```typescript
// Template di messaggi complessi
const orderStatusMessage = gt.formatMessage(`
  Order #{orderId} status update:
  - Items: {itemCount, plural, =0 {no items} =1 {one item} other {# items}}
  - Total: {total, number, ::currency/USD}
  - Status: {status, select,
      pending {Pending}
      shipped {Shipped}
      delivered {Delivered}
      other {Unknown}}
  - Delivery: {deliveryDate, date, short}
`, {
  variables: {
    orderId: 'ORD-12345',
    itemCount: 3,
    total: 149.97,
    status: 'shipped',
    deliveryDate: new Date('2024-03-20'),
  },
});
```

## Note [#notes]

* Il metodo gestisce la sintassi ICU MessageFormat con il formattatore nativo di General Translation.
* Le variabili mancanti generano un errore.
* La formattazione di numeri, date e Currency specifica dell&#39;impostazione regionale viene applicata automaticamente.
* Per formattare numeri standalone, usa [`formatNum`](/docs/platform/core/reference/gt-class-methods/formatting/format-num).

## Sitemap

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