Traduções da interface
Lê, grava e apaga os textos da interface (chaves de tradução) de um idioma da loja.
Os textos da interface (botões, menus, mensagens) vivem em chaves com pontos, como cart.checkout. A plataforma traz um pacote padrão em inglês, e cada loja guarda por cima dele as suas próprias linhas por idioma. Estas rotas editam essas linhas. Exigem o privilégio manage_settings e um idioma já registrado na loja (senão, 404).
Ler traduções
/api/v1/admin/languages/{code}/translationsAdminLê as traduções de um idioma, inteiras ou paginadas
A rota tem dois modos. Sem page nem per_page, devolve só o mapa das linhas que a loja gravou (pode ser pequeno). Com page ou per_page, devolve as linhas do editor: a união das linhas da loja com todas as chaves do pacote em inglês (dezenas de milhares), já paginadas e com a comparação lado a lado.
Parâmetros de caminho
codestringobrigatórioParâmetros de consulta
pageintegerpadrão: 1per_page liga o modo paginado.per_pageintegerpadrão: 100searchstringmissingstring1trueproblemsstring1trueExemplo de requisição
curl "$BASE_URL/api/v1/admin/languages/es/translations?page=1&per_page=50&missing=1" \
-H "Authorization: Bearer $TOKEN"{
"items": [
{
"key": "account.addresses.cancelEdit",
"value": "Cancelar edición",
"en": "Cancel Edit",
"bundled": "Cancelar edición"
},
{
"key": "cart.empty",
"value": "Your cart is empty",
"en": "Your cart is empty",
"bundled": "Su carrito está vacío",
"problemas": ["igual_ao_ingles"]
}
],
"total": 47040,
"page": 1,
"per_page": 50,
"key_count": 47040,
"filled": 47038,
"faltando": 2,
"com_problema": 1
}Campos da resposta (modo paginado)
items[].keystringitems[].valuestringitems[].enstringitems[].bundledstringitems[].problemasarrayigual_ao_ingles, vazio, placeholder_faltando ou placeholder_sobrando ({{x}} presente no inglês e ausente na tradução, ou o contrário). Ausente quando não há defeito.totalintegerpageintegerper_pageintegerkey_countintegerfilledintegerfaltandointegercom_problemainteger{
"translations": {
"cart.checkout": "Finalizar compra",
"cart.empty": "Seu carrinho está vazio"
}
}Gravar traduções
/api/v1/admin/languages/{code}/translationsAdminGrava várias traduções de uma vez
Cria ou substitui (upsert) as linhas enviadas. Chaves que você não enviar permanecem como estão. Um mapa vazio não faz nada e devolve updated: 0.
Parâmetros de caminho
codestringobrigatórioCorpo da requisição
translationsobjectobrigatório{ "updated": 1 }Campos da resposta
updatedintegerApagar uma tradução
/api/v1/admin/languages/{code}/translations/{key}AdminApaga a tradução gravada de uma chave
Remove a linha da loja para a chave. A vitrine volta a usar o texto do pacote do idioma. É idempotente: apagar uma chave que a loja nunca gravou também retorna 204.
Parâmetros de caminho
codestringobrigatóriokeystringobrigatóriocart.checkout.A resposta é 204 No Content.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido (gravar) | {"error":"invalid request body","detail":"..."} |
| 401 | Sem token ou token expirado | {"error":"missing authorization header"} |
| 403 | Sem o privilégio manage_settings | {"error":"insufficient privileges","required":"manage_settings"} |
| 404 | Idioma sem registro na loja | {"error":"language not found"} |
| 500 | Falha interna ao ler ou gravar | {"error":"failed to upsert translations","detail":"..."} |