Documentação da API para integração das traduções no TranslatePress (TP Sync API)
Esta API fornece dois endpoints para trabalhar com strings de tradução no plugin TranslatePress. O idioma básico é o inglês (inglês americanoTodas as requisições exigem autenticação via Bearer-token (obtido no painel de administração do WordPress, no menu "TP Sync").
URL base: https://your-site.com/wp-json/tp-sync/v1/
1. Obtenção de strings para tradução (GET /keys)
Este endpoint retorna uma lista de strings do dicionário TranslatePress para o idioma especificado. Cada string inclui um ID (no formato, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]") dicionário:{id}Texto original em inglês, tradução atual, status e metadados de paginação. Ordenação por ID DESC (os mais recentes no topo). Datas, Criado em e Atualizado em sempre null não são consultados no SQL).
Parâmetros de solicitação
| Parâmetro | Tipo | Obrigatório | Descrição | Valor padrão |
|---|---|---|---|---|
idioma |
cadeia de caracteres | Sim | Código do idioma (por exemplo, de para o alemão,, fr para o francês). Os códigos curtos são normalizados (de → de_de). |
— |
página |
número inteiro | Não | Número da página para paginação. | 1 |
Limite |
número inteiro | Não | Número de linhas por página (mínimo 1, máximo 500). | 100 |
Atualizado desde |
cadeia de caracteres | Não | Filtro por data de atualização (ISO8601, por exemplo, 2025-10-01T00:00:00Zinput=). Retorna apenas as linhas atualizadas após esta data. |
— |
Títulos
Autorização: Bearer {токен}(obrigatório)
Exemplo de solicitação (cURL)
curl -X GET "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=1&limit=50&updated_since=2025-10-01T00:00:00Z" \
-H "Authorization: Bearer your-api-token-here"
Exemplo de resposta (JSON)
{
"keys": [
{
"key_id": "dictionary:123",
"original": "Hello World",
"translated": "Olá Mundo",
"status": 2,
"created_at": null,
"updated_at": null
},
{
"key_id": "dictionary:124",
"original": "Welcome",
"translated": "Bem-vindo",
"status": 0,
"created_at": null,
"updated_at": null
}
],
"meta": {
"total_count": 150,
"page": 1,
"limit": 50,
"page_count": 3,
"next_page": "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=2&limit=50&updated_since=2025-10-01T00:00:00Z"
}
}
Descrição dos campos na resposta
| Campo | Tipo | Descrição |
|---|---|---|
ID da chave |
cadeia de caracteres | ID único da linha: dicionário:{id} id — o número do registro na tabela wp_trp_dictionary_en_us_{lang}). |
original |
cadeia de caracteres | Texto original em inglês. |
traduzido |
cadeia de caracteres | Tradução atual para o idioma especificado (pode estar vazia). |
status |
número inteiro | Status: 0 — não traduzido, 1 — em processo, 2 — traduzido. |
Criado em |
cadeia de caracteres | Data de criação (ISO8601, null — не запрашивается). |
Atualizado em |
cadeia de caracteres | Data da última atualização (ISO8601) null — не запрашивается). |
Metadados (meta)
Contagem totalNúmero total de linhas (incluindo filtros).páginaPágina atual.LimiteLimite por página.Número de páginasNúmero total de páginas.próxima páginaURL da próxima página (null, se for o último).
Erros
- 401: Cabeçalho Authorization ausente ou inválido.
- 403: Token inválido.
- 404: Idioma não encontrado no TranslatePress (tabela ausente).
Atualização de traduções (POST /translations)
Este endpoint atualiza traduções para várias strings de uma só vez (batch). É passado um array de objetos contendo o ID da string, o idioma e a nova tradução. Atualiza o status para "traduzido" (2) e o campo, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]" Atualizado em.
Corpo da requisição (JSON)
Array traduções com objetos:
[
{
"key_id": "dictionary:123",
"translation": "Olá Mundo"
},
{
"key_id": "dictionary:124",
"translation": "Bem-vindo"
}
]
Parâmetros
| Campo no objeto | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ID da chave |
cadeia de caracteres | Sim | ID da linha: dicionário:{id} de GET /keys). |
language_iso |
cadeia de caracteres | Sim | Código de idioma (de → de_de, normalizado automaticamente). |
tradução |
cadeia de caracteres | Sim | Novo texto de tradução (permanece inalterado). |
Títulos
Autorização: Bearer {токен}(obrigatório)Content-Type: application/json(obrigatório)
Exemplo de solicitação (cURL)
curl -X POST "https://your-site.com/wp-json/tp-sync/v1/translations" \
-H "Authorization: Bearer your-api-token-here" \
-H "Content-Type: application/json" \
-d '{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt"
}
]
}'
Exemplo de resposta (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Olá Mundo",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "Chave não encontrada no banco de dados"
}
]
}
Descrição dos campos na resposta
traduçõesArray de traduções atualizadas com sucesso (retorna os dados de entradaModificado emem ISO8601).,erros(opcional, se houver falhas): Array de errosíndiceÍndice do elemento no array original.ID da chaveID da linha problemática (se aplicável).erroMensagem de erro (exemplos: "Missing required fields", "Invalid key_id format. Expected: dictionary:{id}", "Language not found", "Key not found in database", "Database update failed").
Erros
- 400: Dados inválidos (vazio/não é um array)
traduções, ausência de campos). - 401/403: Problemas com a autorização.
- 404: Idioma ou chave não encontrada (tabela/registro ausente).
Idiomas suportados
Códigos curtos são normalizados automaticamente (com base no mapeamento no código). Para desconhecidos: entrada={code}_{code} por exemplo, pl → pl_pl).
- en → en_us
- ar → ar
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- it → it_it
- ja
- pt → pt_pt
- zh → zh_cn
- es → es_es
Obtenção do token
- No painel do WordPress: Menu TP Sync → Botão "Generate New Token" (token de 32 caracteres, gerado automaticamente na primeira execução).
- O token está armazenado na opção
tp_sync_api_token.