Projetos de Grande Escala

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

Descontinuado

Esta documentação abrange a CLI antiga (v0). A versão atual da CLI é a v1. Ver a documentação atual da CLI

A CLI da Lingo.dev adapta-se a projetos com milhares de chaves de tradução e dezenas de idiomas de destino através de processamento paralelo, tradução incremental com o lockfile e opções de processamento direcionado.

Processamento paralelo#

A CLI distribui as tarefas de tradução por vários workers em simultâneo. Por predefinição, a concorrência é de 10 workers:

bash
npx lingo.dev@latest run

Aumente a concorrência em projetos de grande escala:

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

Num projeto com 50 ficheiros em 10 idiomas (500 tarefas de tradução), o processamento paralelo trata tudo em simultâneo, em vez de o fazer de forma sequencial. Consulte Processamento Paralelo para mais detalhes sobre a arquitetura dos workers.

Processamento direcionado#

Processe subconjuntos específicos em vez de todo o projeto:

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

Estas 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 só o conteúdo alterado é traduzido, mantendo as execuções de CI rápidas mesmo em projetos de grande escala.

Organização por buckets#

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

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

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

Passos seguintes#