Java SDK
Official Java client library for TranslatePlus API - Professional translation service for text, HTML, emails, subtitles, and i18n files in 100+ languages.
Package Information
Package: io.translateplus:translateplus-java
Version: 2.1.3+ (Production/Stable)
Java Support: Java 11+
License: MIT
Official Repositories
- Maven Central: https://central.sonatype.com/artifact/io.translateplus/translateplus-java (opens in a new tab)
- GitHub Repository: https://github.com/translateplus/translateplus-java (opens in a new tab)
Installation
Maven
Add the following dependency to your pom.xml:
<dependency>
<groupId>io.translateplus</groupId>
<artifactId>translateplus-java</artifactId>
<version>2.1.3</version>
</dependency>Gradle
Add the following to your build.gradle:
dependencies {
implementation 'io.translateplus:translateplus-java:2.1.3'
}Quick Start
import io.translateplus.TranslatePlusClient;
import java.util.Map;
// Initialize client
TranslatePlusClient client = new TranslatePlusClient.Builder()
.apiKey("your-api-key")
.build();
// Translate a single text
Map<String, Object> result = client.translate(
"Hello, world!",
"en", // Source language (or "auto" for auto-detection)
"fr" // Target language
);
Map<String, Object> translations = (Map<String, Object>) result.get("translations");
System.out.println(translations.get("translation"));
// Output: "Bonjour le monde !"Features
- ✅ Full API Support - All endpoints including text, batch, HTML, email, subtitles, and i18n translation
- ✅ Error Handling - Comprehensive exception handling with detailed error messages and specific exception types
- ✅ Retry Logic - Automatic retry with exponential backoff for failed requests
- ✅ Concurrency Control - Built-in support for parallel translations with configurable concurrency limits
- ✅ Type Safety - Full Java type safety with proper exception hierarchy
- ✅ Production Ready - Connection pooling, rate limiting, and robust error handling
- ✅ 100+ Languages - Support for all languages available in TranslatePlus
API Reference
Client Configuration
TranslatePlusClient client = new TranslatePlusClient.Builder()
.apiKey("your-api-key") // Required: Your TranslatePlus API key
.baseUrl("https://api.translateplus.io") // Optional: API base URL
.timeout(30) // Optional: Request timeout in seconds (default: 30)
.maxRetries(3) // Optional: Maximum retries (default: 3)
.maxConcurrent(5) // Optional: Max concurrent requests (default: 5)
.build();Translation Methods
Translate Text
Map<String, Object> result = client.translate(
"Hello, world!",
"en", // Source language (or "auto" for auto-detection)
"fr" // Target language
);
Map<String, Object> translations = (Map<String, Object>) result.get("translations");
System.out.println(translations.get("translation"));Batch Translation
List<String> texts = Arrays.asList("Hello", "Goodbye", "Thank you");
Map<String, Object> result = client.translateBatch(texts, "en", "fr");
List<Map<String, Object>> translations = (List<Map<String, Object>>) result.get("translations");
for (Map<String, Object> translation : translations) {
System.out.println(translation.get("translation"));
}Translate HTML
String html = "<p>Hello <b>world</b></p>";
Map<String, Object> result = client.translateHTML(html, "en", "fr");
System.out.println(result.get("html")); // "<p>Bonjour <b>monde</b></p>"Translate Email
Map<String, Object> result = client.translateEmail(
"Welcome",
"<p>Thank you for signing up!</p>",
"en",
"fr"
);
System.out.println(result.get("subject")); // "Bienvenue"
System.out.println(result.get("html_body")); // "<p>Merci de vous être inscrit!</p>"Translate Subtitles
String subtitleContent = "1\n00:00:01,000 --> 00:00:02,000\nHello world\n";
Map<String, Object> result = client.translateSubtitles(
subtitleContent,
"srt", // or "vtt"
"en",
"fr"
);
System.out.println(result.get("content"));Language Methods
Detect Language
Map<String, Object> result = client.detectLanguage("Bonjour le monde");
Map<String, Object> detection = (Map<String, Object>) result.get("language_detection");
System.out.println(detection.get("language")); // "fr"
System.out.println(detection.get("confidence")); // 0.95Get Supported Languages
Map<String, Object> result = client.getSupportedLanguages();
Map<String, String> languages = (Map<String, String>) result.get("supported_languages");
languages.forEach((name, code) -> {
System.out.println(name + ": " + code);
});Account Methods
Get Account Summary
Map<String, Object> summary = client.getAccountSummary();
System.out.println("Credits remaining: " + summary.get("credits_remaining"));
System.out.println("Plan: " + summary.get("plan_name"));
System.out.println("Concurrency limit: " + summary.get("concurrency_limit"));i18n Translation Jobs
Create i18n Job
File file = new File("/path/to/locales/en.json");
List<String> targetLanguages = Arrays.asList("fr", "es", "de");
Map<String, Object> result = client.createI18nJob(
file,
targetLanguages,
"en", // Source language
"https://example.com/webhook" // Optional webhook URL
);
System.out.println("Job ID: " + result.get("job_id"));Get Job Status
Map<String, Object> status = client.getI18nJobStatus("job-123");
System.out.println("Status: " + status.get("status")); // "pending", "processing", "completed", "failed"
System.out.println("Progress: " + status.get("progress")); // PercentageList Jobs
Map<String, Object> jobs = client.listI18nJobs(1, 20); // page, pageSize
List<Map<String, Object>> results = (List<Map<String, Object>>) jobs.get("results");
for (Map<String, Object> job : results) {
System.out.println("Job " + job.get("id") + ": " + job.get("status"));
}Error Handling
The client throws specific exceptions for different error types:
import io.translateplus.*;
try {
Map<String, Object> result = client.translate("Hello", "en", "fr");
} catch (TranslatePlusAuthenticationError e) {
System.err.println("Authentication failed: " + e.getMessage());
System.err.println("Status code: " + e.getStatusCode());
} catch (TranslatePlusInsufficientCreditsError e) {
System.err.println("Insufficient credits: " + e.getMessage());
} catch (TranslatePlusRateLimitError e) {
System.err.println("Rate limit exceeded: " + e.getMessage());
} catch (TranslatePlusAPIError e) {
System.err.println("API error: " + e.getMessage());
System.err.println("Status code: " + e.getStatusCode());
System.err.println("Response: " + e.getResponse());
} catch (TranslatePlusValidationError e) {
System.err.println("Validation error: " + e.getMessage());
} catch (TranslatePlusException e) {
System.err.println("Error: " + e.getMessage());
}Advanced Usage
Concurrent Translations
The client automatically handles concurrency limits. You can configure the maximum concurrent requests:
TranslatePlusClient client = new TranslatePlusClient.Builder()
.apiKey("your-api-key")
.maxConcurrent(10) // Allow up to 10 concurrent requests
.build();Custom Timeout and Retries
TranslatePlusClient client = new TranslatePlusClient.Builder()
.apiKey("your-api-key")
.timeout(60) // 60 second timeout
.maxRetries(5) // Retry up to 5 times
.build();Requirements
- Java 11 or higher
- Maven or Gradle for dependency management
Resources
- GitHub Repository: https://github.com/translateplus/translateplus-java (opens in a new tab)
- Maven Central: https://central.sonatype.com/artifact/io.translateplus/translateplus-java (opens in a new tab)
- API Documentation: https://docs.translateplus.io (opens in a new tab)
- Issues: GitHub Issues (opens in a new tab)
- Support: [email protected]
License
MIT License - see LICENSE (opens in a new tab) file for details.