🐴

DeepLのAPIをJetpack Compose(Kotlin)で使う

2023/09/06に公開

はじめに

KotlinでDeepL APIを使ってみたので、その備忘録です。
GitHubのところにあるUsageのコード(Java)を、ChatGPTにJetpack Compose(Kotlin)で使えるようにアレンジしてもらいました。
TextFieldに入力したあと、ボタンを押すと、翻訳される簡易的なものです。
動作確認済みです。

Gradle

GitHubにも書いてありますが、Gradleユーザーは、以下の依存関係をプロジェクトのビルド ファイルに追加する必要があります。

build.gradle
implementation "com.deepl.api:deepl-java:1.3.0"

コード

val AUTH_KEY = "YOUR API KEY"
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun DeepLTranslationExample() {
    var translationResult by remember { mutableStateOf<TextResult?>(null) }
    val translator =
        remember { Translator(AUTH_KEY) }
    val coroutineScope = rememberCoroutineScope()

    var textToTranslate by remember { mutableStateOf("") }

    Column {
        TextField(
            value = textToTranslate,
            onValueChange = { textToTranslate = it },
            label = { Text("Enter text to translate") }
        )

        Button(
            onClick = {
                coroutineScope.launch {
                    try {
                        val result = withContext(Dispatchers.IO) {
                            translator.translateText(textToTranslate, null, "ja")
                        }
                        translationResult = result
                    } catch (e: Exception) {
                        // エラーハンドリングを行うことが重要です
                    }
                }
            }
        ) {
            Text("Translate")
        }

        translationResult?.let {
            Text(text = "Translation: ${it.text}", style = MaterialTheme.typography.body1)
        }
    }
}

解説

まず、DeepL APIの登録ページへ行き、APIキーを使えるようにします。
アカウントタブの、DeepL APIで使用する認証キーのところから、APIキーをコピーします。
それを、コードのAUTH_KEYのところにコピーします。
パラメータの詳しい解説は、Translate Textに書いてあります。

参考URL

https://github.com/DeepLcom/deepl-java
https://www.deepl.com/pro-api?cta=menu-pro-api
https://www.deepl.com/docs-api/translate-text

Discussion