Guias
Studio
Os teus catálogos JSON são a base de dados e o git é o histórico. O Studio é uma janela para eles, e é por isso que não pode desalinhar-se do teu código: não é dono de nada.
O que levas
Uma página com todas as mensagens do teu projeto, nos idiomas que marcares, e o estado de cada uma: pronta, em falta, escrita por uma máquina e ninguém a leu, ou parte o teu site. Corriges uma na própria linha onde vive, e a validação corre enquanto escreves.
Da página correm dois comandos. Procurar texto novo lê o teu código e acrescenta o que os teus catálogos não têm. Traduzir o que falta chama o teu fornecedor, por isso mostra-te quantas mensagens e de que idiomas antes de gastar nada, e o que volta fica em rascunho até o teres lido.
Arranca-o
pnpm add -D @verbaly/studioImprime o endereço que está a servir, o projeto que leu e o que há lá dentro. O endereço leva uma chave cunhada de novo sempre que arranca, por isso mais nada na tua máquina lhe consegue falar adivinhando a porta.
O comando
| Flag | O que faz |
|---|---|
--root <path> | Aponta para outro projeto em vez da pasta onde estás |
--port <n> | Arranca noutro sítio que não 4747; uma porta ocupada sobe para a seguinte livre |
--json | Imprime o estado inteiro e sai, sem servidor. É o painel sem o painel: o mesmo objeto que o ecrã vai ler, por isso podes passá-lo por um pipe, compará-lo e metê-lo num script |
Nunca mexe no teu texto de origem
O teu texto de origem vive no teu código e a key vem dele, por isso escrever por cima aqui seria desfeito da próxima vez que extraíres. Gravar no teu idioma de origem é recusado, e uma key que o teu catálogo de origem não tem também, porque aceitá-la inventaria uma mensagem que nenhuma linha do teu código pede.
Uma tradução que gravas passa as mesmas duas verificações que o verbaly check faz no teu build, por isso um {name} perdido, uma etiqueta perdida ou um plural sem o caso geral é recusado com o motivo. Gravar também é aceitar: uma tradução escrita por uma pessoa deixa de contar como rascunho de máquina no mesmo gesto.
Os endereços
Todos chamam a mesma função que o CLI chama, por isso não há uma segunda implementação para manter a par. Todos respondem JSON, erros incluídos.
| Endereço | O que te dá |
|---|---|
GET /api/state | O projeto inteiro numa só resposta: as tuas definições, cada catálogo, onde cada mensagem é usada, a cobertura, o que o gate do build diz, os rascunhos de máquina, a triagem e tudo o que não conseguiu ler |
GET /api/health | O mesmo diagnóstico que o verbaly doctor imprime |
PUT /api/message/:locale/:key | Escreve uma tradução e deixa de a contar como rascunho |
POST /api/approve | Aceita rascunhos de máquina: uma lista de keys, ou o idioma inteiro de uma vez |
POST /api/extract | Lê o teu código e acrescenta o que os teus catálogos não têm. Responde dentro do próprio pedido, porque é local e não custa nada |
GET /api/translate | O orçamento: quantas mensagens e de que idiomas, sem chamar o teu fornecedor. Olhar para o custo não pode começar o gasto, e por isso é a sua própria morada |
POST /api/translate | Arranca a tiragem e devolve-te um trabalho. Um de cada vez, porque duas tiragens sobre os mesmos catálogos são uma corrida pelos mesmos ficheiros |
GET /api/job/:id | Como vai essa tiragem, para perguntar uma vez por segundo |
GET /api/job | A tiragem em curso, ou nada. Uma página recarregada perdeu o id, e um trabalho ao qual não podes voltar a perguntar é um stream com passos a mais |
O estado vem numa peça de propósito. O maior projeto que conhecemos são 1587 mensagens em três idiomas, e na tua própria máquina isso responde em menos de um terço de segundo.
Nada do que lê o consegue derrubar
Um catálogo que não consegue ler, um ficheiro de rascunhos que não consegue ler, um ficheiro de código que não compila, ou uma pasta sem catálogos lá dentro são avisados pelo nome, ao lado do resto do estado, e tudo o resto carrega na mesma. Isto não é cortesia: o Studio é o que abres para corrigir esses ficheiros, por isso recusar-se a abrir seria exatamente o que o torna inútil.
Que traduções automáticas ler primeiro
Acrescentar um idioma escreve centenas de rascunhos de uma vez, e lê-los um a um é um muro. Os muros são como uma salvaguarda se transforma em algo que as pessoas contornam, por isso o Studio ordena em vez de fazer fila. O gate do build já apanhou a estrutura, por isso o que sobra é o sentido, que nada consegue medir. Estes sinais não pontuam uma tradução, apontam as poucas que merecem os teus olhos.
| Sinal | O que significa |
|---|---|
divergent | Um idioma que já revistes escreveu este mesmo texto de origem de duas formas diferentes, por isso a própria origem é ambígua |
collision | A mesma dúvida vista no resultado, quando nenhum idioma revisto a consegue resolver |
echo | Continua palavra por palavra igual à origem, enquanto todos os idiomas com opinião a traduziram |
digits | Um número que a origem tem voltou alterado, ignorando a vírgula ou o ponto que cada idioma escreve de forma diferente |
url | Um link mudou |
code | O que está dentro de um span de código mudou |
Cada sinal foi medido contra este site antes de sair, e dois mudaram por causa do que a medição disse. Sobre 1479 mensagens reais, o digits lia a vírgula a seguir a um número como parte dele, e assinalava um número que a tradução acrescentava onde a origem não tinha nenhum, que é o que acontece quando "survives a refresh" passa a "sobrevive ao F5". Era absolutamente tudo o que assinalava, e era tudo texto correto. As duas coisas saíram. O resultado são 18 mensagens em 1479 assinaladas por idioma.
Escreve ficheiros, por isso defende-se
Qualquer página aberta no teu browser consegue falar com um servidor a correr na tua máquina, por isso há três defesas ligadas que não se desligam: só escuta na tua própria máquina e nunca na rede; recusa um pedido que diz vir de outro sítio, que é o que impede um site de apontar o próprio nome à tua máquina; e a chave que cunha ao arrancar é comparada de uma forma que não se consegue adivinhar carácter a carácter. Os pedidos têm limite, e o caminho completo do teu projeto é retirado de cada erro antes de o browser o ver.