Gracias por tu respuesta. El traductor ya funciona. A continuación, detallo cómo llegué a la solución, por si esta información es útil para alguien.
Además, cuando pregunté «¿debería ver ese botón en cualquier caso?», mi intención era más bien preguntar «si la clave de API está funcionando o no», y no «incluso si mi idioma preferido ya está en uso». Parece que la respuesta es que el botón de traducción se oculta si falla la API.
Cuando me conecté por SSH a nuestra máquina, ejecuté cd /var/discourse/, luego ./launcher enter app, después rails c y finalmente DiscourseTranslator::Microsoft.detect(Post.last), la salida fue:
DiscourseTranslator::TranslatorError: :
from /var/www/discourse/plugins/discourse-translator/services/discourse_translator/microsoft.rb:70:in `access_token'
Entonces ejecuté esta prueba según Microsoft Docs:
// Pass secret key and region using headers
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=es" \
-H "Ocp-Apim-Subscription-Key:<your-key>" \
-H "Ocp-Apim-Subscription-Region:<your-region>" \
-H "Content-Type: application/json" \
-d "[{'Text':'Hello, what is your name?'}]"
La salida indicó éxito:
[{"detectedLanguage":{"language":"en","score":1.0},"translations":[{"text":"Hola, ¿cómo te llamas?","to":"es"}]}]% ~ %
Noté que la región se incluía en el comando curl, pero no en el plugin de Discourse. Yo estoy en California, pero mis usuarios serán globales y la mayoría en Europa occidental. Recordé que el proceso de Microsoft para instanciar su Traductor requería elegir una región, y recomendaba westeurope para uso general por parte de usuarios de América del Norte y Europa occidental.
Intenté cambiarlo a global ahora, pero no pude encontrar la forma de hacerlo. Así que creé un nuevo recurso y hoy me permitió elegir global. Y ahora, con esta nueva clave, funciona.
Gracias por tu ayuda.