# vue: Sviluppare con la traduzione per SPA
URL: https://generaltranslation.com/it/docs/vue/guides/developing-spa-translations.mdx
---
title: Sviluppare con la traduzione per SPA
description: Come precaricare una SPA Vue e tradurre stringhe statiche a livello di modulo con t().
related:
links:
- /docs/vue/guides/translating-strings
- /docs/vue/guides/managing-locales
- /docs/vue/guides/storing-translations
- /docs/vue/guides/configuring
---
Le single-page app eseguite solo nel browser possono precaricare il catalogo attivo prima dell'esecuzione dei moduli dell'applicazione. Ciò consente chiamate sincrone a [`t()`](/docs/vue/reference/functions/t) a livello di modulo per costanti, definizioni di navigazione e altre stringhe esterne ai componenti Vue.
[`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) integra [`useGT()`](/docs/vue/reference/composables/use-gt), senza sostituirlo. Usa il composable per i normali contenuti dei componenti e per le applicazioni Vue o renderizzate sul server che richiedono il cambio reattivo dell'impostazione regionale.
## Scegli il runtime SPA [#choose]
Usa [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) solo se tutte le seguenti condizioni sono soddisfatte:
* L'applicazione viene eseguita interamente nel browser.
* I moduli devono tradurre le stringhe durante la valutazione.
* È accettabile ricaricare la pagina quando cambia l'impostazione regionale.
Usa [`createGT()`](/docs/vue/reference/functions/create-gt) quando l'app viene renderizzata sul server o deve cambiare impostazione regionale in modo reattivo senza ricaricare la pagina.
## Bootstrap prima di importare l'app [#bootstrap]
Il punto di inizializzazione deve essere eseguito prima di qualsiasi modulo che chiami [`t()`](/docs/vue/reference/functions/t). Un piccolo bootstrap asincrono funziona con il target di build predefinito di Vite 6 e non richiede `await` di primo livello né `build.target: 'esnext'`.
### 1. Esporta una funzione di montaggio
Modifica il normale modulo di ingresso di Vite affinché esporti una funzione che accetti [`GTPlugin`](/docs/vue/reference/types/gt-plugin) inizializzato:
```ts title="src/main.ts"
import { createApp } from 'vue';
import type { GTPlugin } from 'gt-vue';
import App from './App.vue';
export function mount(gt: GTPlugin) {
createApp(App).use(gt).mount('#app');
}
```
### 2. Inizializza e importa dinamicamente
Crea un modulo di bootstrap che attenda [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa), importi quindi l'applicazione e installi il plugin esatto restituito dall'inizializzazione:
```ts title="src/index.ts"
import { initializeGTSPA } from 'gt-vue';
import gtConfig from '../gt.config.json';
import loadTranslations from './loadTranslations';
async function bootstrap() {
const gt = await initializeGTSPA({
...gtConfig,
loadTranslations,
});
const { mount } = await import('./main');
mount(gt);
}
bootstrap().catch((error) => {
console.error('Failed to initialize translations', error);
});
```
La prima chiamata gestisce il runtime SPA a livello di pagina. Le chiamate concorrenti ne condividono l'inizializzazione e quelle successive restituiscono lo stesso plugin. Non chiamare [`createGT()`](/docs/vue/reference/functions/create-gt) per l'app montata, altrimenti i lookup dei componenti e quelli a livello di modulo useranno stati diversi.
### 3. Configura Vite in modo che punti al bootstrap
Aggiorna lo script del modulo in `index.html` per caricare `src/index.ts` anziché `src/main.ts`:
```html title="index.html"
```
## Tradurre le stringhe a livello di modulo [#translate]
I moduli caricati tramite l'importazione dinamica dell'applicazione possono chiamare [`t()`](/docs/vue/reference/functions/t) in modo sincrono:
```ts title="src/navigation.ts"
import { t } from 'gt-vue';
export const message = t('Hello World');
export const navigation = [
{ label: t('Documentation', { $context: 'primary navigation' }), href: '/docs' },
{ label: t('Account settings'), href: '/settings' },
];
```
Le chiamate devono usare una stringa sorgente statica e possono includere un `$context` statico. L'estrattore registra queste stringhe e il catalogo precaricato rende sincrono il lookup quando il modulo viene eseguito.
[`t()`](/docs/vue/reference/functions/t) non supporta i tagged template, la sintassi ICU, l'interpolazione, `$format` o `$maxChars`. Usa [``](/docs/vue/reference/components/t) con [``](/docs/vue/reference/components/var) per contenuti che includono valori a runtime.
## Modifica le impostazioni regionali in una SPA inizializzata [#locales]
Passa `defaultLocale` e `locales` da `gt.config.json` a [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa). Un'impostazione regionale salvata ma non supportata torna a quella predefinita durante l'inizializzazione successiva.
Quando [`useSetLocale()`](/docs/vue/reference/composables/use-set-locale) modifica l'impostazione regionale, il runtime della SPA scrive il relativo cookie e ricarica il documento. Fino a quel ricaricamento, mantiene intenzionalmente la pagina corrente nell'impostazione regionale con cui è stata inizializzata. Il bootstrap precarica quindi il nuovo catalogo prima che vengano nuovamente eseguite le chiamate a livello di modulo.
Questo comportamento di ricaricamento rende sicure le costanti a livello di modulo. Se le modifiche dell'impostazione regionale devono avvenire senza navigazione, usa [`createGT()`](/docs/vue/reference/functions/create-gt) e richiama [`useGT()`](/docs/vue/reference/composables/use-gt) da un template o da un valore calcolato.
## Next steps
- /docs/vue/guides/translating-strings
- /docs/vue/guides/managing-locales
- /docs/vue/guides/storing-translations
- /docs/vue/guides/configuring