Next.js / Translation

Degrau 16 de 25

Traduzir conteúdo dinâmico

Utilize o cliente de servidor gerado para registos de base de dados, campos CMS, valores de tempo de execução e cópias que necessitem de chaves estáveis explícitas.

Componente do servidor
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() Agrupa várias strings num único pedido e retorna valores indexados por chave. Use altified.t() quando apenas é necessária uma string explícita.

  • 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.

Os títulos estáticos em torno de conteúdo dinâmico podem permanecer como JSX literal comum e utilizar tradução automática. Isto permite que cada página combine o texto automático da interface com os registos traduzidos explicitamente.

Apenas componentes do servidor

O cliente gerado autentica-se com ALTIFIED_SECRET_KEY. Chame-o apenas a partir de componentes de servidor, ações de servidor, manipuladores de rotas ou outros módulos exclusivos do servidor.