Referência de configuração

Max PrilutskiyCEO e cofundadorAtualizado em: há 2 meses · 4 min de leitura

Alpha

O Lingo.dev Compiler está em alpha. Ainda é instável, não é recomendado para uso em produção e as APIs podem mudar entre releases.

O objeto de configuração do Lingo.dev Compiler define como sua aplicação React é traduzida durante o build. Esta página documenta todas as opções disponíveis, com tipos, valores padrão e exemplos de uso.

Opções principais#

OpçãoTipoPadrãoDescrição
sourceRootstring"src"Diretório que contém os componentes traduzíveis. Relativo à raiz do projeto.
lingoDirstring".lingo"Diretório para metadados de tradução e arquivos de cache.
sourceLocalestringobrigatórioCódigo do idioma do seu conteúdo de origem (por exemplo, "en").
targetLocalesstring[]obrigatórioArray com os códigos dos idiomas de destino (por exemplo, ["es", "de", "fr"]).
useDirectivebooleanfalseQuando true, apenas os arquivos com a diretiva 'use i18n' são traduzidos. Quando false, todos os arquivos em sourceRoot são traduzidos.
modelsstring | object"lingo.dev"Configuração do provedor de tradução. Uma string define o padrão para todos os pares de idioma. Um objeto mapeia pares de idioma para provedores específicos.
promptstringundefinedPrompt de sistema personalizado para o LLM de tradução. Compatível com os placeholders {SOURCE_LOCALE} e {TARGET_LOCALE}.
buildMode"translate" | "cache-only""translate"Controla se o Compiler gera novas traduções ou usa apenas as traduções em cache.

Opções de desenvolvimento#

As opções dentro da chave dev controlam o comportamento durante o desenvolvimento:

OpçãoTipoPadrãoDescrição
dev.usePseudotranslatorbooleanfalseGera traduções falsas instantâneas (por exemplo, [!!! Welcome !!!]) em vez de chamar um LLM. Não requer chave de API.
dev.translationServerStartPortnumber60000Porta inicial do servidor de tradução local. O Compiler encontra automaticamente uma porta disponível no intervalo de 60000 a 60099.
dev.translationServerUrlstringundefinedSubstitui a URL do servidor de tradução. Útil em configurações personalizadas ou com servidores de tradução remotos.

Persistência de idioma#

As opções em localePersistence controlam como o idioma selecionado pelo usuário é armazenado e recuperado:

OpçãoTipoPadrãoDescrição
localePersistence.typestring"cookie"Mecanismo de persistência. Atualmente, oferece suporte a "cookie".
localePersistence.config.namestring"locale"Nome do cookie usado para armazenar o idioma.
localePersistence.config.maxAgenumber31536000Tempo de vida máximo do cookie em segundos (o padrão é 1 ano).

Para uma lógica de persistência personalizada (localStorage, baseada em URL, headers), consulte Custom Locale Resolvers.

Pluralização#

As opções em pluralization controlam a detecção e a geração automáticas de formas no plural:

OpçãoTipoPadrãoDescrição
pluralization.enabledbooleantrueAtiva ou desativa a detecção automática de pluralização.
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo de LLM usado para detectar formas no plural no texto de origem. Recomenda-se um modelo menor e mais rápido, já que a detecção é uma tarefa mais simples do que a tradução.

Consulte Automatic Pluralization para entender em detalhes como funciona a detecção de plural.

Variáveis de ambiente#

As variáveis de ambiente substituem ou complementam a configuração:

VariávelQuando necessárioDescrição
LINGO_BUILD_MODEOpcionalSubstitui a opção de configuração buildMode. Defina como "translate" ou "cache-only".
LINGODOTDEV_API_KEYAo usar modelos "lingo.dev"Chave de API do engine de localização da Lingo.dev. Obtenha em npx @lingo.dev/cli login.
OPENAI_API_KEYAo usar modelos "openai:*"Chave de API da OpenAI.
ANTHROPIC_API_KEYAo usar modelos "anthropic:*"Chave de API da Anthropic.
GOOGLE_API_KEYAo usar modelos "google:*"Chave de API do Google AI.
GROQ_API_KEYAo usar modelos "groq:*"Chave de API da Groq.
MISTRAL_API_KEYAo usar modelos "mistral:*"Chave de API da Mistral.
OPENROUTER_API_KEYAo usar modelos "openrouter:*"Chave de API da OpenRouter.

Exemplo completo#

ts
// next.config.ts
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";

const nextConfig: NextConfig = {};

export default async function (): Promise<NextConfig> {
  return await withLingo(nextConfig, {
    sourceRoot: "./app",
    lingoDir: ".lingo",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr", "ja"],
    useDirective: false,
    models: {
      "*:*": "lingo.dev",
      "*:ja": "anthropic:claude-3-5-sonnet",
    },
    prompt: "Translate UI text from {SOURCE_LOCALE} to {TARGET_LOCALE}. Keep it concise.",
    buildMode: "translate",
    dev: {
      usePseudotranslator: true,
      translationServerStartPort: 60000,
    },
    localePersistence: {
      type: "cookie",
      config: {
        name: "locale",
        maxAge: 31536000,
      },
    },
    pluralization: {
      enabled: true,
      model: "groq:llama-3.1-8b-instant",
    },
  });
}

Próximos passos#