Next.js / Translation

Étape 15 de 24

Traduire du contenu dynamique

Utilisez le client serveur généré pour les enregistrements de base de données, les champs CMS, les valeurs d'exécution et les copies nécessitant des clés stables explicites.

Composant serveur
import { altified } from "@/lib/altified";

export default async function ProductPage({ product, locale }) {
  const keys = {
    name: `product.${product.id}.name`,
    description: `product.${product.id}.description`,
  };

  const copy = await altified.resolve(locale, [
    { key: keys.name, defaultValue: product.name },
    {
      key: keys.description,
      defaultValue: product.description,
      context: { type: "product", id: product.id },
    },
  ]);

  return (
    <main>
      <h1>{copy[keys.name]}</h1>
      <p>{copy[keys.description]}</p>
      <span>{product.price}</span>
    </main>
  );
}

altified.resolve() Regroupe plusieurs chaînes de caractères en une seule requête et renvoie les valeurs indexées par clé. altified.t() lorsqu'une seule chaîne de caractères explicite est nécessaire.

  • Build keys from stable record IDs, never array positions.
  • Send only human-readable fields.
  • Keep prices, IDs, SKUs, URLs, timestamps, and user input out of translation requests.
  • Always provide original source-language content as defaultValue.
  • Add context when it helps translators understand the string.

Les titres statiques entourant le contenu dynamique peuvent rester du JSX littéral ordinaire et utiliser la traduction automatique. Cela permet à chaque page de combiner le texte automatique de l'interface avec les enregistrements traduits explicitement.

Composants serveur uniquement

The generated client authenticates with ALTIFIED_SECRET_KEY. Call it only from Server Components, server actions, route handlers, or other server-only modules.