支持语言
支持语言说明
Android 当前公开能力
Android 提供获取在线 / 离线翻译当前支持语言列表的公开接口,用于驱动语言选择 UI。两个接口都依赖 sdkInit(context, config)、不依赖鉴权,内部带磁盘快照缓存:网络失败或服务端无增量时回退本地缓存。
@JvmStatic
@JvmOverloads
fun getOnlineSupportedLanguages(
version: String? = null,
callback: TmkLocaleListCallback,
): Cancelable
@JvmStatic
@JvmOverloads
fun getOfflineSupportedLanguages(
version: String? = null,
callback: TmkLocaleListCallback,
): Cancelable
参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
version | 否 | 本地缓存版本号;不传时优先复用 SDK 已保存的版本号发起增量请求。 |
callback | 是 | TmkLocaleListCallback,onSuccess(response) 返回语言列表,onError(errorId, e) 返回统一错误。 |
返回值:Cancelable,可取消的请求句柄。
回调与数据模型:
interface TmkLocaleListCallback {
fun onSuccess(response: TmkLocaleListResponse)
fun onError(errorId: Int, e: Exception)
}
data class TmkLocaleListResponse(
val version: String?, // 服务端配置版本号
val languages: List<TmkLocaleLanguage>,
) {
val localeOptions: List<TmkLocaleItem> // 展平并按 code 去重,可直接用于语言选择 UI
}
data class TmkLocaleLanguage(
val code: String, // 语言编码,例如 en
val displayName: String, // 语言展示名称,例如 英语
val locales: List<TmkLocaleItem>, // 该语言下的地区/口音;离线配置可为空
)
data class TmkLocaleItem(
val code: String, // 地区/口音编码,例如 en-US
val displayName: String, // 地区/口音展示名称,例如 美国
)
note
localeOptions 会按 code 去重并保留首次出现顺序:服务端可能把同一 code(如粤语 zh-HK)下发在多个语言分组下,去重后避免 UI 出现重复选项。
示例:
TmkTranslationSDK.getOnlineSupportedLanguages(callback = object : TmkLocaleListCallback {
override fun onSuccess(response: TmkLocaleListResponse) {
val options = response.localeOptions.map { "${it.displayName}(${it.code})" }
// 用 options 刷新语言选择 UI
}
override fun onError(errorId: Int, e: Exception) {
// 统一错误处理
}
})
在线与离线语言差异
| 项目 | 在线 | 离线 |
|---|---|---|
| 语言代码 | 通常使用 BCP-47,例如 zh-CN、en-US | 可传 zh、zh-CN、zh-HK、en、en-US 等,SDK 会归一为主语言标签 |
| 当前主要支持 | 以在线服务配置为准 | 由 License scope 与已下载的离线模型决定;当前服务端 scope 未下发语种限制,可用语种取决于对应模型是否下载完整 |
| 不支持语言 | 创建房间/通道或运行时返回错误 | SDK 层不做语种白名单拦截;缺少对应模型时在模型资源校验阶段报 OFFLINE_MODEL_NOT_READY,底层引擎拒绝非法 locale 时才返回 2001113 / INVALID_LANGUAGE_CODE |
业务侧需要让用户重新选择支持语言后再重试。在线模式建议重新创建对话;离线模式建议先确认对应语种模型已下载完整,再重新初始化离线通道并重新检查模型资源。