# gt-next: General Translation Next.js SDK: Contenuto dinamico URL: https://generaltranslation.com/it/docs/next/guides/dynamic-content.mdx --- title: Contenuto dinamico description: Come tradurre contenuti a runtime usando API di traduzione lato server --- La traduzione dei contenuti dinamici riguarda il testo che non è disponibile in fase di build: contenuti generati dagli utenti, risposte API o record del database. Usa [``](/docs/next/api/components/tx) per i contenuti JSX e [`tx`](/docs/next/api/strings/tx) per le stringhe semplici, entrambi solo lato server per motivi di sicurezza. **Usa con parsimonia:** La traduzione dinamica consuma la quota API e aggiunge latenza. Quando possibile, preferisci i [componenti ``](/docs/next/guides/t) con i [componenti variabili](/docs/next/guides/variables). ## Quando usare la traduzione dinamica La traduzione dinamica è pensata per contenuti che davvero non possono essere noti nella fase di build: ### Casi d’uso appropriati * **Contenuti generati dagli utenti**: messaggi di chat, recensioni, post sui social * **Risposte da API esterne**: dati di terze parti, feed RSS, servizi esterni * **Record del database**: contenuti CMS dinamici, profili utente provenienti da API * **Dati in tempo reale**: notifiche live, messaggi di stato ### Da evitare in questi casi * Nomi utente, numeri di account → Usa [``](/docs/next/api/components/var) * Messaggi condizionali → Usa [componenti branch](/docs/next/guides/branches) * Validazione dei form → Usa [traduzione delle stringhe](/docs/next/guides/strings) * Configurazione statica → Usa [stringhe condivise](/docs/next/guides/shared-strings) ## Guida rapida ### Contenuti JSX con Tx ```jsx import { Tx } from 'gt-next'; async function UserPost({ postContent }) { return (
{postContent}
); } ``` ### Stringhe semplici con tx ```jsx import { tx } from 'gt-next/server'; async function NotificationBanner({ message }) { const translatedMessage = await tx(message); return (
{translatedMessage}
); } ``` ## Solo lato server Sia [``](/docs/next/api/components/tx) sia [`tx`](/docs/next/api/strings/tx) sono utilizzabili solo lato server per motivi di sicurezza: ```jsx // ✅ Componente server async function ServerComponent() { const translated = await tx(dynamicContent); return
{translated}
; } // ❌ Componente client - non funziona 'use client'; function ClientComponent() { const translated = await tx(dynamicContent); // Errore! return
{translated}
; } ``` ## Esempi ### Contenuti generati dagli utenti ```jsx import { Tx } from 'gt-next'; async function ChatMessage({ message }) { return (
{message.author}
{message.content}
); } ``` ### Dati API esterni ```jsx import { tx } from 'gt-next/server'; async function NewsArticle({ article }) { const translatedTitle = await tx(article.title); return (

{translatedTitle}

{article.publishedAt}

); } ``` ### Contenuti misti ```jsx import { T, Tx, Var } from 'gt-next'; async function ProductReview({ review }) { return (
{/* Contenuto statico con variabili */}

{review.author} rated this {review.rating} stars

{/* Contenuto dinamico dell'utente */} {review.content}
); } ``` ## Uso nelle route API [`tx`](/docs/next/api/strings/tx) funziona negli handler delle route API di Next.js, non solo nei componenti server: ```tsx // app/api/translate/route.ts import { tx } from 'gt-next/server'; import { NextRequest, NextResponse } from 'next/server'; export async function POST(request: NextRequest) { const { text, locale } = await request.json(); const translated = await tx(text, { locale }); return NextResponse.json({ translated }); } ``` Questo è utile quando devi esporre la traduzione come endpoint API, ad esempio per servire componenti client o servizi esterni. ## Pattern di traduzione lato client Poiché [`tx`](/docs/next/api/strings/tx) è disponibile solo lato server, i componenti client possono tradurre contenuti dinamici chiamando una route API che funge da proxy: ```tsx 'use client'; async function translateText(text: string) { const res = await fetch('/api/translate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text, locale: 'fr' }), }); const { translated } = await res.json(); return translated; } ``` Si usa insieme alla [route API sopra](#api-route-usage) per dare ai componenti client accesso alla traduzione dinamica. ## Tradurre più elementi Usa `Promise.all` per tradurre array di contenuti in parallelo: ```tsx import { tx } from 'gt-next/server'; const translatedPosts = await Promise.all( posts.map(async (post) => ({ ...post, title: await tx(post.title), })) ); ``` È utile per tradurre elenchi di record del database, risposte API o qualsiasi raccolta di stringhe dinamiche. ## Problemi comuni ### Evita di abusarne Non usare la traduzione dinamica per contenuti che possono utilizzare componenti standard: ```jsx // ❌ Non necessario const content = `Hello, ${userName}!`; return {content}; // ✅ Usa i componenti variabili al posto return (

Hello, {userName}!

); ``` ### Impatto sulla quota dell'API La traduzione dinamica consuma quota dell'API a ogni richiesta. Usa la cache e la gestione degli errori nelle applicazioni in produzione. ## Passaggi successivi **Guardalo in azione:** Dai un'occhiata all'[app di esempio per i contenuti dinamici](https://github.com/gt-examples/dynamic-content-tx) per una demo funzionante di `tx()` e `` — [anteprima live](https://dynamic-content-tx.generaltranslation.dev). * [Guida alla traduzione locale](/docs/next/guides/local-tx) - Gestisci le traduzioni senza effettuare chiamate API * [Guida al middleware](/docs/next/guides/middleware) - Rilevamento della lingua e instradamento * Riferimenti API: * [Componente ``](/docs/next/api/components/tx)