はじめに
弊社運用中のアプリにてDeepLを用いた翻訳機能が必要になったため、その実装方法を備忘録として残しておこうと思います。
公式ドキュメントは以下になります。
実装していく
まずbuild.gradleにライブラリをインストールします。
implementation("com.deepl.api:deepl-java:1.5.0")
次に公式ドキュメントにあるプログラムをそのままコピペします。
import com.deepl.api.Translator
class Example {
private val translator: Translator
init {
val authKey = "f63c02c5-f056-..." // あなたのキーに置き換えてください
translator = Translator(authKey)
val result = translator.translateText("Hello, world!", null, "fr")
println(result.text) // "Bonjour, le monde !"
}
}
このままでも動きますが、アプリの仕様上今回はシングルトンである必要があるため、修正を加えます。
/**
* DeepLへのリクエストを処理する
*/
object DeepLServer {
private lateinit var translator: Translator
fun init(authKey: String) {
translator = Translator(authKey)
}
@JvmStatic
fun translate(text: String, sourceLang: String, targetLang: String): String? {
try {
// 翻訳した結果を返す
val result = translator.translateText(text, sourceLang, targetLang)
return result.text
} catch (e: Exception) {
ErrorLoggerUtil.error("DeepLServer : translate : e = $e")
return null
}
}
}
initでインスタンスを作成して、実際に翻訳します
// DEEPL_API_KEYは認証キー
DeepLServer.init(DEEPL_API_KEY)
val TranslatedValue = DeepLServer.translate("こんにちは", "ja", "en-US") ?: throw NullPointerException("null")
println("翻訳後のメッセージ: $translatedValue")
実行するとこんな感じ
翻訳後のメッセージ: Hello
以上で実装完了になります。
翻訳可能な言語については以下ドキュメントを確認してみてください。
最後に
公式ドキュメントの参考プログラムをちょっと変更しただけなので簡単に実装できました笑
気になっている方はぜひ導入してみてください!
ただ、翻訳の数が多いと料金も高くなりますので、気を付けましょう!