For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /pt/docs/modules/i18n.md (or send Accept: text/markdown).
Módulo i18n
O contrato de locale que todas as superfícies partilham.
Antes de começar
Abra seu projeto supastack baixado em Visual Studio Code usando Arquivo → Abrir pasta e escolha Terminal → Novo Terminal. A raiz do repositório é a pasta que contém package.json, apps e pacotes. Execute o comando abaixo e deixe seu terminal aberto. Se um comando não for reconhecido, conclua o guia de instalação da ferramenta antes de continuar.
Leia o tutorial da plataforma primeiro. Um servidor é o processo do aplicativo que responde às solicitações do navegador ou do telefone. A Web lê apps/web/.env.local, Expo lê apps/mobile/.env.local e os comandos de migração de banco de dados leem root .env. A demonstração sem banco de dados/painel é separada das contas reais/auth, que precisam migrar para Postgres. Uma finalização de compra somente por telefone ou desktop precisa de um back-end da Web executado separadamente.
- Instale as ferramentas e obtenha o código
- Aprenda comandos, arquivos e configuração
- Conclua o tutorial inicial da Web
corepack pnpm --filter @supastack/web devInstalação e configuração
packages/i18n detém o conjunto de locales e o contrato de resolução: SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath e getDictionary. Rotas web, strings mobile e mail transacional leem todos pelo mesmo package.
A ordem de resolução é prefixo de caminho → cookie → Accept-Language → defeito. localePath(locale, path) produz o href canónico — sem prefixo para o locale por defeito, /{locale}/… caso contrário — e a camada proxy impõe-no.
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";
const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;Fluxo de implementação
Adiciona uma string visível ao utilizador primeiro aos tipos do dicionário e depois a todos os locales — a suite de completude de tradução falha com chaves em falta e com texto inglês por traduzir.
Nunca branches lógica de produto por locale; os dicionários são apresentação. Formata datas, números e plurais através das APIs Intl com o locale resolvido em vez de templates de string.
Verificação e resolução de problemas
Corre os testes do package i18n mais a suite de completude de site-content depois de tocar em chaves. Faz spot-check de uma rota com prefixo de locale, do language switcher e da deteção de Accept-Language com o cookie limpo.