Projetos de grande porte

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

Obsoleto

Esta documentação cobre o CLI legado (v0). O CLI atual é o v1. Veja a documentação atual da CLI

A CLI do Lingo.dev escala para projetos com milhares de chaves de tradução e dezenas de idiomas de destino por meio de processamento paralelo, tradução incremental via lockfile e opções de processamento direcionado.

Processamento paralelo#

A CLI distribui as tarefas de tradução entre workers simultâneos. A concorrência padrão é de 10 workers:

bash
npx lingo.dev@latest run

Aumente a concorrência em projetos de grande porte:

bash
npx lingo.dev@latest run --concurrency 20

Em um projeto com 50 arquivos em 10 idiomas (500 tarefas de tradução), o processamento paralelo executa tudo em paralelo, em vez de seguir uma tarefa por vez. Consulte Parallel Processing para mais detalhes sobre a arquitetura de workers.

Processamento direcionado#

Processe subconjuntos específicos em vez do projeto inteiro:

bash
# Specific languages
npx lingo.dev@latest run --target-locale es --target-locale fr

# Specific file format
npx lingo.dev@latest run --bucket json

# Specific files
npx lingo.dev@latest run --file components/header

# Specific keys
npx lingo.dev@latest run --key welcome.title

Essas opções podem ser combinadas — --force --bucket json --target-locale es retraduz todo o conteúdo JSON apenas para espanhol.

Integração com CI/CD#

Automatize a tradução a cada push com GitHub Actions:

yaml
name: Lingo.dev Localization
on:
  workflow_dispatch:
permissions:
  contents: write
  pull-requests: write
jobs:
  localize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

O lockfile garante que apenas o conteúdo alterado seja traduzido, mantendo as execuções no CI rápidas mesmo em projetos de grande porte.

Organização de buckets#

Separe os tipos de conteúdo em buckets distintos para um processamento mais direcionado:

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

Isso permite processar a documentação e o conteúdo do app de forma independente: --bucket markdown traduz apenas a documentação.

Próximos passos#