Guias
Studio
Os seus catálogos JSON são o banco de dados e o git é o histórico. O Studio é uma janela para eles, e é por isso que não pode se desalinhar do seu código: não é dono de nada.
O que você leva
Abre por aquilo que precisa de você. A primeira tela lista o que está à espera, uma linha para cada coisa: traduções que quebram o seu site, mensagens vazias, rascunhos de máquina que ninguém leu, chaves que o seu código chama e nenhum catálogo define, e chaves que só uma tradução tem. As três primeiras abrem a tabela exatamente nessas mensagens; as duas últimas não têm linha para abrir, então nomeiam as suas chaves. Ao lado te diz quantas verificações do doctor passam, e os últimos commits que tocaram na sua pasta de catálogos. Essa ficha precisa de um repositório git; sem ele, simplesmente não está lá.
A caixa de procura lê o seu texto, nunca a chave. Procura em todos os seus idiomas, não só nos que você marcou, e cada resultado diz em qual coincidiu. Command K abre a caixa, as setas movem e enter te leva a essa mensagem na tabela.
A primeira parte de uma chave é o seu grupo: nav.home é de nav. A barra lista cada grupo com quantas mensagens tem e quantas continuam pendentes, e escolher um estreita a tabela. Uma chave sem ponto não tem grupo, e o Verbaly não o inventa.
A tabela tem todas as mensagens do seu projeto, em tantos idiomas quantos você marcar. Cada uma mostra o seu estado: pronta, por traduzir, escrita por uma máquina e por ler, ou quebrada. Você corrige na própria linha, e a verificação roda enquanto você escreve.
Dois comandos rodam a partir da página. Procurar texto novo lê o seu código e acrescenta o que os seus catálogos não têm. Traduzir o que falta chama o seu provedor: mostra quantas mensagens e em que idiomas antes de se gastar alguma coisa, o que volta fica em rascunho até você ler, e uma mensagem que você salvar enquanto ele roda mantém o seu texto.
Cada linha tem o seu menu. Copie a chave, copie o texto original, comece a editar sem sair da tabela, veja os arquivos que usam essa mensagem, e veja o commit que a mudou pela última vez.
O commit vem do histórico dos seus catálogos, comparando o que cada mensagem dizia e não a linha em que ela estava. Adicionar uma chave reescreve a vírgula da linha de cima, então perguntar ao git quem tocou numa linha nomeia o commit errado vezes demais. Quando não há resposta, o menu diz de que tipo ela é: uma mensagem que você ainda não commitou, uma mais velha que o histórico que ele leu, ou um projeto sem git dentro.
Execute-o
pnpm add -D @verbaly/studioImprime o endereço que serve, o projeto que leu e o que há lá dentro. O endereço leva uma chave, nova em cada arranque, por isso mais nada na sua máquina lhe chega adivinhando a porta.
O comando
| Flag | O que faz |
|---|---|
--root <path> | Aponta para outro projeto em vez da pasta onde você está |
--port <n> | Inicia em outra porta que não a 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 a tela vai ler, por isso você pode passá-lo por um pipe, compará-lo e colocá-lo num script |
Nunca mexe no seu texto de origem
O seu texto de origem vive no seu código, e a chave sai desse texto. Escrever por cima aqui seria desfeito pelo seu próximo extract, por isso o Studio recusa. Também recusa uma chave que o seu catálogo de origem não tenha: aceitá-la inventaria uma mensagem que nenhuma linha do seu código pede.
Uma tradução que você salva passa pelas mesmas duas verificações do seu build. Um {name} perdido, uma etiqueta perdida ou um plural sem o seu caso geral é recusado, com o motivo. Salvar também é aceitar: assim que uma pessoa a escreve, deixa de contar como rascunho de máquina.
O seu arquivo mantém a ordem que você deu a ele. Salvar reescreve a linha que mudou, nunca o catálogo inteiro. Um grupo que você ordenou à mão continua nessa ordem e uma chave nova cai no fim; um grupo que já ia alfabético continua se ordenando. O diff que você revisa é a edição que você fez.
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 suas definições, cada catálogo, onde cada mensagem é usada, a cobertura, o que o verbaly check 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 |
GET /api/commit/:key | O commit que mudou essa mensagem pela última vez, ou qual dos três motivos faz com que não exista nenhum |
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 seu código e acrescenta o que os seus catálogos não têm. Responde dentro da própria requisição, porque é local e não custa nada |
GET /api/translate | O orçamento: quantas mensagens e de que idiomas, sem chamar o seu provedor. Olhar para o custo não pode começar o gasto, e por isso tem o seu próprio endereço |
POST /api/translate | Inicia a tiragem e te devolve um trabalho. Um de cada vez, porque duas tiragens sobre os mesmos catálogos são uma corrida pelos mesmos arquivos |
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 você não pode voltar a perguntar é um stream com passos a mais |
O estado chega de uma peça, não por páginas. Até um catálogo de vários milhares de mensagens em três idiomas responde numa fração de segundo na sua própria máquina.
Nada do que lê o consegue derrubar
Um catálogo que não consegue ler, um arquivo de rascunhos que não consegue ler, um arquivo de origem que não compila, uma pasta sem catálogos lá dentro: cada um é reportado pelo nome, e tudo o resto carrega mesmo assim. O Studio é o que você abre para corrigir esses arquivos, por isso tem de abrir.
Que traduções automáticas ler primeiro
Acrescentar um idioma escreve centenas de rascunhos de uma vez. Lê-los um a um é como as pessoas acabam pulando a revisão inteira, por isso o Studio ordena-os em vez de os pôr em fila. O seu build já pegou a estrutura; o que resta é o significado. Estes sinais não pontuam uma tradução, apontam as poucas que merecem os seus olhos.
Marque um só idioma e a tabela passa a ser esse idioma. Uma barra por cima diz quantas mensagens tem, que já estão no seu site e que a verificação do seu build passa. Três chips repartem-nas em tudo, merece uma olhada e nada estranho. Cada linha assinalada leva o seu motivo ao lado: que link mudou, que número se moveu. Marque um segundo idioma e volta a tabela comparativa, porque um motivo é de um idioma e não de uma linha.
| 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 |
Os sinais foram afinados contra traduções reais, não inventados a uma secretária. Dois caíram, porque tudo o que assinalavam era afinal texto correto. O que resta é uma lista curta, não uma fila.
Escreve arquivos, por isso defende-se
Qualquer página aberta no seu navegador pode falar com um servidor da sua máquina, por isso vão três defesas postas e não se podem tirar.
- Escuta só na sua própria máquina, nunca na rede.
- Recusa uma requisição que diz vir de outro lugar, que é o que impede que um site aponte o seu próprio nome para a sua máquina.
- A chave que cria ao iniciar é comparada inteira, por isso não se pode adivinhar caractere por caractere.
As requisições têm limite, e o caminho completo do seu projeto é retirado de cada erro antes de o navegador o ver.