Documentação Universally

Guias passo a passo, dicas de SEO multilíngue e melhores práticas para ajudar você a traduzir e escalar seu site WordPress.

Atualizações de tradução no Astro

Uma nova string é traduzida em segundo plano após a primeira página que a utiliza, e uma edição no painel chega ao seu servidor em execução por um push assinado ou por uma verificação a cada 60 segundos por idioma. Um site estático capta ambos apenas quando você reconstrói.

Novas strings

  1. Uma página chama t() com texto que não tem tradução. O visitante recebe o texto original.
  2. Após a resposta, a integração relata as strings perdidas para o Universally em lotes de 500. Em runtimes que oferecem waitUntil, o relatório é concluído após o envio da resposta.
  3. O Universally retorna as traduções que já possui e traduz o restante em segundo plano.
  4. As novas traduções chegam ao seu servidor em um relatório posterior (uma string perdida é relatada novamente na próxima renderização) ou quando esse idioma é recarregado.

Na prática, uma nova string é traduzida um ou dois segundos após sua primeira renderização. Relatórios não são enviados durante as builds.

Edições no painel

Traduções automáticas não alteram a época de cache de um idioma. Edições no painel alteram, e dois mecanismos as levam ao seu servidor.

Push. O Universally envia um POST assinado para https://{seu domínio do projeto}/_universally/revalidate quando você:

  • edita uma string, a verifica ou desverifica, ou a exclui
  • restaura uma revisão ou retaduz
  • verifica ou exclui em massa
  • exclui uma string de origem
  • limpa o cache

A integração responde à solicitação antes do roteamento do Astro, então você não adiciona nenhuma página ou rota. O push expira após 3 segundos e as falhas são apenas registradas, portanto, para edições instantâneas, o endpoint precisa ser acessível pela internet. Pushes são enviados apenas no modo SDK.

Polling. Após uma resposta localizada, a integração verifica se a época de cache de um idioma mudou, no máximo uma vez a cada revalidateSeconds (60 por padrão) por idioma. A verificação solicita uma única linha. Em caso de alteração, ela recarrega esse idioma e registra universally: reloaded N translations for X at cache epoch E. Definir revalidateSeconds como 0 desativa o polling, e o servidor mantém suas traduções até que um push chegue ou ele reinicie. Veja Opções de integração do Astro.

Edições que você faz na tela Traduções viajam desta forma. Veja Editar traduções manualmente.

Quando as traduções carregam

Evento O que carrega
Início do servidor de desenvolvimento Catálogo de cada idioma
Início da build Catálogo de cada idioma
Primeira solicitação localizada em um servidor que não executou nenhuma das anteriores (por exemplo, o servidor Node compilado) Catálogo de cada idioma. Essa solicitação espera por ele.
Push ou época de cache alterada Os idiomas que mudaram

Se um idioma falhar ao carregar, o log mostrará universally: could not preload .... Esse idioma não é retentado ou consultado até que o processo seja reiniciado, então corrija a causa e reinicie.

Idiomas

A lista de idiomas é lida uma vez, quando sua configuração do Astro é executada. Adicionar um idioma ou ativar o switch Ativo dele não envia nenhum push, então reinicie o servidor de desenvolvimento ou reconstrua antes que o novo prefixo funcione.

Sites estáticos

Uma build estática não tem código de servidor após a build: sem polling e sem endpoint de push. Edições do painel aparecem somente após você reconstruir e reimplantar. A própria build envia tudo o que perdeu em uma chamada bloqueante, então imprime N novas strings traduzidas. Reconstrua para incluí-las., então uma segunda build coloca essas strings no HTML.

Várias instâncias de servidor

Cada instância mantém seu próprio catálogo em memória. Um push atinge a instância que o atende, e as outras se atualizam consultando. Mantenha revalidateSeconds em um atraso que você esteja feliz em esperar.

Quando o limite de palavras é atingido

Uma vez que as palavras pré-pagas do projeto são usadas, Universally retorna apenas strings que já possui. A integração registra universally: word limit reached, {variant} keeps serving source text uma vez por idioma. Strings traduzidas continuam sendo exibidas. Após adicionar palavras, strings ausentes são relatadas novamente em sua próxima renderização. Veja Limites de uso.

Isso foi útil?