# General Translation Changelog: gt-next 6.3.0: Traduci le stringhe ovunque con msg()
URL: https://generaltranslation.com/it/blog/gt-next_v6_3_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Ernest McCarter
Published: 2025-08-27

## Panoramica

In **gt-next 6.3.0**, ci stiamo avvicinando a una libreria adatta sia agli sviluppatori umani sia agli sviluppatori IA. Il principio guida di questa release è stato **ridurre al minimo l&#39;impatto sul codice esistente** introducendo comunque le funzionalità essenziali necessarie per l&#39;i18n.

Per farlo, introduciamo una nuova funzione [`msg()`](/docs/react/reference/functions/msg) per tradurre stringhe in qualsiasi punto della codebase. In precedenza, gli sviluppatori dovevano passare la funzione `gt()` da [`useGT()`](/docs/react/reference/hooks/use-gt) o [`getGT()`](/docs/react/nextjs/reference/functions/get-gt) lungo lo stack delle chiamate per tradurre una stringa. Con [`msg()`](/docs/react/reference/functions/msg), ti basta racchiudere la stringa una sola volta e poi passarla a `m()` in fase di rendering.

***

## Un confronto

In passato, per racchiudere le stringhe era necessario far passare la funzione `gt()` attraverso più livelli:

```tsx title="constants.tsx"
export const greeting1 = 'Hello, world!'
export const getGreeting2 = (gt: any) => gt('Hello, world!')
```

```tsx title="Page.tsx"
import { greeting1, getGreeting2 } from './constants'

export default function Page() {
  const gt = useGT()
  return (
    <div>
      {greeting1}
      {getGreeting2(gt)}
    </div>
  )
}
```

Ora, con [`msg()`](/docs/react/reference/functions/msg), le stringhe possono essere dichiarate direttamente come costanti. L&#39;unico requisito è passarle tramite `m()` (da [`useMessages()`](/docs/react/reference/hooks/use-messages) o [`getMessages()`](/docs/react/nextjs/reference/functions/get-messages)) al momento della visualizzazione.

```tsx title="constants.tsx"
export const greeting1 = 'Hello, world!'
export const greeting2 = msg('Hello, world!')
```

```tsx title="Page.tsx"
import { greeting1, greeting2 } from './constants'

export default function Page() {
  const m = useMessages()
  return (
    <div>
      {greeting1}
      {m(greeting2)}
    </div>
  )
}
```

***

## Codifica e decodifica

Per supportare l&#39;interpolazione, la funzione [`msg()`](/docs/react/reference/functions/msg) restituisce un messaggio codificato anziché una semplice stringa. Il formato è questo:

```
<interpolated content>:<base64 encoded string>
```

La parte codificata in base64 contiene un oggetto JSON con:

* `$_hash`: hash della stringa originale
* `$_source`: parametri interpolati nel messaggio
* `$id`: un identificatore univoco personalizzato (se fornito)
* `$context`: contesto del messaggio (se specificato)
* eventuali variabili incluse nell&#39;interpolazione

Questo approccio modifica leggermente il modo in cui le stringhe vengono confrontate direttamente, ma garantisce un impatto minimo sulla tipizzazione e sulla struttura del codice. Per accedere al contenuto interpolato, usa `decodeMsg()`.

### Perché una stringa codificata?

L&#39;alternativa all&#39;uso di una stringa codificata implicherebbe che [`msg()`](/docs/react/reference/functions/msg) debba restituire un tipo di oggetto personalizzato contenente metadati aggiuntivi. Sebbene questo approccio funzioni nel paradigma di codifica/decodifica, introduce problemi quando si ha a che fare con una tipizzazione rigorosa.

Abbiamo concluso che, per ridurre al minimo l&#39;impatto dell&#39;i18n in questo scenario, la soluzione migliore sia semplicemente restituire una stringa che contenga invece i metadati.

### Esempio

Codice originale senza i18n:

```ts title="original.ts"
const name = 'John'
const message = `Hello, ${name}!`

if (message.length > 10) {
  console.log('The message is too long')
} else {
  console.log('The message is just the right length')
}
```

Con [`msg()`](/docs/react/reference/functions/msg) e `decodeMsg()`:

```ts title="internationalized.ts"
import { msg, decodeMsg } from 'gt-next'

const name = 'John'
const message = msg('Hello, {name}!', { name })

if (decodeMsg(message).length > 10) {
  console.log('The message is too long')
} else {
  console.log('The message is just the right length')
}
```

## Altro

Puoi anche sovrascrivere i parametri all&#39;interno della funzione `gt()`, anche se erano già stati interpolati al momento della chiamata a [`msg()`](/docs/react/reference/functions/msg).

```tsx title="Page.tsx"
import { msg, useMessages } from 'gt-next'

const message = msg('Hello, {name}!', { name: 'John' })

export default function Page() {
  const m = useMessages()
  return <div>{m(message, { name: 'Jane' })}</div> // Questo restituirà "Hello, Jane!"
}
```

***

## Riepilogo

Questa release si concentra sul rendere `gt-next` più intuitivo per gli sviluppatori, riducendo al minimo l&#39;overhead dell&#39;i18n. Eliminando la necessità di passare la funzione `gt()` lungo lo stack delle chiamate, la nuova funzione [`msg()`](/docs/react/reference/functions/msg) offre un modo più semplice e intuitivo per tradurre le stringhe e semplifica notevolmente il processo di i18n.

## Sitemap

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