Quelle est la meilleure façon de récupérer (et d'écrire) par programme des chaînes de texte personnalisées pour les traductions ?

J’ai utilisé l’interface d’administration web pour modifier un certain nombre de chaînes Discourse. Par souci de commodité[1], j’ai ignoré les versions non anglaises. Cela signifie, bien sûr, qu’elles ne sont pas synchronisées.

Dans Fedora, nous utilisons Weblate pour les traductions communautaires. (Voir https://translate.fedoraproject.org/). J’aimerais connecter cela, idéalement pour qu’il y ait un flux de travail entièrement automatique où, lorsqu’une chaîne est mise à jour en anglais via l’interface d’administration, elle est envoyée à Weblate, et lorsqu’il y a une traduction, elle revient.

Quelle est la meilleure façon d’y parvenir ?


  1. paresse. ↩︎

2 « J'aime »

Implémenter une intégration à l’aide de notre API où vous :

  • Interrogeriez Discourse pour de nouvelles substitutions (pas de webhooks)
  • Pousseriez de nouvelles traductions de Weblate vers votre site Discourse.

C’est le résumé préliminaire. Nous examinons comment quantifier les limitations existantes, car notre API actuelle ne renvoie qu’une quantité fixe de substitutions de traduction. Ce qui signifie que nous devrions apporter des modifications à ce point de terminaison de l’API pour qu’il fonctionne.

1 « J'aime »

Le sondage semble correct — la traduction ne sera pas instantanée de toute façon. Mais est-ce que le truc de sondage doit garder une trace d’une manière ou d’une autre ? C’est bien quand il peut être sans état…

2 « J'aime »

Il n’est pas nécessaire de conserver quoi que ce soit sur votre site. Vous devriez être en mesure de l’implémenter sans état.

  • Pour l’interrogation, vous devez envoyer une requête GET au chemin suivant sur votre site :
    /admin/customize/site_texts.json?locale=en&overridden=true&page=0

Ajustez le paramètre locale selon vos besoins. L’API renvoie jusqu’à 50 résultats et prend en charge la pagination (paramètre page).
Le JSON inclura { "extras" : { "has_more" : true } } lorsqu’il y aura plus de résultats.

  • La mise à jour d’une traduction personnalisée s’effectue en envoyant une requête PUT au chemin suivant :
    /admin/customize/site_texts/<id>

Remplacez <id> par l’identifiant de la chaîne que vous souhaitez traduire, par exemple « js.user.username.instructions ».

La charge utile de la requête PUT doit être des données de formulaire (Content-Type : application/x-www-form-urlencoded; charset=UTF-8) et doit inclure les attributs suivants :

  • site_text[value] : la traduction
  • site_text[locale] : la locale, par exemple « en »

Essentiellement, vous devez utiliser les mêmes appels d’API que ceux utilisés par l’interface d’administration Customize Text.

4 « J'aime »

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