Qual a melhor forma de buscar (e escrever) programaticamente strings de texto personalizadas para traduções?

Usei a interface de administração web para alterar várias strings do Discourse. Por conveniência[1], ignorei as versões em outros idiomas. Isso significa, é claro, que elas estão dessincronizadas.

No Fedora, usamos o Weblate para traduções impulsionadas pela comunidade. (Veja https://translate.fedoraproject.org/). Eu adoraria conectar isso, idealmente para que haja um fluxo de trabalho totalmente automático onde, quando uma string é atualizada em inglês pela interface de administração, ela é enviada para o Weblate e, quando há uma tradução, ela retorna.

Qual é a melhor maneira de realizar isso?


  1. preguiça. ↩︎

2 curtidas

Implementando uma integração usando nossa API onde você:

  • Consultaria o Discourse para novas substituições (sem webhooks)
  • Enviaria novas traduções do Weblate para o seu site Discourse.

Essa é a descrição preliminar. Estamos analisando a quantificação das limitações existentes, pois nossa API atual retorna apenas uma quantidade fixa de substituições de tradução. O que significa que precisaríamos fazer alterações nesse endpoint da API para que funcione.

1 curtida

A pesquisa parece boa — a tradução não será instantânea de qualquer maneira. Mas o negócio de pesquisa precisa manter o controle de alguma forma? É bom quando pode ser sem estado…

2 curtidas

Não há necessidade de rastrear nada em seu site. Você deve ser capaz de implementá-lo sem estado.

  • Para polling, você precisa enviar uma solicitação GET para o seguinte caminho em seu site:
    /admin/customize/site_texts.json?locale=en&overridden=true&page=0

Ajuste o parâmetro locale às suas necessidades. A API retorna até 50 resultados e suporta paginação (parâmetro page).
O JSON incluirá { "extras" : { "has_more" : true } } quando houver mais resultados.

  • Atualizar uma substituição de tradução funciona enviando uma solicitação PUT para o seguinte caminho:
    /admin/customize/site_texts/<id>

Substitua <id> pelo ID da string que você deseja traduzir, por exemplo, “js.user.username.instructions”.

A carga útil da solicitação PUT deve ser dados de formulário (Content-Type: application/x-www-form-urlencoded; charset=UTF-8) e deve incluir os seguintes atributos:

  • site_text[value]: a tradução
  • site_text[locale]: o locale, por exemplo, “en”

Essencialmente, você precisa usar as mesmas chamadas de API que a interface de administração Customize Text usa.

4 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.