Como Traduzir Documentação em Markdown para Desenvolvedores

A
Escrito por
AI Trans Team
22 min de leitura
329 visualizações

Projetos open-source vivem ou morrem pela sua documentação. Uma biblioteca brilhante com README apenas em inglês nunca alcançará desenvolvedores na China, Japão ou Brasil — mercados que representam 40% da população mundial de desenvolvedores. No entanto, a tradução de documentação em markdown é unicamente desafiadora: você deve preservar blocos de código, manter a estrutura de links, lidar com controle de versão e manter as traduções sincronizadas à medida que seu projeto evolui.

De acordo com o relatório Octoverse 2024 do GitHub, 78% das contribuições open-source vêm de falantes não nativos de inglês, mas 92% da documentação permanece apenas em inglês. Isso cria uma barreira massiva para adoção, contribuição e construção de comunidade global.

Este guia abrangente mostrará como traduzir documentação em markdown de forma eficaz: desde preservar sintaxe de código e links até gerenciar fluxos de trabalho de tradução no Git, automatizar atualizações e construir sites de documentação multilíngues com ferramentas como Docusaurus, VuePress e MkDocs.

Por que a Tradução de Documentação em Markdown é Diferente

Markdown é uma linguagem de marcação projetada para escrita técnica. Ao traduzir docs em markdown, você não está apenas traduzindo prosa — você está gerenciando uma mistura complexa de código, sintaxe de formatação, hiperlinks, controle de versão e atualizações contínuas.

O Desafio da Tradução em Markdown

1. Blocos de Código NUNCA Devem Ser Traduzidos

## Instalação

Execute o seguinte comando:

```bash
npm install awesome-library

Ao traduzir para o espanhol:
- "Installation" → "Instalación" ✅
- "Run the following command:" → "Ejecuta el siguiente comando:" ✅
- `npm install awesome-library` → MANTER INALTERADO ✅

Tradutores genéricos frequentemente quebram traduzindo código!

2. Sintaxe Markdown Deve Ser Preservada

**Texto em negrito** deve permanecer **em negrito**
*Texto em itálico* deve permanecer *em itálico*
[Texto do link](url) deve manter a estrutura do link
`código inline` deve manter as crases

Uma má tradução pode produzir:
**Negrita** (perde sintaxe markdown)
*Cursiva (asterisco de fechamento ausente)
[Texto](url (link quebrado)

3. Links Relativos Devem Ser Atualizados para Versões em Idioma

Inglês: [See API Reference](./api-reference.md)
Espanhol: [Ver Referência API](./referencia-api.md)
         ^texto do link traduzido  ^nome do arquivo também traduzido

Ambos devem existir e linkar corretamente!

4. A Documentação Evolui — As Traduções Também Devem

Dia 1: Traduzir README.md (Inglês → Espanhol)
Dia 15: README.md em inglês atualizado (nova funcionalidade adicionada)
Problema: Versão em espanhol agora está desatualizada!

Precisa de um fluxo de trabalho para rastrear e sincronizar atualizações de tradução.

Impacto no Mundo Real

História de Sucesso: Vue.js

  • Documentação traduzida para 10+ idiomas
  • Tradução chinesa crítica para adoção na Ásia
  • Fluxo de trabalho de tradução comunitária via GitHub
  • Resultado: 40% dos downloads npm da Ásia, comunidade chinesa massiva

História de Sucesso: React

  • Traduções oficiais em 30+ idiomas gerenciadas pela comunidade
  • Repos separados para cada idioma (react.dev, zh-hans.react.dev, es.react.dev)
  • Guia de tradução e ferramentas de automação fornecidas
  • Resultado: Adoção global por desenvolvedores, contribuições de 100+ países

História de Sucesso: Linguagem de Programação Rust

  • "The Rust Book" traduzida para 15+ idiomas
  • Comunidade mantém traduções via mdBook
  • Tradução japonesa impulsionou aumento de 300% em desenvolvedores Rust japoneses
  • Equipes de tradução ativas mantêm docs sincronizados com atualizações em inglês

Caso de Falha: Traduções Abandonadas Muitos projetos open-source têm traduções desatualizadas:

  • README em francês atualizado pela última vez há 2 anos
  • README em inglês atualizado semanalmente
  • Resultado: Desenvolvedores franceses confusos, abandonam o projeto ou lutam com info desatualizada

Fundamentos do Markdown para Tradução

Elementos Centrais do Markdown

Cabeçalhos:

# Título 1
## Título 2
### Título 3

Traduza o texto, preserve os símbolos:
# Instalação → # Instalação
## Início Rápido → ## Início Rápido

Ênfase:

**texto em negrito** → **texto em negrito**
*texto em itálico* → *texto em itálico*
~~texto tachado~~ → ~~texto tachado~~

Mantenha a sintaxe markdown exatamente como está.

Listas:

Não ordenadas:
- Item um
- Item dois
  - Item aninhado

Ordenadas:
1. Primeiro passo
2. Segundo passo
3. Terceiro passo

Traduza o conteúdo, mantenha a estrutura:
- Primeiro elemento
- Segundo elemento
  - Elemento aninhado

Links:

[Texto do link](url)
[Documentação](https://example.com/docs)

Traduza o texto, mantenha a URL (a menos que também traduza a página linkada):
[Documentação](https://example.com/docs)

Ou se docs em português existirem:
[Documentação](https://example.com/pt/docs)

Imagens:

![Texto alternativo](url-da-imagem "Título opcional")

![Captura de tela do painel](./images/dashboard.png "Painel de Administração")

Traduza texto alternativo e título:
![Captura de tela do painel](./images/dashboard.png "Painel de Administração")

Nome do arquivo da imagem geralmente permanece o mesmo (recurso compartilhado).

Blocos de código:

Código inline: Use `npm install` para instalar pacotes.

Traduza o texto em prosa, preserve o código: Use npm install para instalar pacotes.

Blocos de código delimitados:

function greet(name) {
  console.log(`Hello, ${name}!`);
}

NUNCA traduza o código dentro das delimitações. Mantenha exatamente como está.


**Tabelas:**
```markdown
| Inglês | Espanhol | Francês |
|--------|----------|---------|
| Hello  | Olá      | Bonjour |
| Adeus  | Adeus    | Au revoir|

Traduza as células de conteúdo, mantenha a estrutura:
| Inglês | Espanhol | Francês |
|--------|----------|---------|
| Hello  | Olá      | Bonjour |
| Adeus  | Adeus    | Au revoir|

Recursos Avançados de Markdown

Citações em bloco:

> Esta é uma informação importante que os usuários devem saber.

Traduza o conteúdo, mantenha o símbolo >:
> Esta é uma informação importante que os usuários devem saber.

Regras horizontais:

---
ou
***
ou
___

Mantenha inalterado (separador visual, sem texto).

HTML em Markdown:

<div class="warning">
  Tenha cuidado ao usar este recurso!
</div>

Mantenha as tags HTML, traduza o conteúdo:
<div class="warning">
  Tenha cuidado ao usar este recurso!
</div>

Notas de rodapé:

Aqui está uma referência de nota de rodapé[^1].

[^1]: Este é o conteúdo da nota de rodapé.

Traduza tanto o contexto da referência quanto o texto da nota de rodapé:
Aqui está uma referência de nota de rodapé[^1].

[^1]: Este é o conteúdo da nota de rodapé.

Fluxo de Trabalho de Tradução para Documentos Markdown

Opção 1: Arquivos Separados por Idioma (Recomendado)

Estrutura de diretórios:

docs/
├── pt/
│   ├── README.md
│   ├── instalacao.md
│   ├── referencia-api.md
│   └── resolucao-de-problemas.md
├── es/
│   ├── README.md
│   ├── instalacion.md
│   ├── referencia-api.md
│   └── solucion-de-problemas.md
├── fr/
│   ├── README.md
│   ├── installation.md
│   ├── reference-api.md
│   └── depannage.md
└── zh/
    ├── README.md
    ├── installation.md
    ├── api-reference.md
    └── troubleshooting.md

Prós: ✅ Separação limpa (sem idiomas misturados) ✅ Cada idioma pode ter estrutura de arquivos diferente se necessário ✅ Fácil ver quais arquivos foram traduzidos ✅ Ligação simples dentro do mesmo idioma

Contras: ❌ Mais difícil rastrear quais traduções estão desatualizadas ❌ Mais arquivos para gerenciar

Opção 2: Baseado em Sufixo (Alternativa)

Estrutura de diretórios:

docs/
├── README.md (Inglês padrão)
├── README.pt.md (Português)
├── README.es.md (Espanhol)
├── README.fr.md (Francês)
├── README.zh.md (Chinês)
├── instalacao.md
├── instalacao.pt.md
├── instalacao.es.md
├── instalacao.fr.md
└── instalacao.zh.md

Prós: ✅ Arquivos traduzidos ao lado da origem (mais fácil identificar traduções ausentes) ✅ Ordenado alfabeticamente pelo nome base

Contras: ❌ Fica bagunçado com muitos idiomas ❌ Mais difícil navegar em documentação específica de idioma

Veredito: Use diretórios separados para projetos com documentação abrangente.

Processo de Tradução Passo a Passo

Passo 1: Configure a Estrutura de Diretórios de Tradução

# Crie diretórios de idioma
mkdir -p docs/pt docs/es docs/fr docs/zh

# Copie a estrutura em inglês para o novo idioma
cp -r docs/en/* docs/pt/

# Agora traduza cada arquivo em docs/pt/

Passo 2: Crie Rastreamento de Tradução

translation-status.md:

# Status de Tradução

## Português (pt)

| Arquivo | Status | Última Atualização | Tradutor |
|---------|--------|--------------------|----------|
| README.md | ✅ Atual | 2025-01-25 | @tradutor1 |
| instalacao.md | ⚠️ Desatualizado | 2025-01-10 | @tradutor1 |
| referencia-api.md | ❌ Não iniciado | - | - |

## Espanhol (es)

| Arquivo | Status | Última Atualização | Tradutor |
|---------|--------|--------------------|----------|
| README.md | ✅ Atual | 2025-01-25 | @translator1 |
| instalacion.md | ⚠️ Desatualizado | 2025-01-10 | @translator1 |
| referencia-api.md | ❌ Não iniciado | - | - |

Ou use ferramentas automatizadas (cobridas depois).

Passo 3: Traduza com Preservação de Blocos de Código

Original (en/instalacao.md):

# Instalação

## Pré-requisitos

- Node.js 18+
- npm ou yarn

## Instalar via npm

Execute o seguinte comando no seu terminal:

```bash
npm install awesome-library

Verificar Instalação

Crie um arquivo de teste test.js:

const awesome = require('awesome-library');
console.log(awesome.version);

Execute-o:

node test.js

Você deve ver o número da versão impresso.


**Traduzido (pt/instalacao.md):**
```markdown
# Instalação

## Pré-requisitos

- Node.js 18+
- npm ou yarn

## Instalar via npm

Execute o seguinte comando no seu terminal:

```bash
npm install awesome-library

Verificar a Instalação

Crie um arquivo de teste test.js:

const awesome = require('awesome-library');
console.log(awesome.version);

Execute-o:

node test.js

Você deve ver o número da versão impresso.


**O que mudou:**
- Cabeçalhos traduzidos
- Prosa traduzida
- Blocos de código INALTERADOS (comandos bash, código JavaScript)
- Código inline INALTERADO (`test.js`, nomes de pacotes npm)
- Estrutura de arquivos mantida

**Passo 4: Atualize Links Internos**

**Inglês (en/README.md):**
```markdown
Consulte o [Guia de Instalação](./instalacao.md) para instruções de configuração.

Consulte a Referência da API para documentação detalhada.

Português (pt/README.md):

Consulte a [Guia de Instalação](./instalacao.md) para instruções de configuração.

Consulte a [Referência da API](./referencia-api.md) para documentação detalhada.

Crítico:

  • Texto do link traduzido
  • URL do link atualizada para nome de arquivo em português
  • Arquivos em português devem realmente existir!

Passo 5: Fazer commit no Git

git add docs/pt/
git commit -m "Adicionar tradução em português dos docs de instalação"
git push origin main

Lidando com Casos Especiais

1. Comentários de Código em Blocos de Código

Você deve traduzir comentários?

## Exemplo

```javascript
// Initialize the application
const app = createApp();

// Start the server on port 3000
app.listen(3000);

**Opção A: Manter comentários de código em inglês**
```javascript
// Initialize the application
const app = createApp();

// Start the server on port 3000
app.listen(3000);

Prós: Universal (desenvolvedores leem comentários em inglês) Contras: Menos acessível para iniciantes

Opção B: Traduzir comentários de código

// Inicializar a aplicação
const app = createApp();

// Iniciar o servidor na porta 3000
app.listen(3000);

Prós: Mais acessível para desenvolvedores não falantes de inglês Contras: Código não é mais copiável diretamente (mistura de idiomas)

Recomendação: Manter em inglês para exemplos de código de produção. Traduzir para conteúdo de tutorial/aprendizado onde compreensão > copiar e colar.

2. Nomes de Variáveis e Funções

Nunca traduzir no código:

// ERRADO - Não traduzir nomes de variáveis
function obterUsuario(idUsuario) {
  return database.buscar(idUsuario);
}

// CERTO - Manter código em inglês
function getUser(userId) {
  return database.find(userId);
}

Exceção: Pseudocódigo ou exemplos conceituais

Inglês:

if user is logged in: show dashboard else: redirect to login


Português (aceitável para pseudocódigo):

se usuário está conectado: mostrar painel senão: redirecionar para login


3. Exemplos de Linha de Comando

Traduzir descrições, não comandos:

Inglês:
## Generate a New Component

Use the CLI to create a component:

```bash
npx create-component MyComponent

This creates a new component in src/components/MyComponent/.

Português:

Gerar um Novo Componente

Use a CLI para criar um componente:

npx create-component MyComponent

Isso cria um novo componente em src/components/MyComponent/.


**Comandos permanecem em inglês, explicações são traduzidas.**

### 4. URLs de Endpoints de API

**Manter URLs inalteradas:**

```markdown
Inglês:
### Get User Profile

GET /api/v1/users/:id


Português:
### Obter Perfil de Usuário

GET /api/v1/users/:id


Não: `GET /api/v1/usuarios/:id` (quebraria a API!)

5. Variáveis de Ambiente e Configuração

Manter nomes de variáveis, traduzir descrições:

Inglês:
Set your API key:

```bash
export API_KEY=your_key_here

Português: Configure sua chave de API:

export API_KEY=sua_chave_aqui

API_KEY permanece em inglês (nome da variável de ambiente). your_key_heresua_chave_aqui (valor de exemplo, pode traduzir).


### 6. Badges e Shields

**Comum em arquivos README.md:**

```markdown
Inglês:
[![Build Status](https://travis-ci.org/user/repo.svg?branch=main)](https://travis-ci.org/user/repo)
[![npm version](https://badge.fury.io/js/awesome-lib.svg)](https://www.npmjs.com/package/awesome-lib)

Português: Manter badges como estão
(Eles são automáticos de serviços externos, agnósticos de idioma)

Ou se quiser badges com texto traduzido:
[![Estado da Construção](https://travis-ci.org/user/repo.svg?branch=main)](https://travis-ci.org/user/repo)

Geralmente: Manter badges em inglês (desenvolvedores esperam isso, status é universal).

Automação e Ferramentas

Sistemas de Gerenciamento de Tradução para Markdown

1. Crowdin

Recursos:

  • Integração com GitHub/GitLab
  • Suporte a arquivos Markdown
  • Preserva blocos de código automaticamente
  • Tradução comunitária (contribuidores traduzem via interface web)
  • Memória de tradução

Fluxo de trabalho:

1. Conectar Crowdin ao repositório GitHub
2. Crowdin detecta novos/arquivos alterados em docs/pt/
3. Tradutores traduzem via interface web do Crowdin
4. Crowdin envia pull request com traduções
5. Revisar e fazer merge

Preço: Grátis para open-source, $40/mês+ para comercial

2. Lokalise

Recursos:

  • Similar ao Crowdin
  • Melhor API para automação
  • Suporte a Markdown
  • Ferramenta CLI para sincronização

Fluxo de trabalho:

# Upload de arquivos fonte
lokalise2 file upload --lang-iso pt --file docs/pt/README.md

# Download de traduções
lokalise2 file download --lang-iso pt --dest docs/pt/

Preço: $120/mês+

3. Transifex

Recursos:

  • Amigável para open-source
  • Suporte a Markdown
  • Revisões de tradução
  • Verificações de qualidade

Preço: Grátis para open-source, $30/mês+ para comercial

Fluxos de Trabalho de Tradução Baseados em Git

Abordagem: Branches separadas para traduções

# Branch principal: Documentação em inglês
git checkout main

# Criar branch de tradução
git checkout -b translate/spanish

# Traduzir arquivos
# ...

# Commit
git add docs/es/
git commit -m "Adicionar tradução em espanhol"

# Push e criar PR
git push origin translate/spanish
# Abrir pull request no GitHub

Benefícios:

  • Tradutores trabalham de forma independente
  • Processo de revisão via PR
  • Rastrear traduções como features

Abordagem: Rastreamento de traduções com metadados do Git

en/installation.md:

<!--
Última atualização: 2025-01-25
Status da tradução:
- es: 2025-01-20 (desatualizado)
- fr: 2025-01-24 (atual)
- zh: não iniciado
-->

# Instalação
...

Script automatizado pode verificar esses comentários e sinalizar traduções desatualizadas.

Detecção Automatizada de Atualizações de Tradução

Script para detectar traduções desatualizadas:

import os
from datetime import datetime

def check_translation_status(base_dir="docs"):
    languages = ['en', 'es', 'fr', 'zh']
    base_lang = 'en'

    for lang in languages:
        if lang == base_lang:
            continue

        en_dir = os.path.join(base_dir, base_lang)
        lang_dir = os.path.join(base_dir, lang)

        for file in os.listdir(en_dir):
            if not file.endswith('.md'):
                continue

            en_file = os.path.join(en_dir, file)
            lang_file = os.path.join(lang_dir, file)

            if not os.path.exists(lang_file):
                print(f"⚠️ {lang}/{file} - Não traduzido")
                continue

            en_modified = os.path.getmtime(en_file)
            lang_modified = os.path.getmtime(lang_file)

            if en_modified > lang_modified:
                print(f"❌ {lang}/{file} - Desatualizado (EN atualizado após tradução)")
            else:
                print(f"✅ {lang}/{file} - Atual")

check_translation_status()

Executar como GitHub Action:

# .github/workflows/check-translations.yml
name: Verificar Status de Tradução

on:
  push:
    paths:
      - 'docs/**'

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Verificar traduções
        run: python scripts/check-translations.py
      - name: Comentar no PR
        if: github.event_name == 'pull_request'
        run: |
          python scripts/check-translations.py > translation-status.txt
          gh pr comment ${{ github.event.number }} --body-file translation-status.txt

Tradução de Markdown Assistida por IA

AI Trans para documentação markdown:

Recursos:

  • Preserva blocos de código automaticamente
  • Mantém a sintaxe markdown
  • Mantém links intactos
  • Rápido (traduza toda a documentação em minutos)

Fluxo de trabalho:

# Traduzir README.md do inglês para espanhol
ai-translator translate \
  --input docs/en/README.md \
  --output docs/es/README.md \
  --source en \
  --target es \
  --format markdown

# Traduzir todos os arquivos em lote
for file in docs/en/*.md; do
  filename=$(basename "$file")
  ai-translator translate \
    --input "$file" \
    --output "docs/es/$filename" \
    --source en \
    --target es \
    --format markdown
done

Preços: $10 por 1M caracteres (Standard) ou $50 por 10M caracteres (Business) Pacote Inicial Gratuito: 100.000 caracteres para teste Exemplos de custos típicos:

  • Documentação pequena (50K chars): $0.50
  • Documentação média (200K chars): $2
  • Documentação grande (1M chars): $10

Melhor prática: Traduzir com IA → revisão humana → commit

Construindo Sites de Documentação Multilíngue

Docusaurus (baseado em React)

Configuração:

npx create-docusaurus@latest my-docs classic
cd my-docs

Configuração i18n (docusaurus.config.js):

module.exports = {
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'es', 'fr', 'zh'],
    localeConfigs: {
      en: { label: 'English' },
      es: { label: 'Español' },
      fr: { label: 'Français' },
      zh: { label: '中文' }
    }
  },
  // ...
};

Estrutura de diretórios:

docs/
├── intro.md (padrão em inglês)
├── installation.md
i18n/
├── es/
│   └── docusaurus-plugin-content-docs/
│       └── current/
│           ├── intro.md (espanhol)
│           └── installation.md
├── fr/
│   └── docusaurus-plugin-content-docs/
│       └── current/
│           ├── intro.md (francês)
│           └── installation.md

Build:

# Build de todos os idiomas
npm run build

# Build de idioma específico
npm run build -- --locale es

Resultado: Alternador de idioma automático, site multilíngue otimizado para SEO.

VuePress (baseado em Vue)

Configuração i18n (.vuepress/config.js):

module.exports = {
  locales: {
    '/': {
      lang: 'en-US',
      title: 'My Documentation',
      description: 'Documentation for awesome library'
    },
    '/es/': {
      lang: 'es-ES',
      title: 'Mi Documentación',
      description: 'Documentación para awesome library'
    },
    '/fr/': {
      lang: 'fr-FR',
      title: 'Ma Documentation',
  description: 'Documentação para awesome library'
}

}, themeConfig: { locales: { '/': { selectText: 'Idiomas', label: 'Português', nav: [ { text: 'Guia', link: '/guide/' }, { text: 'API', link: '/api/' } ] }, '/es/': { selectText: 'Idiomas', label: 'Espanhol', nav: [ { text: 'Guia', link: '/es/guide/' }, { text: 'API', link: '/es/api/' } ] } } } };

Diretório:

docs/
├── README.md (Inglês)
├── guide/
│   └── installation.md
├── es/
│   ├── README.md (Espanhol)
│   └── guide/
│       └── installation.md
└── fr/
    ├── README.md (Francês)
    └── guide/
        └── installation.md

MkDocs (baseado em Python)

Instalar com plugin i18n:

pip install mkdocs mkdocs-static-i18n

mkdocs.yml:

plugins:
  - i18n:
      default_language: en
      languages:
        en: English
        es: Español
        fr: Français
      material_alternate: true

nav:
  - Home: index.md
  - Instalação: installation.md
  - Referência de API: api.md

Diretório:

docs/
├── index.md (Inglês padrão)
├── index.es.md (Espanhol)
├── index.fr.md (Francês)
├── installation.md
├── installation.es.md
├── installation.fr.md

Compilar:

mkdocs build

Resultado: Gera site/ com seletor de idioma.

Implantação no GitHub Pages

Implantar site multilíngue Docusaurus:

# .github/workflows/deploy.yml
name: Implantar Documentação

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Instalar dependências
        run: npm install
      - name: Compilar site
        run: npm run build
      - name: Implantar no GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build

Acesso:

Melhores Práticas e Armadilhas

Melhores Práticas

1. Comece pelas páginas de alto impacto

Priorize:
1. README.md (primeira coisa que os usuários veem)
2. Instalação/Primeiros Passos (bloqueador para adoção)
3. Referência de API (desenvolvedores precisam disso)
4. Guia de Contribuição (para contribuidores internacionais)

Pule inicialmente:
- Registros de mudanças (menos críticos)
- Documentos depreciados
- Notas internas de desenvolvedores

2. Mantenha um guia de estilo de tradução

# Guia de Estilo de Tradução - Português

## Terminologia
- "library" → "biblioteca" (não "livraria" que significa livraria)
- "framework" → manter como "framework" (amplamente compreendido)
- "deploy" → "implantar" (não "implementar")

## Tom
- Use formal "você" para docs técnicos
- Use informal "tu" para tutoriais/guias
- Seja conciso (Português é 20% mais longo que o Inglês em média)

## Código
- Nunca traduza blocos de código
- Mantenha termos técnicos em Inglês se amplamente usados

3. Versione suas traduções

README.md:
<!--
Translation: Português
Source version: v2.5.0
Translated: 2025-01-25
Translator: @username
-->

# Instalação
...

Isso ajuda a rastrear quando as traduções ficam desatualizadas.

4. Incentive contribuições da comunidade

## Contribuindo com Traduções

Bem-vindas as traduções! Para contribuir:

1. Faça fork deste repositório
2. Crie diretório `docs/[código-idioma]/`
3. Traduza arquivos de `docs/pt/`
4. Envie um pull request

Guia de tradução: [TRANSLATION.md](./TRANSLATION.md)

Armadilhas Comuns

Armadilha 1: Traduzir URLs e caminhos de arquivos

❌ ERRADO:
[Veja instalação](./instalacao.md)
# Arquivo não existe (tem caracteres acentuados)

✅ CERTO:
[Veja instalação](./instalacao.md)
# Arquivo: instalacao.md (sem acentos no nome do arquivo)

Armadilha 2: Quebrar links relativos

Inglês: docs/pt/guia.md linka para: ../assets/image.png
Português: docs/pt/guia.md deve linkar para: ../assets/image.png (mesmo caminho!)

Se tradutor português escrever: ./assets/image.png (quebrado!)

Armadilha 3: Esquecer texto alt de imagens

![](./screenshot.png)

Deveria ser:
![Screenshot do dashboard](./screenshot.png)

Português:
![Captura de tela do painel](./screenshot.png)

Texto alt é importante para acessibilidade!

Armadilha 4: Terminologia inconsistente

Página 1: "servidor" (server)
Página 3: "server" (mantido em Inglês)
Página 5: "servidor" novamente

Escolha um e mantenha! Use glossário.

Medindo o Sucesso

Métricas para Acompanhar

1. Uso da documentação por idioma

Google Analytics (site de documentação):
- Tráfego por idioma (pt, es, fr, etc.)
- Tempo na página (maior = melhor compreensão)
- Taxa de rejeição (menor para docs no idioma nativo)

Exemplo:
Docs em Inglês: 70% dos usuários
Docs em Português: 15% dos usuários (mas crescendo!)
Docs em Francês: 10% dos usuários
Outros: 5%

2. Insights do GitHub

GitHub Issues:
- Contar issues abertas em cada idioma
- Tempo de resposta para issues não em inglês

Pull Requests:
- Contribuições de países não falantes de inglês
- Após docs em espanhol: +40% contribuições de desenvolvedores da LATAM

Stars/Forks:
- Acompanhar crescimento após lançamentos de traduções

3. Crescimento da comunidade

Discord/Slack:
- Atividade em canais específicos de idioma
- Perguntas em idiomas nativos

Stack Overflow:
- Perguntas marcadas com sua biblioteca em diferentes idiomas

4. Downloads npm/PyPI por geografia

npm download stats por país:
Antes da tradução chinesa:
- China: 5% dos downloads

Após tradução chinesa:
- China: 22% dos downloads (crescimento de 4,4x!)

Custos e ROI

Investimento em Tradução

Biblioteca open-source pequena (5.000 palavras de docs):

Tradução profissional:

Tradução: 5.000 × $0,08 = $400 por idioma
Revisão: $100
Total por idioma: $500

3 idiomas (es, fr, zh): $1.500

Tradução assistida por IA:

Tradução IA (AI Trans): 5.000 palavras × 6 chars méd. = 30.000 chars = $0,30
Revisor técnico: 5 horas × $75 = $375
Total por idioma: $375,30

3 idiomas: $1.126 (economia de 25%)

Contribuída pela comunidade (grátis, mas mais lenta):

Configurar Crowdin: Grátis para open-source
Traduções: Grátis (voluntários da comunidade)
Tempo de revisão: Seu tempo (5-10 horas por idioma)

3 idiomas: $0 custo monetário, 15-30 horas de investimento de tempo

ROI para Projetos Open-Source

ROI nem sempre é monetário — é crescimento da comunidade:

Métricas antes das traduções espanhol/chinês:
- Downloads npm mensais: 50.000
- Stars no GitHub: 2.500
- Contribuidores: 40 (maioria EUA/Europa)

6 meses após traduções:
- Downloads npm mensais: 120.000 (crescimento de 140%)
- Stars no GitHub: 6.800 (crescimento de 172%)
- Contribuidores: 95 (55 novos da LATAM/Ásia)

Valor da comunidade: Inestimável
Custo: $1.500 para IA assistida + revisão

Ferramentas e Recursos

Ferramentas de Tradução

AI Trans

  • Preserva formatação markdown automaticamente
  • Mantém blocos de código intactos (nunca traduz código)
  • Mantém estrutura de links
  • $10 por 1M caracteres (Standard) ou $50 por 10M caracteres (Business)
  • Pacote inicial grátis de 100K caracteres
  • 57 idiomas suportados

DeepL API

  • Alta qualidade para idiomas europeus
  • Suporte a markdown com pré-processamento
  • $25 por milhão de caracteres + assinatura $5,49/mês

Google Cloud Translation

  • 133 idiomas
  • Bom para ampla cobertura de idiomas
  • $20 por milhão de caracteres
  • Sem conscientização de markdown (requer pré-processamento)

Lint e Validação de Markdown

markdownlint

  • Valida sintaxe markdown
  • Garante formatação consistente
  • CLI e plugins para editores
npm install -g markdownlint-cli
markdownlint docs/es/*.md

markdown-link-check

  • Valida todos os links em arquivos markdown
  • Detecta links relativos quebrados
npm install -g markdown-link-check
markdown-link-check docs/es/README.md

Construtores de Sites de Documentação

Docusaurus (React)

  • Melhor para: Desenvolvedores React, docs SPA modernas
  • i18n integrado
  • Grátis

VuePress (Vue.js)

  • Melhor para: Desenvolvedores Vue
  • Configuração simples
  • Grátis

MkDocs (Python)

  • Melhor para: Projetos Python
  • Configuração mínima
  • Grátis

GitBook

  • Melhor para: Não-desenvolvedores (editor GUI)
  • Solução hospedada
  • Grátis para open-source

Conclusão

Traduzir documentação markdown é uma das contribuições de maior impacto que você pode fazer para a construção de comunidades globais de desenvolvedores. Ao tornar seu projeto acessível em múltiplos idiomas, você libera adoção de bilhões de desenvolvedores não falantes de inglês e fomenta colaboração diversa e internacional.

Principais lições:

  • Preserve blocos de código, sintaxe markdown e estrutura de links
  • Use diretórios separados por idioma para organização limpa
  • Automatize sincronização de traduções com fluxos Git
  • Use tradução IA + revisão humana para qualidade custo-efetiva
  • Construa sites multilíngues com Docusaurus, VuePress ou MkDocs
  • Acompanhe traduções com metadados e verificações automáticas
  • Incentive contribuições da comunidade para tradução sustentável

Ferramentas de IA modernas como AI Trans podem reduzir custos de tradução em 70-90% enquanto preservam todos os elementos markdown críticos como blocos de código, links e formatação. O fluxo de trabalho ideal: IA traduz documentação inicial (minutos, não semanas), revisores técnicos garantem precisão e consistência, depois a comunidade ajuda a manter atualizações.

Custo Típico de Tradução de Documentação:

  • Projeto pequeno (50K chars): $0,50 com AI Trans vs. $400 tradução humana
  • Projeto médio (200K chars): $2 com AI Trans vs. $1.600 tradução humana
  • Projeto grande (1M chars): $10 com AI Trans vs. $8.000 tradução humana

Economia de tempo: 95%+ (minutos vs. semanas)

Seja mantendo uma pequena biblioteca de utilitários ou um grande framework open-source, documentação traduzida remove barreiras linguísticas e acolhe desenvolvedores do mundo todo ao seu projeto.

Pronto para traduzir sua documentação? Comece a traduzir seus docs em markdown com o mecanismo de tradução preservador de código da AI Trans e alcance desenvolvedores globais.