# General Translation Changelog: gt-i18n 0.9.0: Traduzioni basate su dizionari
URL: https://generaltranslation.com/it/blog/gt-i18n_v0_9_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Ernest McCarter
Published: 2026-05-07

## Panoramica

`gt-i18n` ora fornisce traduzioni basate su dizionari per le integrazioni con i framework. Nelle applicazioni Node.js, usa l&#39;export pubblico [`getTranslations()`](/docs/node/reference/functions/get-translations) di `gt-node`; `gt-i18n@0.9.0` non lo esporta dalla radice del proprio pacchetto.

| Pacchetto | Versione |
| --------- | -------- |
| `gt-i18n` | `0.9.0`  |
| `gt-node` | `0.7.0`  |

## Configurazione

Crea un file `dictionary.json` nella radice del progetto con le stringhe sorgente (in inglese):

```json title="dictionary.json"
{
  "greeting": {
    "hello": "Hello!"
  },
  "user": {
    "welcome": "Welcome, {name}!"
  },
  "errors": {
    "notFound": "Page not found",
    "unauthorized": "Access denied"
  }
}
```

Quando esegui la CLI ([`npx gt translate`](/docs/cli/reference/commands/translate)), rileva `dictionary.json` nella radice del progetto e lo traduce nelle impostazioni regionali configurate.

Configura il runtime Node.js con [`initializeGT`](/docs/node/reference/functions/initialize-gt):

```ts
import { initializeGT } from 'gt-node';
import dictionary from './dictionary.json';

initializeGT({
  defaultLocale: 'en',
  locales: ['en', 'es'],
  dictionary,
});
```

<Accordions>
  <Accordion title="Usare i propri dizionari">
    Se vuoi caricare i tuoi dizionari pretradotti, passa un&#39;opzione asincrona [`loadDictionary`](/docs/node/reference/config#load-dictionary) durante l&#39;inizializzazione di `gt-node`. Devi comunque fornire esplicitamente il dizionario predefinito: questo loader fornisce le impostazioni regionali tradotte:

    ```ts
    import { initializeGT } from 'gt-node';
    import dictionary from './dictionary.json';

    initializeGT({
      defaultLocale: 'en',
      locales: ['en', 'es'],
      dictionary,
      loadDictionary: async (locale) => {
        const dict = await import(`./locales/${locale}.json`);
        return dict.default;
      },
    });
    ```

    Questo loader fornisce i tuoi dizionari tradotti invece di recuperare i dizionari generati.
  </Accordion>
</Accordions>

## Utilizzo

Dato il dizionario sorgente sopra, chiama [`getTranslations()`](/docs/node/reference/functions/get-translations) per ottenere una funzione `t` che risolve le voci del dizionario:

```ts
import { getTranslations, withGT } from 'gt-node';

await withGT('en', async () => {
  const t = await getTranslations();

  t('greeting.hello'); // "Ciao!"
  t('user.welcome', { name: 'Alice' }); // "Benvenuta, Alice!"
});
```

### Sottodizionari con `t.obj()`

`t()` restituisce una singola stringa. `t.obj()` restituisce un intero sottoalbero del dizionario sotto forma di oggetto:

```ts
// All'interno del callback withGT qui sopra:
t('errors.notFound'); // "Pagina non trovata"

const errors = t.obj('errors');
// { notFound: "Pagina non trovata", unauthorized: "Accesso negato" }
```

Quando in un dizionario tradotto mancano delle chiavi, le voci mancanti vengono recuperate dal dizionario sorgente. Questo significa che le traduzioni parziali non causeranno errori in fase di runtime: per le chiavi non tradotte verrà usato come fallback il testo sorgente.

## Comportamento dei lookup

Due regole disciplinano la risoluzione dei lookup:

1. **Traduzione mancante → fallback all&#39;impostazione regionale predefinita.** Se una chiave esiste nel dizionario sorgente ma non ha una traduzione per l&#39;impostazione regionale corrente, `t()` restituisce il testo sorgente.
2. **Voce sorgente mancante → errore.** Se una chiave non esiste affatto nel dizionario sorgente, `t()` genera un errore. È intenzionale: se una chiave non è definita nella sorgente, è un bug, non una traduzione mancante. Questo comportamento verrà applicato a tutte le librerie GT in un prossimo refactoring.

La seconda regola presuppone che i dizionari tradotti corrispondano alla struttura del dizionario sorgente, ed è così che GT genera automaticamente le traduzioni.

## Link

* [PR #1359](https://github.com/generaltranslation/gt/pull/1359)
* [Riferimento API per `getTranslations`](/docs/node/reference/functions/get-translations)
* [Guida ai dizionari](/docs/react/guides/translating-with-dictionaries)

## Sitemap

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