You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Google Cloud Translation实现Android应用多语言支持

借助Google Cloud Translation实现Android多语言支持(JSON API响应翻译)

1. 基础准备(确认已完成)

确保你已经集成Google Cloud Translation相关依赖,配置好API密钥,并在AndroidManifest.xml中添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />

你的项目中应该已经有翻译客户端的初始化逻辑(毕竟已经能实现单个单词翻译),这里不再赘述。

2. 解析JSON格式的API响应

先把API返回的JSON字符串解析成对应的数据类,方便后续提取需要翻译的文本字段。

假设API响应结构如下:

{
  "title": "Welcome to our app",
  "description": "This app helps you manage your tasks efficiently",
  "buttonText": "Get Started"
}

用Kotlin定义对应的数据类(Java可以用POJO):

data class ApiResponse(
    val title: String,
    val description: String,
    val buttonText: String
)

然后用Gson或Moshi完成解析:

val jsonString = // 从API接口获取的JSON响应字符串
val apiResponse = Gson().fromJson(jsonString, ApiResponse::class.java)

3. 批量翻译JSON中的文本字段

Google Cloud Translation支持批量翻译请求,比逐个调用API更高效,适合处理JSON中的多个文本字段。

方案一:使用官方SDK批量翻译

// 初始化翻译客户端(已有的实例直接复用)
val translateClient = TranslateOptions.newBuilder()
    .setApiKey("YOUR_API_KEY")
    .build()
    .service

// 收集所有需要翻译的文本
val textsToTranslate = listOf(
    apiResponse.title,
    apiResponse.description,
    apiResponse.buttonText
)

// 发起批量翻译请求,指定目标语言(比如中文用"zh-CN")
val translationResults = translateClient.translate(
    textsToTranslate,
    Translate.TranslateOption.targetLanguage("zh-CN")
)

// 提取翻译后的结果
val translatedTitle = translationResults[0].translatedText
val translatedDescription = translationResults[1].translatedText
val translatedButtonText = translationResults[2].translatedText

方案二:通过REST API+Retrofit调用

如果是用Retrofit调用Google翻译的REST接口,先定义API接口:

interface TranslationApi {
    @GET("language/translate/v2")
    suspend fun batchTranslate(
        @Query("q") texts: List<String>,
        @Query("target") targetLang: String,
        @Query("key") apiKey: String
    ): TranslationResponse
}

// 对应翻译响应的数据类
data class TranslationResponse(
    val data: TranslationData
)

data class TranslationData(
    val translations: List<TranslatedItem>
)

data class TranslatedItem(
    val translatedText: String
)

然后执行翻译请求:

val retrofit = Retrofit.Builder()
    .baseUrl("https://translation.googleapis.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val translationApi = retrofit.create(TranslationApi::class.java)

// 在协程中执行网络请求
lifecycleScope.launch {
    try {
        val response = translationApi.batchTranslate(
            textsToTranslate,
            "zh-CN",
            "YOUR_API_KEY"
        )
        val translatedTexts = response.data.translations.map { it.translatedText }
        // 提取翻译结果
        val translatedTitle = translatedTexts[0]
        val translatedDescription = translatedTexts[1]
        val translatedButtonText = translatedTexts[2]
        // 后续设置到控件
    } catch (e: Exception) {
        // 处理请求失败,比如用原文本或提示语
    }
}

4. 将翻译结果设置到标签控件

直接找到对应的TextView/Button控件,设置翻译后的文本即可:

titleTextView.text = translatedTitle
descriptionTextView.text = translatedDescription
startButton.text = translatedButtonText

关键注意点

  • 所有网络请求必须在异步线程执行,Kotlin用协程(lifecycleScope/ViewModelScope),Java用AsyncTask或ExecutorService,避免阻塞主线程。
  • 建议缓存翻译结果,比如用SharedPreferences或Room存储已翻译的文本,重复场景下直接读取缓存,减少API调用次数和成本。
  • 处理异常情况:网络中断、API密钥无效、翻译请求超时等,此时可以回退显示原始文本或默认提示语。

内容的提问来源于stack exchange,提问作者Yash Palkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:03:11