Comment utiliser l'API Google Translate dans une application Java

L'API Google Translate (officiellement Google Cloud Translation API) permet de traduire du texte entre plus de 130 langues depuis une application Java. Ce guide couvre les deux approches les plus courantes : utiliser le client Java officiel de Google Cloud, ou appeler directement l'API REST.

Prérequis

  • Un compte Google Cloud et un projet actif
  • L'API Cloud Translation activée dans la console
  • Une clé API ou un compte de service (JSON)
  • Java 11 ou supérieur

Les 500 000 premiers caractères par mois sont gratuits ; au-delà, le tarif est d'environ 20 USD / 1 M de caractères (vérifiez la grille à jour chez Google).

Option 1 : utiliser le client officiel google-cloud-translate

Ajoutez la dépendance Maven :

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-translate</artifactId>
  <version>2.47.0</version>
</dependency>

Puis traduisez une chaîne de l'anglais vers le français :

import com.google.cloud.translate.Translate;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;

public class TranslateDemo {
    public static void main(String[] args) {
        // Authentification via GOOGLE_APPLICATION_CREDENTIALS
        Translate translate = TranslateOptions.getDefaultInstance().getService();

        Translation translation = translate.translate(
            "Hello, world!",
            Translate.TranslateOption.sourceLanguage("en"),
            Translate.TranslateOption.targetLanguage("fr")
        );

        System.out.println(translation.getTranslatedText());
        // → Bonjour tout le monde !
    }
}

Exportez la variable d'environnement avant l'exécution :

export GOOGLE_APPLICATION_CREDENTIALS="/chemin/vers/service-account.json"

Option 2 : appel REST direct avec une clé API

Si vous préférez éviter le SDK, l'API REST v2 accepte une simple clé passée en paramètre de requête :

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class SimpleTranslate {
    public static String translate(String text, String target, String apiKey) throws Exception {
        String encoded = URLEncoder.encode(text, StandardCharsets.UTF_8);
        String url = "https://translation.googleapis.com/language/translate/v2"
            + "?q=" + encoded
            + "&target=" + target
            + "&key=" + apiKey;

        HttpRequest request = HttpRequest.newBuilder(URI.create(url)).GET().build();
        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        return response.body(); // JSON à parser avec Jackson ou Gson
    }
}

Bonnes pratiques

  • Ne jamais commiter la clé API : utilisez des variables d'environnement ou un gestionnaire de secrets.
  • Mettez en cache les traductions récurrentes pour réduire les coûts (Caffeine, Redis).
  • Gérez les erreurs 429 (quota dépassé) avec un exponential backoff.
  • Pour du batch, privilégiez la méthode translate(List<String>) qui envoie plusieurs segments en une seule requête HTTP.

Alternatives

  • DeepL API Free : 500 000 caractères par mois gratuits, qualité souvent supérieure sur les langues européennes.
  • LibreTranslate : auto-hébergeable, basé sur le modèle Argos Translate.
  • Apache OpenNLP pour des cas très simples en totalement hors-ligne.

Pour du code de production, le client officiel reste recommandé : il gère l'authentification OAuth2, les retries et la rotation des tokens automatiquement.