Pourquoi n'y a-t-il pas d'icône de Terre après avoir configuré l'API Google Translator ?

Pourquoi n’y a-t-il pas d’icône de Terre après avoir configuré l’API Google Translator ?

root@talk:/data/discourse# ./launcher enter app
x86_64 arch détecté.
AVERTISSEMENT : le fichier containers/app.yml est lisible par tous. Vous pouvez sécuriser ce fichier en exécutant : chmod o-rwx containers/app.yml
root@talk-app:/var/www/discourse# rails c
[1] pry(main)> DiscourseTranslator::Google.detect(Post.last)
DiscourseTranslator::TranslatorError: {"error"=>{"code"=>403, "message"=>"Les requêtes provenant de la référence <vide> sont bloquées.", "errors"=>[{"message"=>"Les requêtes provenant de la référence <vide> sont bloquées.", "domain"=>"global", "reason"=>"forbidden"}], "status"=>"PERMISSION_DENIED", "details"=>[{"@type"=>"type.googleapis.com/google.rpc.ErrorInfo", "reason"=>"API_KEY_HTTP_REFERRER_BLOCKED", "domain"=>"googleapis.com", "metadata"=>{"service"=>"translate.googleapis.com", "consumer"=>"projects/390801787023"}}]}}
from /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:134:in `result'



Quelqu’un peut-il m’aider ?

Il semble que vous n’ayez pas fourni de clé valide pour accéder au traducteur. Je vous suggère de vérifier que vous avez effectué le paiement et de recopié ou régénéré la clé.

2 « J'aime »

D’accord, ma méthode de requête est-elle correcte ?

 DiscourseTranslator::Google.detect(Post.last)

J’ai fourni la bonne clé API, mais j’obtiens toujours l’erreur :

[8] pry(main)> DiscourseTranslator::Google.detect(Post.last)
DiscourseTranslator::TranslatorError: {"error"=>{"code"=>403, "message"=>"Requests from referer <empty> are blocked.", "errors"=>[{"message"=>"Requests from referer <empty> are blocked.", "domain"=>"global", "reason"=>"forbidden"}], "status"=>"PERMISSION_DENIED", "details"=>[{"@type"=>"type.googleapis.com/google.rpc.ErrorInfo", "reason"=>"API_KEY_HTTP_REFERRER_BLOCKED", "domain"=>"googleapis.com", "metadata"=>{"consumer"=>"projects/390801787023", "service"=>"translate.googleapis.com"}}]}}
from /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:134:in `result'

J’ai renseigné la clé API de Google Translate, mais cela ne fonctionne pas correctement, aidez-moi à résoudre ce problème !


root@talk:/data/discourse# ./launcher enter app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
root@talk-app:/var/www/discourse# rails c
[1] pry(main)> DiscourseTranslator::Google.detect(Post.last)
DiscourseTranslator::TranslatorError: {"error"=>{"code"=>403, "message"=>"Requests from referer <empty> are blocked.", "errors"=>[{"message"=>"Requests from referer <empty> are blocked.", "domain"=>"global", "reason"=>"forbidden"}], "status"=>"PERMISSION_DENIED", "details"=>[{"@type"=>"type.googleapis.com/google.rpc.ErrorInfo", "reason"=>"API_KEY_HTTP_REFERRER_BLOCKED", "domain"=>"googleapis.com", "metadata"=>{"service"=>"translate.googleapis.com", "consumer"=>"projects/390801787023"}}]}}
from /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:134:in `result'

Ma méthode de test de requête est-elle correcte ?

Vous avez défini des restrictions sur le site Web, et l’API s’attend à voir un en-tête Referer dans la requête API, ce qui semble explicitement requis ici :

https://github.com/discourse/discourse-translator/blob/main/services/discourse_translator/google.rb#L119C9-L124

Pour corriger cela, vous auriez probablement besoin de ce qui suit :

headers: {
    "Content-Type" => "application/x-www-form-urlencoded",
    "Referer" => Discourse.base_url
  }

En d’autres termes, le problème n’est pas causé par votre côté.

Ce que vous pouvez faire est soit :

  • Essayer la restriction par IP
  • Désactiver la restriction jusqu’à ce qu’elle soit corrigée dans le plugin

J’espère que cela vous aidera !

1 « J'aime »

Merci beaucoup pour votre aide, avec ce qui précède, j’ai pu réussir le test. Mais j’ai constaté que j’ai toujours l’icône de traduction de la Terre.

root@talk-app:/var/www/discourse/plugins/discourse-translator/services/discourse_translator# rails c
[1] pry(main)> DiscourseTranslator::Google.detect(Post.last)
=> "en"
[2] pry(main)>