> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Modulo i18n

Il contratto di locale che ogni superficie condivide.

## Prima di iniziare

Apri il progetto supastack scaricato in Visual Studio Code utilizzando File → Apri cartella, quindi scegli Terminale → Nuovo terminale. La radice del repository è la cartella contenente package.json, app e pacchetti. Esegui il comando qui sotto e lascia il suo terminale aperto. Se un comando non viene riconosciuto, completare la guida all'installazione dello strumento prima di continuare.

Leggi prima il tutorial sulla piattaforma. Un server è il processo dell'app che risponde alle richieste del browser o del telefono. Il Web legge apps/web/.env.local, Expo legge apps/mobile/.env.local e i comandi di migrazione del database leggono root .env. La dimostrazione senza database/dashboard è separata dagli account reali/auth, che necessitano della migrazione Postgres. Un pagamento solo telefonico o desktop richiede un backend Web eseguito separatamente.

[Installa gli strumenti e ottieni il codice](https://supastack.dev/it/docs/web/before-you-start.md)

[Impara comandi, file e configurazione](https://supastack.dev/it/docs/web/terminal-basics.md)

[Completa il tutorial di prima esecuzione sul Web](https://supastack.dev/it/docs/web/ship-in-5-minutes.md)

```
corepack pnpm --filter @supastack/web dev
```


## Installazione e configurazione

packages/i18n possiede l'insieme dei locale e il contratto di risoluzione: SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath e getDictionary. Rotte web, stringhe mobile e mail transazionali leggono tutte dallo stesso package.

L'ordine di risoluzione è prefisso del percorso → cookie → Accept-Language → default. localePath(locale, path) produce l'href canonico — senza prefisso per il locale di default, /{locale}/… altrimenti — e il layer proxy lo impone.

```
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";

const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;
```


## Flusso di implementazione

Aggiungi una stringa visibile all'utente prima ai tipi del dizionario e poi a ogni locale — la suite di completezza delle traduzioni fallisce su chiavi mancanti e su testo inglese non tradotto.

Non fare mai branch della logica di prodotto sul locale; i dizionari sono presentazione. Formatta date, numeri e plurali tramite le API Intl con il locale risolto invece di template di stringhe.


## Verifica e risoluzione dei problemi

Esegui i test del package i18n più la suite di completezza di site-content dopo aver toccato le chiavi. Fai spot-check di una rotta con prefisso locale, dello switcher di lingua e del rilevamento Accept-Language con il cookie pulito.


## Successivo

[Workspace](https://supastack.dev/it/docs/modules/workspaces.md)
